acp
執行 Agent Client Protocol (ACP) 橋接器以與 OpenClaw Gateway 進行通訊。 此指令會透過 stdio 與 IDE 進行 ACP 通訊,並透過 WebSocket 將提示轉發至 Gateway。它負責將 ACP 會話映射至 Gateway 的會話金鑰。openclaw acp 是一個 Gateway 支撐的 ACP 橋接器,而非完整的 ACP 原生編輯器執行時。它專注於會話路由、提示傳遞和基本的串流更新。
相容性矩陣
| ACP 功能區 | 狀態 | 備註 |
|---|---|---|
initialize、newSession、prompt、cancel | 已實作 | 通過 stdio 至 Gateway chat/send + abort 的核心橋接流程。 |
listSessions、斜線指令 | 已實作 | 會話列表適用於 Gateway 會話狀態;指令透過 available_commands_update 進行公告。 |
loadSession | 部分 | 將 ACP 會話重新綁定至 Gateway 會話金鑰並重放儲存的使用者/助手文字歷史。工具/系統歷史尚未重建。 |
提示內容(text、嵌入式 resource、影像) | 部分 | 文字/資源被攤平至聊天輸入;影像成為 Gateway 附件。 |
| 會話模式 | 部分 | 支援 session/set_mode 且橋接器公開初始 Gateway 支撐的會話控制項(思考水準、工具詳細程度、推理、使用詳細資料和提升的操作)。更廣泛的 ACP 原生模式/配置平面仍在範圍外。 |
| 會話資訊和使用更新 | 部分 | 橋接器從快取的 Gateway 會話快照中發出 session_info_update 和盡力而為的 usage_update 通知。使用情況為近似值,僅在 Gateway token 總數標記為新鮮時發送。 |
| 工具串流 | 部分 | tool_call / tool_call_update 事件包含原始 I/O、文字內容,以及 Gateway 工具引數/結果公開時的盡力而為的檔案位置。嵌入式終端機和更豐富的 diff 原生輸出仍未公開。 |
各會話 MCP 伺服器(mcpServers) | 不支援 | 橋接器模式拒絕各會話 MCP 伺服器請求。改為在 OpenClaw Gateway 或 Agent 上配置 MCP。 |
客戶端檔案系統方法(fs/read_text_file、fs/write_text_file) | 不支援 | 橋接器不呼叫 ACP 客戶端檔案系統方法。 |
客戶端終端機方法(terminal/*) | 不支援 | 橋接器不建立 ACP 客戶端終端機或透過工具呼叫串流終端機 ID。 |
| 會話計畫 / 思考串流 | 不支援 | 橋接器目前發出輸出文字和工具狀態,而非 ACP 計畫或思考更新。 |
已知限制
loadSession重放儲存的使用者和助手文字歷史,但不會重建歷史工具呼叫、系統通知或更豐富的 ACP 原生事件類型。- 如果多個 ACP 客戶端共享同一 Gateway 會話金鑰,事件和取消路由是盡力而為的,而非嚴格隔離。當您需要乾淨的編輯器本地輪次時,建議使用預設的獨立
acp:<uuid>會話。 - Gateway 停止狀態被翻譯為 ACP 停止原因,但該映射的表現力不如完整 ACP 原生執行時。
- 初始會話控制目前將 Gateway 旋鈕的重點子集呈現:思考水準、工具詳細程度、推理、使用詳細資料和提升的操作。模型選擇和執行主機控制尚未公開為 ACP 配置選項。
session_info_update和usage_update衍生自 Gateway 會話快照,而非即時 ACP 原生執行時計算。使用情況為近似值,不含成本資料,且僅在 Gateway 將總 token 資料標記為新鮮時發送。- 工具跟隨資料是盡力而為的。橋接器可以呈現出現在已知工具引數/結果中的檔案路徑,但尚未發出 ACP 終端機或結構化檔案差異。
使用方式
ACP 客戶端(偵錯用)
使用內建的 ACP 客戶端在不依賴 IDE 的情況下檢查橋接器是否正常。 它會啟動 ACP 橋接器並允許您互動式地輸入提示。- 自動核准是基於白名單的,且僅適用於受信任的核心工具 ID。
read的自動核准範圍限於當前工作目錄(設定了--cwd時使用該目錄)。- 未知/非核心工具名稱、超出範圍的讀取操作,以及危險工具始終需要明確的提示核准。
- 伺服器提供的
toolCall.kind被視為不受信任的中繼資料(而非授權來源)。
如何使用
當 IDE(或其他客戶端)支援 Agent Client Protocol 且您希望由它來驅動 OpenClaw Gateway 會話時,請使用 ACP。- 確保 Gateway 正在運行(本地或遠端)。
- 配置 Gateway 目標(透過 config 或旗標)。
- 將您的 IDE 設定為透過 stdio 執行
openclaw acp。
選擇 Agent
ACP 不會直接選擇 Agent,而是透過 Gateway 會話金鑰進行路由。 使用包含 Agent 範圍的會話金鑰來指定特定的 Agent:acp:<uuid> 會話。
各會話 mcpServers 在橋接器模式下不受支援。如果 ACP 客戶端在 newSession 或 loadSession 期間傳送它們,橋接器會傳回清晰的錯誤,而非靜默忽略它們。
透過 acpx 使用(Codex、Claude 及其他 ACP 客戶端)
如果您想讓 Codex 或 Claude Code 等 coding agent 透過 ACP 與您的 OpenClaw bot 通訊,請使用 acpx 及其內建的 openclaw 目標。
典型流程:
- 啟動 Gateway 並確保 ACP 橋接器可以連線到它。
- 將
acpx openclaw指向openclaw acp。 - 指定您希望 coding agent 使用的 OpenClaw 會話金鑰。
acpx openclaw 每次都指向特定的 Gateway 和會話金鑰,請在 ~/.acpx/config.json 中覆寫 openclaw agent 指令:
Zed 編輯器設定
在~/.config/zed/settings.json 中新增自訂 ACP Agent(或使用 Zed 的設定介面):
會話映射
預設情況下,ACP 會話會獲得一個帶有acp: 前綴的獨立 Gateway 會話金鑰。
若要重複使用已知的會話,請傳遞會話金鑰或標籤:
--session <key>:使用特定的 Gateway 會話金鑰。--session-label <label>:透過標籤解析現有會話。--reset-session:為該金鑰產生一個全新的會話 ID(金鑰相同,但對話紀錄為新)。
選項
--url <url>:Gateway WebSocket URL(設定時預設使用 gateway.remote.url)。--token <token>:Gateway 認證 token。--token-file <path>:從檔案讀取 Gateway 認證 token。--password <password>:Gateway 認證密碼。--password-file <path>:從檔案讀取 Gateway 認證密碼。--session <key>:預設會話金鑰。--session-label <label>:預設解析的會話標籤。--require-existing:若會話金鑰/標籤不存在則失敗。--reset-session:首次使用前重設會話金鑰。--no-prefix-cwd:不要在提示前加上工作目錄路徑。--verbose, -v:將詳細日誌輸出至 stderr。
--token和--password在某些系統上可能會在本地進程列表中可見。- 建議優先使用
--token-file/--password-file或環境變數(OPENCLAW_GATEWAY_TOKEN、OPENCLAW_GATEWAY_PASSWORD)。 - Gateway 認證解析遵循其他 Gateway 客戶端共用的規範:
- 本地模式:env(
OPENCLAW_GATEWAY_*)->gateway.auth.*-> 當gateway.auth.*未設定時回退至gateway.remote.*(已設定但未解析的本地 SecretRefs 失敗關閉) - 遠端模式:
gateway.remote.*按遠端優先規則進行 env/config 回退 --url為覆寫安全項目,不會重複使用隱含的 config/env 憑證;請明確傳遞--token/--password(或其檔案變體)
- 本地模式:env(
- ACP 執行時後端子進程會接收
OPENCLAW_SHELL=acp,可用於特定 shell/profile 規則。 openclaw acp client會在啟動的橋接器進程上設定OPENCLAW_SHELL=acp-client。
acp client 選項
--cwd <dir>:ACP 會話的工作目錄。--server <command>:ACP 伺服器指令(預設:openclaw)。--server-args <args...>:傳遞給 ACP 伺服器的額外參數。--server-verbose:啟用 ACP 伺服器的詳細日誌。--verbose, -v:詳細的客戶端日誌。