系統全貌

這張圖展示整體控制流程:Clients / Nodes 連線到 Gateway,Gateway 執行 Runtime,Runtime 讀寫 Workspace 和 Sessions,Gateway 同時也提供 Canvas Host 服務。

flowchart LR
  C[Clients\nCLI / Web Admin / App] --> G[Gateway\nDaemon :18789]
  N[Nodes\nCapability Providers] --> G
  G --> R[Agent Runtime\nPrompt + Loop + Tools]
  G --> H[Canvas Host\nHTTP :18793]
  R --> W[Workspace\nAGENTS.md / SOUL.md]
  R --> S[Sessions\nTranscripts]

Gateway 是中央主機與路由器,Agent Runtime 是執行大腦,Memory & State 是持久化層(Workspace + Sessions),而 Clients / Nodes 則是透過 Gateway 連入的外部控制與能力端點。

1. 核心:Gateway (Daemon)

把這張表當作 Gateway Process 的快速識別卡。

項目細節
Processopenclaw gateway
拓撲每台主機一個 Singleton
預設綁定127.0.0.1:18789 (WebSocket)
主要角色Host + Router

Gateway 的職責:

  • 擁有活躍的外部 Provider Session(例如 WhatsApp / Telegram Adapter)
  • 執行一個內嵌的 Agent Runtime,負責推理與 Tool 執行
  • 接受來自 Clients 與 Nodes 的 WebSocket 連線

實務提醒:

  • Gateway 一旦掛掉,所有控制與能力路徑都會斷線

2. 大腦:Agent Runtime 與路由

這張表釐清 Runtime 能讀取、寫入和路由的範圍。

關注點實作方向
執行邊界Runtime 嚴格在設定的 Workspace 範圍內運作
Memory 輸入Markdown Context,例如 AGENTS.mdSOUL.md
檔案操作受 Workspace 規則限定
路由模型一個 Gateway Process,多個邏輯流程 / Agent

即使只有一個 Gateway Process,路由機制也能根據 Context 將任務分派給不同的邏輯 Agent 行為。

3. 連線:Clients vs Nodes

如果你不確定某個功能歸屬在哪,用這張表來判斷它屬於 Client 端的控制功能,還是 Node 端的能力功能。

元件role用途典型範例
Clientoperator(隱含)控制平面:送出 Prompt、檢視歷史、管理系統CLI, Web Admin, macOS App
Nodenode能力提供者:暴露 OS / 硬體功能Camera、螢幕錄影、Location

簡單判斷:

  • Client 控制系統
  • Node 擴展系統能做的事

4. 專用服務:Canvas Host

這張表解釋為什麼即使 Gateway 正常,Canvas Host 仍需要是獨立的服務。

項目細節
Port18793(預設)
ProtocolHTTP
擁有者由 Gateway 管理
功能提供 A2UI(Agent 產生的動態網頁介面)

實務提醒:

  • Canvas Host 掛掉時,Chat 可能仍能正常運作,但 A2UI 頁面會無法渲染

5. 通訊協定與安全性

這個段落說明協定層級的連線安全規則(什麼必須先發生、誰被信任、如何防止重複操作)。

Transport 與 Handshake

  • Transport 使用 WebSocket Text Frame 承載 JSON Payload
  • 連線後的第一個 Frame 必須是 connect Payload
  • 任何非 connect 的第一個 Frame 都應該觸發立即斷線

信任與認證

  • 新裝置需要先 Pairing 才能被信任
  • 已配對的裝置會取得 Device Token
  • Localhost 或受信任的區網端點可以自動核准(依部署方式而定)

Idempotency

  • 有副作用的指令應攜帶 Idempotency Key
  • 避免重試時產生重複操作

6. 檔案系統結構

用這張表快速對應每個 OpenClaw 路徑的用途。

路徑用途
~/.openclaw/openclaw.jsonGateway 設定檔(唯一的主要設定檔)
~/.openclaw/workspace長期 Memory 與 Workspace 檔案
~/.openclaw/agents/.../sessions/Session Transcript 儲存

建議的拆分方式:

  • Workspace Memory 檔案納入版本控制
  • Session Transcript 視為營運面的 Runtime 資料

快速 Debug 順序

由上而下依照這個順序檢查,可以減少誤判並加速排障。

  1. 確認 Gateway Process 與 :18789
  2. 確認 Client / Node 的 Handshake 與 Auth Token 狀態
  3. 確認 Runtime 路由與 Workspace Context Injection
  4. 如果預期有 UI 輸出,確認 Canvas Host :18793
  5. 確認 Transcript 寫入路徑與 Idempotency 行為

參考資料