Định tuyến đa tác tử
Mục tiêu: nhiều agent cô lập (workspace +agentDir + phiên riêng), cùng với nhiều tài khoản kênh (ví dụ: hai WhatsApp) trong một Gateway đang chạy. Lưu lượng vào được định tuyến đến một agent thông qua các binding.
“Một tác tử” là gì?
Một tác tử là một bộ não được phạm vi hóa đầy đủ với:- Workspace (tệp, AGENTS.md/SOUL.md/USER.md, ghi chú cục bộ, quy tắc persona).
- Thư mục trạng thái (
agentDir) cho hồ sơ xác thực, registry mô hình và cấu hình theo từng tác tử. - Kho phiên (lịch sử chat + trạng thái định tuyến) nằm dưới
~/.openclaw/agents/<agentId>/sessions.
agentDir
across agents (it causes auth/session collisions). Nếu bạn muốn chia sẻ thông tin xác thực, hãy sao chép auth-profiles.json vào agentDir của agent kia.
Skills là theo từng agent thông qua thư mục skills/ của mỗi workspace, với các skill dùng chung có sẵn tại ~/.openclaw/skills. Xem Skills: per-agent vs shared.
Gateway có thể lưu trữ một tác tử (mặc định) hoặc nhiều tác tử song song.
Ghi chú workspace: workspace của mỗi agent là cwd mặc định, không phải một sandbox cứng. Relative paths resolve inside the workspace, but absolute paths can
reach other host locations unless sandboxing is enabled. Xem Sandboxing.
Đường dẫn (bản đồ nhanh)
- Cấu hình:
~/.openclaw/openclaw.json(hoặcOPENCLAW_CONFIG_PATH) - Thư mục trạng thái:
~/.openclaw(hoặcOPENCLAW_STATE_DIR) - Workspace:
~/.openclaw/workspace(hoặc~/.openclaw/workspace-<agentId>) - Thư mục tác tử:
~/.openclaw/agents/<agentId>/agent(hoặcagents.list[].agentDir) - Phiên:
~/.openclaw/agents/<agentId>/sessions
Chế độ một tác tử (mặc định)
Nếu bạn không làm gì, OpenClaw chạy một tác tử duy nhất:agentIdmặc định làmain.- Phiên được khóa theo
agent:main:<mainKey>. - Workspace mặc định là
~/.openclaw/workspace(hoặc~/.openclaw/workspace-<profile>khiOPENCLAW_PROFILEđược đặt). - Trạng thái mặc định là
~/.openclaw/agents/main/agent.
Trợ lý tác tử
Dùng trình hướng dẫn tác tử để thêm một tác tử cô lập mới:bindings (hoặc để trình hướng dẫn làm) để định tuyến tin nhắn vào.
Xác minh bằng:
Nhiều tác tử = nhiều người, nhiều cá tính
Với nhiều tác tử, mỗiagentId trở thành một persona cô lập hoàn toàn:
- Số điện thoại/tài khoản khác nhau (theo từng kênh
accountId). - Cá tính khác nhau (tệp workspace theo tác tử như
AGENTS.mdvàSOUL.md). - Xác thực + phiên tách biệt (không có giao thoa trừ khi bật rõ ràng).
Một số WhatsApp, nhiều người (tách DM)
Bạn có thể định tuyến các DM WhatsApp khác nhau đến các agent khác nhau trong khi vẫn dùng một tài khoản WhatsApp. Match on sender E.164 (like+15551234567) with peer.kind: "direct". Phản hồi vẫn đến từ cùng một số WhatsApp (không có danh tính người gửi theo từng agent).
Chi tiết quan trọng: chat trực tiếp được gộp về khóa phiên chính của tác tử, vì vậy để cô lập thực sự cần mỗi người một tác tử.
Ví dụ:
- Kiểm soát truy cập DM là toàn cục theo tài khoản WhatsApp (ghép cặp/danh sách cho phép), không theo tác tử.
- Với nhóm dùng chung, hãy gán nhóm cho một tác tử hoặc dùng Broadcast groups.
Quy tắc định tuyến (cách tin nhắn chọn tác tử)
Các ràng buộc là xác định và cụ thể nhất sẽ thắng:- Khớp
peer(DM/nhóm/id kênh chính xác) - Khớp
parentPeer(kế thừa theo luồng hội thoại) guildId + roles(định tuyến vai trò Discord)guildId(Discord)teamId(Slack)- Rơi về tác tử mặc định (
agents.list[].default, nếu không thì mục đầu tiên trong danh sách, mặc định:main) - Khớp cấp kênh (
accountId: "*") - Rơi về tác tử mặc định (
agents.list[].default, nếu không thì mục đầu tiên trong danh sách, mặc định:main)
peer + guildId), tất cả các trường được chỉ định đều bắt buộc (AND semantics).
Nhiều tài khoản / số điện thoại
Các kênh hỗ trợ nhiều tài khoản (ví dụ: WhatsApp) sử dụngaccountId để định danh từng lần đăng nhập. Mỗi accountId có thể được định tuyến đến một agent khác nhau, vì vậy một máy chủ có thể lưu trữ nhiều số điện thoại mà không trộn lẫn phiên.
Khái niệm
agentId: một “bộ não” (workspace, xác thực theo tác tử, kho phiên theo tác tử).accountId: một phiên bản tài khoản kênh (ví dụ tài khoản WhatsApp"personal"so với"biz").binding: định tuyến tin nhắn vào tới mộtagentIdtheo(channel, accountId, peer)và tùy chọn id guild/team.- Chat trực tiếp được gộp về
agent:<agentId>:<mainKey>(theo tác tử “chính”;session.mainKey).
Ví dụ: hai WhatsApp → hai tác tử
~/.openclaw/openclaw.json (JSON5):
Ví dụ: WhatsApp chat hằng ngày + Telegram làm việc sâu
Chia theo kênh: định tuyến WhatsApp tới tác tử nhanh dùng hằng ngày và Telegram tới tác tử Opus.- Nếu bạn có nhiều tài khoản cho một kênh, hãy thêm
accountIdvào ràng buộc (ví dụ{ channel: "whatsapp", accountId: "personal" }). - Để định tuyến một DM/nhóm cụ thể tới Opus trong khi giữ phần còn lại ở chat, hãy thêm ràng buộc
match.peercho peer đó; khớp peer luôn thắng các quy tắc toàn kênh.
Ví dụ: cùng kênh, một peer tới Opus
Giữ WhatsApp trên tác tử nhanh, nhưng định tuyến một DM tới Opus:Tác tử gia đình gắn với một nhóm WhatsApp
Gán một tác tử gia đình chuyên dụng cho một nhóm WhatsApp, với kiểm soát theo @mention và chính sách công cụ chặt chẽ hơn:- Danh sách cho phép/từ chối công cụ là tools, không phải skills. 1. Nếu một kỹ năng cần chạy một
tệp nhị phân, hãy đảm bảo
execđược cho phép và tệp nhị phân tồn tại trong sandbox. - Để kiểm soát chặt hơn, đặt
agents.list[].groupChat.mentionPatternsvà giữ danh sách cho phép nhóm được bật cho kênh.
Sandbox và cấu hình công cụ theo tác tử
Bắt đầu từ v2026.1.6, mỗi tác tử có thể có sandbox và hạn chế công cụ riêng:- Lưu ý:
setupCommandnằm dướisandbox.dockervà chỉ chạy một lần khi tạo container. - Các ghi đè
sandbox.docker.*theo từng agent sẽ bị bỏ qua khi phạm vi đã được phân giải là"shared".
- Cô lập bảo mật: Hạn chế công cụ cho các tác tử không tin cậy
- Kiểm soát tài nguyên: Sandbox các tác tử cụ thể trong khi giữ các tác tử khác trên host
- Chính sách linh hoạt: Quyền khác nhau cho từng tác tử
tools.elevated là toàn cục và dựa trên người gửi; không thể cấu hình theo từng agent.
5. Nếu bạn cần ranh giới theo từng agent, hãy dùng agents.list[].tools để từ chối exec.
Đối với nhắm mục tiêu theo nhóm, hãy dùng agents.list[].groupChat.mentionPatterns để các @mention ánh xạ chính xác tới agent mong muốn.
Xem Multi-Agent Sandbox & Tools để có ví dụ chi tiết.