Channel & Routing
OpenClaw sẽ routing các tin nhắn trả lời về đúng channel mà tin nhắn gốc đến. Model không tự chọn channel; việc routing được xác định rõ ràng và do cấu hình host kiểm soát.
Các thuật ngữ chính
- Channel:
whatsapp,telegram,discord,slack,signal,imessage,webchat. - AccountId: instance tài khoản riêng cho từng channel (nếu được hỗ trợ).
- AgentId: một workspace độc lập + session store (“bộ não”).
- SessionKey: khóa bucket dùng để lưu context và kiểm soát concurrency.
Cấu trúc session key (ví dụ)
Tin nhắn trực tiếp (DM) sẽ gộp vào session main của agent:
agent:<agentId>:<mainKey>(mặc định:agent:main:main)
Các group và channel vẫn tách biệt theo từng channel:
- Group:
agent:<agentId>:<channel>:group:<id> - Channel/room:
agent:<agentId>:<channel>:channel:<id>
Thread:
- Thread trên Slack/Discord sẽ thêm
:thread:<threadId>vào cuối key gốc. - Topic trên Telegram forum sẽ nhúng
:topic:<topicId>vào trong group key.
Ví dụ:
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Quy tắc routing (cách chọn agent)
Routing sẽ chọn một agent cho mỗi tin nhắn đến:
- Khớp chính xác peer (
bindingsvớipeer.kind+peer.id). - Khớp guild (Discord) qua
guildId. - Khớp team (Slack) qua
teamId. - Khớp account (
accountIdtrên channel). - Khớp channel (bất kỳ account nào trên channel đó).
- Agent mặc định (
agents.list[].default, nếu không có thì lấy entry đầu tiên, cuối cùng fallback vềmain).
Agent được chọn sẽ quyết định workspace và session store nào được dùng.
Broadcast group (chạy nhiều agent)
Broadcast group cho phép các bạn chạy nhiều agent cho cùng một peer khi OpenClaw thường sẽ trả lời (ví dụ: trong group WhatsApp, sau khi mention/activation gating).
Cấu hình:
{
broadcast: {
strategy: "parallel",
"[email protected]": ["alfred", "baerbel"],
"+15555550123": ["support", "logger"],
},
}
Xem thêm: Broadcast Groups.
Tổng quan cấu hình
agents.list: định nghĩa các agent có tên (workspace, model, v.v.).bindings: map các channel/account/peer đến với agent.
Ví dụ:
{
agents: {
list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }],
},
bindings: [
{ match: { channel: "slack", teamId: "T123" }, agentId: "support" },
{ match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" },
],
}
Lưu trữ session
Các session store nằm trong thư mục state (mặc định ~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- Các transcript JSONL nằm cùng với store
Các bạn có thể override đường dẫn store qua session.store và templating {agentId}.
Hành vi của WebChat
WebChat sẽ gắn vào agent được chọn và mặc định dùng session main của agent đó. Nhờ vậy, WebChat cho phép các bạn xem context cross-channel của agent đó ở một chỗ.
Context khi reply
Các reply đến sẽ bao gồm:
ReplyToId,ReplyToBody, vàReplyToSenderkhi có.- Context được trích dẫn sẽ được thêm vào
Bodydưới dạng block[Replying to ...].
Điều này nhất quán trên tất cả các channel.