概要
OpenClaw は Pi コーディングエージェント SDK を直接埋め込んでおり、そのコアとなる優位性の一つが精巧に設計された七段階ツール処理パイプライン(Tool Pipeline)です。このパイプラインは、AI がツールを呼び出すたびに、ツール定義がどのように組み立てられ、フィルタリングされ、変換され、最終的に大規模言語モデルに渡されるかを決定します。このパイプラインを理解することが、OpenClaw ツールシステムを習得する鍵となります。
七段階の概要
ツール処理フロー全体は、以下の七つの段階を順番に通過します。
- ベースツール注入(Base Tools)
- ツール置換(Tool Overrides)
- OpenClaw 組み込みツール(OpenClaw Tools)
- チャンネル専用ツール(Channel Tools)
- ポリシーフィルタリング(Policy Filter)
- Schema 検証と正規化(Schema Normalization)
- AbortSignal バインディング(AbortSignal Binding)
各段階は独立した処理ユニットであり、前段階のツールリストを受け取り、処理後の結果を次の段階に渡します。
段階1:ベースツール注入
パイプラインの出発点はベースツールセットです。Pi SDK は初期化時にデフォルトのツール群を登録します。ファイルの読み書き、コード実行などの基本的な機能が含まれます。これらのツールがエージェントの最低限の能力ベースラインを構成します。
OpenClaw では、ベースツールは設定ファイルの tools フィールドで宣言されます。システム起動時に、ディスクパスとプログラマティック登録の 2 つのソースからツール定義を読み込み、初期ツールリストにマージします。
段階2:ツール置換
ツール置換段階では、ユーザーがデフォルトツールをカスタム実装で置き換えることができます。例えば、組み込みのファイル読み取りツールを独自のファイル操作ツールで置き換えたり、元のウェブ検索機能を拡張版で上書きしたりできます。
置換ルールはツール名の一致に基づきます。同名のツールが検出されると、後から登録された定義が先の定義を上書きします。この仕組みにより、開発者はコアコードを変更せずにツールの動作をカスタマイズできます。
段階3:OpenClaw 組み込みツール
この段階では、OpenClaw プラットフォーム固有のツールセットが注入されます。
- browser:ブラウザ自動化操作、ウェブページナビゲーション、要素操作、スクリーンショットなどをサポート
- canvas:キャンバスツール、グラフィックスと可視化コンテンツの生成に使用
- cron:定期タスク管理、cron 式スケジューリングをサポート
- gateway:ゲートウェイ通信ツール、クロスサービス呼び出しを処理
- messaging:メッセージ送信ツール、マルチチャンネルメッセージプッシュをサポート
- nodes:ノード管理ツール、ワークフローノードを操作
- sessions:セッション管理ツール、永続化セッションを処理(JSONL 形式のストレージと圧縮)
- web:ウェブ操作ツール、HTTP リクエストとデータスクレイピングを実行
これらのツールはプログラマティックにロードされ、Pi SDK のツールレジストリに直接統合されます。
段階4:チャンネル専用ツール
異なる通信チャンネル(Discord、Telegram、Slack、WhatsApp)にはそれぞれ独自の機能と制約があります。チャンネル専用ツール段階では、現在のセッションが属するチャンネルに応じて、特定のツールを動的に注入または削除します。
例えば、Discord チャンネルではリアクションツールや埋め込みメッセージツールが追加され、Telegram チャンネルではインラインキーボードツールが追加される場合があります。この設計により、AI エージェントは各プラットフォームのネイティブ機能を最大限に活用できます。
段階5:ポリシーフィルタリング
ポリシーフィルタリング段階では、セキュリティポリシーと権限設定に基づいてツールリストをトリミングします。管理者は異なるユーザーロールや異なるチャンネルに対して、ツールのホワイトリストやブラックリストを設定できます。
この段階ではツールのレート制限設定、使用回数の上限、時間ウィンドウ制約も処理されます。ポリシーチェックを通過しなかったツールはリストから削除され、最終的にモデルに渡されるツールセットが安全でコンプライアンスに準拠していることが保証されます。
段階6:Schema 検証と正規化
前の 5 段階を経て、ツールリストが確定します。Schema 段階では、各ツールのパラメータ定義に対して検証と正規化処理を行います。
- すべての必須フィールドが存在するか確認(name、description、parameters)
- パラメータの JSON Schema 形式が正しいか検証
- 欠落しているオプションフィールドにデフォルト値を補完
- ツールの説明が大規模言語モデルのベストプラクティスに準拠しているか確認(長さ、明瞭性)
あるツールの Schema 検証が失敗した場合、システムは警告ログを記録してそのツールを最終リストから除外します。パイプライン全体をクラッシュさせることはありません。
段階7:AbortSignal バインディング
パイプラインの最終段階は、各ツールに AbortSignal をバインドすることです。この仕組みにより、ユーザーがリクエストをキャンセルしたり、セッションがタイムアウトしたり、システムが実行を中断する必要がある場合に、実行中のすべてのツール呼び出しをグレースフルに終了できます。
各ツールの実行関数は AbortSignal パラメータを受け取ります。ツールの実装者は長時間実行される操作の中で定期的にこのシグナルの状態をチェックし、中止シグナルを受信した際にリソースをクリーンアップし、部分的な結果を返すか、中止例外をスローすべきです。
デバッグと監視
OpenClaw はパイプラインのデバッグ機能を提供しています。設定ファイルで toolPipelineDebug: true を有効にすると、システムは各段階の入口と出口でツールリストの変化を記録し、開発者がツールがどの段階で追加、置換、または削除されたかを追跡できるようにします。
まとめ
七段階ツールパイプラインは OpenClaw ツールシステムの骨格です。ベース注入から AbortSignal バインディングまで、各段階がそれぞれの役割を果たし、ツールシステムの柔軟性、セキュリティ、信頼性を共同で保証しています。このパイプラインを理解することは、カスタムツールや拡張機能の開発においてより良いアーキテクチャ上の判断を行うのに役立ちます。