Skip to main content
当一条消息抵达某个频道时,OpenClaw 必须决定由哪个代理来回答。默认情况下,这很简单:标记为 default: true 的代理会接收所有内容。代理绑定会针对部分流量覆盖这一决策——每个绑定都会指定一个 agentId,并匹配账户、对等方、服务器、团队或 Discord 角色等频道信息,而匹配到的代理将拥有最终会话。 绑定只负责选择代理。它们不会创建频道账户,也不会授予访问权限——只有当频道已经通过其正常的配对、允许列表和账户规则接受消息后,系统才会查询绑定。

何时使用绑定

如果每个对话都可以共享一个工作区、一套模型策略和一个会话边界,那么你不需要使用绑定——默认代理就是正确的选择。在需要稳定划分时使用绑定,例如:
  • 每个代理对应一个频道账号
  • 将支持收件箱路由到支持工作区
  • 将某个私信或群组路由给专业代理
  • 将某个公会、团队或 Discord 角色与账号的其他部分区别路由
先配置频道账号,然后再进行绑定。指向频道从未接受过的账号的绑定不会产生任何作用。

将账户路由到代理

此示例保留 main 作为备用代理,并将名为 support 的 Discord 账户路由到其专属代理和工作区:
现在,发送到 support 账户的消息将解析为 agentId: "support";除非有其他绑定匹配,否则所有其他 Discord 账户和其他频道仍会使用 main 路由配置会在启动时读取,因此请重启 Gateway,然后验证代理列表和频道账户:

匹配特定会话

当只有一条私信、一个群组或一个频道应交由专用代理处理时,添加 match.peer
peer.kind 接受 directgroupchannel。使用频道的规范 peer ID,而不是显示名称。

匹配字段和优先级

每个绑定都需要 agentIdmatch.channel。可选的路由匹配字段:
  • accountId:一个已配置的账户。省略时仅匹配该频道的默认账户;"*" 表示显式的频道级回退。
  • peer:具体的或通配的直接、群组或频道对端
  • guildIdteamId:特定于频道的群组空间约束
  • roles:Discord 角色 ID,与 guild 约束一起评估
  • session.dmScope:针对匹配到的直接消息的可选会话范围覆盖设置
优先级按具体程度决定:具体的会话和群组空间匹配优先于账户和频道回退。在同一层级内,配置中排在前面的绑定优先——当规则处于同一层级时,应将范围较窄的规则放在范围较宽的规则之前。 顶层 bindings 还接受用于持久化 ACP 会话的 type: "acp" 条目。这些条目要求具体的 match.peer.id,并遵循 ACP 会话身份契约,而不是普通的路由优先级;如果这正是你需要的功能,请参阅 ACP 代理

常见错误

省略 accountId 以表示所有账户

省略 accountId 只会匹配频道的默认账户。如果你希望设置频道范围的回退规则,请明确使用 accountId: "*"

绑定到未知代理

agentId 必须存在于 agents.entries 中,并且应恰好有一个条目标记为 default: true。引用缺失代理的绑定会在不提示的情况下错误路由。

将绑定视为访问控制

绑定会为已经获准的消息选择代理。配对、dmPolicy、群组策略和允许列表是独立的控制项——请分别进行配置。

相关内容