Skip to content

Hermes Agent v0.11 - 结构升级与实战工作流解读

这是一次“结构级”版本,不是小修小补。重点不在单点新功能,而在可扩展性边界被整体抬高:交互层更可控、模型接入层更解耦、插件/Hook 可编排、子代理协作更可靠。

目录


1) 这次版本到底改了什么(结论先行)

1.1 一张表看懂 v0.11 重点

维度 v0.10 及之前痛点 v0.11 改动 直接收益
交互体验 长任务中输入/输出难管理 全新 React + Ink TUI 观察、纠偏、追踪更顺手
运行中纠偏 跑偏后通常只能重跑 /steer 中途纠偏 减少重跑成本
模型接入 Provider 逻辑耦合在核心 Pluggable Transport Layer 新 provider 接入成本降低
企业合规 外部 API 路由受限 原生 AWS Bedrock 更易满足内网/合规要求
插件能力 多是“旁路观察” 可拦截/改写 tool call/result 能做治理、审计、策略控制
多代理并行 并行写文件冲突风险 Orchestrator + 文件协调 并行流水线可落地

1.2 版本定位

  • 这版核心关键词:Interface + Infrastructure + Extensibility
  • 不是“多了几个 provider”这么简单,而是后续版本继续加速的“地基”。

1.3 快速判断你是否该马上升级

✅ 适合尽快升级: - 你有长任务(研究、代码重构、批处理) - 你要做多代理并行 - 你有企业网络/合规要求(Bedrock) - 你准备做插件治理(拦截敏感命令、审计日志)

❌ 可观望: - 你只跑非常短、一次性任务 - 没有多平台消息/插件/并行需求


2) 架构层变化:从可用到可扩展

2.1 新 TUI:不是“好看”,是“可操作性升级”

关键改动: - Sticky composer(输入区固定) - 实时流式输出 - 状态栏增加 git branch + 每轮计时 - 子代理 spawn 可视化

工程价值:在“任务中”做决策,而不是“任务后”复盘。

ASCII 流程:

[启动任务]
    |
    v
[TUI 实时观察输出] --发现偏离--> [/steer 注入修正]
    |                                   |
    +--------------继续执行<-------------+
    |
    v
[完成结果 + 用时可观测]

2.2 Transport 重构:把“模型接入”从核心运行时剥离

过去 provider 适配逻辑散落在核心路径;现在抽象为 transport 层: - Anthropic transport - Chat Completions transport - Responses API transport - Bedrock transport

收益: 1. 新 provider 接入更快 2. 切换 provider 以配置为主,不动核心代码 3. 便于统一治理重试、限流、日志

2.3 Plugin + Hooks:从“扩展”变“策略编排”

新增能力重点: - pre-tool-call 可阻断(block) - transform_tool_result 可改写返回 - transform_terminal_output 可脱敏 - register_command / dispatch_tool - Shell hooks(低门槛接生命周期)

示例(治理思路):

# 伪配置思路:生产环境阻断危险命令
# pre-tool-call hook:
# if command matches "rm -rf /" or "drop table" -> deny

3) 六个可直接复用的工作流

3.1 多代理体系:Orchestrator + 文件协调层

这是 v0.11 最核心的架构升级。多代理不是简单地"起多个进程跑",而是引入了结构化的层级管理和并发安全机制。

3.1.1 两个角色

角色 能力 典型用途
leaf(默认) 独立完成分配的任务,不能进一步委派 代码评审、搜索、数据处理
orchestrator 可继续 delegate_task 生成下一层子代理 拆解大任务、聚合多路结果

代理层级:

Depth 0  Parent Agent(你交互的主代理)
            |
            +-- delegate_task(role=orchestrator) ----+
            |                                         |
Depth 1    +--> Child A (orchestrator)              +--> Child B (leaf)
                |                                      |
Depth 2        +--> Grandchild 1 (leaf)               (不可再拆分)
                +--> Grandchild 2 (leaf)

3.1.2 关键配置项

delegation:
  max_concurrent_children: 5   # 最大并行子代理数(默认 5)
  max_spawn_depth: 1           # 最大嵌套深度 [1-3],1=只能一层
  orchestrator_enabled: true   # 全局开关,false 则所有 orchestrator 降级为 leaf
  subagent_auto_approve: false # 子代理危险命令是否自动放行(默认拒绝)
  model: ''                    # 可选:子代理用不同/更便宜的模型
  provider: ''                 # 可选:子代理走不同 provider

决策树:

需要嵌套编排吗?
├── 否 → max_spawn_depth: 1(默认)
└── 是 → 需要 2 层嵌套?
         ├── 是 → max_spawn_depth: 2
         └── 否 → max_spawn_depth: 3
                    注意:每层都是 API 调用开销,
                    嵌套越深 token 消耗越大

3.1.3 文件协调层(FileStateRegistry)

核心问题:多个并行子代理可能读写同一文件,互相覆盖。

解决方案:进程级单例 FileStateRegistry,通过三个钩子跟踪文件状态:

子代理 A: read_file("config.yaml")     ←── 记录 read stamp
子代理 B: write_file("config.yaml")    ←── 写入 + 记录 last_writer
子代理 A: write_file("config.yaml")    ←── check_stale 触发!
                                          ↓
                          检测到 B 在 A 读取之后修改了该文件
                          返回警告:"Re-read the file before writing"

三类陈旧检测:

检测类型 触发条件 返回给模型的提示
兄弟代理覆盖 其他子代理在你读取后写入了同一文件 告知是哪个 task_id 修改的
外部修改 磁盘上 mtime 变了(人工编辑或其他进程) 提示有外部编辑
写前未读 你从未读过就要写(可能是新建文件) 提示先读取

设计要点: - per-path threading.Lock:同一文件的读-改-写串行化,不同文件并行 - 不阻塞,只警告check_stale 返回提示文本给模型,由模型决定重新读取 - 写入后自动刷新note_write 更新代理自身的 read stamp,避免自触发误报 - 可通过 HERMES_DISABLE_FILE_STATE_GUARD=1 完全关闭

3.1.4 子代理的工具隔离

子代理默认不能使用以下工具(硬编码阻断):

被阻断工具 原因
delegate_task 防止递归委托(leaf 的核心限制)
clarify 子代理无法与用户交互
memory 不能写入共享 MEMORY.md
send_message 防止跨平台副作用
execute_code 子代理应逐步推理,而非写脚本黑箱

注意:当 role=orchestrator 时,delegate_task 会被重新加回,其他四个仍然阻断。

3.1.5 实战:并行代码评审

1. 你给主代理一个 PR diff
       ↓
2. 主代理(orchestrator)分析 diff,按模块拆分:
       ├── 子代理 1: 审查 src/payment/*.java
       ├── 子代理 2: 审查 src/settlement/*.java
       └── 子代理 3: 审查 src/web/*.java
       ↓ (并行执行,受 max_concurrent_children 限制)
3. 各子代理独立运行,FileStateRegistry 确保文件写入安全
       ↓
4. 主代理汇总三份评审 → 生成统一报告
       ↓
5. 如果某个子代理的输出被另一子代理修改了父代理已读的文件,
   汇总结果会附带提醒:"subagent X 修改了你之前读过的 Y 文件"

串行 vs 并行耗时对比:

场景 串行 并行(v0.11)
3 个模块各 2 分钟 ~6 分钟 ~2 分钟
5 个模块各 1-4 分钟不等 ~12 分钟 ~4 分钟(最慢模块)
文件冲突风险 无(天然串行) FileStateRegistry 自动防护

3.1.6 实战:多数据源研究(Drug Discovery 模式)

可迁移到任意"多源采集 + 汇总"场景:

Orchestrator: "评估 XX 化合物"
    |
    +-- 并行 -->
    |     [ChEMBL]   [PubChem]   [OpenFDA]   [ADMet]
    |       |           |          |           |
    |       v           v          v           v
    |   生物活性    化学结构    监管信号    药代动力学
    |
    v
Orchestrator 汇总 → 单份综合评估报告

非医药领域映射:

领域 数据源 1 数据源 2 数据源 3 数据源 4
风控 交易日志 黑名单 地理位置 设备指纹
运维 监控指标 发布日志 链路追踪 变更记录
安全 CVE 库 依赖扫描 配置审计 流量日志
支付 订单数据 渠道对账 结算记录 风控规则

3.1.7 常见坑与最佳实践

问题 建议
子代理任务太宽泛 context 参数传入具体文件路径/约束
并行太多 OOM/限流 max_concurrent_children 从 3 开始,别直接开 5
子代理用了更贵的模型 配置 delegation.model 指定便宜模型(如 GPT-4o-mini)
需要子代理有交互能力 不可能,改用 hermes 进程 spawn(tmux 模式)
文件协调误报太多 确保每个子代理的 goal 指向不同文件区域
嵌套太深 token 爆炸 max_spawn_depth 不要超过 2,orchestrator 层级越少越好

3.2 研究任务中途纠偏(/steer

典型场景:资料已收集很多,但结论方向偏了。 - 老做法:停掉重跑(浪费) - 新做法:/steer 注入纠偏,保留已完成工作

[研究任务进行中]
    |
    v
[观察 TUI 输出] → 发现方向偏了 → /steer 重新聚焦到 X 角度
    |                                      |
    +------ 已有资料 + prompt cache --------+
    |         全部保留,不中断               |
    v
[从纠偏点继续执行,无需重跑]

与 Orchestrator 的协同:你可以在 orchestrator 汇总阶段用 /steer 调整汇总策略,而不需要等全部子代理跑完再重跑。

3.3 Webhook Direct Delivery(零 token 转发)

如果 payload 已经可读,不需要 LLM 推理:

Webhook Event --> Direct Delivery --> Telegram/Discord/Slack

优点:低延迟、零模型成本、告警链路更简单。

3.4 Shell Hooks 融入 CI/CD

可落地做法: - on-session-start:注入分支/构建号上下文 - pre-tool-call:校验受保护路径 - post-tool-call:记录审计日志

3.5 QQBot + 多平台统一后端

同一 Hermes 后端可同时服务 QQ / Telegram / Discord 等入口, 共享工具与上下文,减少多套机器人运维成本。


4) 落地建议:团队怎么升级最稳

4.1 三步升级法

  1. 先灰度环境:只开新 TUI + /steer
  2. 再接入 transport 切换:验证 Bedrock/新 provider 稳定性
  3. 最后启用治理 hooks:阻断策略、脱敏、审计

4.2 升级验收清单

  • 长任务中 /steer 可稳定生效
  • 并行子代理无文件冲突
  • provider 切换仅改配置即可
  • Hook 阻断策略不误伤正常命令
  • 告警类 webhook 已迁移 direct delivery

4.3 一句话总结

v0.11 的本质是:把 Hermes Agent 从“单体可用工具”推向“可治理、可扩展、可并行编排的平台底座”。


参考资料

相关笔记

  • [[Hermes Agent]]
  • [[AI Agent Engineering]]
  • [[多代理协作(Multi-Agent Orchestration)]]