Agent Client Protocol (ACP) cho phép OpenClaw chạy các harness lập trình bên ngoài (ví dụ Pi, Claude Code, Cursor, Copilot, Droid, OpenClaw ACP, OpenCode, Gemini CLI và các harness ACPX được hỗ trợ khác) thông qua một plugin backend ACP. Mỗi lần sinh phiên ACP được theo dõi như một tác vụ nền.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
ACP là đường dẫn harness bên ngoài, không phải đường dẫn Codex mặc định. Plugin app-server Codex gốc sở hữu các điều khiển
/codex ... và runtime nhúng openai/gpt-* mặc định cho các lượt agent; ACP sở hữu các điều khiển /acp ... và các phiên sessions_spawn({ runtime: "acp" }).Nếu bạn muốn Codex hoặc Claude Code kết nối như một MCP client bên ngoài trực tiếp tới các cuộc trò chuyện kênh OpenClaw hiện có, hãy dùng openclaw mcp serve thay vì ACP.Tôi cần trang nào?
| Bạn muốn… | Dùng mục này | Ghi chú |
|---|---|---|
| Gắn hoặc điều khiển Codex trong cuộc trò chuyện hiện tại | /codex bind, /codex threads | Đường dẫn app-server Codex gốc khi plugin codex được bật; bao gồm phản hồi chat đã gắn, chuyển tiếp hình ảnh, model/nhanh/quyền, dừng và điều khiển điều hướng. ACP là phương án dự phòng tường minh |
| Chạy Claude Code, Gemini CLI, Codex ACP tường minh hoặc một harness bên ngoài khác thông qua OpenClaw | Trang này | Phiên gắn với chat, /acp spawn, sessions_spawn({ runtime: "acp" }), tác vụ nền, điều khiển runtime |
| Phơi bày một phiên OpenClaw Gateway như một máy chủ ACP cho editor hoặc client | openclaw acp | Chế độ cầu nối. IDE/client giao tiếp ACP với OpenClaw qua stdio/WebSocket |
| Tái sử dụng một AI CLI cục bộ làm model dự phòng chỉ văn bản | Backend CLI | Không phải ACP. Không có công cụ OpenClaw, không có điều khiển ACP, không có runtime harness |
Tính năng này có hoạt động ngay sau khi cài không?
Có, sau khi cài plugin runtime ACP chính thức:extensions/acpx cục bộ sau khi chạy pnpm install. Chạy /acp doctor để kiểm tra độ sẵn sàng.
OpenClaw chỉ dạy agent về việc sinh ACP khi ACP thực sự dùng được: ACP phải được bật, dispatch không được bị tắt, phiên hiện tại không được bị sandbox chặn và một backend runtime phải được tải. Nếu các điều kiện đó không được đáp ứng, Skills của plugin ACP và hướng dẫn ACP cho sessions_spawn sẽ được ẩn để agent không gợi ý một backend không khả dụng.
Các điểm dễ vướng khi chạy lần đầu
Các điểm dễ vướng khi chạy lần đầu
- Nếu
plugins.allowđược đặt, đó là danh mục plugin hạn chế và phải bao gồmacpx; nếu không, backend ACP đã cài sẽ bị chặn có chủ ý và/acp doctorsẽ báo mục allowlist còn thiếu. - Bộ chuyển đổi Codex ACP được đóng gói cùng plugin
acpxvà được khởi chạy cục bộ khi có thể. - Codex ACP chạy với
CODEX_HOMEcô lập; OpenClaw chỉ sao chép các mục dự án đáng tin cậy từ cấu hình Codex trên host và tin cậy workspace đang hoạt động, còn auth, thông báo và hook vẫn nằm trong cấu hình host. - Các bộ chuyển đổi harness mục tiêu khác vẫn có thể được tải theo nhu cầu bằng
npxtrong lần đầu bạn dùng chúng. - Auth của vendor vẫn phải tồn tại trên host cho harness đó.
- Nếu host không có npm hoặc quyền truy cập mạng, các lần tải bộ chuyển đổi đầu tiên sẽ thất bại cho đến khi cache được làm ấm trước hoặc bộ chuyển đổi được cài theo cách khác.
Điều kiện tiên quyết của runtime
Điều kiện tiên quyết của runtime
ACP khởi chạy một tiến trình harness bên ngoài thật. OpenClaw sở hữu định tuyến, trạng thái tác vụ nền, phân phối, binding và policy; harness sở hữu đăng nhập provider, danh mục model, hành vi hệ thống tệp và công cụ gốc của nó.Trước khi quy lỗi cho OpenClaw, hãy xác minh:
/acp doctorbáo một backend đã bật và khỏe mạnh.- ID mục tiêu được
acp.allowedAgentscho phép khi allowlist đó được đặt. - Lệnh harness có thể khởi động trên host Gateway.
- Auth provider có sẵn cho harness đó (
claude,codex,gemini,opencode,droid, v.v.). - Model đã chọn tồn tại cho harness đó - ID model không dùng chung được giữa các harness.
cwdđược yêu cầu tồn tại và có thể truy cập, hoặc bỏ quacwdvà để backend dùng mặc định của nó.- Chế độ quyền phù hợp với công việc. Các phiên không tương tác không thể bấm lời nhắc cấp quyền gốc, nên các lượt lập trình nặng về ghi/exec thường cần một hồ sơ quyền ACPX có thể chạy không cần giao diện.
Các mục tiêu harness được hỗ trợ
Với backendacpx, hãy dùng các ID harness này làm mục tiêu /acp spawn <id> hoặc sessions_spawn({ runtime: "acp", agentId: "<id>" }):
| ID harness | Backend thường dùng | Ghi chú |
|---|---|---|
claude | Bộ chuyển đổi Claude Code ACP | Yêu cầu auth Claude Code trên host. |
codex | Bộ chuyển đổi Codex ACP | Chỉ là dự phòng ACP tường minh khi /codex gốc không khả dụng hoặc ACP được yêu cầu. |
copilot | Bộ chuyển đổi GitHub Copilot ACP | Yêu cầu auth Copilot CLI/runtime. |
cursor | Cursor CLI ACP (cursor-agent acp) | Ghi đè lệnh acpx nếu bản cài cục bộ phơi bày một entrypoint ACP khác. |
droid | Factory Droid CLI | Yêu cầu auth Factory/Droid hoặc FACTORY_API_KEY trong môi trường harness. |
gemini | Bộ chuyển đổi Gemini CLI ACP | Yêu cầu auth Gemini CLI hoặc thiết lập API key. |
iflow | iFlow CLI | Tính khả dụng của bộ chuyển đổi và điều khiển model phụ thuộc vào CLI đã cài. |
kilocode | Kilo Code CLI | Tính khả dụng của bộ chuyển đổi và điều khiển model phụ thuộc vào CLI đã cài. |
kimi | Kimi/Moonshot CLI | Yêu cầu auth Kimi/Moonshot trên host. |
kiro | Kiro CLI | Tính khả dụng của bộ chuyển đổi và điều khiển model phụ thuộc vào CLI đã cài. |
opencode | Bộ chuyển đổi OpenCode ACP | Yêu cầu auth OpenCode CLI/provider. |
openclaw | Cầu nối OpenClaw Gateway qua openclaw acp | Cho phép một harness hiểu ACP giao tiếp ngược lại với một phiên OpenClaw Gateway. |
pi | Runtime Pi/OpenClaw nhúng | Dùng cho các thử nghiệm harness gốc OpenClaw. |
qwen | Qwen Code / Qwen CLI | Yêu cầu auth tương thích Qwen trên host. |
acp.allowedAgents và mọi ánh xạ agents.list[].runtime.acp.agent trước khi dispatch.
Runbook cho operator
Luồng/acp nhanh từ chat:
Sinh phiên
/acp spawn claude --bind here,
/acp spawn gemini --mode persistent --thread auto, hoặc tường minh
/acp spawn codex --bind here.Làm việc
Tiếp tục trong cuộc trò chuyện hoặc thread đã gắn (hoặc nhắm đích khóa phiên một cách tường minh).
Chi tiết vòng đời
Chi tiết vòng đời
- Sinh phiên tạo hoặc tiếp tục một phiên runtime ACP, ghi metadata ACP vào kho phiên OpenClaw và có thể tạo một tác vụ nền khi lượt chạy do cha sở hữu.
- Các phiên ACP do cha sở hữu được xử lý như công việc nền ngay cả khi phiên runtime là persistent; hoàn tất và phân phối liên bề mặt đi qua bộ thông báo tác vụ cha thay vì hoạt động như một phiên chat thông thường hướng tới người dùng.
- Bảo trì tác vụ đóng các phiên ACP one-shot do cha sở hữu đã kết thúc hoặc bị mồ côi. Các phiên ACP persistent được giữ lại khi vẫn còn binding cuộc trò chuyện đang hoạt động; các phiên persistent cũ không có binding đang hoạt động sẽ bị đóng để chúng không thể được tiếp tục âm thầm sau khi tác vụ sở hữu đã xong hoặc bản ghi tác vụ của nó đã mất.
- Tin nhắn tiếp nối đã gắn đi thẳng tới phiên ACP cho đến khi binding bị đóng, bỏ lấy nét, đặt lại hoặc hết hạn.
- Các lệnh Gateway vẫn cục bộ.
/acp ...,/statusvà/unfocuskhông bao giờ được gửi như văn bản prompt thông thường tới một harness ACP đã gắn. cancelhủy lượt đang hoạt động khi backend hỗ trợ hủy; nó không xóa metadata binding hoặc phiên.closekết thúc phiên ACP theo góc nhìn của OpenClaw và xóa binding. Harness vẫn có thể giữ lịch sử upstream riêng nếu nó hỗ trợ tiếp tục.- Plugin acpx dọn dẹp cây tiến trình wrapper và bộ chuyển đổi do OpenClaw sở hữu sau
close, và thu dọn các tiến trình ACPX mồ côi cũ do OpenClaw sở hữu trong quá trình khởi động Gateway. - Worker runtime nhàn rỗi đủ điều kiện được dọn dẹp sau
acp.runtime.ttlMinutes; metadata phiên đã lưu vẫn có sẵn cho/acp sessions.
Quy tắc định tuyến Codex gốc
Quy tắc định tuyến Codex gốc
Các trigger bằng ngôn ngữ tự nhiên nên được định tuyến tới plugin Codex gốc khi nó được bật:
- “Gắn kênh Discord này với Codex.”
- “Gắn chat này vào thread Codex
<id>.” - “Hiển thị các thread Codex, rồi gắn thread này.”
before_tool_call, quan sát
after_tool_call, và định tuyến các sự kiện Codex PermissionRequest
thông qua phê duyệt của OpenClaw. Các hook Codex Stop được relay tới
OpenClaw before_agent_finalize, nơi các Plugin có thể yêu cầu thêm một
lượt model trước khi Codex hoàn tất câu trả lời. Relay này vẫn
được thiết kế thận trọng: nó không thay đổi đối số công cụ gốc của Codex
hoặc viết lại bản ghi luồng của Codex. Chỉ dùng ACP tường minh
khi bạn muốn mô hình runtime/session ACP. Ranh giới hỗ trợ Codex
nhúng được ghi tài liệu trong
hợp đồng hỗ trợ Codex harness v1.Bảng tóm tắt chọn model / provider / runtime
Bảng tóm tắt chọn model / provider / runtime
openai-codex/*- tuyến model Codex OAuth/subscription cũ được doctor sửa chữa.openai/*- runtime nhúng app-server Codex gốc cho các lượt agent OpenAI./codex ...- điều khiển cuộc trò chuyện Codex gốc./acp ...hoặcruntime: "acp"- điều khiển ACP/acpx tường minh.
Trigger ngôn ngữ tự nhiên để định tuyến ACP
Trigger ngôn ngữ tự nhiên để định tuyến ACP
Các trigger nên định tuyến tới runtime ACP:
- “Chạy phần này như một phiên Claude Code ACP một lần rồi tóm tắt kết quả.”
- “Dùng Gemini CLI cho tác vụ này trong một luồng, rồi giữ các phần tiếp theo trong cùng luồng đó.”
- “Chạy Codex thông qua ACP trong một luồng nền.”
runtime: "acp", phân giải harness agentId,
liên kết với cuộc trò chuyện hoặc luồng hiện tại khi được hỗ trợ, và
định tuyến các phần tiếp theo tới phiên đó cho đến khi đóng/hết hạn. Codex chỉ
đi theo đường dẫn này khi ACP/acpx được nêu tường minh hoặc Plugin Codex gốc
không khả dụng cho thao tác được yêu cầu.Đối với sessions_spawn, runtime: "acp" chỉ được quảng bá khi ACP
được bật, bên yêu cầu không ở trong sandbox, và một backend runtime ACP
đã được tải. acp.dispatch.enabled=false tạm dừng
dispatch luồng ACP tự động nhưng không ẩn hoặc chặn các lệnh gọi
sessions_spawn({ runtime: "acp" }) tường minh. Nó nhắm tới các id harness ACP như codex,
claude, droid, gemini, hoặc opencode. Đừng truyền id agent cấu hình
OpenClaw thông thường từ agents_list trừ khi mục đó được
cấu hình tường minh với agents.list[].runtime.type="acp";
nếu không, hãy dùng runtime sub-agent mặc định. Khi một agent OpenClaw
được cấu hình với runtime.type="acp", OpenClaw dùng
runtime.acp.agent làm id harness bên dưới.ACP so với sub-agent
Dùng ACP khi bạn muốn một runtime harness bên ngoài. Dùng app-server Codex gốc cho liên kết/điều khiển cuộc trò chuyện Codex khi Plugincodex
được bật. Dùng sub-agent khi bạn muốn các lượt chạy được ủy quyền
gốc của OpenClaw.
| Khu vực | Phiên ACP | Lượt chạy sub-agent |
|---|---|---|
| Runtime | Plugin backend ACP (ví dụ acpx) | Runtime sub-agent gốc của OpenClaw |
| Khóa phiên | agent:<agentId>:acp:<uuid> | agent:<agentId>:subagent:<uuid> |
| Lệnh chính | /acp ... | /subagents ... |
| Công cụ spawn | sessions_spawn với runtime:"acp" | sessions_spawn (runtime mặc định) |
Cách ACP chạy Claude Code
Đối với Claude Code thông qua ACP, stack là:- Control plane phiên ACP của OpenClaw.
- Plugin runtime chính thức
@openclaw/acpx. - Adapter ACP của Claude.
- Cơ chế runtime/session phía Claude.
- Muốn
/acp spawn, phiên có thể liên kết, điều khiển runtime, hoặc công việc harness bền vững? Dùng ACP. - Muốn dự phòng văn bản cục bộ đơn giản thông qua CLI thô? Dùng backend CLI.
Phiên được liên kết
Mô hình tư duy
- Bề mặt trò chuyện - nơi mọi người tiếp tục trao đổi (kênh Discord, chủ đề Telegram, cuộc trò chuyện iMessage).
- Phiên ACP - trạng thái runtime Codex/Claude/Gemini bền vững mà OpenClaw định tuyến tới.
- Luồng/chủ đề con - bề mặt nhắn tin bổ sung tùy chọn chỉ được tạo bởi
--thread .... - Workspace runtime - vị trí hệ thống tệp (
cwd, repo checkout, backend workspace) nơi harness chạy. Độc lập với bề mặt trò chuyện.
Liên kết cuộc trò chuyện hiện tại
/acp spawn <harness> --bind here ghim cuộc trò chuyện hiện tại vào
phiên ACP đã spawn - không có luồng con, cùng bề mặt trò chuyện. OpenClaw tiếp tục
sở hữu transport, auth, safety và delivery. Các tin nhắn tiếp theo trong
cuộc trò chuyện đó định tuyến tới cùng phiên; /new và /reset đặt lại
phiên tại chỗ; /acp close gỡ liên kết.
Ví dụ:
Quy tắc liên kết và tính độc quyền
Quy tắc liên kết và tính độc quyền
--bind herevà--thread ...loại trừ lẫn nhau.--bind herechỉ hoạt động trên các kênh quảng bá khả năng liên kết cuộc trò chuyện hiện tại; nếu không, OpenClaw trả về thông báo không được hỗ trợ rõ ràng. Liên kết vẫn tồn tại qua các lần khởi động lại Gateway.- Trên Discord,
spawnSessionskiểm soát việc tạo luồng con cho--thread auto|here- không phải--bind here. - Nếu bạn spawn tới một agent ACP khác mà không có
--cwd, OpenClaw mặc định kế thừa workspace của agent đích. Đường dẫn kế thừa bị thiếu (ENOENT/ENOTDIR) sẽ fallback về mặc định backend; các lỗi truy cập khác (ví dụEACCES) hiển thị dưới dạng lỗi spawn. - Các lệnh quản lý Gateway vẫn ở cục bộ trong các cuộc trò chuyện đã liên kết - lệnh
/acp ...được OpenClaw xử lý ngay cả khi văn bản theo dõi thông thường định tuyến tới phiên ACP đã liên kết;/statusvà/unfocuscũng luôn ở cục bộ bất cứ khi nào xử lý lệnh được bật cho bề mặt đó.
Phiên liên kết với luồng
Phiên liên kết với luồng
Khi liên kết luồng được bật cho một adapter kênh:
- OpenClaw liên kết một luồng với một phiên ACP đích.
- Tin nhắn tiếp theo trong luồng đó định tuyến tới phiên ACP đã liên kết.
- Đầu ra ACP được gửi trở lại cùng luồng.
- Unfocus/close/archive/idle-timeout hoặc hết hạn max-age sẽ gỡ liên kết.
/acp close,/acp cancel,/acp status,/status, và/unfocuslà lệnh Gateway, không phải prompt gửi tới harness ACP.
acp.enabled=trueacp.dispatch.enabledbật theo mặc định (đặtfalseđể tạm dừng dispatch luồng ACP tự động; các lệnh gọisessions_spawn({ runtime: "acp" })tường minh vẫn hoạt động).- Bật spawn phiên luồng của adapter kênh (mặc định:
true):- Discord:
channels.discord.threadBindings.spawnSessions=true - Telegram:
channels.telegram.threadBindings.spawnSessions=true
- Discord:
Các kênh hỗ trợ luồng
Các kênh hỗ trợ luồng
- Bất kỳ adapter kênh nào phơi bày khả năng liên kết session/thread.
- Hỗ trợ tích hợp hiện tại: luồng/kênh Discord, chủ đề Telegram (chủ đề diễn đàn trong nhóm/supergroup và chủ đề DM).
- Các kênh Plugin có thể thêm hỗ trợ thông qua cùng giao diện liên kết.
Liên kết kênh bền vững
Đối với workflow không tạm thời, hãy cấu hình liên kết ACP bền vững trong các mụcbindings[] cấp cao nhất.
Mô hình liên kết
Đánh dấu một liên kết cuộc trò chuyện ACP bền vững.
Xác định cuộc trò chuyện đích. Các dạng theo từng kênh:
- Kênh/luồng Discord:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - Kênh/DM Slack:
match.channel="slack"+match.peer.id="<channelId|channel:<channelId>|#<channelId>|userId|user:<userId>|slack:<userId>|<@userId>>". Ưu tiên id Slack ổn định; liên kết kênh cũng khớp các trả lời bên trong luồng của kênh đó. - Chủ đề diễn đàn Telegram:
match.channel="telegram"+match.peer.id="<chatId>:topic:<topicId>" - DM/nhóm iMessage:
match.channel="imessage"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Ưu tiênchat_id:*cho liên kết nhóm ổn định.
Id agent OpenClaw sở hữu.
Ghi đè ACP tùy chọn.
Nhãn tùy chọn hiển thị cho operator.
Thư mục làm việc runtime tùy chọn.
Ghi đè backend tùy chọn.
Mặc định runtime theo từng agent
Dùngagents.list[].runtime để định nghĩa mặc định ACP một lần cho mỗi agent:
agents.list[].runtime.type="acp"agents.list[].runtime.acp.agent(id harness, ví dụcodexhoặcclaude)agents.list[].runtime.acp.backendagents.list[].runtime.acp.modeagents.list[].runtime.acp.cwd
bindings[].acp.*agents.list[].runtime.acp.*- Mặc định ACP toàn cục (ví dụ
acp.backend)
Ví dụ
Hành vi
- OpenClaw đảm bảo phiên ACP đã cấu hình tồn tại trước khi sử dụng.
- Tin nhắn trong kênh hoặc chủ đề đó được định tuyến đến phiên ACP đã cấu hình.
- Trong các cuộc trò chuyện đã liên kết,
/newvà/resetđặt lại cùng khóa phiên ACP ngay tại chỗ. - Các liên kết runtime tạm thời (ví dụ được tạo bởi các luồng tập trung vào luồng thảo luận) vẫn áp dụng khi có.
- Với các lần tạo ACP liên agent không có
cwdrõ ràng, OpenClaw kế thừa không gian làm việc của agent đích từ cấu hình agent. - Các đường dẫn không gian làm việc được kế thừa nhưng bị thiếu sẽ quay về cwd mặc định của backend; các lỗi truy cập không phải do thiếu đường dẫn sẽ hiển thị dưới dạng lỗi tạo phiên.
Bắt đầu phiên ACP
Hai cách để bắt đầu một phiên ACP:- From sessions_spawn
- From /acp command
Dùng
runtime: "acp" để bắt đầu một phiên ACP từ một lượt agent hoặc
lệnh gọi công cụ.runtime mặc định là subagent, vì vậy hãy đặt rõ runtime: "acp"
cho các phiên ACP. Nếu bỏ qua agentId, OpenClaw dùng
acp.defaultAgent khi đã cấu hình. mode: "session" yêu cầu
thread: true để giữ một cuộc trò chuyện liên kết bền vững.Tham số sessions_spawn
Prompt ban đầu được gửi đến phiên ACP.
Phải là
"acp" cho các phiên ACP.Id harness ACP đích. Quay về
acp.defaultAgent nếu đã đặt.Yêu cầu luồng liên kết thread ở nơi được hỗ trợ.
"run" là chạy một lần; "session" là bền vững. Nếu thread: true và
bỏ qua mode, OpenClaw có thể mặc định sang hành vi bền vững theo
đường dẫn runtime. mode: "session" yêu cầu thread: true.Thư mục làm việc runtime được yêu cầu (được xác thực theo chính sách
backend/runtime). Nếu bỏ qua, lần tạo ACP kế thừa không gian làm việc
của agent đích khi đã cấu hình; các đường dẫn được kế thừa nhưng bị
thiếu sẽ quay về mặc định của backend, còn lỗi truy cập thật sẽ được trả về.
Nhãn hướng tới người vận hành, dùng trong văn bản phiên/banner.
Tiếp tục một phiên ACP hiện có thay vì tạo phiên mới. Agent phát lại
lịch sử cuộc trò chuyện của nó qua
session/load. Yêu cầu
runtime: "acp"."parent" truyền trực tuyến các bản tóm tắt tiến trình chạy ACP ban đầu
về phiên yêu cầu dưới dạng sự kiện hệ thống. Phản hồi được chấp nhận bao gồm
streamLogPath trỏ đến nhật ký JSONL theo phạm vi phiên
(<sessionId>.acp-stream.jsonl) mà bạn có thể tail để xem toàn bộ lịch sử chuyển tiếp.Hủy lượt ACP con sau N giây.
0 giữ lượt này trên đường dẫn không timeout
của gateway. Cùng giá trị được áp dụng cho lần chạy Gateway và runtime ACP
để các harness bị treo/hết hạn ngạch không chiếm làn agent cha vô thời hạn.Ghi đè mô hình rõ ràng cho phiên ACP con. Các lần tạo Codex ACP
chuẩn hóa các tham chiếu OpenClaw Codex như
openai-codex/gpt-5.4 thành cấu hình
khởi động Codex ACP trước session/new; các dạng slash như
openai-codex/gpt-5.4/high cũng đặt nỗ lực suy luận Codex ACP.
Các harness khác phải quảng bá models ACP và hỗ trợ
session/set_model; nếu không, OpenClaw/acpx sẽ lỗi rõ ràng thay vì
âm thầm quay về mặc định của agent đích.Nỗ lực suy nghĩ/suy luận rõ ràng. Với Codex ACP,
minimal ánh xạ thành
nỗ lực thấp, low/medium/high/xhigh ánh xạ trực tiếp, và off
bỏ qua ghi đè khởi động reasoning-effort.Chế độ liên kết và thread khi tạo phiên
- --bind here|off
- --thread auto|here|off
| Chế độ | Hành vi |
|---|---|
here | Liên kết cuộc trò chuyện đang hoạt động hiện tại tại chỗ; lỗi nếu không có cuộc trò chuyện nào đang hoạt động. |
off | Không tạo liên kết cuộc trò chuyện hiện tại. |
--bind herelà đường dẫn vận hành đơn giản nhất để “biến kênh hoặc chat này thành do Codex hỗ trợ.”--bind herekhông tạo thread con.--bind herechỉ có trên các kênh cung cấp hỗ trợ liên kết cuộc trò chuyện hiện tại.- Không thể kết hợp
--bindvà--threadtrong cùng một lệnh gọi/acp spawn.
Mô hình phân phối
Phiên ACP có thể là không gian làm việc tương tác hoặc công việc nền do cha sở hữu. Đường dẫn phân phối phụ thuộc vào hình dạng đó.Interactive ACP sessions
Interactive ACP sessions
Các phiên tương tác được thiết kế để tiếp tục trò chuyện trên một bề mặt chat hiển thị:
/acp spawn ... --bind hereliên kết cuộc trò chuyện hiện tại với phiên ACP./acp spawn ... --thread ...liên kết thread/chủ đề của kênh với phiên ACP.bindings[].type="acp"được cấu hình bền vững định tuyến các cuộc trò chuyện khớp đến cùng phiên ACP.
- Các lượt tiếp theo đã liên kết thông thường được gửi dưới dạng văn bản prompt, kèm tệp đính kèm chỉ khi harness/backend hỗ trợ.
- Các lệnh quản lý
/acpvà lệnh Gateway cục bộ được chặn trước khi gửi đến ACP. - Các sự kiện hoàn tất do runtime tạo được hiện thực hóa theo từng đích. Agent OpenClaw nhận phong bì runtime-context nội bộ của OpenClaw; harness ACP bên ngoài nhận prompt thuần với kết quả con và chỉ dẫn. Phong bì thô
<<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>không bao giờ được gửi đến harness bên ngoài hoặc được lưu bền vững dưới dạng văn bản bản ghi người dùng ACP. - Các mục bản ghi ACP dùng văn bản kích hoạt người dùng thấy được hoặc prompt hoàn tất thuần. Siêu dữ liệu sự kiện nội bộ vẫn có cấu trúc trong OpenClaw khi có thể và không được xem là nội dung chat do người dùng viết.
Parent-owned one-shot ACP sessions
Parent-owned one-shot ACP sessions
Các phiên ACP một lần do agent khác tạo là các con chạy nền,
tương tự như sub-agent:
- Agent cha yêu cầu công việc bằng
sessions_spawn({ runtime: "acp", mode: "run" }). - Agent con chạy trong phiên harness ACP riêng.
- Các lượt con chạy trên cùng làn nền mà các lần tạo sub-agent gốc sử dụng, vì vậy harness ACP chậm không chặn công việc phiên chính không liên quan.
- Báo cáo hoàn tất trả về qua đường dẫn thông báo hoàn tất tác vụ. OpenClaw chuyển đổi siêu dữ liệu hoàn tất nội bộ thành prompt ACP thuần trước khi gửi đến harness bên ngoài, vì vậy harness không thấy các dấu runtime context chỉ dành cho OpenClaw.
- Agent cha viết lại kết quả con bằng giọng trợ lý thông thường khi cần một phản hồi hướng tới người dùng.
sessions_send and A2A delivery
sessions_send and A2A delivery
sessions_send có thể nhắm đến một phiên khác sau khi tạo. Với các
phiên ngang hàng thông thường, OpenClaw dùng đường dẫn tiếp nối agent-to-agent (A2A)
sau khi chèn tin nhắn:- Chờ phản hồi của phiên đích.
- Tùy chọn cho phép bên yêu cầu và đích trao đổi số lượt tiếp nối có giới hạn.
- Yêu cầu đích tạo một tin nhắn thông báo.
- Gửi thông báo đó đến kênh hoặc thread hiển thị.
tools.sessions.visibility rộng.OpenClaw chỉ bỏ qua lượt tiếp nối A2A khi bên yêu cầu là
cha của chính agent con ACP một lần do cha sở hữu. Trong trường hợp đó,
chạy A2A chồng lên hoàn tất tác vụ có thể đánh thức agent cha bằng
kết quả của agent con, chuyển tiếp phản hồi của agent cha ngược vào agent con, và
tạo vòng lặp vọng cha/con. Kết quả sessions_send báo cáo
delivery.status="skipped" cho trường hợp con được sở hữu đó vì
đường dẫn hoàn tất đã chịu trách nhiệm cho kết quả.Resume an existing session
Resume an existing session
Dùng Các trường hợp sử dụng phổ biến:
resumeSessionId để tiếp tục một phiên ACP trước đó thay vì
bắt đầu mới. Agent phát lại lịch sử cuộc trò chuyện qua
session/load, vì vậy nó tiếp tục với đầy đủ ngữ cảnh của những gì đã xảy ra trước đó.- Bàn giao một phiên Codex từ laptop sang điện thoại của bạn - bảo agent của bạn tiếp tục từ nơi bạn đã dừng.
- Tiếp tục một phiên lập trình bạn đã bắt đầu tương tác trong CLI, giờ chạy không giao diện qua agent của bạn.
- Tiếp tục công việc bị gián đoạn bởi lần khởi động lại gateway hoặc timeout do nhàn rỗi.
resumeSessionIdchỉ áp dụng khiruntime: "acp"; runtime sub-agent mặc định bỏ qua trường chỉ dành cho ACP này.streamTochỉ áp dụng khiruntime: "acp"; runtime sub-agent mặc định bỏ qua trường chỉ dành cho ACP này.resumeSessionIdlà id tiếp tục ACP/harness cục bộ trên host, không phải khóa phiên kênh OpenClaw; OpenClaw vẫn kiểm tra chính sách tạo ACP và chính sách agent đích trước khi gửi, trong khi backend ACP hoặc harness sở hữu quyền cho việc tải id upstream đó.resumeSessionIdkhôi phục lịch sử cuộc trò chuyện ACP upstream;threadvàmodevẫn áp dụng bình thường cho phiên OpenClaw mới mà bạn đang tạo, vì vậymode: "session"vẫn yêu cầuthread: true.- Agent đích phải hỗ trợ
session/load(Codex và Claude Code có hỗ trợ). - Nếu không tìm thấy id phiên, lần tạo phiên sẽ lỗi rõ ràng - không âm thầm quay về một phiên mới.
Post-deploy smoke test
Post-deploy smoke test
Sau khi triển khai gateway, hãy chạy một kiểm tra end-to-end trực tiếp thay vì
tin vào unit test:
- Xác minh phiên bản Gateway đã triển khai và commit trên máy chủ đích.
- Mở một phiên cầu nối ACPX tạm thời tới một tác tử đang hoạt động.
- Yêu cầu tác tử đó gọi
sessions_spawnvớiruntime: "acp",agentId: "codex",mode: "run", và tác vụReply with exactly LIVE-ACP-SPAWN-OK. - Xác minh
accepted=yes, mộtchildSessionKeythật, và không có lỗi trình xác thực. - Dọn dẹp phiên cầu nối tạm thời.
mode: "run" và bỏ qua streamTo: "parent" -
mode: "session" gắn với luồng và các đường dẫn chuyển tiếp luồng là những
lượt tích hợp phong phú riêng biệt.Khả năng tương thích sandbox
Các phiên ACP hiện chạy trên runtime của máy chủ, không chạy bên trong sandbox của OpenClaw. Các giới hạn hiện tại:- Nếu phiên yêu cầu đang ở trong sandbox, các lần spawn ACP bị chặn cho cả
sessions_spawn({ runtime: "acp" })và/acp spawn. sessions_spawnvớiruntime: "acp"không hỗ trợsandbox: "require".
Phân giải mục tiêu phiên
Hầu hết các thao tác/acp chấp nhận mục tiêu phiên tùy chọn (session-key,
session-id, hoặc session-label).
Thứ tự phân giải:
- Đối số mục tiêu tường minh (hoặc
--sessioncho/acp steer)- thử khóa
- sau đó là id phiên dạng UUID
- sau đó là nhãn
- Liên kết luồng hiện tại (nếu cuộc trò chuyện/luồng này được liên kết với một phiên ACP).
- Dự phòng về phiên yêu cầu hiện tại.
Unable to resolve session target: ...).
Điều khiển ACP
| Lệnh | Tác dụng | Ví dụ |
|---|---|---|
/acp spawn | Tạo phiên ACP; tùy chọn liên kết hiện tại hoặc liên kết luồng. | /acp spawn codex --bind here --cwd /repo |
/acp cancel | Hủy lượt đang chạy cho phiên mục tiêu. | /acp cancel agent:codex:acp:<uuid> |
/acp steer | Gửi chỉ dẫn điều hướng tới phiên đang chạy. | /acp steer --session support inbox prioritize failing tests |
/acp close | Đóng phiên và gỡ liên kết các mục tiêu luồng. | /acp close |
/acp status | Hiển thị backend, chế độ, trạng thái, tùy chọn runtime, khả năng. | /acp status |
/acp set-mode | Đặt chế độ runtime cho phiên mục tiêu. | /acp set-mode plan |
/acp set | Ghi tùy chọn cấu hình runtime chung. | /acp set model openai/gpt-5.4 |
/acp cwd | Đặt ghi đè thư mục làm việc của runtime. | /acp cwd /Users/user/Projects/repo |
/acp permissions | Đặt hồ sơ chính sách phê duyệt. | /acp permissions strict |
/acp timeout | Đặt thời gian chờ runtime (giây). | /acp timeout 120 |
/acp model | Đặt ghi đè mô hình runtime. | /acp model anthropic/claude-opus-4-6 |
/acp reset-options | Xóa các ghi đè tùy chọn runtime của phiên. | /acp reset-options |
/acp sessions | Liệt kê các phiên ACP gần đây từ kho lưu trữ. | /acp sessions |
/acp doctor | Sức khỏe backend, khả năng, các bản sửa có thể hành động. | /acp doctor |
/acp install | In các bước cài đặt và bật có tính xác định. | /acp install |
/acp status hiển thị các tùy chọn runtime có hiệu lực cùng với định danh phiên cấp runtime và
cấp backend. Lỗi điều khiển không được hỗ trợ hiển thị
rõ ràng khi một backend thiếu khả năng. /acp sessions đọc
kho lưu trữ cho phiên đang liên kết hiện tại hoặc phiên yêu cầu; các token mục tiêu
(session-key, session-id, hoặc session-label) được phân giải thông qua
khám phá phiên Gateway, bao gồm các gốc session.store
tùy chỉnh theo từng tác tử.
Ánh xạ tùy chọn runtime
/acp có các lệnh tiện ích và một bộ đặt chung. Các
thao tác tương đương:
| Lệnh | Ánh xạ tới | Ghi chú |
|---|---|---|
/acp model <id> | khóa cấu hình runtime model | Với Codex ACP, OpenClaw chuẩn hóa openai-codex/<model> thành id mô hình của adapter và ánh xạ các hậu tố suy luận bằng dấu gạch chéo như openai-codex/gpt-5.4/high sang reasoning_effort. |
/acp set thinking <level> | tùy chọn chuẩn thinking | OpenClaw gửi giá trị tương đương do backend quảng bá khi có, ưu tiên thinking, rồi effort, reasoning_effort, hoặc thought_level. Với Codex ACP, adapter ánh xạ các giá trị sang reasoning_effort. |
/acp permissions <profile> | tùy chọn chuẩn permissionProfile | OpenClaw gửi giá trị tương đương do backend quảng bá khi có, chẳng hạn approval_policy, permission_profile, permissions, hoặc permission_mode. |
/acp timeout <seconds> | tùy chọn chuẩn timeoutSeconds | OpenClaw gửi giá trị tương đương do backend quảng bá khi có, chẳng hạn timeout hoặc timeout_seconds. |
/acp cwd <path> | ghi đè cwd của runtime | Cập nhật trực tiếp. |
/acp set <key> <value> | chung | key=cwd dùng đường dẫn ghi đè cwd. |
/acp reset-options | xóa tất cả ghi đè runtime | - |
Harness acpx, thiết lập Plugin và quyền
Để cấu hình harness acpx (các bí danh Claude Code / Codex / Gemini CLI), các cầu nối MCP plugin-tools và OpenClaw-tools, và các chế độ quyền ACP, xem Tác tử ACP - thiết lập.Khắc phục sự cố
| Triệu chứng | Nguyên nhân có khả năng | Cách khắc phục |
|---|---|---|
ACP runtime backend is not configured | Thiếu Plugin backend, Plugin bị tắt, hoặc bị plugins.allow chặn. | Cài đặt và bật Plugin backend, đưa acpx vào plugins.allow khi danh sách cho phép đó được đặt, rồi chạy /acp doctor. |
ACP is disabled by policy (acp.enabled=false) | ACP bị tắt toàn cục. | Đặt acp.enabled=true. |
ACP dispatch is disabled by policy (acp.dispatch.enabled=false) | Điều phối tự động từ tin nhắn luồng thông thường bị tắt. | Đặt acp.dispatch.enabled=true để tiếp tục định tuyến luồng tự động; các lệnh gọi sessions_spawn({ runtime: "acp" }) tường minh vẫn hoạt động. |
ACP agent "<id>" is not allowed by policy | Tác nhân không có trong danh sách cho phép. | Dùng agentId được cho phép hoặc cập nhật acp.allowedAgents. |
/acp doctor báo backend chưa sẵn sàng ngay sau khi khởi động | Thiếu Plugin backend, Plugin bị tắt, bị chính sách cho phép/từ chối chặn, hoặc tệp thực thi đã cấu hình không khả dụng. | Cài đặt/bật Plugin backend, chạy lại /acp doctor, rồi kiểm tra lỗi cài đặt backend hoặc lỗi chính sách nếu backend vẫn không khỏe mạnh. |
| Không tìm thấy lệnh harness | CLI bộ chuyển đổi chưa được cài đặt, thiếu Plugin bên ngoài, hoặc lần lấy npx đầu tiên thất bại với bộ chuyển đổi không phải Codex. | Chạy /acp doctor, cài đặt/làm nóng sẵn bộ chuyển đổi trên máy chủ Gateway, hoặc cấu hình tường minh lệnh tác nhân acpx. |
| Không tìm thấy mô hình từ harness | ID mô hình hợp lệ cho nhà cung cấp/harness khác nhưng không hợp lệ cho mục tiêu ACP này. | Dùng mô hình được harness đó liệt kê, cấu hình mô hình trong harness, hoặc bỏ qua phần ghi đè. |
| Lỗi xác thực nhà cung cấp từ harness | OpenClaw khỏe mạnh, nhưng CLI/nhà cung cấp mục tiêu chưa đăng nhập. | Đăng nhập hoặc cung cấp khóa nhà cung cấp bắt buộc trong môi trường máy chủ Gateway. |
Unable to resolve session target: ... | Token khóa/ID/nhãn không đúng. | Chạy /acp sessions, sao chép chính xác khóa/nhãn, rồi thử lại. |
--bind here requires running /acp spawn inside an active ... conversation | --bind here được dùng khi không có cuộc hội thoại đang hoạt động có thể liên kết. | Chuyển đến cuộc trò chuyện/kênh mục tiêu và thử lại, hoặc dùng spawn không liên kết. |
Conversation bindings are unavailable for <channel>. | Bộ chuyển đổi thiếu khả năng liên kết ACP với cuộc hội thoại hiện tại. | Dùng /acp spawn ... --thread ... khi được hỗ trợ, cấu hình bindings[] cấp cao nhất, hoặc chuyển đến kênh được hỗ trợ. |
--thread here requires running /acp spawn inside an active ... thread | --thread here được dùng ngoài ngữ cảnh luồng. | Chuyển đến luồng mục tiêu hoặc dùng --thread auto/off. |
Only <user-id> can rebind this channel/conversation/thread. | Người dùng khác sở hữu mục tiêu liên kết đang hoạt động. | Liên kết lại với tư cách chủ sở hữu hoặc dùng cuộc hội thoại hoặc luồng khác. |
Thread bindings are unavailable for <channel>. | Bộ chuyển đổi thiếu khả năng liên kết luồng. | Dùng --thread off hoặc chuyển đến bộ chuyển đổi/kênh được hỗ trợ. |
Sandboxed sessions cannot spawn ACP sessions ... | ACP runtime nằm phía máy chủ; phiên yêu cầu đang ở trong sandbox. | Dùng runtime="subagent" từ các phiên sandbox, hoặc chạy ACP spawn từ phiên không sandbox. |
sessions_spawn sandbox="require" is unsupported for runtime="acp" ... | sandbox="require" được yêu cầu cho ACP runtime. | Dùng runtime="subagent" khi bắt buộc cần sandbox, hoặc dùng ACP với sandbox="inherit" từ phiên không sandbox. |
Cannot apply --model ... did not advertise model support | Harness mục tiêu không cung cấp chuyển đổi mô hình ACP chung. | Dùng harness quảng bá ACP models/session/set_model, dùng tham chiếu mô hình ACP Codex, hoặc cấu hình mô hình trực tiếp trong harness nếu harness có cờ khởi động riêng. |
| Thiếu siêu dữ liệu ACP cho phiên đã liên kết | Siêu dữ liệu phiên ACP đã cũ/bị xóa. | Tạo lại bằng /acp spawn, rồi liên kết lại/tập trung luồng. |
AcpRuntimeError: Permission prompt unavailable in non-interactive mode | permissionMode chặn ghi/thực thi trong phiên ACP không tương tác. | Đặt plugins.entries.acpx.config.permissionMode thành approve-all và khởi động lại gateway. Xem Cấu hình quyền. |
| Phiên ACP thất bại sớm với rất ít đầu ra | Lời nhắc quyền bị permissionMode/nonInteractivePermissions chặn. | Kiểm tra nhật ký gateway để tìm AcpRuntimeError. Để có đầy đủ quyền, đặt permissionMode=approve-all; để suy giảm nhẹ nhàng, đặt nonInteractivePermissions=deny. |
| Phiên ACP bị treo vô thời hạn sau khi hoàn tất công việc | Tiến trình harness đã kết thúc nhưng phiên ACP không báo hoàn tất. | Cập nhật OpenClaw; cơ chế dọn dẹp acpx hiện tại sẽ thu gom các tiến trình wrapper và bộ chuyển đổi cũ do OpenClaw sở hữu khi đóng và khi Gateway khởi động. |
Harness thấy <<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>> | Phong bì sự kiện nội bộ bị rò rỉ qua ranh giới ACP. | Cập nhật OpenClaw và chạy lại luồng hoàn tất; các harness bên ngoài chỉ nên nhận lời nhắc hoàn tất dạng thuần. |