The Story Deep Dive

当一个 AI 诊断自己的盲点:Hermes 那条自我改进的工具调用循环是怎么跑的

Hermes Agent

Hermes Agent

@hermesagents

2026年4月9日

10 分钟阅读

release notes 里有一类 PR 你得读两遍,因为第一遍读完你根本不知道发生了什么。Hermes Agent v0.8.0 notes 里相关的那一条长这样:

自优化的 GPT/Codex 工具调用指南 —— agent 通过自动行为基准测试,诊断并修复了 GPT 和 Codex 在工具调用上的 5 种失败模式,大幅提升了 OpenAI 模型上的可靠性。(#6120

第一遍读的时候,我以为是哪个写字的人把"自优化"这个词用得比较松。第二遍读的时候我才反应过来:字面意思就是字面意思。agent 把一套基准测试跑在自己身上,发现 OpenAI 模型在调用它那些工具的时候有系统性的失败,针对这些失败生成了一套有的放矢的指南,再测一遍,确认这些修补真的起作用了。最后由人类审批放行。但是诊断和打补丁这一整步,是自动的。

这件事值得拆开讲,因为它是那种悄悄塞进一次发布里的单行文字,却会改变后面几次发布能长什么样的能力。

具体是个什么问题

Hermes Agent 配 OpenAI 模型——GPT-5、Codex——的组合,之前几个版本里一直看起来晃晃悠悠的。用户反馈是,Anthropic Claude 跑得顺,GPT-5 有时候吐出来的参数形状不对、跳步骤,或者在多工具调用链的中途忘了自己刚刚做过什么。这些不是什么隐蔽的 bug;你眼睁睁就能看到它们发生。但用手去修它们能把人逼疯——失败模式是跟模型绑在一起的,而且它们对 prompt 怎么措辞敏感到没法靠直觉去猜。

按 PR 描述里的说法,有五种反复出现的模式:

  • 在做破坏性的工具调用之前,跳过了本该先做的预检。
  • schema 要求结构化对象或者数字的地方,它却甩出一串裸字符串。
  • 在一串链式调用里,忘了哪一个工具调用已经成功,导致重复调用。
  • 指南里明明写着要重试,遇上短暂错误时它还是拒绝重试。
  • 上下文一长,它就从"按计划执行"飘到"把计划重新规划一遍"。

这些没一个是理论上的东西。每一条背后都拖着一串 GitHub issue。

把它们修好的那条循环

PR #6120 的做法有三个活动部件。

第一,一套自动行为基准测试。一个测试框架拿 agent 去跑一组合成场景,这些场景是专门为了勾出上面五种失败模式设计的。每跑完一个场景,基准会记录模型做了什么、本来该做什么,以及这个差值算不算已知失败模式里的某一种。

第二,一步生成指南。基准一旦标出一个失败,测试框架就会产出若干条候选指南字符串——都是些短的、针对具体模型的指令,准备塞进系统提示词,专门打在刚才失败的那个模式上。不是"更小心点"这种话;是类似"在调用任何破坏性工具之前,先用相同参数调一次对应的预览工具,并汇报它的输出"这种话。这些候选是针对观察到的具体失败生成的,不是照着一张通用评分表写出来的。

第三,再测一遍。每一条候选指南字符串都会在同一组场景上再跑一次。能把分数拉上去的留下;把别的场景搞糊的扔掉。活下来的那些被合进 Hermes 最终发出去的 GPT/Codex 系统提示词里。

为什么这是另外一种东西

一直以来,agent 框架里那些内置的 prompt 都是人写的——有时候一个人,有时候一个小团队——他们靠亲自把一堆对话盯过一遍,沉淀出关于哪些写法管用、哪些不管用的看法。这个流程有三个毛病:它没法扩展到很多模型;模型一更新它就没法便宜地重跑一遍;它产出来的 prompt,会把一个人的经验和他的迷信混在一起编码进去。

把"人写 prompt、人评 prompt"这条循环换成"基准测试出候选、基准测试评候选"这条循环,并不等于让 AI 无人监督地自己调自己。最终的指南还是由人类审批放行。但"找规律、提修复方案"这件事,本身变成了可量、可复现的东西。GPT-6 发出来的时候,同一套测试框架再跑一遍就行。有新的失败模式被报出来的时候,加一个新场景,循环再跑一次。让 prompt 跟模型的实际行为保持同步所要付的代价,降了一个数量级。

v0.8.0 里其他几个相关改动,指的也是同一个方向。仅思考 prefill 续写#5931)处理的是这么一种具体情况:模型产出了一段推理块却没有内容块,然后卡住了。执行纪律指南#5414)往系统提示词里加了一条通用规则:"除非真的有什么变了,别再把计划重新规划一遍。" 强制归并工具调用参数#5265)在 JSON schema 要数字或布尔值的地方,把字符串悄悄转过去,盖住了基准测试刚好抓到的那个参数类型失败。这三条 PR 单独放进 changelog 里看像是互不相干的。跟 PR #6120 一起读,你会发现它们是同一场刻意行动浮在水面上的部分:通过不停地量、修、再量,把 agent 在某一家模型家族上的可靠性拉上去。

藏在这件事底下的那层含义

这件事让我觉得它不只是一次好发布、而更像是一个转折点,是因为它在悄悄告诉你:当你不再手写 prompt 以后,agent 工程长什么样。像 Hermes 这样的仓库得同时对付十二家服务商、三十种模型。纯靠手工追踪每一家的行为,在今天已经是不可能的了。但如果你把"该怎么给模型 X 写 prompt"当成一个用基准测试去解的调参问题,你就有了一个能跟着模型动物园规模一起放大的流程,而不是被它淹死。

这些都不是 v0.8.0 的头条。头条是"智力发布",demo 是会话中途换模型。但地板下面悄悄发生的那件事是:Hermes 现在有办法让它支持的每一个模型上的 agent 都持续变聪明,不需要有人每个模型花一个周末重调一版系统提示词。这种能力下一次发布里也不会作为一个具体 feature 出现——它会以"Hermes 上 GPT 的可靠性在持续变好"这种形式,摊在后面连续六次发布里一点点显出来。

如果你跟我一样,把读 release notes 当乐趣的话,这才是你该盯着看的那种形状。

延伸阅读

别掉队

Hermes Agent 的版本更新、新 skill、新集成——社区第一手消息。不发垃圾邮件,随时可以退订。