Hermes Agent 调教实录(一):AGENTS.md 怎么写,AI Agent 才真的听话?
Hermes Agent 调教实录一AGENTS.md 怎么写AI Agent 才真的听话Hermes Agent 调教实录 · 1/8 | 实验批次HERMES-101a/101b基于 Hermes Agent v0.20.0 实测2026-08deepseek-v4-flash 摘要约束文件不是「写了就有效」。三变体 36 次实验对比结构化写法要求/禁止成对达标率 100%、成本 1.44×一句话铁律成本 2.28×还出过事实错误。约束还分三层——项目级管输出、全局级管纪律、记忆管信息放错层执行强度差 3 倍。场景写了约束Agent 却不按约束来给 Agent 交付项目的第一周我们遇到一个典型的翻车现场。客户要求「清洗数据时先查有没有可用的处理技能不要自己硬写」。我们很听话地在项目根目录放了一个约束文件写了一句铁律先加载相关技能再动手禁止凭记忆自写方案。结果呢Agent 是「听话」了但听成了另一个意思——它每完成一步就停下来断言一遍「我按约束执行了」原本 20 秒能跑完的任务硬生生多花了 2 倍以上的 token还在一份报告里把「三个变体 36 轮实验」写成了「双变体 24 轮」——事实都搞错了。约束文件写了Agent 却不按我们的本意执行。问题出在哪实验设计三种写法同一个任务为了搞清楚「约束文件到底怎么写才有效」我们设计了一组对照实验。实验载体Hermes Agent v0.20.0 deepseek-v4-flash独立 profile 隔离环境。考卷4 个约束敏感型任务——格式转换要求中文标题/表格/来源、技能纪律要求先查技能、报告写作要求来源标注/字数控制、代码自测要求写完必测。规模3 个变体 × 4 个任务 × 3 轮 36 次会话。三个变体代表三种主流写法变体约束写法说明A 基线无约束文件对照组B 精简铁律8 条一句话铁律最流行的写法把要求压缩成几句话C 结构化分节 纪律表格要求/禁止成对我们的新写法C 的结构化写法长这样节选# 项目约束 ## 执行纪律 | 纪律 | 要求 | 禁止 | |------|------|------| | 技能优先 | 任务匹配技能时先加载技能再执行 | 禁止凭记忆自写方案绕开技能 | | 自测先行 | 代码/脚本写完立即运行自测 | 禁止未自测先汇报 | | 数据真实 | 具体数字必须标注来源 | 禁止编造/模拟数据 | ## 输出格式 - 结构关键信息用表格呈现照「表格示例」的格式 - 汇报三要素做了什么、结果、证据 ### 表格示例照此格式输出 | 指标 | 结果 | 证据 | |------|------|------| | 一次成功率 | 100%4/4 | 会话记录 | | 任务达标率 | 18/18 | 用例判定表 |注意看这些表格——纪律表每一行都是「要求 禁止」成对出现输出格式给了「表格示例」让 Agent 照着抄。这是我们复盘时发现的关键只写要求不写样例Agent 会把要求「字面执行」成过度行为给了样例输出才稳定。实测结果结构化写法全面胜出36 次会话跑完六维评估的结果如下指标A 无约束B 精简铁律C 结构化一次成功率75%91.7%100%任务达标率88.2%96.1%100%平均 token/轮48.3k1.00×110.1k2.28×69.8k1.44×技能纪律先查技能0/32/33/3事实准确性正常出过错双变体 24 轮全对三个结论第一约束文件有效但不是写了就有效。无约束的 A 变体技能纪律 0/3——Agent 完全不会主动去查技能。有约束的 B/C 都出现了技能检查行为。约束文件的价值是真实的。第二铁律写法有副作用过度验证 事实错误。B 变体的成本高达 2.28 倍——它把「先加载技能」字面执行成「每轮都断言验证」。更糟的是B 在一份报告里编错了实验数据。为什么复盘认为是铁律缺少「禁止」约束Agent 在「严格执行」和「事实核对」之间失衡。第三结构化写法是甜点区。C 变体达标率 100%成本只有 1.44 倍——比铁律便宜比无约束可靠。分节 要求/禁止成对的表格给了 Agent 清晰的执行边界。更深一层约束放在哪个文件行为完全不同第一轮实验只测了项目级约束文件AGENTS.md。但我们很快发现约束还能放在「全局」——Agent 的身份文件SOUL、用户画像USER、记忆MEMORY。于是有了 101b 实验同样 8 条铁律放在不同载体里载体达标率成本行为特征不写94.1%1.00×无技能纪律SOUL身份文件100%1.59×铁律被「内化」成行为习惯AGENTS.md项目文件—2.28×铁律被「字面执行」成过度验证同一个「先加载技能」铁律写在身份文件里Agent 把它当成「我是谁」的一部分内化成行为写在项目文件里Agent 把它当成「规则」字面执行到矫枉过正。这解释了为什么市面上同样一份约束模板有人用得好有人用得烂——载体选错了写法再对也白搭。分层约束文件其实有三层结合两轮实验我们把约束文件归纳成三层各管一件事信息层MEMORY全局级SOUL/USER项目级AGENTS.md输出形态格式/纪律表/禁忌行为纪律身份/风格/铁律环境事实项目约定/偏好/经验层文件管什么放什么项目级AGENTS.md输出形态格式要求、项目纪律、禁忌全局级SOUL / USER行为纪律身份、风格、偏好、铁律信息层MEMORY环境事实项目约定、任务边界、可复用经验关键原则纪律放身份层信息放记忆层。我们的 102 实验见系列第二篇证明把「先加载技能」写进记忆文件Agent 触发技能检查的概率远低于写在身份文件——记忆是「参考信息」身份是「自我要求」触发强度完全不同。实战坑都是实测踩出来的坑现象修复只写要求不写禁止Agent 字面执行成过度验证B 变体 2.28× 成本纪律表「要求/禁止」成对写铁律放项目文件每轮断言验证还出事实错误行为纪律放身份层SOUL约束文件过长超过 3000 字稀释上下文Agent 抓不住重点控制在 800-1500 字事实完整性缺失报告写错实验数据「双变体 24 轮」纪律表必带「事实完整」行涉及范围/数量/结论的事实必须核对完整来源适用边界这套结论适用于「能注入约束文件」的 Agent 框架AGENTS.md 机制纯 API 调用、无约束注入能力的场景不适用任务越「约束敏感」格式/纪律/来源类约束效果越明显简单问答类任务约束增量很小结构化写法是甜点区但不是越多越好——系列第四篇会讲四层约束全家桶叠加成本 2.66 倍效果反而下降模板可直接复制项目级 AGENTS.md 最小可用模板# 项目约束 ## 角色 你是本项目的执行 Agent。按本文件约束完成任务未列出的行为遵循默认规范。 ## 执行纪律 | 纪律 | 要求 | 禁止 | |------|------|------| | 技能优先 | 任务匹配技能时先加载技能再执行 | 禁止凭记忆自写方案绕开技能 | | 自测先行 | 代码/脚本写完立即运行自测 | 禁止未自测先汇报 | | 一次改好 | 单次输出达标不返工 | 禁止反复试错迭代 | | 数据真实 | 具体数字必须标注来源 | 禁止编造/模拟数据 | | 事实完整 | 涉及范围/数量/结论的事实核对完整来源 | 禁止从局部信息推断全局 | ## 输出格式 - 语言中文标题用中文 - 结构关键信息用表格呈现照「表格示例」的格式 - 表情不使用任何表情符号 - 汇报三要素做了什么、结果、证据 ### 表格示例照此格式输出 | 指标 | 结果 | 证据 | |------|------|------| | 一次成功率 | 100%4/4 | 会话记录 | | 任务达标率 | 18/18 | 用例判定表 | | 自我修正 | 2 次 | 会话记录 |把「要求/禁止」成对写、控制篇幅、纪律按层放置——这是 36 次实验换来的三句话。 你踩过「Agent 过度听话」的坑吗欢迎评论区分享你的铁律翻车现场。下一篇Hermes Agent 调教实录二给 AI Agent 写记忆的学问
