ホーム チュートリアル カテゴリ Skills サイトについて
ZH EN JA KO
スキル・プラグイン

OpenClawコード実行スキルの設定

· 9 分で読了

概要

コード実行スキルは、OpenClaw の最も生産性の高い機能の一つです。AI エージェントはコードを書くだけでなく、安全なサンドボックス環境内で実際にコードを実行し、出力結果を確認し、その結果に基づいて反復的に改善できます。この「作成→実行→観察→改善」のループにより、AI エージェントが技術的な問題を処理する精度が大幅に向上します。

実行アーキテクチャ

コード実行スキルは、OpenClaw のサンドボックス隔離環境の上に構築されています。Pi SDK の直接埋め込みアーキテクチャにより、コード生成から実行リクエストの受け渡しまでプロセス間通信のオーバーヘッドがありません。実行フローは以下の通りです。

  1. AI エージェントがコードスニペットを生成する
  2. コードがサンドボックスのコンテナ実行モジュールに送信される
  3. コンテナが隔離環境内でコードを実行する
  4. 出力結果(stdout、stderr、終了コード)がエージェントに返される
  5. エージェントが結果に基づいて次のアクションを決定する

基本設定

skills:
  codeExec:
    enabled: true
    sandbox:
      containerExec: true
      image: openclaw/code-sandbox:latest
      timeout: 30s
      memoryLimit: 256m
      cpuLimit: 0.5
    languages:
      - python
      - javascript
      - bash
      - typescript

サポートされるプログラミング言語

Python

Python は最もよく使われる実行言語です。サンドボックスイメージには Python 3.11 ランタイムと一般的な科学計算ライブラリがプリインストールされています。

skills:
  codeExec:
    python:
      version: "3.11"
      preinstalledPackages:
        - numpy
        - pandas
        - matplotlib
        - requests
      allowPipInstall: false
      maxOutputSize: 1MB

allowPipInstall は実行時に追加の Python パッケージのインストールを許可するかどうかを制御します。セキュリティ上の理由からデフォルトでは無効になっています。有効にする場合は、パッケージのホワイトリストと併用することを推奨します。

JavaScript / TypeScript

Node.js ランタイムが JavaScript と TypeScript コードの実行をサポートします。

skills:
  codeExec:
    javascript:
      runtime: node
      version: "20"
      allowNpmInstall: false
      esModules: true

Bash

Shell スクリプトの実行をサポートしますが、コマンドの範囲はサンドボックスのパス制約により制限されます。

skills:
  codeExec:
    bash:
      allowedCommands:
        - ls
        - cat
        - grep
        - awk
        - sed
        - curl
      deniedCommands:
        - rm
        - dd
        - mkfs

セキュリティ機構

コンテナ隔離

コード実行のたびに独立したコンテナインスタンス内で行われます。コンテナ破棄後、実行環境内のすべての変更がクリアされます。これにより、悪意のあるコードがホストシステムに永続的な影響を与えることはできません。

ネットワーク制御

デフォルトでは、コード実行コンテナにはネットワークアクセス権限がありません。ネットワークリクエストを許可する必要がある場合(例:外部 API の呼び出し)、制限付きネットワークモードを明示的に有効にできます。

skills:
  codeExec:
    network:
      mode: restricted
      allowedHosts:
        - "api.example.com"
        - "pypi.org"
      maxBandwidth: 10MB

リソース制限

サンドボックスはコード実行に厳格なリソース制限を課します。

  • 時間制限:デフォルト 30 秒、タイムアウト後にコンテナが強制終了される
  • メモリ制限:デフォルト 256MB、メモリリークやメモリ爆弾を防止
  • CPU 制限:CPU 使用比率を制限し、マイニングなどの悪用を防止
  • 出力制限:最大出力サイズの制限、ログ爆弾を防止
  • ファイルシステム:書き込み可能なファイルの合計サイズを制限

システムコールフィルタリング

コンテナは seccomp 設定を使用して利用可能なシステムコールを制限し、fork bomb や直接デバイスアクセスなどの危険な操作をブロックします。

実行モード

単発実行

最も基本的なモード——コードを送信し、出力を取得します。単純な計算、データ処理、結果の検証に適しています。

インタラクティブセッション

OpenClaw は実行状態を保持するインタラクティブセッションをサポートします。複数のコード実行間で変数と状態を共有でき、Jupyter Notebook に似た体験を提供します。

skills:
  codeExec:
    interactiveSession:
      enabled: true
      maxDuration: 600s
      persistState: true

インタラクティブセッションの状態はコンテナの継続実行によって維持されます。セッションタイムアウト後にコンテナが回収されます。

ファイル出力

コード実行はファイル出力(グラフ、CSV データなど)を生成できます。出力ファイルはマウントディレクトリを通じてホストシステムにマッピングされ、メッセージングツールを介してユーザーに送信されます。

skills:
  codeExec:
    outputDir: /tmp/openclaw/code-output
    allowedOutputTypes:
      - "*.png"
      - "*.csv"
      - "*.json"
      - "*.txt"
    maxOutputFileSize: 5MB

チャンネルとの統合

コードフォーマット

異なるチャンネルにはコード表示に関する異なるフォーマット要件があります。システムはチャンネルタイプに応じてコード出力を自動的にフォーマットします。

  • Discord:Markdown コードブロックを使用、シンタックスハイライト対応
  • Telegram<pre> タグでコードを囲む
  • Slack:Slack ネイティブのコードブロック形式を使用
  • WhatsApp:等幅フォントマーキングを使用

出力の切り詰め

コード出力がチャンネルのメッセージ長制限を超えた場合、システムは自動的に切り詰めて「完全な出力を表示」というヒントを付加します。完全な出力はファイル添付として送信できます。

ユースケース

コード実行スキルの一般的な活用シーンは以下の通りです。

  • データ分析:CSV/JSON データの処理、統計レポートの生成
  • 数学計算:正確な数値計算、AI モデルの算術エラーの回避
  • グラフ生成:matplotlib などのライブラリを使用した可視化グラフの生成
  • プロトタイプ検証:コードロジックの正確性の迅速な検証
  • 自動化スクリプト:ファイル処理、フォーマット変換などの自動化タスクの実行

監視と監査

すべてのコード実行は、送信されたコード、実行出力、リソース使用量、実行時間を含めて完全に記録されます。管理者は実行履歴を確認し、不正使用を特定できます。

skills:
  codeExec:
    audit:
      enabled: true
      logCode: true
      logOutput: true
      retentionDays: 30

まとめ

コード実行スキルは、AI エージェントを「話すだけ」から「話して実行もできる」にアップグレードします。OpenClaw のサンドボックス隔離機構により、コード実行は安全で制御された環境で行われ、ユーザーはセキュリティリスクを心配することなく強力な機能を活用できます。

OpenClawは無料のオープンソースAIアシスタント。WhatsApp、Telegram、Discordなど多数のプラットフォームに対応