ACP là đường dẫn dành cho môi trường điều phối 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 của tác nhân; ACP sở hữu các điều khiển /acp ...
và các phiên sessions_spawn({ runtime: "acp" }).Để cho phép Codex hoặc Claude Code kết nối trực tiếp dưới dạng máy khách MCP bên ngoài với
các cuộc hội thoại kênh OpenClaw hiện có, hãy dùng
openclaw mcp serve thay cho ACP.Tôi cần trang nào?
Tính năng này có hoạt động ngay không?
Có, sau khi cài đặt Plugin runtime ACP chính thức:extensions/acpx cục bộ sau
pnpm install. Chạy /acp doctor để kiểm tra trạng thái sẵn sàng.
OpenClaw chỉ hướng dẫn tác nhân về việc khởi tạo ACP khi ACP thực sự khả dụng:
ACP phải được bật, việc điều phối không được tắt, phiên hiện tại không được
sandbox chặn và một backend runtime phải được tải cũng như hoạt động bình thường. Nếu
bất kỳ điều kiện nào không đạt, Skills ACP và hướng dẫn ACP sessions_spawn sẽ tiếp tục bị ẩn
để tác nhân không đề xuất một backend không khả dụng.
Những điểm dễ gặp sự cố khi chạy lần đầu
Những điểm dễ gặp sự cố khi chạy lần đầu
- Nếu
plugins.allowđược đặt, đây là danh sách Plugin hạn chế và phải bao gồmacpx, nếu không backend ACP đã cài đặt sẽ bị chặn có chủ đích (/acp doctorbáo cáo mục bị thiếu trong danh sách cho phép). - Bộ điều hợp Codex ACP được cung cấp cùng Plugin
acpxvà khởi chạy cục bộ khi có thể. - Codex ACP chạy với
CODEX_HOMEbiệt lập. OpenClaw sao chép các mục tin cậy của dự án đáng tin cậy cùng cấu hình định tuyến mô hình/nhà cung cấp an toàn (model,model_provider,model_reasoning_effort,sandbox_modevà các trườngmodel_providers.<name>an toàn) từ cấu hình Codex trên máy chủ; thông tin xác thực, thông báo và hook chỉ nằm trong cấu hình máy chủ. - Các bộ điều hợp môi trường điều phối đích khác có thể được tải về theo yêu cầu bằng
npxtrong lần sử dụng đầu tiên. - Thông tin xác thực của nhà cung cấp phải tồn tại sẵn trên máy chủ cho môi trường điều phối đó.
- Nếu máy chủ không có npm hoặc quyền truy cập mạng, việc tải bộ điều hợp trong lần chạy đầu sẽ thất bại cho đến khi bộ nhớ đệm được làm nóng trước hoặc bộ điều hợp được cài đặt 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 môi trường điều phối bên ngoài thực sự. OpenClaw sở hữu việc định tuyến,
trạng thái tác vụ nền, phân phối, liên kết và chính sách; môi trường điều phối sở hữu
thông tin đăng nhập nhà cung cấp, danh mục mô hình, hành vi hệ thống tệp và các công cụ gốc của nó.Trước khi quy lỗi cho OpenClaw, hãy xác minh:
/acp doctorbáo cáo một backend đã bật và hoạt động bình thường.- Id đích được
acp.allowedAgentscho phép khi danh sách cho phép đó được đặt. - Lệnh của môi trường điều phối có thể khởi động trên máy chủ Gateway.
- Thông tin xác thực của nhà cung cấp hiện diện cho môi trường điều phối đó (
claude,codex,gemini,opencode,droid, v.v.). - Mô hình đã chọn tồn tại cho môi trường điều phối đó - id mô hình không thể dùng chung giữa các môi trường điều phối.
cwdđược yêu cầu tồn tại và có thể truy cập, hoặc bỏ quacwdđể backend dùng giá trị mặc định.- 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ể nhấp vào lời nhắc quyền gốc, vì vậy các lượt lập trình cần nhiều thao tác ghi/thực thi thường cần hồ sơ quyền ACPX có thể tiếp tục ở chế độ không giao diện.
Các đích môi trường điều phối được hỗ trợ
Với backendacpx, hãy dùng các id này làm đích /acp spawn <id> hoặc
sessions_spawn({ runtime: "acp", agentId: "<id>" }):
pi (pi-acp) cũng được đăng ký trong backend acpx nhưng không phải là một
môi trường điều phối lập trình theo cùng nghĩa với các mục khác ở trên.
Có thể cấu hình bí danh tác nhân acpx tùy chỉnh trong chính acpx, nhưng chính sách OpenClaw
vẫn kiểm tra acp.allowedAgents và mọi ánh xạ
agents.list[].runtime.acp.agent trước khi điều phối.
Sổ tay vận hành
Luồng/acp nhanh từ cuộc trò chuyện:
1
Khởi tạo
/acp spawn claude --bind here,
/acp spawn gemini --mode persistent --thread auto hoặc
/acp spawn codex --bind here rõ ràng.2
Làm việc
Tiếp tục trong cuộc hội thoại hoặc luồng đã liên kết (hoặc chỉ định khóa phiên
một cách rõ ràng).
3
Kiểm tra trạng thái
/acp status4
Tinh chỉnh
/acp model <provider/model>, /acp permissions <profile>,
/acp timeout <seconds>.5
Điều hướng
Mà không thay thế ngữ cảnh:
/acp steer tighten logging and continue.6
Dừng
/acp cancel (lượt hiện tại) hoặc /acp close (phiên + liên kết).Chi tiết vòng đời
Chi tiết vòng đời
- Thao tác khởi tạo sẽ tạo mới hoặc tiếp tục một phiên runtime ACP, ghi siêu dữ liệu ACP vào kho lưu trữ phiên OpenClaw và có thể tạo một tác vụ nền khi lượt chạy thuộc quyền sở hữu của tác vụ cha.
- Các phiên ACP thuộc quyền sở hữu của tác vụ cha được xem là công việc nền ngay cả khi phiên runtime là phiên duy trì lâu dài; việc hoàn tất và phân phối trên nhiều bề mặt đi qua trình thông báo tác vụ cha thay vì hoạt động như một phiên trò chuyện thông thường hướng đến người dùng.
- Quá trình bảo trì tác vụ đóng các phiên ACP dùng một lần thuộc quyền sở hữu của tác vụ cha đã kết thúc hoặc bị mất liên kết. Các phiên ACP duy trì lâu dài được giữ lại khi vẫn còn liên kết hội thoại đang hoạt động; các phiên duy trì lâu dài cũ không có liên kết đang hoạt động sẽ bị đóng để không thể được âm thầm tiếp tục sau khi tác vụ sở hữu đã hoàn tất hoặc bản ghi tác vụ của nó không còn tồn tại.
- Các tin nhắn tiếp theo đã liên kết được chuyển thẳng đến phiên ACP cho đến khi liên kết bị đóng, bỏ tiêu điểm, đặt lại hoặc hết hạn.
- Các lệnh Gateway vẫn được xử lý cục bộ.
/acp ...,/statusvà/unfocuskhông bao giờ được gửi dưới dạng văn bản lời nhắc thông thường đến một harness ACP đã liên kết. cancelhủy lượt đang hoạt động khi backend hỗ trợ hủy; thao tác này không xóa liên kết hoặc siêu dữ liệu phiên.closekết thúc phiên ACP theo góc nhìn của OpenClaw và xóa liên kết. Harness vẫn có thể lưu lịch sử ngược dòng của riêng nó nếu hỗ trợ tiếp tục.- Plugin acpx dọn dẹp các cây tiến trình trình bao bọc và bộ điều hợp do OpenClaw sở hữu sau
close, đồng thời thu hồi các tiến trình ACPX mồ côi cũ do OpenClaw sở hữu trong quá trình khởi động Gateway. - Các worker runtime không hoạt động đủ điều kiện được dọn dẹp sau khoảng thời gian không hoạt động tích hợp sẵn; siêu dữ liệu phiên đã lưu vẫn khả dụng cho
/acp sessions.
Quy tắc định tuyến Codex gốc
Quy tắc định tuyến Codex gốc
Các tác nhân kích hoạt bằng ngôn ngữ tự nhiên nên định tuyến đến Plugin Codex gốc
khi Plugin này được bật:
- “Liên kết kênh Discord này với Codex.”
- “Gắn cuộc trò chuyện này vào luồng Codex
<id>.” - “Hiển thị các luồng Codex, sau đó liên kết luồng này.”
before_tool_call, quan sát
after_tool_call và định tuyến các sự kiện PermissionRequest của Codex
thông qua quy trình phê duyệt của OpenClaw. Các hook Stop của Codex
được chuyển tiếp đến before_agent_finalize của OpenClaw, nơi các Plugin có thể yêu cầu
thêm một lượt chạy mô hình trước khi Codex hoàn tất câu trả lời. Bộ chuyển tiếp
được chủ ý giữ ở mức thận trọng: nó không sửa đổi các đối số công cụ gốc của Codex
hoặc ghi lại bản ghi luồng Codex. Chỉ dùng ACP tường minh khi bạn muốn
mô hình runtime/phiên ACP. Ranh giới hỗ trợ Codex nhúng được
ghi lại trong
hợp đồng hỗ trợ Codex harness v1.Bảng tra nhanh lựa chọn mô hình / nhà cung cấp / runtime
Bảng tra nhanh lựa chọn mô hình / nhà cung cấp / runtime
- tham chiếu mô hình Codex cũ - tuyến mô hình đăng ký/OAuth Codex cũ được doctor sửa chữa.
openai/*- runtime nhúng app-server Codex gốc cho các lượt tác nhân OpenAI./codex ...- điều khiển hội thoại Codex gốc./acp ...hoặcruntime: "acp"- điều khiển ACP/acpx tường minh.
Tác nhân kích hoạt bằng ngôn ngữ tự nhiên để định tuyến ACP
Tác nhân kích hoạt bằng ngôn ngữ tự nhiên để định tuyến ACP
Các tác nhân kích hoạt nên định tuyến đến runtime ACP:
- “Chạy tác vụ này dưới dạng phiên ACP Claude Code dùng một lần và tóm tắt kết quả.”
- “Dùng Gemini CLI cho tác vụ này trong một luồng, sau đó giữ các lượt 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
hội thoại hoặc luồng hiện tại khi được hỗ trợ và định tuyến các lượt tiếp theo
đến phiên đó cho đến khi đóng/hết hạn. Codex chỉ đi theo đường dẫn này khi
ACP/acpx được chỉ định 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 công bố khi ACP
được bật, bên yêu cầu không nằm trong sandbox và một backend runtime ACP
đã được tải. acp.dispatch.enabled=false tạm dừng điều phối 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 đến các id harness ACP như codex, claude, droid,
gemini hoặc opencode. Không truyền id tác nhân 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
tác nhân phụ mặc định. Khi một tác nhân OpenClaw được cấu hình với
runtime.type="acp", OpenClaw dùng runtime.acp.agent làm
id harness nền tảng.ACP so với tác nhân phụ
Dùng ACP khi bạn muốn một runtime harness bên ngoài. Dùng app-server Codex gốc để liên kết/điều khiển hội thoại Codex khi Plugincodex
được bật. Dùng tác nhân phụ khi bạn muốn các lượt chạy được ủy quyền có nguồn gốc OpenClaw.
Xem thêm Tác nhân phụ.
Cách ACP chạy Claude Code
Đối với Claude Code thông qua ACP, ngăn xếp là:- Mặt phẳng điều khiển phiên ACP của OpenClaw.
- Plugin runtime
@openclaw/acpxchính thức. - Bộ điều hợp ACP Claude.
- Cơ chế runtime/phiên 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 duy trì lâu dài? Dùng ACP. - Muốn cơ chế dự phòng văn bản cục bộ đơn giản thông qua CLI thô? Dùng các backend CLI.
Phiên đã 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 trò chuyện (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 đến.
- Luồng/chủ đề con - một bề mặt nhắn tin bổ sung tùy chọn chỉ được tạo bởi
--thread .... - Không gian làm việc runtime - vị trí hệ thống tệp (
cwd, bản checkout kho lưu trữ, không gian làm việc backend) nơi harness chạy. Độc lập với bề mặt trò chuyện.
Liên kết hội thoại hiện tại
/acp spawn <harness> --bind here ghim hội thoại hiện tại vào
phiên ACP đã khởi tạo - không có luồng con, vẫn cùng bề mặt trò chuyện. OpenClaw tiếp tục
sở hữu phần vận chuyển, xác thực, an toàn và phân phối. Các tin nhắn tiếp theo trong
hội thoại đó được định tuyến đến cùng phiên; /new và /reset đặt lại phiên
tại chỗ; /acp close xóa liên kết.
Ví dụ:
Quy tắc liên kết và tính loại trừ
Quy tắc liên kết và tính loại trừ
--bind herevà--thread ...loại trừ lẫn nhau.--bind herechỉ hoạt động trên các kênh công bố khả năng liên kết hội thoại hiện tại; nếu không, OpenClaw trả về thông báo rõ ràng rằng tính năng không được hỗ trợ. 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 khởi tạo đến một tác nhân ACP khác mà không có
--cwd, theo mặc định OpenClaw kế thừa không gian làm việc của tác nhân đích. Các đường dẫn được kế thừa bị thiếu (ENOENT/ENOTDIR) sẽ dùng mặc định của backend; các lỗi truy cập khác (ví dụ:EACCES) được hiển thị dưới dạng lỗi khởi tạo. - Các lệnh quản lý Gateway vẫn được xử lý cục bộ trong hội thoại đã liên kết - các lệnh
/acp ...được OpenClaw xử lý ngay cả khi văn bản tiếp theo thông thường được định tuyến đến phiên ACP đã liên kết;/statusvà/unfocuscũng luôn được xử lý cục bộ khi việc 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 bộ điều hợp kênh:
- OpenClaw liên kết một luồng với phiên ACP đích.
- Các tin nhắn tiếp theo trong luồng đó được định tuyến đến phiên ACP đã liên kết.
- Đầu ra ACP được gửi trở lại cùng luồng.
- Thao tác bỏ tiêu điểm/đóng/lưu trữ, hết thời gian chờ không hoạt động hoặc hết thời hạn tối đa sẽ xóa liên kết.
/acp close,/acp cancel,/acp status,/statusvà/unfocuslà các lệnh Gateway, không phải lời nhắc cho harness ACP.
acp.enabled=trueacp.dispatch.enabledđược bật theo mặc định (đặtfalseđể tạm dừng điều phối luồng ACP tự động; các lệnh gọisessions_spawn({ runtime: "acp" })tường minh vẫn hoạt động).- Khả năng khởi tạo phiên luồng của bộ điều hợp kênh được bật (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
- Mọi bộ điều hợp kênh cung cấp khả năng liên kết phiên/luồng.
- Hỗ trợ tích hợp hiện tại: các luồng/kênh Discord, các chủ đề Telegram (chủ đề diễn đàn trong nhóm/siêu nhóm và chủ đề tin nhắn trực tiếp).
- Các kênh Plugin có thể bổ sung hỗ trợ thông qua cùng giao diện liên kết.
Liên kết kênh duy trì lâu dài
Đối với các quy trình không tạm thời, hãy cấu hình liên kết ACP duy trì lâu dài 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 hội thoại ACP duy trì lâu dài.
Xác định hội thoại đích. Cấu trúc theo từng kênh:
- Kênh/luồng Discord:
match.channel="discord"+match.peer.id="<channelOrThreadId>" - Kênh/tin nhắn trực tiếp Slack:
match.channel="slack"+match.peer.id="<channelId|channel:<channelId>|#<channelId>|userId|user:<userId>|slack:<userId>|<@userId>>". Ưu tiên các ID Slack ổn định; liên kết kênh cũng khớp với các câu trả lời bên trong các luồng của kênh đó. - Chủ đề diễn đàn Telegram:
match.channel="telegram"+match.peer.id="<chatId>:topic:<topicId>" - Tin nhắn trực tiếp/nhóm WhatsApp:
match.channel="whatsapp"+match.peer.id="<E.164|group JID>". Sử dụng số E.164 như+15555550123cho cuộc trò chuyện trực tiếp và JID nhóm WhatsApp như120363424282127706@g.uscho nhóm. - Tin nhắn trực tiếp/nhóm iMessage:
match.channel="imessage"+match.peer.id="<handle|chat_id:*|chat_guid:*|chat_identifier:*>". Ưu tiênchat_id:*để có liên kết nhóm ổn định.
ID agent OpenClaw sở hữu.
Giá trị ghi đè ACP tùy chọn.
Nhãn tùy chọn dành cho người vận hành.
Thư mục làm việc thời gian chạy tùy chọn.
Giá trị ghi đè backend tùy chọn.
Giá trị mặc định thời gian chạy cho từng agent
Sử dụngagents.list[].runtime để xác định các giá trị 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.*- Các giá trị 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 sau bước kiểm soát quyền vào dành riêng cho kênh và trước khi sử dụng.
- Tin nhắn trong kênh, chủ đề hoặc cuộc trò chuyện đó được định tuyến đến phiên ACP đã cấu hình.
- Các liên kết ACP đã cấu hình sở hữu tuyến phiên của chúng. Phân phối dạng broadcast đến nhiều đích của kênh không thay thế phiên ACP đã cấu hình đối với một liên kết khớp.
- Trong các cuộc trò chuyện đã liên kết,
/newvà/resetđặt lại cùng một khóa phiên ACP tại chỗ. - Các liên kết thời gian chạy tạm thời (ví dụ: được tạo bởi luồng tập trung vào luồng hội thoại) vẫn áp dụng khi có.
- Đối với việc khởi tạo ACP giữa các agent mà không có
cwdtường minh, 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 không tồn tại sẽ dùng cwd mặc định của backend; lỗi truy cập đối với đường dẫn có tồn tại được trả về dưới dạng lỗi khởi tạo.
Khởi động phiên ACP
Có hai cách để khởi động một phiên ACP:- Từ sessions_spawn
- Từ lệnh /acp
Sử dụng
runtime: "acp" để khởi động một phiên ACP từ một lượt xử lý của agent hoặc một
lệnh gọi công cụ.runtime mặc định là subagent, vì vậy hãy đặt runtime: "acp" tường minh cho
các phiên ACP. Nếu bỏ qua agentId, OpenClaw sử dụng acp.defaultAgent
khi được cấu hình. mode: "session" yêu cầu thread: true để duy trì một
cuộc trò chuyện liên kết lâu dài.Tham số sessions_spawn
Lời nhắc ban đầu được gửi đến phiên ACP.
Phải là
"acp" đối với các phiên ACP.ID harness đích của ACP. Dùng
acp.defaultAgent làm phương án dự phòng nếu được đặt.Yêu cầu luồng liên kết luồng hội thoại ở nơi được hỗ trợ.
"run" chạy một lần; "session" là lâu dài. Nếu thread: true và
bỏ qua mode, OpenClaw có thể mặc định sử dụng hành vi lâu dài tùy theo
đường dẫn thời gian chạy. mode: "session" yêu cầu thread: true.Thư mục làm việc thời gian chạy được yêu cầu (được xác thực theo chính sách backend/thời gian chạy).
Nếu bỏ qua, thao tác khởi tạo ACP kế thừa không gian làm việc của agent đích khi được cấu hình;
các đường dẫn được kế thừa nhưng không tồn tại sẽ dùng giá trị mặc định của backend, còn lỗi
truy cập thực tế sẽ được trả về.
Nhãn dành cho người vận hành, được sử dụng trong văn bản phiên/biểu ngữ.
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ử trò chuyện của phiên qua
session/load. Yêu cầu
runtime: "acp"."parent" truyền phát các bản tóm tắt tiến trình chạy ACP ban đầu trở lại phiên
yêu cầu dưới dạng sự kiện hệ thống. OpenClaw ghi lại toàn bộ lịch sử chuyển tiếp trong
trạng thái SQLite của agent con và xóa lịch sử đó cùng với phiên con. Theo mặc định,
luồng tiến trình của phiên cha hiển thị phần bình luận của trợ lý và tiến trình trạng thái ACP, trừ khi
streaming.progress.commentary=false. Discord cũng mặc định đặt bản xem trước của phiên cha
ở chế độ tiến trình khi chưa cấu hình chế độ truyền phát. Tiến trình
trạng thái vẫn tuân theo acp.stream.tagVisibility, vì vậy các thẻ như plan
vẫn bị ẩn trừ khi được bật tường minh.sessions_spawn sử dụng agents.defaults.subagents.runTimeoutSeconds
làm giới hạn lượt con mặc định. Công cụ không chấp nhận giá trị ghi đè thời gian chờ
theo từng lệnh gọi (runTimeoutSeconds/timeoutSeconds bị từ chối kèm lỗi
yêu cầu cấu hình giá trị mặc định).
Giá trị ghi đè mô hình tường minh cho phiên ACP con. Các thao tác khởi tạo Codex ACP
chuẩn hóa các tham chiếu OpenAI như
openai/gpt-5.4 thành cấu hình khởi động Codex ACP
trước session/new; các dạng có dấu gạch chéo như openai/gpt-5.4/high cũng đặt
mức độ suy luận của Codex ACP. Khi bỏ qua, sessions_spawn({ runtime: "acp" })
sử dụng các giá trị mặc định hiện có về mô hình subagent (agents.defaults.subagents.model hoặc
agents.list[].subagents.model) khi được cấu hình; nếu không, nó cho phép
harness ACP sử dụng mô hình mặc định riêng. Các harness khác phải công bố ACP
models và hỗ trợ session/set_model; nếu không, OpenClaw/acpx sẽ báo lỗi
rõ ràng thay vì âm thầm dùng mô hình mặc định của agent đích.Mức độ tư duy/suy luận tường minh. Đối với Codex ACP,
minimal ánh xạ thành mức
thấp, low/medium/high/xhigh ánh xạ trực tiếp, còn off bỏ qua
giá trị ghi đè mức độ suy luận khi khởi động. Khi bỏ qua, các thao tác khởi tạo ACP sử dụng
các giá trị mặc định hiện có về tư duy của subagent và
agents.defaults.models["provider/model"].params.thinking theo từng mô hình cho mô hình
đã chọn.Chế độ liên kết và luồng hội thoại khi khởi tạo
- --bind here|off
- --thread auto|here|off
Ghi chú:
--bind herelà cách đơn giản nhất để người vận hành “dùng Codex làm backend cho kênh hoặc cuộc trò chuyện này”.--bind herekhông tạo luồng hội thoại con.--bind herechỉ khả dụng trên các kênh cung cấp khả năng 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
Các 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 phiên cha sở hữu. Đường dẫn phân phối phụ thuộc vào dạng đó.Phiên ACP tương tác
Phiên ACP tương tác
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 trò chuyện 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 một luồng/chủ đề của kênh với phiên ACP.bindings[].type="acp"được cấu hình lâu dài định tuyến các cuộc trò chuyện khớp đến cùng một phiên ACP.
- Các lượt theo dõi liên kết thông thường được gửi dưới dạng văn bản lời nhắc, kèm tệp đính kèm chỉ khi bộ kiểm thử/backend hỗ trợ.
- Các lệnh quản lý
/acpvà lệnh Gateway cục bộ được chặn trước khi điều phối ACP. - Các sự kiện hoàn tất do runtime tạo ra được hiện thực hóa theo từng đích. Các agent OpenClaw nhận phong bì ngữ cảnh runtime nội bộ của OpenClaw; các bộ kiểm thử ACP bên ngoài nhận lời nhắc thuần túy chứa kết quả của tiến trình con và chỉ dẫn. Không bao giờ được gửi phong bì
<<<BEGIN_OPENCLAW_INTERNAL_CONTEXT>>>thô tới các bộ kiểm thử bên ngoài hoặc lưu nó dưới dạng văn bản bản ghi người dùng ACP. - Các mục bản ghi ACP sử dụng văn bản kích hoạt hiển thị cho người dùng hoặc lời nhắc hoàn tất thuần túy. Siêu dữ liệu sự kiện nội bộ vẫn được giữ ở dạng có cấu trúc trong OpenClaw khi có thể và không được coi là nội dung trò chuyện do người dùng soạn.
Các phiên ACP một lần do tiến trình cha sở hữu
Các phiên ACP một lần do tiến trình cha sở hữu
Các phiên ACP một lần được tạo bởi một lượt chạy agent khác là các tiến trình con
chạy nền, tương tự như các agent con:
- Tiến trình cha yêu cầu thực hiện công việc bằng
sessions_spawn({ runtime: "acp", mode: "run" }). - Tiến trình con chạy trong phiên bộ kiểm thử ACP riêng.
- Các lượt của tiến trình con chạy trên cùng làn nền được các lần tạo agent con gốc sử dụng, vì vậy một bộ kiểm thử ACP chậm không chặn công việc không liên quan trong phiên chính.
- Báo cáo hoàn tất được gửi lại 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 lời nhắc ACP thuần túy trước khi gửi tới bộ kiểm thử bên ngoài, vì vậy các bộ kiểm thử không thấy các dấu ngữ cảnh runtime chỉ dành cho OpenClaw.
- Tiến trình cha viết lại kết quả của tiến trình con bằng giọng trợ lý thông thường khi cần phản hồi hiển thị cho người dùng.
sessions_send và phân phối A2A
sessions_send và phân phối A2A
sessions_send có thể nhắm tới một phiên khác sau khi tạo. Đối với các phiên ngang hàng
thông thường, OpenClaw sử dụng đường dẫn theo dõi agent-tới-agent (A2A) sau khi
chèn thông điệp:- 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 một số lượng hữu hạn các lượt theo dõi.
- Yêu cầu đích tạo thông điệp thông báo.
- Phân phối thông báo đó tới kênh hoặc luồng hiển thị.
tools.sessions.visibility
rộng.OpenClaw chỉ bỏ qua lượt theo dõi A2A khi bên yêu cầu là tiến trình cha của
chính tiến trình con ACP một lần do tiến trình cha sở hữu. Trong trường hợp đó, việc chạy A2A chồng lên
quá trình hoàn tất tác vụ có thể đánh thức tiến trình cha bằng kết quả của tiến trình con, chuyển tiếp
phản hồi của tiến trình cha trở lại tiến trình con và tạo vòng lặp vọng lại
giữa tiến trình cha/tiến trình con. Kết quả sessions_send báo cáo delivery.status="skipped" cho
trường hợp tiến trình con được sở hữu đó vì đường dẫn hoàn tất đã chịu trách nhiệm
về kết quả.Tiếp tục một phiên hiện có
Tiếp tục một phiên hiện có
Sử 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ử hội thoại qua
session/load, nhờ đó tiếp tục với đầy đủ ngữ cảnh trước đó.- Chuyển giao một phiên Codex từ máy tính xách tay sang điện thoại - yêu cầu agent tiếp tục từ chỗ bạn đã dừng.
- Tiếp tục một phiên lập trình mà bạn đã bắt đầu tương tác trong CLI, giờ đây chạy không giao diện thông qua agent.
- Tiếp tục công việc bị gián đoạn do Gateway khởi động lại hoặc hết thời gian chờ khi không hoạt động.
resumeSessionIdchỉ áp dụng khiruntime: "acp"; runtime agent con mặc định bỏ qua trường chỉ dành cho ACP này.streamTochỉ áp dụng khiruntime: "acp"; runtime agent con mặc định bỏ qua trường chỉ dành cho ACP này.resumeSessionIdlà mã tiếp tục ACP/bộ kiểm thử cục bộ trên máy chủ, 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 điều phối, còn backend ACP hoặc bộ kiểm thử chịu trách nhiệm cấp quyền để tải mã nguồn ngược đó.resumeSessionIdkhôi phục lịch sử hội thoại ACP nguồn ngược;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 đều hỗ trợ). - Nếu không tìm thấy mã phiên, thao tác tạo sẽ thất bại với lỗi rõ ràng - không âm thầm chuyển sang phiên mới.
Kiểm thử nhanh sau khi triển khai
Kiểm thử nhanh sau khi triển khai
Sau khi triển khai Gateway, hãy chạy kiểm tra trực tiếp từ đầu đến cuối thay vì tin tưởng
các kiểm thử đơn vị:
- Xác minh phiên bản và commit của Gateway đã triển khai trên máy chủ đích.
- Mở một phiên cầu nối ACPX tạm thời tới một agent trực tiếp.
- Yêu cầu agent đó 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ực 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" liên kết 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ú hơn riêng biệt.Khả năng tương thích với sandbox
Các phiên ACP hiện chạy trên runtime máy chủ, không chạy bên trong sandbox OpenClaw. Các hạn chế hiện tại:- Nếu phiên yêu cầu được sandbox, việc tạo 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 đích phiên
Hầu hết hành động/acp chấp nhận một đích phiên tùy chọn (session-key,
session-id hoặc session-label).
Thứ tự phân giải:
- Đối số đích tường minh (hoặc
--sessioncho/acp steer)- thử khóa
- sau đó là mã phiên có dạng UUID
- sau đó là nhãn
- Liên kết luồng hiện tại (nếu cuộc hội thoại/luồng này được liên kết với một phiên ACP).
- Phương án dự phòng là phiên của bên yêu cầu hiện tại.
Unable to resolve session target: ...).
Các điều khiển ACP
Các điều khiển runtime (
spawn, cancel, steer, close, status, set-mode,
set, cwd, permissions, timeout, model và reset-options) yêu cầu
danh tính chủ sở hữu từ các kênh bên ngoài và operator.admin từ các máy khách
Gateway nội bộ. Bên gửi không phải chủ sở hữu nhưng được cấp quyền vẫn có thể sử dụng sessions,
doctor, install và help. Đối với bên gửi không phải chủ sở hữu, /acp sessions
chỉ liệt kê phiên đang được liên kết hoặc phiên của bên yêu cầu; danh tính chủ sở hữu và
máy khách operator.admin thấy tất cả các phiên gần đây.
/acp status hiển thị các tùy chọn runtime có hiệu lực cùng các mã định danh phiên
cấp runtime và cấp backend. Lỗi điều khiển không được hỗ trợ được hiển thị
rõ ràng khi backend thiếu một khả năng. Các lệnh chấp nhận token đích
(session-key, session-id hoặc session-label) phân giải chúng thông qua cơ chế khám phá phiên của Gateway,
bao gồm các gốc session.store tùy chỉnh theo từng agent. /acp sessions
không chấp nhận token đích.
Ánh xạ tùy chọn runtime
/acp có các lệnh tiện ích và một trình đặt chung. Các thao tác tương đương:
Harness acpx, thiết lập plugin và quyền
Để biết 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 cũng như các chế độ quyền ACP, hãy xem Tác nhân ACP - thiết lập.Khắc phục sự cố
Command blocked by PreToolUse hook: Native hook relay unavailable thuộc về
cơ chế chuyển tiếp hook Codex gốc, không phải ACP/acpx. Trong một cuộc trò chuyện Codex đã liên kết, hãy bắt đầu
phiên mới bằng /new hoặc /reset; nếu thao tác này hoạt động một lần rồi lỗi quay lại trong
lần gọi công cụ gốc tiếp theo, hãy khởi động lại app-server Codex hoặc OpenClaw Gateway
thay vì lặp lại /new. Xem
Khắc phục sự cố harness Codex.