Chạy nhiều agent cô lập — mỗi agent có workspace, thư mục trạng thái (Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agentDir) và lịch sử phiên riêng — cùng nhiều tài khoản kênh (ví dụ: hai WhatsApp) trong một Gateway đang chạy. Tin nhắn đến được định tuyến đến đúng agent thông qua các binding.
Ở đây, agent là toàn bộ phạm vi theo từng persona: tệp workspace, hồ sơ xác thực, sổ đăng ký model và kho phiên. agentDir là thư mục trạng thái trên đĩa chứa cấu hình theo từng agent này tại ~/.openclaw/agents/<agentId>/. binding ánh xạ một tài khoản kênh (ví dụ: một workspace Slack hoặc một số WhatsApp) đến một trong các agent đó.
”một agent” là gì?
agent là một bộ não được phân phạm vi đầ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, sổ đăng ký model và cấu hình theo từng agent. - Kho phiên (lịch sử trò chuyện + trạng thái định tuyến) trong
~/.openclaw/agents/<agentId>/sessions.
sessions_history cũng là đường dẫn gọi nhớ xuyên phiên an toàn hơn ở đây: nó trả về một chế độ xem có giới hạn và đã được làm sạch, không phải bản đổ transcript thô. Phần gọi nhớ của trợ lý loại bỏ các thẻ suy nghĩ, khung dựng <relevant-memories>, payload XML cuộc gọi công cụ dạng văn bản thuần (bao gồm <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> và các khối cuộc gọi công cụ bị cắt ngắn), khung dựng cuộc gọi công cụ đã hạ cấp, token điều khiển model ASCII/toàn chiều rộng bị rò rỉ và XML cuộc gọi công cụ MiniMax sai định dạng trước khi biên tập/cắt ngắn.~/.openclaw/skills, rồi được lọc theo danh sách cho phép Skills hiệu dụng của agent khi được cấu hình. Dùng agents.defaults.skills làm nền tảng dùng chung và agents.list[].skills để thay thế theo từng agent. Xem Skills: theo từng agent so với dùng chung và Skills: danh sách cho phép Skills của agent.
Gateway có thể lưu trữ một agent (mặc định) hoặc nhiều agent chạy cạnh nhau.
Ghi chú workspace: workspace của từng agent là cwd mặc định, không phải một sandbox cứng. Đường dẫn tương đối được phân giải bên trong workspace, nhưng đường dẫn tuyệt đối có thể truy cập các vị trí khác trên máy chủ trừ khi sandboxing được bật. 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 agent:
~/.openclaw/agents/<agentId>/agent(hoặcagents.list[].agentDir) - Phiên:
~/.openclaw/agents/<agentId>/sessions
Chế độ một agent (mặc định)
Nếu bạn không làm gì, OpenClaw chạy một agent duy nhất:agentIdmặc định làmain.- Phiên được đặt khóa dạng
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ình trợ giúp agent
Dùng trình hướng dẫn agent để thêm một agent cô lập mới:bindings (hoặc để trình hướng dẫn làm việc đó) để định tuyến tin nhắn đến.
Xác minh bằng:
Bắt đầu nhanh
Create each agent workspace
Dùng trình hướng dẫn hoặc tạo workspace thủ công:Mỗi agent nhận workspace riêng với
SOUL.md, AGENTS.md và USER.md tùy chọn, cùng một agentDir chuyên dụng và kho phiên trong ~/.openclaw/agents/<agentId>.Create channel accounts
Tạo một tài khoản cho mỗi agent trên các kênh bạn chọn:Xem hướng dẫn kênh: Discord, Telegram, WhatsApp.
- Discord: một bot cho mỗi agent, bật Message Content Intent, sao chép từng token.
- Telegram: một bot cho mỗi agent thông qua BotFather, sao chép từng token.
- WhatsApp: liên kết từng số điện thoại theo tài khoản.
Add agents, accounts, and bindings
Thêm agent trong
agents.list, tài khoản kênh trong channels.<channel>.accounts, và kết nối chúng bằng bindings (ví dụ bên dưới).Nhiều agent = nhiều người, nhiều tính cách
Với nhiều agent, mỗiagentId trở thành một persona được cô lập hoàn toàn:
- Số điện thoại/tài khoản khác nhau (theo
accountIdcủa từng kênh). - Tính cách khác nhau (các tệp workspace theo từng agent như
AGENTS.mdvàSOUL.md). - Xác thực + phiên riêng biệt (không trao đổi chéo trừ khi được bật rõ ràng).
Tìm kiếm bộ nhớ QMD xuyên agent
Nếu một agent cần tìm kiếm transcript phiên QMD của agent khác, hãy thêm các collection bổ sung trongagents.list[].memorySearch.qmd.extraCollections. Chỉ dùng agents.defaults.memorySearch.qmd.extraCollections khi mọi agent nên kế thừa cùng các collection transcript dùng chung.
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. Khớp theo người gửi E.164 (như+15551234567) với peer.kind: "direct". Phản hồi vẫn đến từ cùng số WhatsApp đó (không có danh tính người gửi theo từng agent).
Cuộc trò chuyện trực tiếp thu gọn về khóa phiên chính của agent, vì vậy cô lập thật sự yêu cầu mỗi người một agent.
- Kiểm soát truy cập DM là toàn cục theo tài khoản WhatsApp (ghép nối/danh sách cho phép), không phải theo từng agent.
- Với nhóm dùng chung, hãy bind nhóm vào một agent hoặc dùng Nhóm phát sóng.
Quy tắc định tuyến (cách tin nhắn chọn agent)
Binding là xác định và cụ thể nhất thắng:Tie-breaking and AND semantics
Tie-breaking and AND semantics
- Nếu nhiều binding khớp trong cùng một tầng, binding đầu tiên theo thứ tự cấu hình sẽ thắng.
- Nếu một binding đặt nhiều trường khớp (ví dụ
peer+guildId), tất cả các trường được chỉ định đều bắt buộc (ngữ nghĩaAND).
Account-scope detail
Account-scope detail
- Binding bỏ qua
accountIdchỉ khớp với tài khoản mặc định. - Dùng
accountId: "*"làm dự phòng toàn kênh trên mọi tài khoản. - Nếu sau này bạn thêm cùng binding cho cùng agent với một id tài khoản tường minh, OpenClaw nâng cấp binding chỉ theo kênh hiện có thành theo phạm vi tài khoản thay vì nhân đôi nó.
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) dùngaccountId để nhận diện 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.
Nếu bạn muốn có một tài khoản mặc định toàn kênh khi accountId bị bỏ qua, hãy đặt channels.<channel>.defaultAccount (tùy chọn). Khi chưa đặt, OpenClaw sẽ quay về default nếu có, nếu không thì id tài khoản được cấu hình đầu tiên (đã sắp xếp).
Các kênh thường hỗ trợ mẫu này gồm:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkbluebubbles,zalo,zalouser,nostr,feishu
Khái niệm
agentId: một “bộ não” (workspace, xác thực theo từng agent, kho phiên theo từng agent).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 đến vào mộtagentIdtheo(channel, accountId, peer)và tùy chọn id guild/team.- Cuộc trò chuyện trực tiếp thu gọn về
agent:<agentId>:<mainKey>(“main” theo từng agent;session.mainKey).
Ví dụ nền tảng
Discord bots per agent
Discord bots per agent
Mỗi tài khoản bot Discord ánh xạ đến một
accountId duy nhất. Bind từng tài khoản vào một agent và giữ danh sách cho phép theo từng bot.- Mời từng bot vào guild và bật Message Content Intent.
- Token nằm trong
channels.discord.accounts.<id>.token(tài khoản mặc định có thể dùngDISCORD_BOT_TOKEN).
Telegram bots per agent
Telegram bots per agent
- Tạo một bot cho mỗi tác nhân bằng BotFather và sao chép từng token.
- Token nằm trong
channels.telegram.accounts.<id>.botToken(tài khoản mặc định có thể dùngTELEGRAM_BOT_TOKEN).
WhatsApp numbers per agent
WhatsApp numbers per agent
Liên kết từng tài khoản trước khi khởi động Gateway:
~/.openclaw/openclaw.json (JSON5):Các mẫu phổ biến
- WhatsApp daily + Telegram deep work
- Same channel, one peer to Opus
- Family agent bound to a WhatsApp group
Chia theo kênh: định tuyến WhatsApp đến một tác nhân nhanh dùng hằng ngày và Telegram đến một tác nhân Opus.Ghi chú:
- Nếu bạn có nhiều tài khoản cho một kênh, hãy thêm
accountIdvào binding (ví dụ{ channel: "whatsapp", accountId: "personal" }). - Để định tuyến một DM/nhóm duy nhất đến Opus trong khi giữ phần còn lại trên chat, hãy thêm binding
match.peercho peer đó; các kết quả khớp peer luôn thắng các quy tắc toàn kênh.
Cấu hình sandbox và công cụ theo từng tác nhân
Mỗi tác nhân có thể có sandbox và hạn chế công cụ riêng:setupCommand nằm dưới sandbox.docker và chạy một lần khi tạo container. Các ghi đè sandbox.docker.* theo từng tác nhân bị bỏ qua khi scope đã phân giải là "shared".- Cô lập bảo mật: hạn chế công cụ cho các tác nhân không đáng tin cậy.
- Kiểm soát tài nguyên: sandbox các tác nhân cụ thể trong khi giữ những tác nhân khác trên host.
- Chính sách linh hoạt: quyền khác nhau cho từng tác nhân.
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 tác nhân. Nếu bạn cần ranh giới theo từng tác nhân, hãy dùng agents.list[].tools để từ chối exec. Để nhắm mục tiêu theo nhóm, hãy dùng agents.list[].groupChat.mentionPatterns để @mention ánh xạ rõ ràng đến tác nhân dự định.Liên quan
- Tác nhân ACP — chạy các harness lập trình bên ngoài
- Định tuyến kênh — cách tin nhắn định tuyến đến tác nhân
- Presence — sự hiện diện và trạng thái sẵn sàng của tác nhân
- Session — cô lập và định tuyến phiên
- Tác nhân phụ — tạo các lượt chạy tác nhân nền