乐于分享
好东西不私藏

智能体不听文档规则,分享5条我的解决方案

智能体不听文档规则,分享5条我的解决方案

你好,我是茂林,一个AI爱好者,最近一直在折腾OpenClaw/Hermes,踩过老多坑了。我把踩过的坑整理出来,帮你少走弯路。

解决什么问题

你给智能体写了详细的文档规则(比如 PROJECT_RULES.mdAGENTS.md),要求它必须遵守,但它像个小孩一样,有时候听有时候不听,经常犯你已经说过的错误。今天我就来分享下我的解决方法。

原因分析

原因一:规则位置不对,根本没看到

你可能会把规则藏在项目深处,对话上下文里根本没有加载这个文档。看不到=不存在,当然不会遵守。

Hermes、OpenClaw 这些框架,不会自动遍历你项目所有文件找规则。你得明确告诉它加载规则文档,或者把规则放在固定位置让框架自动加载。

原因二:规则冲突,选了优先级高的

如果不同地方有不同规则:

  • • 系统提示一条规则
  • • 文档里一条规则
  • • 用户最新消息又说了一条

它会默认越新优先级越高,如果用户最新说的和文档规则不一样,会听用户最新的,不听文档的。

原因三:规则模糊,理解错了

不好:"代码要简洁"
好:"函数不超过 50 行,每个函数只做一件事"

模糊规则理解会走偏,具体可验证的规则遵守率高很多。

原因四:上下文窗口不够,规则被挤出去了

长对话进行到后面,规则在上下文开头,已经被截断挤出去了,看不到自然就不听了。这就是为什么”开头有规则,做到一半就不守了”。

文档规则本质:建议属性而非强制属性

常见的误解:我写的就是天条,我定的规则就必须执行。

真实情况是:

文档规则是”给智能体参考建议”,不是”操作系统级别的强制访问控制”

  • • 框架不会拦截违规输出,它还是会输出内容,只是看到规则会尽量遵守
  • • 智能体是概率模型,不是虚拟机,没有”必须强制执行”这回事
  • • 遵守率从来不是 100%,80%-90% 就是很好的效果了

心态摆正:不要指望写一次规则就能一劳永逸永远遵守,要接受偶尔犯错,错了及时拉回来就行。

可操作的解决方案

方案一:放对位置,让它每次都能看到

框架
正确规则位置
Hermes
PROJECT_RULES.md

 放在项目根,用 context load PROJECT_RULES.md 加载
OpenClaw
memory.md

 或者项目根规则文件,放入工作区自动加载
Claude Code
.claude/commands.md

 或者项目根 CLAUDE.md

关键:每次会话开始,主动让它加载规则

请先加载 PROJECT_RULES.md,严格遵守里面的规则。

方案二:关键规则放最后,不被截断

长对话中,最重要的规则放最后一句话,因为截断从开头切,放后面不会丢:

...以上是当前任务。再次提醒:严格遵守 PROJECT_RULES.md 中的格式要求。

方案三:规则要具体,可检查

❌ 不好:

代码风格要好,命名要清晰。

✅ 好:

遵守以下规则:
1. 文件名全小写,用连字符分隔(比如 `user-auth.md` 不是 `UserAuth.md`)
2. 函数名用蛇形命名(`get_user_info` 不是 `getUserInfo`)
3. 每个函数必须写一行文档字符串说明用途

越具体,越不容易理解错,遵守率越高。

方案四:定期提醒,错了就拉回来

不要指望一次写入永远遵守,养成习惯:

  • • 每次任务开始前提醒一次规则
  • • 犯规了,立刻指出”你违反了 X 规则,请按规则重写”

几次之后,它就记住了,遵守率会越来越高。

方案五:拆分规则,核心规则放最前面

把规则分成两级:

  • • 核心强制规则:放在最前面,不超过 5 条(比如”不能推敏感内容、不能改密码、必须留备份”)
  • • 次要建议规则:放在后面

核心规则少一点,更容易记住。

总结行动清单

  1. 1. ✅ 规则放在固定位置,每次会话开始明确让它加载
  2. 2. ✅ 规则写具体,不用模糊形容词
  3. 3. ✅ 核心规则不超过 5 条,放最后防截断
  4. 4. ✅ 接受本质:文档规则是建议不是强制,概率遵守不是 100% 强制
  5. 5. ✅ 犯规了就及时纠正,几次下来命中率就上去了

做好这五点,智能体遵守文档规则的概率能从 50% 提升到 90% 以上。

你还有遇到什么其他问题,留言分享,我也可以帮忙一起想想办法。