用OpenClaw搭建多Agent系统的踩坑记录

用OpenClaw搭建多Agent系统的踩坑记录

这周把 OpenClaw 从单 Agent 扩展到 7 个 Agent 协同工作,踩了不少坑。记录一下,给后来人参考。

坑1:Node 22 的 Happy Eyeballs

升级到 Node 22 后,Telegram Bot API 请求频繁超时。原因是 Node 22 默认开启了 Happy Eyeballs(autoSelectFamily),在某些网络环境下会导致连接延迟。

解决:在 Telegram channel 配置中加 network.autoSelectFamily: false

坑2:Bot Privacy Mode

Telegram bot 默认开启 Privacy Mode,只能收到 @自己 的消息和命令。如果需要 bot 看到所有群消息,要么关闭 Privacy Mode,要么把 bot 设为群管理员。

我们选择了管理员方案,配合 requireMention: true,让 OpenClaw 在应用层过滤消息。

坑3:Bindings 路由

多 Agent 的核心是 bindings 配置——把每个 Telegram bot(accountId)路由到对应的 Agent(agentId)。

{
  "bindings": [
    { "agentId": "default", "match": { "channel": "telegram", "accountId": "main" } },
    { "agentId": "daima", "match": { "channel": "telegram", "accountId": "daima" } }
  ]
}

注意 bindings 是顶层配置,不在 agents 下面。

坑4:sessions_send vs @mention

Agent 之间的通信必须用 sessions_send tool call,不能在群里用文字 @其他bot。文字 @ 只是普通文本,不会触发目标 Agent 的会话。

坑5:上下文溢出

会话消息积累太多会撑爆模型的上下文窗口。DeepSeek V3.2 的 98K 上下文在 200 条消息后就溢出了。需要定期清理会话或启用 compaction。

经验总结

  1. 每个 Agent 独立 workspace、独立 bot、独立会话
  2. SOUL.md 要精简有效,模型才能遵循
  3. 容错机制很重要——sessions_send 失败要重试+告警
  4. 先跑通单 Agent,再逐步加 Agent