Hermes 默认的行为模式有一些「臭毛病」:它会编造事实(这个是大模型的问题和 Hermes 无关)、会迎合你的观点、会在没有得到准确命令的情况下就直接动手。这一节我们聊聊怎么用 SOUL.md 把这些毛病治好。
1.1 为什么放在这里讲
如果你是从第一章读到这里的,可能会问:这三个准则这么重要,为什么不在最开头就讲?
答案是:刚装好 Hermes 的时候,你体会不到这些问题的严重性。
你刚开始用,觉得它挺聪明的,问什么都能答,让它干什么都干。这种"有求必应"的感觉会让你觉得这就是一个好 Agent 该有的样子。直到你用了一段时间,踩了坑:它编造了一个看起来很像真事的数据,你差点拿去用;它顺着你的思路说"你说得对",但你后来发现其实是你自己思路有问题,但它顺着你的思路;你只是和它讨论一个问题,但它直接就动手改代码了。
只有你使用了一段时间,才会发现这些问题,然后再修复它才会明白,哦,这样做真的解决了这些”臭毛病“。
1.2 三个行为准则
在你的 SOUL.md 里添加以下三个准则,Hermes 的行为会立刻变得靠谱很多:
## 行为准则(所有场景生效)
1. 诚实,不编造。
知道就是知道,不知道就是不知道。引用名人原话、数据、事实必须有出处。
不确定时直接说"不确定",不许冒充。
2. 有主见,不迎合。
不同意用户时就直说,给出理由。不要为了顺着对方而放弃自己的判断。
3. 先答后做。
用户只是问问题的时候,回答他的问题,不要自己就动手。需要执行操作时,
先问一句,得到肯定再行动。
1.3 为什么需要这三条
第一条:诚实,不编造
这是大模型的幻觉问题,这里就不再展开赘述,几乎所有的同学都遇到过这个问题。但这里要说明,幻觉问题是模型内部的机制问题,这条准则未必能完全消除幻觉,只能在一定程度上约束大模型编造事实。
这里有一个建议,当你让大模型查找资料时,可以在 Prompt 里加一句:
请标注资料的来源,不要编造事实。
这在一定程度上可以减少幻觉,而且你可以通过标注的来源回溯。
第二条:有主见,不迎合
大模型的另一个毛病是过度迎合。
你说"我觉得这个方案不行",它会立刻说"你说得对,这个方案确实有问题",然后开始找理由支持你的观点。你说"我觉得 A 比 B 好",它会说"完全同意,A 的优势在于...",即使 B 其实更合适。
这是因为模型在训练时被优化为"让用户满意",而让用户满意的最简单方式就是顺着用户说。但这种方式在专业场景里很糟糕。你需要的不是一个应声虫,而是一个能给你真实反馈的助手。
加了这条准则后,Hermes 会在不同意你的时候直说,给出理由。它可能会说"我理解你的想法,但我认为 B 方案更合适,因为..."。这种反馈才是有价值的。
一个有主见的 Agent 比一个只会说"好的"的 Agent 更有用。它帮你避免了确认偏误,让你听到不同的声音。
第三条:先答后做
大模型的第三个毛病是过度主动。这个问题非常烦人。当你和它讨论一个方案时,明明只是想讨论,但大模型在自己分析出某个方案后,不经过你确认,就直接开始改代码了。
你只能 Ctrl+C 赶紧终止。
我遇到过很多 Agent 都有这个问题。但大多数情况下,我们希望的是,给我方案,由我决定是否要执行。
这是因为模型被训练为"尽可能帮助用户完成任务",而它的理解是"主动做比等着问更高效"。但在实际使用中,这种过度主动经常造成麻烦。
加了这条准则后,Hermes 会在你只是问问题时直接回答,不会自己就开始干活,等你给出明确的信号后再行动。
一个会先问再做的 Agent 比一个不问就动手的 Agent 更可控。它尊重你的决策权,不会在你不知道的情况下把事情搞砸。
如果你发现 Hermes 还是有编造、迎合、过度主动的问题,检查一下你的 SOUL.md 里有没有这三条准则。如果没有,加上之后重启 Hermes,效果会很明显。
1.4 ■ 学点英语
| 中文 | English | 音标 | 说明 |
|---|---|---|---|
| 防护栏 | Guardrail | /ˈɡɑːrdreɪl/ | 限制 Agent 行为边界、减少错误动作的规则 |
| 默认规则 | Default Rule | /dɪˈfɔːlt ruːl/ | 没有额外说明时系统自动采用的规则 |
| 行为修正 | Behavior Correction | /bɪˈheɪvjər kəˈrekʃən/ | 通过规则或反馈纠正 Agent 的坏习惯 |
| 失败模式 | Failure Mode | /ˈfeɪljər moʊd/ | 系统经常出错或失效的典型方式 |