agentDir) và lịch sử phiên dựa trên SQLite riêng, cùng với nhiều tài khoản kênh (ví dụ: hai số WhatsApp). Tin nhắn đến được định tuyến đến đúng tác nhân thông qua liên kết.
Một tác nhân là toàn bộ phạm vi của từng persona: các tệp trong không gian làm việc, hồ sơ xác thực, sổ đăng ký mô hình và kho phiên. Một liên kết ánh xạ một tài khoản kênh (một không gian làm việc Slack, một số WhatsApp, v.v.) tới một trong các tác nhân đó.
Một tác nhân là gì
Mỗi tác nhân có riêng:- Không gian làm việc: các 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): hồ sơ xác thực, sổ đăng ký mô hình, cấu hình theo tác nhân. - Kho phiên: lịch sử trò chuyện và trạng thái định tuyến trong
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite.
sessions_history là đường dẫn truy hồi giữa các phiên an toàn hơn: nó trả về một chế độ xem có giới hạn và đã biên tập, thay vì kết xuất bản ghi thô. Nó loại bỏ chữ ký khối suy luận, chi tiết tải trọng kết quả công cụ, cấu trúc <relevant-memories>, các thẻ XML gọi công cụ (<tool_call>, <function_call> và các dạng số nhiều/hạ cấp của chúng), cùng XML gọi công cụ MiniMax, sau đó cắt ngắn và giới hạn đầu ra theo kích thước byte.~/.openclaw/skills, sau đó được lọc theo danh sách cho phép Skills có hiệu lực của tác nhân. Dùng agents.defaults.skills làm đường cơ sở dùng chung và agents.list[].skills làm phần thay thế theo tác nhân (các mục được chỉ định rõ sẽ thay thế mặc định, không hợp nhất). Xem Skills: theo tác nhân so với dùng chung và Skills: danh sách cho phép của tác nhân.
Bộ nhớ do Plugin sở hữu tuân theo cấu hình của Plugin đó; việc thêm tác nhân thứ hai
không tự động chia tách mọi kho Plugin toàn cục. Ví dụ, hãy cấu hình
kho Memory Wiki theo tác nhân
khi các persona không được dùng chung kiến thức wiki đã biên soạn.
Lưu ý về không gian làm việc: không gian làm việc của mỗi tác nhân là cwd mặc định, không phải sandbox nghiêm ngặt. Đường dẫn tương đối được phân giải trong không gian làm việc, 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 bật sandbox. Xem Sandbox.
Đường dẫn
Chế độ một tác nhân (mặc định)
Nếu không cấu hình gì, OpenClaw chạy một tác nhân:agentIdmặc định làmain.- Khóa phiên là
agent:main:<mainKey>(mainKeymặc định làmain). - Không gian làm việc mặc định là
~/.openclaw/workspace(hoặcworkspace-<profile>khiOPENCLAW_PROFILEđược đặt thành giá trị khácdefault). - Trạng thái mặc định là
~/.openclaw/agents/main/agent.
Trình trợ giúp tác nhân
Thêm một tác nhân cô lập mới:--workspace <dir>, --model <id>, --agent-dir <dir>, --bind <channel[:accountId]> (có thể lặp lại), --non-interactive (yêu cầu --workspace).
Thêm bindings để định tuyến tin nhắn đến (trình hướng dẫn sẽ đề nghị thực hiện việc này), sau đó xác minh:
Bắt đầu nhanh
1
Tạo không gian làm việc cho từng tác nhân
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>.2
Tạo tài khoản kênh
Tạo một tài khoản cho mỗi tác nhân trên các kênh bạn muốn:Xem hướng dẫn về 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 thông 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.
3
Thêm tác nhân, tài khoản và liên kết
Thêm tác nhân trong
agents.list, tài khoản kênh trong channels.<channel>.accounts và kết nối chúng bằng bindings (các ví dụ bên dưới).4
Khởi động lại và xác minh
Nhiều tác nhân, nhiều persona
MỗiagentId được cấu hình là một ranh giới persona riêng biệt cho trạng thái cốt lõi của tác nhân:
- Các tài khoản khác nhau cho mỗi kênh (theo
accountId). - Các tính cách khác nhau (
AGENTS.md/SOUL.mdtheo tác nhân). - Xác thực và phiên riêng biệt; quyền truy cập giữa các tác nhân chỉ được bật thông qua các tính năng hoặc cấu hình Plugin rõ ràng.
Kho Memory Wiki theo tác nhân
Theo mặc định, Memory Wiki dùng một kho toàn cục. Để giữ kiến thức đã biên soạn của tác nhân hỗ trợ tách biệt với kiến thức của tác nhân tiếp thị, hãy đặtplugins.entries.memory-wiki.config.vault.scope thành agent:
~/.openclaw/wiki/support và
~/.openclaw/wiki/marketing. Các thao tác CLI và Gateway theo phạm vi tác nhân yêu cầu
chỉ định rõ tác nhân khi cấu hình nhiều tác nhân. Xem
kho Memory Wiki theo tác nhân để biết chi tiết về
lọc cầu nối, di chuyển và ranh giới tin cậy.
Tìm kiếm bộ nhớ QMD giữa các tác nhân
Để cho phép một tác nhân tìm kiếm bản ghi phiên QMD của tác nhân khác, hãy thêm các bộ sưu tập bổ sung trongagents.list[].memorySearch.qmd.extraCollections. Dùng agents.defaults.memorySearch.qmd.extraCollections khi mọi tác nhân cần dùng chung các bộ sưu tập giống nhau.
name của nó vẫn phải được chỉ định rõ khi đường dẫn nằm ngoài không gian làm việc của tác nhân. Các đường dẫn bên trong không gian làm việc vẫn thuộc phạm vi tác nhân, để mỗi tác nhân giữ bộ tìm kiếm bản ghi riêng.
Một số WhatsApp, nhiều người (tách DM)
Định tuyến các DM WhatsApp khác nhau đến các tác nhân khác nhau trên một tài khoản WhatsApp bằng cách khớp E.164 của người gửi (+15551234567) với peer.kind: "direct". Phản hồi vẫn được gửi từ cùng một số WhatsApp — không có danh tính người gửi riêng theo tác nhân.
Theo mặc định, các cuộc trò chuyện trực tiếp được hợp nhất vào khóa phiên chính của tác nhân, vì vậy để cô lập thực sự, mỗi người cần một tác nhân riêng.
Quy tắc định tuyến
Các liên kết có tính xác định và liên kết cụ thể nhất sẽ thắng. Xem Định tuyến kênh để biết thứ tự tầng đầy đủ (đối tượng ngang hàng chính xác, đối tượng ngang hàng cha, ký tự đại diện đối tượng ngang hàng, guild+vai trò, guild, nhóm, tài khoản, kênh, tác nhân mặc định). Một số quy tắc đáng lưu ý tại đây:- Nếu nhiều liên kết khớp trong cùng một tầng, liên kết xuất hiện đầ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 được chỉ định phải khớp (ngữ nghĩaAND). - Một liên kết bỏ qua
accountIdchỉ khớp tài khoản mặc định, không phải mọi tài khoản. DùngaccountId: "*"làm phương án dự phòng trên toàn kênh hoặcaccountId: "<name>"cho một tài khoản. Việc thêm lại cùng một liên kết với mã tài khoản rõ ràng sẽ nâng cấp liên kết chỉ theo kênh hiện có thay vì tạo bản sao.
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 để xác định từng lần đăng nhập. Mỗi accountId định tuyến đến tác nhân riêng, 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 các phiên.
Đặt channels.<channel>.defaultAccount để chọn tài khoản được sử dụng khi accountId bị bỏ qua. Khi chưa đặt, OpenClaw sẽ dùng default nếu có; nếu không, sẽ dùng id tài khoản đầu tiên đã cấu hình (sau khi sắp xếp).
Các kênh hỗ trợ nhiều tài khoản: discord, feishu, googlechat, imessage, irc, line, mattermost, matrix, nextcloud-talk, nostr, signal, slack, telegram, whatsapp, zalo, zalouser.
Khái niệm
agentId: một “bộ não” (không gian làm việc, xác thực riêng cho từng tác tử, kho phiên riêng cho từng tác tử).accountId: một phiên bản tài khoản kênh (ví dụ: tài khoản WhatsApppersonalso vớibiz).binding: định tuyến tin nhắn đến tới mộtagentIdtheo(channel, accountId, peer)và, nếu cần, theo id bang hội/nhóm.- Các cuộc trò chuyện trực tiếp được quy về
agent:<agentId>:<mainKey>(“main” của từng tác tử; xemsession.mainKey).
Ví dụ theo nền tảng
Bot Discord cho từng tác tử
Bot Discord cho 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à duy trì danh sách cho phép riêng cho từng bot.- Mời từng bot vào bang hội và bật Message Content Intent.
- Các token nằm trong
channels.discord.accounts.<id>.token(tài khoản mặc định có thể sử dụngDISCORD_BOT_TOKEN).
Bot Telegram cho từng tác tử
Bot Telegram cho từng tác tử
- Tạo một bot cho mỗi tác tử bằng BotFather và sao chép từng token.
- Các token nằm trong
channels.telegram.accounts.<id>.botToken(tài khoản mặc định có thể sử dụngTELEGRAM_BOT_TOKEN). - Đối 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 Privacy Mode của BotFather cho từng bot nhóm (
/setprivacy-> Disable), sau đó xóa và thêm lại bot để Telegram áp dụng cài đặt. - Cho phép các nhóm bằng
channels.telegram.groups, hoặc chỉ sử dụnggroupPolicy: "open"cho các hoạt động triển khai nhóm đáng tin cậy. - Đặt ID người dùng của người gửi vào
groupAllowFrom. ID nhóm và siêu nhóm phải nằm trongchannels.telegram.groups, không phảigroupAllowFrom. - Liên kết theo
accountIdđể mỗi bot định tuyến tới tác tử riêng.
Số WhatsApp cho từng tác tử
Số WhatsApp cho từng tác tử
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 hằng ngày + làm việc chuyên sâu trên Telegram
- Cùng một kênh, định tuyến một bên ngang hàng tới Opus
- Tác tử gia đình liên kết với một nhóm WhatsApp
Chia theo kênh: định tuyến WhatsApp tới một tác tử nhanh dùng hằng ngày và Telegram tới một tác tử Opus.Các ví dụ này sử 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 riêng lẻ tới Opus trong khi vẫn giữ phần còn lại trên chat, hãy thêm một liên kết match.peer cho bên ngang hàng đó — kết quả khớp bên ngang hàng luôn được ưu tiên hơn các quy tắc áp dụng cho toàn kênh.Cấu hình sandbox và công cụ theo từng tác tử
Mỗi tác tử có thể có các hạn chế riêng về sandbox và công cụ:setupCommand nằm trong sandbox.docker và chạy một lần khi tạo container. Các giá trị ghi đè sandbox.docker.* theo từng tác tử sẽ 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 tử không đáng tin cậy.
- Kiểm soát tài nguyên: chạy các tác tử cụ thể trong sandbox trong khi giữ các tác tử khác trên máy chủ.
- Chính sách linh hoạt: quyền khác nhau cho từng tác tử.
tools.elevated có cả cổng kiểm soát toàn cục (tools.elevated.enabled/allowFrom) và cổng kiểm soát theo từng tác tử (agents.list[].tools.elevated.enabled/allowFrom). Cổng kiểm soát theo từng tác tử chỉ có thể hạn chế thêm so với cổng toàn cục — cả hai đều phải cho phép một người gửi thì các lệnh nâng cao mới chạy được. Để nhắm mục tiêu trong nhóm, hãy sử dụng agents.list[].groupChat.mentionPatterns để các lượt @nhắc tên ánh xạ chính xác tới tác tử dự kiến.Liên quan
- Tác tử ACP — chạy các bộ điều phối lập trình bên ngoài
- Định tuyến kênh — cách thông điệp được định tuyến đến các tác tử
- Trạng thái hiện diện — trạng thái hiện diện và khả năng sẵn sàng của tác tử
- Phiên — cô lập và định tuyến phiên
- Tác tử con — khởi tạo các lượt chạy tác tử trong nền