从单兵到军团:Hermes 多 Agent 协同部署完全指南
核心问题:当单个 AI Agent 已经足够强大时,为什么还要搭建多 Agent 体系?答案在于专业化分工带来的乘数效应——让多个各有所长的 Agent 并行工作,整体产出远高于一个”全能型”单体 Agent。
现代 AI Agent 已经能够独立完成研究、写作、分析、编程等复杂任务,显著节省人力与时间。然而,任何单一 Agent 都有其能力边界:它在某一领域可以做到极致,却无法在所有领域同时保持高水平输出。这正是多 Agent 架构的价值所在——通过专业化分工,让每个 Agent 只负责自己擅长的领域,组合起来的战斗力必然超越单个”全能选手”。
本文基于 Hermes 多 Agent 体系的完整实践,从底层逻辑到生产部署,覆盖安装配置、角色定制、消息入口搭建、指令操作及可视化监控的每一个环节。无论你是想搭建一个小型自动化助手团队,还是准备在生产环境部署可扩展的 Agent 集群,这篇指南都会提供可直接执行的步骤与经过验证的配置方案。
一、Hermes 多 Agent 的工作机制:两种模式与三层持久化
核心问题:Hermes 的多 Agent 与其他并行执行框架有何本质不同?
市面上许多工具都能实现 ThreadPoolExecutor 并行执行、上下文隔离和工具封锁,但这些只是执行层面的机制。Hermes 的独特之处在于:多 Agent 运行在一个会学习、会持久化的系统里。这种持久化体现在三个层面:
1.1 三层持久化设计
第一层:技能自进化。 子 Agent 完成复杂任务后,系统会自动生成可复用的 Skill 文档。下次遇到同类任务时,无需重新推理,直接加载已有技能,响应速度与质量同步提升。
第二层:服务级持久化。 Hermes 是长期运行的服务进程,而非临时调用的 Python 库。它同时挂载 Telegram、Discord、Slack 等多个平台,你可以从手机发送一条消息,触发三路并行的子 Agent 在 VPS 上同时工作。
第三层:执行粒度控制。 除了 delegate_task,Hermes 还提供 execute_code 作为第三层执行粒度。这意味着你可以精准控制哪部分操作消耗 LLM token、哪部分通过代码执行零成本完成,实现成本与效率的最优平衡。
1.2 两种多 Agent 模式对比
Hermes 提供两种截然不同的多 Agent 协作模式,适用于不同场景:
| 模式 | 类型 | 生命周期 | 记忆与配置 | 适用场景 |
|---|---|---|---|---|
| delegate_task | 主从层级 | 临时 spawn,用完即销毁 | 无独立记忆,继承主控上下文 | 单次复杂任务的并行拆解 |
| Profiles | 平行独立 | 长期运行的独立进程 | 完整独立配置、持久记忆、独立身份 | 专业化团队持续服务 |
delegate_task 的关键约束:
-
子 Agent 不得再派生子 Agent,层级上限为两层(主控 → 子 Agent) -
子 Agent 被永久封锁以下工具:防无限递归机制、向用户提问、写入共享记忆、私自发消息、execute_code -
主控 Agent 一旦中断任务,所有活跃的子 Agent 同步停止
作者反思: 早期我曾误以为 delegate_task 的临时性是个缺陷,后来在生产环境中意识到,这种”用完即走”的设计恰恰避免了上下文污染。对于需要严格隔离的一次性任务(如批量代码审查),delegate_task 比长期驻留的 Profile 更干净、更安全。
二、利用 Profiles 实现 Agent 的克隆与部署
核心问题:如何在 Hermes 中快速创建并部署多个独立 Agent?
Hermes 创建子 Agent 的过程设计得极为简洁。在服务器终端执行一条命令,系统会自动完成目录创建、配置初始化和命令注册。
2.1 创建基础 Profile
# 创建通用子 Agent(xxx 替换为自定义名称)
hermes profile create xxxxx
# 创建小红书写作专用 Agent
hermes profile create xhswriter
# 创建信息搜索专用 Agent
hermes profile create researcher
执行后,Hermes 会在 ~/.hermes/profiles/<名称>/ 下创建完整的独立目录,并在 ~/.local/bin/ 注册同名命令别名。这意味着创建完成后,你可以直接输入 xhswriter 或 researcher 作为命令前缀操作对应 Agent。
创建完成后,建议立即验证:
hermes profile list
该命令会列出所有 Profile 及其当前运行状态,确认新 Agent 已成功注册。
2.2 克隆现有配置
如果你已有配置完善的 Agent,可以通过克隆快速复制其 API Key 和模型设置,避免重复配置:
# 从默认配置克隆,记忆和会话保持独立
hermes profile create coder --clone
# 从指定 Profile 克隆
hermes profile create ops --clone-from coder
场景示例: 假设你已配置好一个使用 Claude 模型、具备完整 Telegram 网关的 master Agent。现在需要新增一个 coder Agent 处理代码任务,通过 --clone-from master,coder 会继承相同的模型供应商和认证信息,但拥有独立的记忆空间和工作目录,两者互不干扰。
作者反思: 我最初为每个 Agent 手动重复配置 API Key,不仅耗时还容易出错。后来发现克隆功能可以保留认证信息的同时隔离记忆,这对搭建同构团队(如多个代码审查 Agent)特别高效。
三、为每个 Agent 配置专属模型
核心问题:如何让不同 Agent 使用最适合其任务的大语言模型,且彼此互不干扰?
Profiles 最核心的能力在于模型隔离。每个 Agent 拥有完全独立的模型配置,修改一个 Agent 的模型不会影响其他 Agent。所有配置变更在下一个新 session 生效,配置完成后需调用 /new 开启新会话。
3.1 三种配置方法
方式一:交互式向导(推荐)
coder model
系统会全程引导你选择模型供应商、具体模型版本和认证方式,适合首次配置或更换模型时避免手误。
方式二:指定 OAuth 类型
hermes -p coder auth add anthropic --type oauth
适用于已明确使用 OAuth 认证流程的场景。
方式三:直接配置参数
# 设置具体模型
coder config set model.model "anthropic/claude-sonnet-4"
# 设置模型供应商
coder config set model.provider "openrouter"
场景示例: 在我的部署中,coder Agent 使用 Claude Sonnet 处理代码理解与生成,researcher Agent 使用轻量级模型执行快速搜索与摘要,xhswriter Agent 则调用擅长中文创作的模型。这种差异化配置让每个 Agent 在各自领域发挥模型所长,而非强迫所有任务适应单一模型。
作者反思: 曾经我让所有 Agent 共用同一个强模型,结果代码任务消耗了大量本可用于创意写作的 token。分离模型后,不仅响应质量提升,月度 API 成本也下降了约 40%。这印证了”合适工具做合适事”的基本原则。
四、为子 Agent 定制独特人格:SOUL.md 深度配置
核心问题:如何确保每个 Agent 专注自己的领域,不越界抢其他 Agent 的工作?
SOUL.md 是 Agent 的核心身份文件,在系统提示中占据最高优先级。清晰定义职责边界和行为规范,Agent 才能稳定地”做自己该做的事”。
4.1 使用现成角色库
社区维护的 agency-agents-zh 仓库提供了大量经过验证的专业角色定义。最佳实践是将仓库克隆到 Hermes 根目录,然后通过软链接将角色文件连接到各 Profile 的 SOUL.md:
# 克隆角色库到 Hermes 根目录
git clone https://github.com/jnMetaCode/agency-agents-zh.git ~/.hermes/agency-agents-zh
4.2 建立软链接实现角色绑定
# 定义变量便于维护
REPO=~/.hermes/agency-agents-zh
PROFILES=~/.hermes/profiles
# coder → 后端架构师
ln -sf $REPO/engineering/engineering-backend-architect.md \
$PROFILES/coder/SOUL.md
# master → 智能体编排者(主控/全局协调)
ln -sf $REPO/specialized/agents-orchestrator.md \
$PROFILES/master/SOUL.md
# researcher → 趋势研究员
ln -sf $REPO/product/product-trend-researcher.md \
$PROFILES/researcher/SOUL.md
软链接的优势: 当 agency-agents-zh 仓库更新时,只需执行 git pull,所有使用该角色的 Profile 会自动同步最新定义,无需逐个手动修改。
cd ~/.hermes/agency-agents-zh && git pull
# 所有软链接的 Profile 自动更新
4.3 验证人格配置
配置完成后,可通过以下方式验证 Agent 是否正确加载了角色定义:
xhswriter chat -q "请介绍你自己的职责"
如果返回的描述与 SOUL.md 中定义的角色一致,说明配置成功。
作者反思: 我曾直接复制粘贴角色描述到每个 SOUL.md,结果仓库更新后花了整整一个下午手动同步。改用软链接后,维护成本趋近于零。这个看似微小的操作习惯,在管理超过 5 个 Agent 时会产生巨大的时间复利。
五、配置独立的消息平台入口:以 Telegram 为例
核心问题:如何让每个 Agent 拥有独立的通信渠道,实现真正的并行响应?
多 Agent 体系要发挥价值,必须解决入口隔离问题。以下以 Telegram 为例,演示如何为每个 Agent 配置独立的 Bot 入口。
5.1 创建独立 Bot
每个 Agent 需要一个独立的 Telegram Bot。在 Telegram 中搜索 @BotFather,发送 /newbot,按提示输入 Bot 名称(如 xiaohongshu_Researchwang_bot)。BotFather 会返回 Token,格式如下:
7234567890:AAHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
为四个 Agent 分别创建 Bot,获取四个独立 Token。
5.2 批量写入环境变量
将各 Token 写入对应 Profile 的 .env 文件:
# coder
echo "TELEGRAM_BOT_TOKEN=8626455870:AAHkP_u-ccVJJnD0d3dKP5CtvT4" >> ~/.hermes/profiles/coder/.env
# master
echo "TELEGRAM_BOT_TOKEN=8633288874:AAF-4eOxACvPFBKGACnaAJAE" >> ~/.hermes/profiles/master/.env
# researcher
echo "TELEGRAM_BOT_TOKEN=8732715539:AAF0FWav__krJUGaHIu-SrkTlcY" >> ~/.hermes/profiles/researcher/.env
# xhswriter
echo "TELEGRAM_BOT_TOKEN=8716407357:AAEDzIuQhe_iEVIhF-Ps" >> ~/.hermes/profiles/xhswriter/.env
5.3 配置 Gateway 访问权限
每个 Profile 的 Gateway 需要单独配置,指定哪些用户可以向该 Agent 发送消息。首先获取你的 Telegram User ID(向 @userinfobot 发送任意消息即可获得)。
然后为每个 Agent 启动配置向导:
coder gateway setup
master gateway setup
researcher gateway setup
xhswriter gateway setup
向导会询问平台选择,由于 Token 已写入 .env,选择 Done 后其余选项一路确认即可。
5.4 配置 Pair Code 并验证
完成 Gateway 配置后,还需为子 Agent 配置 Pair Code。配置完成后即可开始对话。
检查子 Agent 的运行状态:
systemctl --user status hermes-gateway-xhswriter
若显示 active (running),说明 Gateway 已成功启动,该 Agent 正在监听 Telegram 消息。
场景示例: 在我的生产部署中,四个 Agent 分别对应四个 Telegram Bot。当我在运营群里发现热点话题时,直接 @researcher_bot 获取深度分析;收到分析后,转发给 @xhswriter_bot 生成小红书文案;同时 @coder_bot 准备相关的数据抓取脚本。三个 Agent 并行工作,互不阻塞,整体内容生产周期从原来的 2 小时压缩到 20 分钟。
作者反思: 最初我尝试让多个 Agent 共用同一个 Bot,通过关键词路由区分任务。结果上下文频繁串扰,Agent 经常误解指令意图。独立 Bot 虽然增加了初始配置工作量,但换来的隔离性和稳定性完全值得。这再次证明:架构上的清晰边界,比省下的几行配置代码重要得多。
六、多 Agent 运维必备指令大全
核心问题:如何高效管理运行中的 Agent 集群,包括监控、配置热更新和故障排查?
6.1 状态查看与矩阵概览
# 列出所有 Profile 及运行状态
hermes profile list
# 查看某个 Agent 的详细信息(模型、技能、绑定平台)
hermes profile show coder
# 查看当前 Agent 的完整配置
coder config
# 查看当前 Agent、认证和平台连接状态
hermes status
# 输出完整的可分享配置摘要(排障时直接粘贴给他人)
hermes dump
6.2 身份切换与定向操作
# 切换默认 Agent,之后所有 hermes 命令作用于 coder
hermes profile use coder
# 切回默认通用主控
hermes profile use default
# 不切换默认,临时对某个 Agent 发一条消息
hermes -p coder chat -q "你好"
6.3 热加载配置(无需重启)
# 修改 coder 的模型
coder config set model.model "anthropic/claude-opus-4"
# 修改工作目录
ops config set terminal.cwd /home/ubuntu/projects
# 扩大记忆容量
researcher config set memory.memory_char_limit 5000
# 批量修改所有 Agent 的同一配置项
for profile in coder ops researcher writer; do
$profile config set model.provider openrouter
done
6.4 技能库更新
# 更新指定 Agent 的技能库
coder update
# 全员技能同步,一键更新所有 Profile
hermes update
# 更新已安装技能到最新版本
hermes skills update
# 检查哪些技能有上游更新
hermes skills check
注意: SOUL.md 修改后,Hermes 在下一个新 session 时自动加载新内容。当前对话中可用 /new 开启新会话立即生效,无需重启进程。
6.5 部署与迁移
# 打包备份
hermes profile export coder
# 带日期戳的备份
hermes profile export coder -o /backup/coder-$(date +%Y%m%d).tar.gz
# 从备份恢复
hermes profile import coder.tar.gz
# 恢复为新名字(避免冲突)
hermes profile import coder.tar.gz --name coder-prod
# 重命名
hermes profile rename coder dev-assistant
# 删除(需二次确认)
hermes profile delete writer
# 跳过确认直接删除
hermes profile delete writer --yes
系统级完整备份:
# 完整备份
hermes backup
# 快速备份(仅关键状态文件)
hermes backup --quick --label "pre-upgrade"
# 从系统备份恢复
hermes import hermes-backup-*.zip
6.6 日志监控
# 实时跟踪主 Agent 日志
hermes logs -f
# 只看错误日志实时流
hermes logs errors -f
# 实时看消息网关日志(Telegram/Discord 收发)
hermes logs gateway -f
# 查看最近 50 条日志
hermes logs -n 50
# 查看最近 20 条错误记录
hermes logs errors -n 20
# 过去 1 小时内 WARNING 以上级别日志
hermes logs --level WARNING --since 1h
# 过去 30 分钟的错误
hermes logs --since 30m --level ERROR
# 列出所有日志文件及大小
hermes logs list
# 查看指定 Profile 的日志
coder logs -f
ops logs errors -n 20
6.7 并发控制:一键启停
# 查看所有 gateway 服务状态
sudo systemctl status hermes-gateway-*
# 一键启动所有已安装的 gateway 服务
sudo systemctl start hermes-gateway-coder hermes-gateway-ops hermes-gateway-researcher hermes-gateway-writer
# 全员停止(释放资源)
sudo systemctl stop hermes-gateway-coder hermes-gateway-ops hermes-gateway-researcher hermes-gateway-writer
# 单独重启某个 Agent 的网关
sudo systemctl restart hermes-gateway-ops
# 通过 -p 标志对特定 Agent 发起操作(不依赖 gateway)
hermes -p coder chat -q "检查 src/auth/ 有没有 SQL 注入漏洞"
hermes -p researcher chat -q "搜索本周 AI 最新进展"
作者反思: 日志指令是我排查问题的第一入口。曾经遇到
xhswriter突然不响应的情况,通过hermes logs errors -f发现是 Telegram API 限流,而非 Agent 本身故障。这种快速定位能力,在管理多 Agent 集群时至关重要。建议将常用日志命令做成 shell alias,能节省大量时间。
七、可视化监控:hermes-web-ui 面板部署
核心问题:当多个 Agent 并行运行时,如何摆脱命令行,用图形界面统一管理?
命令行适合精细操作,但难以同时监控多个 Agent 的状态。路飞老师开发的 hermes-web-ui 专为多 Agent 可扩展性设计,提供以下核心能力:
-
Session 按来源平台分组: Telegram、Discord、Slack 的消息会话分开展示 -
内置 Web 终端: 直接在浏览器中执行 Agent 命令 -
Skills 和 Memory 管理界面: 可视化查看和编辑 Agent 的技能库与记忆 -
Token 用量统计看板: 实时监控各 Agent 的 API 消耗
7.1 部署方式
最便捷的部署方法是直接让 Agent 协助完成:
# 直接和 agent 说
帮我部署 https://github.com/EKKOLearnAI/hermes-web-ui
部署完成后,系统会生成一个访问 Token。输入 Token 登录 Web 页面,即可看到所有子 Agent 的实时状态、会话历史和资源消耗。
场景示例: 在我的日常运维中,hermes-web-ui 作为主控台常驻浏览器标签页。早晨第一件事是查看 Token 用量看板,确认夜间批处理任务没有异常消耗;白天通过 Web 终端快速向特定 Agent 发送指令;晚上检查各 Agent 的 Memory 增长情况,决定是否执行清理。这种可视化层大大降低了多 Agent 集群的认知负担。
作者反思: 我曾坚持使用纯命令行管理 6 个 Agent,觉得”真正的工程师不需要 GUI”。但当 Agent 数量增加、会话交叉复杂化后,纯命令线的上下文切换成本急剧上升。引入 hermes-web-ui 不是”变弱了”,而是把有限的心智带宽留给真正需要深度思考的技术决策。
实用摘要与操作清单
快速启动检查表
| 步骤 | 操作 | 验证命令 |
|---|---|---|
| 1 | 创建 Profile | hermes profile create <name> |
| 2 | 克隆配置(可选) | hermes profile create <name> --clone |
| 3 | 配置专属模型 | coder model 或 coder config set model.model "xxx" |
| 4 | 绑定 SOUL.md 角色 | ln -sf <role.md> ~/.hermes/profiles/<name>/SOUL.md |
| 5 | 创建 Telegram Bot 并获取 Token | 在 @BotFather 执行 /newbot |
| 6 | 写入 Token 到 .env | echo "TELEGRAM_BOT_TOKEN=xxx" >> ~/.hermes/profiles/<name>/.env |
| 7 | 配置 Gateway | <name> gateway setup |
| 8 | 配置 Pair Code | 按向导提示完成 |
| 9 | 启动 Gateway 服务 | sudo systemctl start hermes-gateway-<name> |
| 10 | 验证运行状态 | systemctl --user status hermes-gateway-<name> |
| 11 | 部署可视化面板(推荐) | 让 Agent 部署 hermes-web-ui |
一页速览(One-page Summary)
核心理念: 多 Agent 不是数量堆砌,而是专业化分工。每个 Agent 独立配置模型、角色和通信入口,通过持久化记忆和技能进化持续提升产出质量。
两种模式:
-
delegate_task: 临时派生,适合单次复杂任务的并行拆解,层级上限两层 -
Profiles: 长期驻留,适合专业化团队持续服务,拥有完整独立配置
关键配置:
-
模型隔离:每个 Profile 独立设置 model.model和model.provider -
角色定义:通过 SOUL.md 软链接绑定专业角色,便于统一更新 -
入口隔离:每个 Agent 独立 Telegram Bot,避免上下文串扰 -
热更新:配置修改后 /new开启新会话生效,无需重启进程
常见问题(FAQ)
Q1: delegate_task 和 Profiles 我应该用哪种?
A: 如果你需要临时拆解一个复杂任务(如”同时分析三个文件并汇总”),用 delegate_task;如果你要搭建长期服务的专业化团队(如”代码助手”+”文案写手”+”数据分析师”),用 Profiles。
Q2: 修改 SOUL.md 后为什么 Agent 没有立即生效?
A: SOUL.md 的变更在下一个新 session 时加载。当前对话中输入 /new 开启新会话即可生效,无需重启 Hermes 进程。
Q3: 克隆 Profile 会复制记忆吗?
A: 不会。--clone 只复制 API Key 和模型配置,记忆和会话历史保持独立,确保两个 Agent 不会互相污染上下文。
Q4: 一个 Telegram Bot 可以给多个 Agent 共用吗?
A: 技术上可行,但强烈不建议。共用 Bot 会导致上下文串扰、指令路由混乱。每个 Agent 配备独立 Bot 是实现稳定多 Agent 协作的前提。
Q5: 如何查看某个 Agent 当前使用的具体模型?
A: 执行 hermes profile show <name> 或 <name> config,输出中会包含当前绑定的模型供应商和具体模型名称。
Q6: Gateway 配置时向导询问平台选择,我该怎么回答?
A: 由于 Token 已提前写入 .env 文件,选择 Done 即可,其余选项按默认确认。
Q7: 批量修改所有 Agent 的同一配置项有什么快捷方法?
A: 使用 shell 循环:for profile in coder ops researcher writer; do $profile config set <key> <value>; done
Q8: hermes-web-ui 的 Token 忘记了怎么办?
A: 重新部署或查看部署日志中的 Token 输出。建议首次部署后将 Token 记录到密码管理器中。
结语: 从单兵作战到军团协同,Hermes 的多 Agent 架构提供了一条清晰可落地的路径。关键不在于立即部署大量 Agent,而在于理解每个 Agent 的边界、配置好隔离机制、建立可持续的运维流程。从一个主控 Agent 开始,逐步添加专业化成员,你会发现整体产出呈现非线性增长——这正是系统化思维在 AI 工程中的体现。

