Hermes 多 Agent 实战
这根本不是技术活,是管理活
来源:林月半子聊AI · 2026年6月 · 从零搭建多 Agent 协作团队
先聊聊 profile — 多 Agent 的基础
Hermes 的 profile 就是一整套独立的 Agent 配置文件。
每个 profile 有自己独立的:skills/ 目录、model 配置、聊天历史数据库、甚至 home channel。相当于每个 Agent 一个独立的"人设"。
作者配了三个 profile:
Step 1:建三个 Agent,分工明确
林小探(Search)
角色:Executor。负责联网搜索、情报搜集和市场调研。
林小墨(Ink)
角色:Executor/Reviewer。负责文案润色、逻辑梳理和 Obsidian 笔记格式化。
管理员(Admin)
角色:Scheduler。负责接收用户指令、分解任务、按顺序调度专家。自身不执行实操工具。
分工原则:一个 Agent 只做一件事。让专人干专活,比让一个大 Agent 什么都会强得多。
Step 2:接 Discord,为什么不用飞书?
飞书一个 profile 只能服务一个群聊,但作者需要 3 个 Agent 在同一个频道里协作。
Discord 的优势:
- 一个服务器里可以有多个频道和 Thread
- Bot 之间可以通过 @mention 互相唤醒
- Thread 机制天然隔离不同任务上下文
Gateway 配置好后,Discord 的消息就能自动路由到对应 profile 的 Agent。
Step 3:翻车从私聊开始
第一个翻车:Agent 之间是"假协作"。
作者以为三个 Agent 配好了就能自动协作,结果发现:
根本原因:Agent 之间没有共享上下文通道。它们各自独立对话,没有"会议室"。
解法:用 Discord 的公共 Thread 作为共享工作空间,所有 Agent 能看到同一份上下文的流转。
Step 4:Hermes 的 thread 机制
这是 Hermes 默认开启的 auto_thread: true 行为。
每次用户在 Discord 发消息,Hermes 会自动创建一个 Thread:
- Thread 内的消息只属于这个任务
- 不同任务不会互相污染上下文
- Agent 能在 Thread 里 @ 其他 Agent 完成接力
Step 5:复制两份,搭出小团队
用 Hermes 的 profile 复制功能,快速搭建三个 Agent:
每个 profile 启动一个独立的 gateway 进程,监听 Discord 上的消息。三个 gateway 共享同一个 Discord 服务器,但各自响应与自己相关的 @mention。
Step 6:以为成功了,结果发现是假的
刚跑通的时候,看起来三个 Agent 各司其职、协作正常。但仔细一看发现不对:
问题出在:管理员只做了"转发"没有做"验证"。需要加一层状态追踪机制——确认完成后再进入下一步。
🕳️ 坑 1:没有 @,直接就结束了
管理员在 Thread 里用文字说"林小探你搜一下",但没有用 @ 提及林小探的 Bot ID。
结果:林小探根本没收到消息。管理员以为它在搜了,等了半天发现啥也没发生。
关键规则:执行的时候用 @ID,调度的时候只用文字(防止误唤醒)。
🕳️ 坑 2:任务结束后,停不下来了
三层的防死循环方案,逐层加固:
第一层:DISCORD_ALLOW_BOTS: false
默认 Bot 收到其他 Bot 的消息会忽略。如果不关掉这个,Agent 之间的消息被当作"机器人消息"丢弃。
第二层:replied_user: false
Discord 的 reply 自带了隐式 @mention。关掉后才能避免 reply 引起的连锁唤醒。
第三层:SOUL.md 里的终止协议
明文规定:任务结束后用"【任务结束】"标记、禁止发多余消息、禁止二次响应结束类消息。
🕳️ 坑 3:直接把两个人都 @ 了
作者一开始在一条消息里同时 @ 了林小探和林小墨:
解法:逐一唤醒,接力逻辑。