Skip to content

OpenClaw アーキテクチャ概要

源码版本v2026.6.11

一言で

OpenClaw は常駐 gateway (gateway) + マルチチャネル受信 + agent メインループからなる個人 AI アシスタントです。gateway がメッセージを受け取り → agent に渡す → agent が繰り返しモデルとツールを呼ぶ → 結果を gateway 経由で各チャネルへ配送します。すべての能力(ツール/スキル/プラグイン/provider/MCP/チャネル)はプラグイン可能な登録表 (registry) です。

レイヤ構成

各層を一言で

  • 起動とエントリ:openclaw.mjs が Node バージョンチェックを行い,src/entry.ts に転送,さらに src/cli/run-main.ts がサブコマンドを振り分けます。
  • ゲートウェイ層:startGatewayServer は常駐プロセスで,RPC メソッド表でリクエストを受け,agent イベントを WebSocket クライアントに放送 (broadcast) します。
  • Agent メインループ:embedded-agent-runnerwhile(true) が各ターンの会話を駆動し,単発 attempt で LLM 呼び出しと tool_use/tool_result のペアリングを完結します。
  • 能力層:ツールは Map で登録,スキルはモデルに SKILL.md を読ませるガイド,プラグインはディレクトリ約束で発見,provider はベンダーごとに分岐,MCP は双方向ブリッジ。
  • チャネル層:22 チャネル (WhatsApp/Telegram/Slack...) が registry + loader + plugin で登録され,ゲートウェイが一元管理します。
  • 設定システム:openclaw.json が唯一の設定エントリポイント,Zod schema が実行時バリデーションを行います。
  • 記憶とコンテキスト:Context Engine が圧縮 (compaction) 契約を抽象化,記憶ファイルは workspace ルートに置かれます。
  • スケジュールと拡張:Cron は隔離された agent session で job を実行,Tasks は SQLite で永続化,ACP は IDE をブリッジします。
  • デプロイ:gateway は常駐プロセス,daemon がそれをシステムサービス化,または Docker/Fly で実行します。

レイヤ分割の動機

なぜこの分割か?OpenClaw は「メッセージがどこから来るか」(チャネル)、「どう処理するか」(agent ループ)、「どんな能力を使うか」(ツール/スキル/プラグイン/provider)、「どう永続化するか」(設定/記憶/スケジュール)、「どう起動するか」(デプロイ) を完全に疎結合にしています。これによりチャネルを変えても agent ロジックに影響せず,モデルを変えてもツールに影響せず,プラグイン追加でコアを変更する必要がありません。gateway が唯一の中枢で,すべてのレイヤ間連携はここを経由します。

よくある誤読

  • 「OpenClaw はチャット bot」——部分的にだけ正しい。bot はチャネル層の一つの面にすぎず,gateway がプロダクトのコア,agent ループが頭脳です。
  • 「ツールとスキルは同じもの」——違います。ツールは呼び出し可能な関数,スキルは Markdown ガイドで,モデルが自身でいつ読むか・読んで何をするかを決定します。
  • 「MCP は単なる client」——OpenClaw は MCP server(自身の能力を外部に公開)と client(外部 MCP server を消費)の両方です。

推奨読書順

まず 起動とエントリ,次に ゲートウェイコアAgent メインループ,その後 能力層チャネル層設定システム記憶スケジュールデプロイ の順に下へ。

公式資料:OpenClaw 公式サイト · 公式ドキュメント · DeepWiki