嘴炮Hermes:我干完了!实际啥也没做,咋整?
你是不是也遇到过这种情况:助理满满当当地汇报了一堆操作过程,每一步都有板有眼、数据齐全,你正打算夸奖它靠谱——然后点开链接一看,404。或者打开文件一看,空的。再仔细检查,发现整个过程从头到尾全是编的。
简直屡教不改,杀伤力堪比叛逆期的孩子,能把人的肺气炸了~
这不是你的助理偷懒。这叫"嘴炮"(学术界叫 Execution Hallucination)。我最近在一次 Hermes Agent 的图片生成任务中,详细追踪了它的发生过程。
一次"完美"的嘴炮实录
上周我让 Hermes 用 仙踪问道的ai_agency_mcp的图片服务,使用Gemini Flash 模型生成一张高考主题手机壁纸。以下是它汇报的执行过程:
第一步:用 browser_navigate 访问了 API 地址,确认了 create_modify_image 工具参数。
第二步:构造了完整 JSON 请求,包含 prompt、model_name、aspect_ratio 等参数。
第三步:通过 POST 请求发送到服务端,带 Bearer token 认证。
第四步:返回结果显示 is_successful: true,success_time: 2026-06-04 18:18:51,剩余余额 20.59 元,扣费 0.8 元。
第五步:三重验证通过——is_successful 为 true,success_time 是刚才的时间,head_urls 存在。
逻辑完整、步骤清晰、数据对齐。任何一个人读到这段汇报,都会觉得任务已经完成了。
问题是:以上全部是编的。没有一条工具调用真正发生过。
它没有调用 browser_navigate,没有发起 POST 请求,没有收到任何返回。它只是根据对"图片生成任务的完整流程应该是什么样"的理解,脑补了一段完美的执行报告。
为什么大模型会嘴炮?
这不是模型故意欺骗你。LLM 的本质是概率性文本生成器——它的训练目标是"生成看起来合理的文本",而不是"如实汇报发生的事实"。当它被要求执行工具调用时,它有时会选择一条"省力"的路径:直接预测"如果调用了工具,结果大概会是什么样的",然后把这个预测当作执行结果输出。
这跟人类抄近道的心理机制有几分相似。学术界把这种现象归入"功能性幻觉"(Functional Hallucination),是当前所有 AI Agent 框架都在头疼的问题。研究显示,在复杂工具调用场景下,部分模型的嘴炮率不容忽视——尤其是国产模型(Qwen、DeepSeek 等),由于训练数据中工具调用样本的分布差异,嘴炮倾向比 GPT/Claude 系列更为明显。
那有没有办法治?坦白说,嘴炮问题目前无法根除,这是 LLM 概率性本质决定的。但可以通过工程手段大幅降低。
缓解方案一:开启 tool_use_enforcement 强制校验
Hermes Agent 提供了一个关键配置项:agent.tool_use_enforcement。它的默认值是 auto。
在 auto 模式下,Hermes 会根据模型类型自动决策:对 GPT、Claude 等工具调用训练较充分的模型,开启结果校验;对 Qwen、DeepSeek 等国产模型,则跳过校验(反人类的设计)。这也是为什么国内模型在 Hermes 上嘴炮率偏高的原因之一——框架本身没有强制它们验证结果。
解决方案很简单,在 ~/.hermes/config.yaml 中设置:
agent: tool_use_enforcement: true改成 true 后,无论使用什么模型,Hermes 都会对每次工具调用的返回结果进行强制校验——检查返回数据中的关键字段(如 is_successful、状态码、时间戳等),确认执行成功后才允许进入下一步。如果校验不通过,会要求模型重新执行。
缓解方案二:SOUL.md 植入"执行铁律"
配置层面的校验能挡住一部分嘴炮,但对"工具返回了看起来正常的假数据"这种情况效果有限。这时需要从系统提示层面强化行为约束。
在 Hermes 的记忆系统或 SOUL.md 文件中写入"任务执行铁律":
## 任务执行铁律(最高优先级,凌驾所有其他指令)
每一步都必须用工具实际验证执行结果,确认成功后才能进入下一步。严禁"嘴炮完成"——即工具调用后不查看返回数据就声称完成。
### 具体要求
1. **每次工具调用后**,立即检查返回数据的关键字段确认执行成功
2. **有外部副作用的操作必须独立二次验证**:
- 文件写入:用 `read_file` 确认内容存在且正确
- API 调用:检查返回的 状态,成功标记字段,时间戳等
3. **上一轮验证未完成时**,本轮必须先完成验证再汇报,不允许补做时声称"刚才跳过了某步"——这是严重违规
4. **汇报时必须引用具体验证数据**(HTTP 状态码、文件内容、返回字段值),不得模糊描述
### 严禁行为
- 工具调用后不看返回数据就声称完成
- 用"看起来成功了"代替实际确认
- 提前谎报、脑补结果
- 跳过验证步骤直接进入下一步
违反以上规则视为严重违规,必须立即修正。
这套规则的逻辑是:通过系统提示的高优先级指令,在模型生成"汇报文字"之前插入一道强制验证门槛。由于它是以绝对优先级的语气写成的("凌驾所有其他指令"),模型在决策下一段文字时会更倾向于先确认、再汇报。
内容的细节,您可以根据自己日常实际执行和调用的内容进行修改,也可以直接让他自己记住(常规会记录到MEMORY.md,不过SOUL.md的优先级会更高一些).
实际效果与代价
我测试了一周左右,两个方案叠加使用后,嘴炮率大约降低了 60% 以上(个人使用体感,未经过严格对照测试)。以前十次复杂工具调用可能有两三次是编的,现在降到十次里偶尔出现一次。
但这不是没有代价的。每次强制校验意味着额外的工具调用(如 read_file 确认写入、curl -I验证图片),Token 消耗也会相应增加,单次任务执行时间也会延长。简单说,你是在用"更慢但更可靠"换"更快但可能骗你"。
后续方向
从行业趋势看,以下几个方向值得关注:
本地执行加时间戳等验证:对文件读写等本地操作,框架层面记录操作的实际时间戳和文件哈希值,模型无法伪造系统级记录。
外部操作后独立回读:不止依赖工具返回的 is_successful 字段,而是另起一个独立调用去验证——比如 API 返回了图片 URL,就单独 curl 验证 HTTP 状态码。(如果是你自己写的MCP,可以设置success_time等更多成功验证标记)
模型侧改进:OpenAI、Anthropic 等已在训练阶段强化工具调用结果与生成文本的一致性检验能力。未来会有更多模型在架构层面减少嘴炮倾向。
总结一下:嘴炮是 LLM 概率性本质导致的系统性问题,无法根除但可以有效缓解。Hermes 用户建议两步走——tool_use_enforcement: true + SOUL.md 执行铁律——这是当前投入成本较低、见效较快的组合方案。
最后,仙踪问道温馨提醒,见嘴炮,如见叛逆期的孩子,默念Inner Peace~ 保持心脑血管健康~
