概要
コード実行スキルは、OpenClaw の最も生産性の高い機能の一つです。AI エージェントはコードを書くだけでなく、安全なサンドボックス環境内で実際にコードを実行し、出力結果を確認し、その結果に基づいて反復的に改善できます。この「作成→実行→観察→改善」のループにより、AI エージェントが技術的な問題を処理する精度が大幅に向上します。
実行アーキテクチャ
コード実行スキルは、OpenClaw のサンドボックス隔離環境の上に構築されています。Pi SDK の直接埋め込みアーキテクチャにより、コード生成から実行リクエストの受け渡しまでプロセス間通信のオーバーヘッドがありません。実行フローは以下の通りです。
- AI エージェントがコードスニペットを生成する
- コードがサンドボックスのコンテナ実行モジュールに送信される
- コンテナが隔離環境内でコードを実行する
- 出力結果(stdout、stderr、終了コード)がエージェントに返される
- エージェントが結果に基づいて次のアクションを決定する
基本設定
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 のサンドボックス隔離機構により、コード実行は安全で制御された環境で行われ、ユーザーはセキュリティリスクを心配することなく強力な機能を活用できます。