Chuyển đến nội dung chính

Kênh & định tuyến

  1. OpenClaw định tuyến phản hồi trở lại kênh nơi thông điệp xuất phát. The model does not choose a channel; routing is deterministic and controlled by the host configuration.

Thuật ngữ chính

  • Channel: whatsapp, telegram, discord, slack, signal, imessage, webchat.
  • AccountId: thực thể tài khoản theo kênh (khi được hỗ trợ).
  • AgentId: một không gian làm việc + kho phiên độc lập (“bộ não”).
  • SessionKey: khóa dùng để lưu ngữ cảnh và kiểm soát đồng thời.

Dạng khóa phiên (ví dụ)

Tin nhắn trực tiếp được gộp vào phiên chính của tác tử:
  • agent:<agentId>:<mainKey> (mặc định: agent:main:main)
Nhóm và kênh được cô lập theo từng kênh:
  • Nhóm: agent:<agentId>:<channel>:group:<id>
  • Kênh/phòng: agent:<agentId>:<channel>:channel:<id>
Luồng (threads):
  • Luồng Slack/Discord thêm :thread:<threadId> vào khóa cơ sở.
  • Chủ đề diễn đàn Telegram nhúng :topic:<topicId> vào khóa nhóm.
Ví dụ:
  • agent:main:telegram:group:-1001234567890:topic:42
  • agent:main:discord:channel:123456:thread:987654

Quy tắc định tuyến (cách chọn tác tử)

Định tuyến chọn một tác tử cho mỗi thông điệp đến:
  1. Khớp ngang hàng chính xác (bindings với peer.kind + peer.id).
  2. Khớp guild (Discord) qua guildId.
  3. Khớp team (Slack) qua teamId.
  4. Khớp tài khoản (accountId trên kênh).
  5. Khớp kênh (bất kỳ tài khoản nào trên kênh đó).
  6. Tác tử mặc định (agents.list[].default, nếu không thì mục đầu tiên trong danh sách, fallback sang main).
  7. Discord DM mặc định ở chế độ pairing.
    
  8. Tác tử mặc định (agents.list[].default, nếu không thì mục đầu tiên trong danh sách, fallback sang main).
Tác tử được khớp sẽ quyết định không gian làm việc và kho phiên được sử dụng. Tác tử được khớp sẽ quyết định không gian làm việc và kho phiên được sử dụng.

Nhóm phát sóng (chạy nhiều tác tử)

Cấu hình: Cấu hình:
{
  broadcast: {
    strategy: "parallel",
    "[email protected]": ["alfred", "baerbel"],
    "+15555550123": ["support", "logger"],
  },
}
Xem: Broadcast Groups.

Tổng quan cấu hình

  • agents.list: các định nghĩa tác tử được đặt tên (không gian làm việc, mô hình, v.v.).
  • bindings: ánh xạ kênh/tài khoản/peer đầu vào tới tác tử.
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ữ phiên

Kho phiên nằm dưới thư mục trạng thái (mặc định ~/.openclaw):
  • ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • Bản ghi JSONL nằm cùng thư mục với kho
Bạn có thể ghi đè đường dẫn kho qua session.store và mẫu hóa {agentId}.

Hành vi WebChat

WebChat attaches to the selected agent and defaults to the agent’s main session. Các nguyên nhân phổ biến:

Ngữ cảnh phản hồi

Phản hồi đến bao gồm:
  • ReplyToId, ReplyToBody, và ReplyToSender khi khả dụng.
  • Ngữ cảnh trích dẫn được nối vào Body như một khối [Replying to ...].
Điều này nhất quán trên các kênh.