Chạy nhiều tác nhân cô lập — mỗi tác nhân có workspace, thư mục trạng thái (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.
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 tác nhân thông qua các binding.
Ở đây, tác nhân là toàn bộ phạm vi theo từng persona: tệp workspace, hồ sơ xác thực, registry mô hình 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 tác nhân này tại ~/.openclaw/agents/<agentId>/. Binding ánh xạ một tài khoản kênh (ví dụ: một Slack workspace hoặc một số WhatsApp) đến một trong các tác nhân đó.
”Một tác nhân” là gì?
Tác nhân là một bộ não được phân phạm vi đầy đủ với riêng:- 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 nhân. - Kho phiên (lịch sử chat + trạng thái định tuyến) trong
~/.openclaw/agents/<agentId>/sessions.
sessions_history cũng là đường dẫn nhớ lại liê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 dump transcript thô. Việc nhớ lại của trợ lý loại bỏ thẻ suy nghĩ, khung <relevant-memories>, payload XML 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 gọi công cụ bị cắt ngắn), khung gọi công cụ đã hạ cấp, token điều khiển mô hình ASCII/full-width bị rò rỉ và XML gọi công cụ MiniMax không đúng đị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 lực của tác nhân khi được cấu hình. Dùng agents.defaults.skills cho baseline dùng chung và agents.list[].skills để thay thế theo từng tác nhân. Xem Skills: theo từng tác nhân so với dùng chung và Skills: danh sách cho phép Skills của tác nhân.
Gateway có thể lưu trữ một tác nhân (mặc định) hoặc nhiều tác nhân chạy song song.
Ghi chú về workspace: workspace của từng tác nhân là cwd mặc định, không phải 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 tác nhân:
~/.openclaw/agents/<agentId>/agent(hoặcagents.list[].agentDir) - Phiên:
~/.openclaw/agents/<agentId>/sessions
Chế độ một tác nhân (mặc định)
Nếu bạn không làm gì, OpenClaw chạy một tác nhân duy nhất:agentIdmặc định làmain.- Phiên được khóa theo 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 tác nhân
Dùng trình hướng dẫn tác nhân để thêm một tác nhân 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 tác nhân có workspace riêng với
SOUL.md, AGENTS.md và USER.md tùy chọn, cùng một agentDir chuyên biệt và kho phiên trong ~/.openclaw/agents/<agentId>.Create channel accounts
Tạo một tài khoản cho mỗi tác nhân trên các kênh bạn ưu tiên:Xem hướng dẫn kênh: Discord, Telegram, WhatsApp.
- Discord: một bot cho mỗi tác nhân, bật Message Content Intent, sao chép từng token.
- Telegram: một bot cho mỗi tác nhân qua BotFather, sao chép từng token.
- WhatsApp: liên kết từng số điện thoại cho mỗi tài khoản.
Add agents, accounts, and bindings
Thêm tác nhân trong
agents.list, tài khoản kênh trong channels.<channel>.accounts, rồi kết nối chúng bằng bindings (ví dụ bên dưới).Nhiều tác nhân = nhiều người, nhiều cá tính
Với nhiều tác nhân, 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). - Cá tính khác nhau (các tệp workspace theo từng tác nhân 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 liên tác nhân
Nếu một tác nhân cần tìm kiếm transcript phiên QMD của tác nhân 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 tác nhân đều 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 tác nhân khác nhau trong khi vẫn dùng một tài khoản WhatsApp. Khớp theo E.164 của người gửi (như+15551234567) với peer.kind: "direct". Trả lời vẫn đến từ cùng một số WhatsApp (không có danh tính người gửi theo từng tác nhân).
Chat trực tiếp thu gọn về khóa phiên chính của tác nhân, vì vậy cô lập thật sự cần một tác nhân cho mỗi người.
- Kiểm soát truy cập DM là toàn cục theo từng tài khoản WhatsApp (pairing/allowlist), không phải theo từng tác nhân.
- Với nhóm dùng chung, bind nhóm đó với một tác nhân hoặc dùng Nhóm phát sóng.
Quy tắc định tuyến (cách tin nhắn chọn tác nhân)
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 cấp, binding đầu tiên theo thứ tự cấu hình 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 đã chỉ định đều bắt buộc (ngữ nghĩaAND).
Account-scope detail
Account-scope detail
- Binding bỏ qua
accountIdchỉ khớp tài khoản mặc định. - Dùng
accountId: "*"làm fallback toàn kênh trên tất cả tài khoản. - Nếu sau đó bạn thêm cùng binding cho cùng tác nhân với ID tài khoản tường minh, OpenClaw nâng cấp binding chỉ theo kênh hiện có thành binding 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 danh từng lần đăng nhập. Mỗi accountId có thể được định tuyến đến một tác nhân 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 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 không đặt, OpenClaw fallback về default nếu có, nếu không thì dùng ID tài khoản được cấu hình đầu tiên (đã sắp xếp).
Các kênh phổ biến hỗ trợ mẫu này gồm:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkzalo,zalouser,nostr,feishu
Khái niệm
agentId: một “bộ não” (workspace, xác thực theo từng tác nhân, kho phiên theo từng tác nhân).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 đến mộtagentIdtheo(channel, accountId, peer)và tùy chọn ID guild/team.- Chat trực tiếp thu gọn về
agent:<agentId>:<mainKey>(“main” theo từng tác nhân;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ới một tác nhân và giữ allowlist 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).
Bot Telegram cho từng agent
Bot Telegram cho từng agent
- Tạo một bot cho mỗi agent 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).
Số WhatsApp cho từng agent
Số WhatsApp cho từng agent
Liên kết từng tài khoản trước khi khởi động Gateway:
~/.openclaw/openclaw.json (JSON5):Mẫu phổ biến
- WhatsApp hằng ngày + Telegram cho công việc chuyên sâu
- Cùng kênh, một peer đến Opus
- Agent gia đình được gắn với một nhóm WhatsApp
Chia theo kênh: định tuyến WhatsApp đến một agent nhanh cho việc hằng ngày và Telegram đến một agent 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 riêng lẻ đến Opus trong khi giữ phần còn lại trên chat, hãy thêm binding
match.peercho peer đó; khớp peer luôn thắng các quy tắc trên toàn kênh.
Cấu hình sandbox và công cụ cho từng agent
Mỗi agent 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.* cho từng agent sẽ bị bỏ qua khi scope đã phân giải là "shared".- Cách ly bảo mật: hạn chế công cụ cho các agent không đáng tin cậy.
- Kiểm soát tài nguyên: sandbox các agent cụ thể trong khi giữ các agent khác trên host.
- Chính sách linh hoạt: quyền khác nhau cho từng agent.
tools.elevated là toàn cục và dựa trên người gửi; nó không thể cấu hình theo từng agent. Nếu bạn cần ranh giới theo từng agent, hãy dùng agents.list[].tools để từ chối exec. Để nhắm mục tiêu nhóm, hãy dùng agents.list[].groupChat.mentionPatterns để @mentions ánh xạ rõ ràng đến agent dự định.Liên quan
- Agent ACP — chạy các harness lập trình bên ngoài
- Định tuyến kênh — cách tin nhắn được định tuyến đến agent
- Presence — trạng thái hiện diện và khả dụng của agent
- Session — cách ly và định tuyến phiên
- Sub-agent — sinh các lượt chạy agent nền