本文记录了我从零开始配置 OpenClaw 多 Agent 多 Discord 频道的完整过程,基于最新的 OpenClaw 2026.2.22-2 版本,包含实际配置文件和踩坑实录。一、背景与需求
1.1 为什么要多 Agent?当 AI Agent 的应用场景越来越丰富时,单一 Agent 很难同时胜任多种专业任务:
编程任务需要代码能力和技术深度内容创作需要写作技巧和文案感觉健康管理需要健身知识和营养学背景投资分析需要金融市场理解和数据敏感性让每个 Agent 专注一个领域,比让一个 Agent 什么都懂但什么都不精要好得多。
1.2 为什么要多 Discord 频道?在 Discord 场景中,不同的频道有不同的氛围和用途:
频道用途对应 Agent#-指挥台主沟通入口,任务分发Cypher (主控)#-编程技术讨论、代码分享Forge (开发专家)#✍️-创作文章写作、内容策划Muse (创作专家)#-健康健身打卡、饮食记录Vitality (健康专家)#-投资股市分析、交易记录Sigma (投资顾问)每个频道有独立的 Agent 响应,用户体验更清晰。
1.3 最终架构指挥中心 └── #-指挥台 → Cypher(调度中枢) ️ 工作区 ├── #-编程 → Forge(开发专家) ├── #✍️-创作 → Muse(创作专家) ├── #-健康 → Vitality(健康专家) └── #-投资 → Sigma(投资顾问)
Cypher 作为总调度,可以在 #-指挥台 接收任务,然后委托给对应的专家 Agent。


二、Discord 端准备工
二、Discord 端准备工作
2.1 创建 Discord 服务器如果你还没有 Discord 服务器,需要先创建一个:
打开 Discord(网页版或客户端)点击左侧栏的「+」按钮选择「创建我自己的服务器」选择「仅供我和我的朋友使用」输入服务器名称(如「AI 指挥中心」)点击「创建」2.2 创建频道结构在服务器中创建以下频道结构:
指挥中心 └── #-指挥台 (ID: xx) → Cypher ️ 工作区 ├── #-编程 (ID: xxx) → Forge ├── #✍️-创作 (ID: xxx) → Muse ├── #-健康 (ID: xxx) → Vitality └── #-投资 (ID: xxx) → Sigma
创建频道步骤:
右键服务器名称 → 创建频道选择「文字频道」输入频道名称(可包含 Emoji)点击「创建频道」2.3 获取 Guild ID 和 Channel ID配置 Bot 需要服务器 ID 和频道 ID,获取方法:
开启开发者模式:
点击左下角「用户设置」(齿轮图标)选择「高级」开启「开发者模式」复制服务器 ID(Guild ID):
右键服务器名称点击「复制服务器 ID」复制频道 ID:
右键频道名称点击「复制频道 ID」2.4 创建 5 个 Discord Bot在 Discord Developer Portal 创建 5 个 Bot:
步骤 1:创建应用访问 https://discord.com/developers/applications点击「New Application」输入应用名称(如「Cypher Bot」)点击「Create」
步骤 2:获取 Bot Token进入左侧「Bot」选项卡点击「Reset Token」复制 Token(只能查看一次,务必保存好)步骤 3:开启 Privileged Gateway Intents在同一页面,开启以下二个 Intent:
✅ Server Members Intent✅ Message Content Intent(必需,否则无法读取消息内容)
步骤 4:邀请 Bot 加入服务器进入左侧「OAuth2」→「URL Generator」在「Scopes」中勾选「bot」在「Bot Permissions」中勾选:Send MessagesRead Messages/View ChannelsUse Slash CommandsEmbed LinksAttach FilesRead Message History复制生成的 URL,在浏览器中打开选择你的服务器,点击「继续」确认权限后点击「授权」Add Reactions
重复以上步骤,创建 5 个 Bot:
Bot 名称用途Token 占位符Cypher Bot主控 BotYOUR_CYPHER_BOT_TOKENForge Bot开发专家YOUR_FORGE_BOT_TOKENMuse Bot创作专家YOUR_MUSE_BOT_TOKENVitality Bot健康专家YOUR_VITALITY_BOT_TOKENSigma Bot投资顾问YOUR_SIGMA_BOT_TOKEN 2.5 设置频道权限为了安全起见,建议设置每个频道只允许对应的 Bot 发送消息:
设置步骤(以 #-编程 为例):
右键频道 → 频道设置选择「权限」选项卡点击「+」添加成员选择「Forge Bot」设置权限:✅ 查看频道✅ 发送消息✅ 读取消息历史将 @everyone 的「发送消息」设为 ❌重复以上操作,为每个频道设置对应 Bot 的专属权限。
三、配置多 Agent 工作区
3.1 创建 Agent 工作区为每个 Agent 创建独立的工作区:
openclaw agents add forge --workspace ~/.openclaw/workspace-forge openclaw agents add muse --workspace ~/.openclaw/workspace-muse openclaw agents add vitality --workspace ~/.openclaw/workspace-vitality openclaw agents add sigma --workspace ~/.openclaw/workspace-sigma
这会创建对应的目录结构:
~/.openclaw/ ├── workspace/ # Cypher (main) 主工作区 ├── workspace-forge/ # Forge 工作区 ├── workspace-muse/ # Muse 工作区 ├── workspace-vitality/ # Vitality 工作区 ├── workspace-sigma/ # Sigma 工作区 └── agents/ ├── main/ ├── forge/ ├── muse/ ├── vitality/ └── sigma/ 3.2 配置多 Discord Bot
编辑 ~/.openclaw/openclaw.json,在 channels.discord 中配置多个账号:
{"channels":{"discord":{"enabled":true,"groupPolicy":"allowlist","streaming":"block","accounts":{"default":{"token":"YOUR_CYPHER_BOT_TOKEN","groupPolicy":"allowlist","blockStreaming":true,"streaming":"block","guilds":{"YOUR_GUILD_ID":{"slug":"YourServer","channels":{"-指挥台":{"allow":true,"requireMention":false,"autoThread":true},"-归档":{"allow":true,"requireMention":false,"autoThread":true}}}}},"forge":{"token":"YOUR_FORGE_BOT_TOKEN","groupPolicy":"allowlist","blockStreaming":true,"streaming":"block","guilds":{"YOUR_GUILD_ID":{"channels":{"1474332097371046010":{"allow":true,"requireMention":false,"autoThread":false}}}}},"muse":{"token":"YOUR_MUSE_BOT_TOKEN","groupPolicy":"allowlist","blockStreaming":true,"streaming":"block","guilds":{"YOUR_GUILD_ID":{"channels":{"1474331895859777576":{"allow":true,"requireMention":false,"autoThread":false}}}}},"vitality":{"token":"YOUR_VITALITY_BOT_TOKEN","groupPolicy":"allowlist","blockStreaming":true,"streaming":"block","guilds":{"YOUR_GUILD_ID":{"channels":{"1474331960770953334":{"allow":true,"requireMention":false,"autoThread":false}}}}},"sigma":{"token":"YOUR_SIGMA_BOT_TOKEN","groupPolicy":"allowlist","blockStreaming":true,"streaming":"block","guilds":{"YOUR_GUILD_ID":{"channels":{"1474332013673578592":{"allow":true,"requireMention":false,"autoThread":false}}}}}}}}}
关键配置说明:
字段说明accounts.defaultCypher 主 Bot,使用 default 账号名accounts.forgeForge 专家 Botguilds服务器配置,用服务器 ID 作为 keychannels频道权限配置,可用频道名或频道 IDallow: true允许该频道requireMention: false不需要 @Bot 就能触发autoThread: true自动创建线程回复blockStreaming: true阻塞式流式输出(推荐) ⚠️ 注意:建议使用频道数字 ID 而非名称,避免权限审计受限。3.3 配置 Agent 路由绑定在 openclaw.json 的 bindings 中配置路由规则:
{"bindings":[{"agentId":"main","match":{"channel":"discord","accountId":"default"}},{"agentId":"forge","match":{"channel":"discord","accountId":"forge"}},{"agentId":"muse","match":{"channel":"discord","accountId":"muse"}},{"agentId":"vitality","match":{"channel":"discord","accountId":"vitality"}},{"agentId":"sigma","match":{"channel":"discord","accountId":"sigma"}}]}
路由逻辑:
当 Cypher Bot (default) 收到消息 → 路由给 main Agent当 Forge Bot 收到消息 → 路由给 forge Agent以此类推…四、Agent 间通信配置(重要:避坑指南)
4.1 ⚠️ 踩坑实录:配置位置错误导致 Gateway 启动失败在配置 Agent 间通信时,我犯了一个致命错误:把 subagents 配置放在了 openclaw.json 的根级别。
❌ 错误配置(导致 Gateway 启动失败):
{"subagents":{"allowAgents":["forge","muse","vitality","sigma"]}}
✅ 正确配置位置:subagents.allowAgents 必须在 agents.list[].subagents 下,每个 Agent 都需要单独配置:
{"agents":{"list":[{"id":"main","subagents":{"allowAgents":["main","forge","muse","vitality","sigma"]}},{"id":"forge","name":"forge","workspace":"/root/.openclaw/workspace-forge","agentDir":"/root/.openclaw/agents/forge/agent","subagents":{"allowAgents":["main","forge","muse","vitality","sigma"]}},{"id":"muse","name":"muse","workspace":"/root/.openclaw/workspace-muse","agentDir":"/root/.openclaw/agents/muse/agent","subagents":{"allowAgents":["main","forge","muse","vitality","sigma"]}},{"id":"vitality","name":"vitality","workspace":"/root/.openclaw/workspace-vitality","agentDir":"/root/.openclaw/agents/vitality/agent","subagents":{"allowAgents":["main","forge","muse","vitality","sigma"]}},{"id":"sigma","name":"sigma","workspace":"/root/.openclaw/workspace-sigma","agentDir":"/root/.openclaw/agents/sigma/agent","subagents":{"allowAgents":["main","forge","muse","vitality","sigma"]}}]}}
踩坑总结:
❌ 不要把 subagents 放在根级别✅ 必须在每个 Agent 的 agents.list[] 条目下添加✅ 每个 Agent 的 allowAgents 要包含所有需要通信的 Agent ID(包括自己) 修改后必须重启 Gateway:openclaw gateway restart4.2 启用 Agent-to-Agent 通信在 openclaw.json 中添加 tools.agentToAgent 配置:
{"tools":{"agentToAgent":{"enabled":true,"allow":["main","forge","muse","vitality","sigma"]}}}注意:这是用于 sessions_send 的跨 Agent 通信,和上面的 subagents 配置是互补的。4.3 验证配置是否生效
使用 CLI 检查允许的 Agent 列表:
$ openclaw agents list
输出应显示所有 5 个 Agent:
{"requester":"main","allowAny":false,"agents":[{"id":"main","configured":true},{"id":"forge","name":"forge","configured":true},{"id":"muse","name":"muse","configured":true},{"id":"sigma","name":"sigma","configured":true},{"id":"vitality","name":"vitality","configured":true}]}
如果只看到 main,说明配置未生效,请检查配置位置。
4.4 测试 Agent 间通信在配置完成后,可以通过 Cypher 测试向其他 Agent 发送消息:
$ openclaw sessions_send --agent-id muse --task"写一篇关于 AI Agent 的短文"
或使用工具调用:
{"tool":"sessions_send","params":{"sessionKey":"muse","message":"测试 Agent 通信"}}4.5 Cypher 的调度逻辑
在 Cypher 的 SOUL.md 中定义工作流程:
## 工作流程 1. **收到 Channing 的请求后,先判断任务类型** 2. **简单闲聊和问答**:直接回复 3. **专业任务**:使用 `sessions_send` 委托给对应专家,并告知 Channing 已委托 4. **跨领域任务**:协调多个专家,汇总结果 ## 任务委托规则 - **编程/技术问题** → `sessions_send` 给 `forge` - **写作/创作需求** → `sessions_send` 给 `muse` - **健康/健身/饮食** → `sessions_send` 给 `vitality` - **投资/股票/财经** → `sessions_send` 给 `sigma` ## 绝对禁止 - ❌ 不要将任务委托给自己(`agentId: main` 或 `cypher`) - ❌ 收到专家返回结果后,直接汇总,不要再次委托 - ❌ 不要创建超过 2 层的委托链
五、实际使用示例
5.1 场景一:直接联系专家在 #-编程 频道发消息:
帮我写一个 Python 脚本,批量重命名文件
→ Forge 响应,提供代码实现
5.2 场景二:通过 Cypher 中转在 #-指挥台 频道发消息:
@Cypher 帮我写篇文章,关于 AI Agent 架构的
→ Cypher 收到后,使用 sessions_send 委托给 Muse
→ Muse 完成文章后返回给 Cypher
→ Cypher 汇总后回复给用户
在 #-指挥台 频道发消息:
帮我分析一下 AI 行业的投资机会,需要技术趋势和市场数据
→ Cypher 同时委托给 Forge(技术趋势)和 Sigma(市场分析)
→ 收到两者结果后,Cypher 综合汇总
→ 给出完整的投资分析报告
六、常见问题
6.1 Bot 没有响应?检查清单:
✅ Bot 已加入服务器✅ Bot 有频道读取/发送权限✅ Message Content Intent 已开启✅ Token 配置正确✅ Gateway 已重启:openclaw gateway restart6.2 消息路由错误?检查 bindings 配置中的 accountId 是否和 channels.discord.accounts 中的 key 匹配。
6.3 Agent 间通信失败?确保以下两处配置都正确:
每个 Agent 的 subagents.allowAgents 包含目标 Agent IDtools.agentToAgent.allow 包含所有需要通信的 Agent ID6.4 流式输出卡顿?建议使用 blockStreaming: true 和 streaming: "block" 配置,获得更稳定的输出体验。
七、配置版本信息
本文基于以下版本配置:
OpenClaw 版本:2026.2.22-2Node.js:v22.22.0模型:Kimi Code (kimi-for-coding)更新日期:2026-02-28八、总结
通过 OpenClaw 的多 Agent 多频道配置,我们可以:
专业化分工 - 每个 Agent 专注一个领域清晰的交互边界 - 不同频道对应不同 Agent灵活的调度机制 - Cypher 作为总控,可单可群可扩展的架构 - 随时添加新的专家 Agent这种架构让 AI 助手从"全能但平庸"进化为"专业且协同",每个任务都能找到最适合的专家来处理。
