チャンネル抽象化、メッセージルーティング、ツールシステム、スキル
src/channels/registry.ts
8つのコアチャンネルが定義されています:
| チャンネル | ライブラリ | テキスト上限 |
|---|---|---|
| Telegram | grammY | 4,000文字 |
| Baileys | 4,000文字 | |
| Discord | discord.js | 2,000文字 |
| Slack | @slack/bolt | 4,000文字 |
| Signal | signal-cli | 4,000文字 |
| iMessage | imsg / BlueBubbles | 4,000文字 |
| Google Chat | Chat API | 4,000文字 |
| IRC | - | 350文字 |
拡張チャンネル(プラグイン方式):Microsoft Teams、Matrix、Zalo、Zalo Personal、WebChat
src/channels/dock.ts
ChannelDockが定義する各チャンネルの振る舞い:
capabilities — チャットタイプ(DM/グループ/チャンネル/スレッド)、ポール、リアクション、編集、送信取消、メディア、ネイティブコマンド等outbound — テキストチャンク制限(チャンネルごとに異なる)streaming — ストリーミング合体設定(最小文字数、アイドル時間等)groups — グループメンション要件、ツールポリシーmentions — メンション除去パターン(チャンネル固有)threading — リプライモード、スレッドコンテキストagentPrompt — チャンネル固有のプロンプトヒントsrc/channels/plugins/types.plugin.ts
ChannelPluginインターフェースは20以上のアダプタを定義:
| アダプタ | 役割 |
|---|---|
config | アカウント解決、allowFrom |
setup | チャンネルセットアップウィザード |
pairing | デバイスペアリング(WhatsApp QR等) |
security | DMポリシー、許可リスト |
groups | グループメンション要件、ツールポリシー |
mentions | メンション除去パターン |
outbound | メッセージ送信 |
threading | リプライモード、スレッドコンテキスト |
actions | メッセージアクション処理 |
directory | 連絡先/チャンネルディレクトリ |
| チャンネル | 除去パターン |
|---|---|
| Discord | <@!?\d+> |
| 自分の電話番号メンション | |
| Slack | <@[^>]+> |
チャンネルごとに異なる設定。例えばDiscordは minChars=1500, idleMs=1000。
src/channels/session.ts
recordInboundSession() が受信メッセージのセッションメタデータ
(lastChannel、to、accountId、threadId)を記録し、
返信のルーティングに使用します。
src/agents/pi-tools.ts:164-507
createOpenClawCodingTools() が複数のソースからツールを組み立てます:
src/agents/pi-tools.ts:462-485
マルチレイヤーのセキュリティフィルタリングがツールへのアクセスを制御します:
src/agents/tool-policy.ts:65-80
| プロファイル | 含まれるツール |
|---|---|
minimal | session_status のみ |
coding | ファイルシステム、ランタイム、セッション、メモリ、イメージ |
messaging | メッセージング、sessions_list/history/send、session_status |
full | すべてのツール |
| グループ | ツール |
|---|---|
group:memory | memory_search, memory_get |
group:web | web_search, web_fetch |
group:fs | read, write, edit, grep, find, ls, apply_patch |
group:runtime | exec, process |
group:sessions | sessions_list/history/send/spawn, subagents, session_status |
group:ui | browser, canvas |
group:automation | cron |
group:messaging | message |
group:nodes | nodes |
group:openclaw | gateway, agents_list |
| ツール | ファイル | 説明 |
|---|---|---|
browser | tools/browser-tool.ts | ブラウザ制御(ナビゲーション、アクション、スクリーンショット、PDF) |
canvas | tools/canvas-tool.ts | UIキャンバス制御(A2UI push/reset、eval、snapshot) |
nodes | tools/nodes-tool.ts | ノードデバイス管理 |
cron | tools/cron-tool.ts | スケジュールタスク管理 |
message | tools/message-tool.ts | 53のアクションを持つユニバーサルメッセージングツール |
tts | tools/tts-tool.ts | テキスト読み上げ |
gateway | tools/gateway-tool.ts | Gateway API呼び出し |
sessions_spawn | tools/sessions-spawn-tool.ts | バックグラウンドサブエージェント生成 |
web_search | tools/web-search.ts | Web検索 |
web_fetch | tools/web-fetch.ts | Webページ取得・処理 |
image | tools/image-tool.ts | ビジョンモデルによる画像理解 |
src/agents/tools/message-tool.ts
messageツールは53種類のアクションをサポートするユニバーサルメッセージングインターフェースです。
現在のチャンネルの能力に応じてJSONスキーマが動的に適応します。
主要アクション例:
send, broadcast — メッセージ送信poll — 投票作成react — リアクションedit, unsend — 編集・送信取消reply, thread-create — 返信・スレッド作成kick, ban, timeout — モデレーションsticker, presence — その他src/agents/skills.ts、src/agents/skills/workspace.ts
config.skills.load.extraDirs)~/.config/openclaw/skills/)~/.agents/skills/).agents/skills/ in workspace)skills/ in workspace)| カテゴリ | スキル例 |
|---|---|
| 統合 | github, discord, slack, spotify-player, trello, notion, obsidian, 1password |
| メディア | openai-image-gen, openai-whisper, video-frames, gifgrep, camsnap |
| ユーティリティ | weather, food-order, summarize, healthcheck, session-logs |
| コミュニケーション | voice-call, wacli (WhatsApp CLI), blucli (BlueBubbles) |
| 開発 | coding-agent, skill-creator, mcporter, gh-issues |
recordInboundSession()でユーザーの通信チャンネル/スレッドを追跡