听说最近Hermes Agent很火,有种气势汹汹要取代OpenClaw的架势,赶紧去分析一下Hermes的源码,看看它是真的有料还是虚张声势。
Hermes 不是一个“只有模型调用”的薄壳,它更像一套偏工程化的 Agent 运行时。
但它也不是没有代价:核心模块偏重,后期治理成本会越来越高。只看 Demo,它确实容易显得很猛;真放进长期生产链路,拉开差距的还是架构纪律。
一、先看最值得抄的系统架构骨架
很多人看 Agent,先盯模型。
我更建议你先盯链路:请求是怎么进来的,谁裁决,谁执行,谁兜底,谁记账。
我把 Hermes 的可迁移骨架压成 7 层:
入口层 -> 治理层 -> 协调层 -> 控制层 -> 执行层 -> 状态与观测层 -> 学习层
这 7 层的价值,不是“看起来专业”,而是每层都能减少一种真实事故。
1) 入口层:多入口可以有,但语义必须统一
Hermes 允许 CLI、网关、批处理等多入口进来,但最终要汇到统一运行时语义。
你可以把它理解成“前门很多,后厨一套流程”。
你能学到的设计点:
- 入口适配和核心执行拆开,避免每加一个入口就复制一套 Agent 逻辑。
- 对外协议可以不同,对内事件语义尽量一致(同样的取消、超时、失败码)。
示例:
用户在 IM 发“帮我拉今天成交异常单”,和运维在 CLI 里跑同一任务,外层交互不同,但内部都走同一套任务状态机,这样排障才不会出现“两套真相”。
2) 治理层:先裁决,再执行
Hermes 这类工程化系统的关键,不是工具多,而是敢不敢在执行前拦。
高风险动作如果先执行再补审计,基本等于没治理。
你能学到的设计点:
- 权限不是单点开关,至少要“角色 + 上下文”两层判断。
- 风险分级要和审批联动,不要只写在文档里。
- DLP 不是只扫最终回答,工具参数和工具结果都要扫。
示例:
“把这个报价发给对手方”这类动作,应该在调用外联工具前先过风险裁决;命中高风险就先走确认,不是发完再弹窗。
3) 协调层:决定怎么跑,不负责直接开火
协调层干的是“编排”,不是“代替工具执行”。
这点很多项目容易搞混,最后变成一个超级大脑,什么都管,什么都慢。
你能学到的设计点:
- 能预定义的流程走固定流程,不要硬塞进自由循环。
- 探索型任务才交给 loop,副作用动作别让它自由发挥。
- 并行子任务可以多开,但收口责任要单点。
示例:
信用深研任务可以拆给多个子任务并行采证,但最后“可不可以进结论”必须由主流程统一收敛,不然你会得到 5 份互相打架的结论。
4) 控制层:把“偶发问题”变成“可预期行为”
很多人把超时、重试、并发上限当调参问题。
我认为这是架构问题:不在控制层做,迟早在线上还债。
你能学到的设计点:
- 统一超时语义:请求超时、工具超时、审批超时要区分。
- 重试必须有上限,有副作用动作默认不自动重试。
- 并发必须有硬上限,不能把“并发能力”变成“并发赌博”。
示例:
同一用户在 30 秒内连续触发同一高耗时工具 8 次,不做控制层限流,系统看起来“很努力”,实际是在自我拥堵。
5) 执行层:工具是系统能力,不是临时脚本
Hermes 值钱的一点,是它把工具能力做成可管理资产,而不是 case by case 拼出来。
今天能跑一个工具不难,难的是一年后还跑得稳。
你能学到的设计点:
- 工具元数据要统一:
schema / handler / 可用性检查 / 风险等级。 - 调用前后都要有标准处理:pre-check、post-check、审计入账。
- 能插拔的只是能力,不是底线;安全检查不能被插件绕过。
示例:
“查持仓”和“发外联消息”都叫工具,但风险等级完全不同。前者可自动化,后者默认人工确认。这个差异必须在执行层就固化。
6) 状态与观测层:没有这层,前面五层都很难救场
Agent 系统最怕的不是报错,而是“看起来成功,实际没落地”。
Hermes 在状态持久化和并发冲突处理上的思路,是典型工程型做法。
你能学到的设计点:
- 状态落盘是默认,不是可选。
- 并发写冲突要有应用层重试策略,别赌数据库永远不锁。
- 审计字段要贯通(trace/request/tool_use),不然后续复盘靠猜。
示例:
工具执行成功了,但最终回答没返回,或者返回了但状态没更新。
如果你没有完整事件链,排障就是黑箱。
7) 学习层:让系统“记教训”,但不“改底线”
Hermes 常被忽略的一个点是 learning loop。
它的价值不是“自动变聪明”这种口号,而是把运行反馈沉淀成下轮更稳的执行偏好。
你能学到的设计点:
- 学习对象优先放在“参数与策略偏好”,比如超时阈值、工具选择优先级、重试顺序。
- 权限边界、审批规则、风险阈值不能让学习层自动改。
- 学习结果要可追踪、可回滚,防止错误经验被长期固化。
示例:
系统发现某工具在高峰期稳定性差,下轮优先切换到备选工具;但它不能自己把“高风险动作需要审批”这条规则去掉。
二、从 Hermes 真正能学走的 5 个“硬设计”
下面这五条,我认为是“拿回去就能用”的,而不是讲完就忘的概念。
设计 1:统一工具注册协议
别把工具当函数仓库,应该把它当“受治理的系统接口”。
最小落地版:
- 每个工具必须声明输入 schema。
- 每个工具必须声明风险等级。
- 每个工具必须声明权限前置条件。
- 每次调用必须留下可追踪 ID。
反例:
工具都能被调用,但谁调用、为什么调用、失败了怎么归因,全靠日志搜索。
设计 2:执行前护栏前置
先判断能不能做,再决定怎么做。
这条看起来朴素,但很多项目恰好反着来。
最小落地版:
- pre-tool 执行权限裁决;
- 命中中高风险自动转确认;
- 参数级 DLP 和结果级 DLP 分开做。
反例:
先发消息,后审计;先写库,后补确认。出现事故时,你只能解释“系统就是这么干的”。
设计 3:状态并发按“必然冲突”设计
并发冲突不是概率事件,而是规模事件。
调用次数上来以后,它一定会来。
最小落地版:
- 存储层开启可并发友好模式;
- 应用层引入抖动重试;
- 重试要可观测,不要静默无限重试。
反例:
线上偶发“同一任务两份结果”或“任务卡住”,团队归因为网络抖动,结果每周都重演。
设计 4:失败语义必须显式
如果系统只会返回“失败”,那就是没设计失败语义。
可运维系统要告诉你“为什么失败”和“下一步怎么处理”。
最小落地版:
- 区分:超时、阻断、审批过期、降级完成、取消;
- 每个终态都给出可执行下一步;
- 前后端对同一终态使用同一语义。
反例:
用户看到“请重试”,运维看到“unknown error”,研发看到“可能是超时”。三方说的是三个世界。
设计 5:learning loop 要“有边界地学”
能学的是执行经验,不能学的是治理底线。
如果 learning loop 没边界,系统会从“持续优化”滑到“持续冒险”。
最小落地版:
- 只允许学习工具偏好、参数权重、失败恢复路径;
- 学习更新要有版本和审计;
- 可一键回滚到上一个稳定策略。
反例:
系统根据历史成功率自动放宽审批,短期通过率变高,长期合规风险直线上升。
三、场景科普:什么时候用得好,什么时候会翻车
这部分我不讲术语,直接讲“你今天就会遇到的场景”。
场景 A:有真实副作用(外联、下单、写入)
适合做法:固定流程 + 人工确认闸门。
不适合做法:纯 loop 自由执行。
为什么:
副作用场景重点不是“聪明”,而是“可追责、可回滚、可审计”。
场景 B:低风险排障问数
适合做法:轻量 loop,快速多步排查。
不适合做法:每次都走重流程审批。
为什么:
这类场景速度优先,但也要有护栏(步数上限、重复调用检测)。
场景 C:复杂筛选与批量计算
适合做法:执行层代码化处理(沙箱),结果摘要回灌。
不适合做法:把大数据处理塞进普通对话循环。
为什么:
后者会让上下文膨胀、成本上升、结果不稳定。
场景 D:多源证据深研
适合做法:并行采证 + 主流程收口。
不适合做法:子任务结果直接拼接成最终结论。
为什么:
没有统一收口,你拿到的是并行噪声,不是并行收益。
场景 E:系统自我调优(learning loop)
适合做法:只让系统学习“怎么更稳地执行”,不让它学习“怎么放宽治理边界”。
不适合做法:把审批阈值、权限规则交给学习层自动调整。
为什么:
执行策略可以持续优化,治理底线必须人工拍板。
四、适合与不适合:别全盘神化 Hermes
适合重点借鉴的团队
- 已经从 Demo 进入生产托管阶段
- 有合规和审计硬要求
- 已经遇到并发、状态一致性、工具治理问题
暂时不建议重型引入的团队
- 当前目标只是快速验证想法
- 任务基本是一次性轻问答
- 团队没有观测和治理投入窗口
说白了:
Hermes 这套不是“快速起飞包”,更像“长期运营底盘包”。