agentDir) và lịch sử 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. Tin nhắn đến được định tuyến đến đúng tác tử thông qua các liên kết.
Một tác tử ở đây là phạm vi đầy đủ 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 tử này tại ~/.openclaw/agents/<agentId>/. Một liên kết ánh xạ một tài khoản kênh (ví dụ: một workspace Slack hoặc một số WhatsApp) tới một trong các tác tử đó.
”Một tác tử” là gì?
Một tác tử là một bộ não có 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 tử. - Kho phiên (lịch sử trò chuyện + trạng thái định tuyến) dưới
~/.openclaw/agents/<agentId>/sessions.
sessions_history cũng là đường dẫn nhớ lại xuyên phiên an toàn hơn ở đây: nó trả về một dạng 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 assistant loại bỏ thẻ suy nghĩ, khung <relevant-memories>, payload XML tool-call 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 tool-call bị cắt ngắn), khung tool-call đã hạ cấp, token điều khiển mô hình ASCII/toàn chiều bị rò rỉ và XML tool-call MiniMax sai định dạng trước khi biên tập/cắt ngắn.~/.openclaw/skills, rồi được lọc theo allowlist Skills hiệu lực của tác tử khi được cấu hình. Dùng agents.defaults.skills làm baseline dùng chung và agents.list[].skills để thay thế theo từng tác tử. Xem Skills: theo từng tác tử so với dùng chung và Skills: allowlist Skills của tác tử.
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 tác tử là cwd mặc định, không phải sandbox cứng. Đường dẫn tương đối 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í host khác trừ khi bật sandboxing. 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 dạng
agent:main:<mainKey>. - Workspace mặc định là
~/.openclaw/workspace(hoặc~/.openclaw/workspace-<profile>khi đặtOPENCLAW_PROFILE). - Trạng thái mặc định là
~/.openclaw/agents/main/agent.
Trình hỗ trợ tác tử
Dùng wizard tác tử để thêm một tác tử cô lập mới:bindings (hoặc để wizard làm việc đó) để định tuyến tin nhắn đến.
Xác minh bằng:
Bắt đầu nhanh
Tạo workspace cho từng tác tử
Dùng wizard hoặc tạo workspace thủ công:Mỗi tác tử có 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 dưới ~/.openclaw/agents/<agentId>.Tạo tài khoản kênh
Tạo một tài khoản cho mỗi tác tử 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 tử, bật Message Content Intent, sao chép từng token.
- Telegram: một bot cho mỗi tác tử qua BotFather, sao chép từng token.
- WhatsApp: liên kết từng số điện thoại theo mỗi tài khoản.
Thêm tác tử, tài khoản và liên kết
Thêm tác tử dưới
agents.list, tài khoản kênh dưới channels.<channel>.accounts, và kết nối chúng bằng bindings (ví dụ bên dưới).Nhiều tác tử = nhiều người, nhiều tính cách
Với nhiều tác tử, 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 tác tử như
AGENTS.mdvàSOUL.md). - Xác thực + phiên riêng biệt (không lẫn chéo trừ khi được bật rõ ràng).
Tìm kiếm bộ nhớ QMD xuyên tác tử
Nếu một tác tử cần tìm kiếm transcript phiên QMD của tác tử khác, hãy thêm các collection bổ sung dướiagents.list[].memorySearch.qmd.extraCollections. Chỉ dùng agents.defaults.memorySearch.qmd.extraCollections khi mọi tác tử đề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 tới các tác tử 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 tác tử).
Trò chuyện trực tiếp gộp về khóa phiên chính của tác tử, vì vậy cách ly thực sự cần một tác tử cho mỗi người.
- Kiểm soát truy cập DM là toàn cục theo tài khoản WhatsApp (ghép nối/allowlist), không phải theo tác tử.
- Với nhóm dùng chung, liên kết nhóm với một tác tử 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 tử)
Liên kết là xác định và cụ thể nhất thắng:Phân xử hòa và ngữ nghĩa AND
Phân xử hòa và ngữ nghĩa AND
- Nếu nhiều liên kết khớp trong cùng một tầng, liên kết đầu tiên theo thứ tự cấu hình sẽ thắng.
- Nếu một liên kết đặ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).
Chi tiết phạm vi tài khoản
Chi tiết phạm vi tài khoản
- Một liên kết bỏ qua
accountIdchỉ khớp tài khoản mặc định. Nó không khớp tất cả tài khoản. - Dùng
accountId: "*"làm fallback toàn kênh trên mọi tài khoản. - Dùng
accountId: "<name>"để khớp một tài khoản. - Nếu sau này bạn thêm cùng liên kết cho cùng tác tử với ID tài khoản tường minh, OpenClaw nâng cấp liên kết chỉ theo kênh hiện có thành liên kết có 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 tới một tác tử 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 bỏ qua accountId, 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ì 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 tử, kho phiên theo từng tác tử).accountId: một thực thể 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 tới mộtagentIdtheo(channel, accountId, peer)và tùy chọn ID guild/team.- Trò chuyện trực tiếp gộp về
agent:<agentId>:<mainKey>(“main” theo từng tác tử;session.mainKey).
Ví dụ nền tảng
Bot Discord theo từng tác tử
Bot Discord theo từng tác tử
Mỗi tài khoản bot Discord ánh xạ tới một
accountId duy nhất. Liên kết từng tài khoản với một tác tử 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 tác nhân
Bot Telegram cho từng tác nhân
- 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). - Với nhiều bot trong cùng một nhóm Telegram, hãy mời từng bot và nhắc đến bot cần trả lời.
- Tắt BotFather Privacy Mode cho từng bot nhóm, rồi thêm lại bot để Telegram áp dụng cài đặt.
- Cho phép nhóm bằng
channels.telegram.groups, hoặc chỉ dùnggroupPolicy: "open"cho các triển khai nhóm đáng tin cậy. - Đặt ID người dùng của người gửi trong
groupAllowFrom. ID nhóm và siêu nhóm thuộc vềchannels.telegram.groups, không phảigroupAllowFrom. - Liên kết bằng
accountIdđể mỗi bot định tuyến đến tác nhân riêng của nó.
Số WhatsApp cho từng tác nhân
Số WhatsApp cho từng tác nhân
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
- Tác nhân gia đình được liên kết với một nhóm WhatsApp
Chia theo kênh: định tuyến WhatsApp đến một tác nhân nhanh cho hằng ngày và Telegram đến một tác nhân Opus.Ghi chú:
- Các ví dụ này dùng
accountId: "*"để các liên kết tiếp tục hoạt động nếu bạn thêm tài khoản sau này. - Để định tuyến một DM/nhóm duy nhất đến Opus trong khi giữ phần còn lại ở chat, hãy thêm liên kết
match.peercho peer đó; 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ụ cho 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.* cho từng tác nhân bị bỏ qua khi phạm vi đã phân giải là "shared".- Cách ly 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: đặt sandbox cho các tác nhân cụ thể trong khi giữ những tác nhân khác trên máy chủ.
- 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; nó 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 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
- Hiện diện — trạng thái hiện diện và khả dụng của tác nhân
- Phiên — cách ly và định tuyến phiên
- Tác nhân con — sinh các lượt chạy tác nhân nền