AI 智能体不听话,是使用 Claude Code 过程中投诉最集中的一类问题:CLAUDE.md 里写了用 TypeScript,它还是递上了 JavaScript;对话里强调过三遍别动锁文件,它顺手就改了。先说结论:多数「忽略」并非模型叛逆,而是不同指令处在不同层级,约束力天然不同——有的层只是建议,有的层才是强制。这篇按排障文的惯例,先分清三类「忽略」的根子,再把指令层级讲透,最后给一条排查顺序;项目说明文件的写法与常见失灵,Codex 侧的同款讨论见AGENTS.md 不生效一篇,机制相通。
先分清:三类「忽略」三种根子
第一类是层级错位:你把要求写在了建议层(CLAUDE.md 或对话里),而这一层的约束本来就是软的,模型按自己的判断取舍,取舍结果与你的期待不符。第二类是压缩丢失:长会话早期交代的指令,随着上下文膨胀被摘要掉了,模型手里根本没有那条指令,「忽略」实为「没收到」。第三类是表述模糊:指令里全是形容词——写规范一点、质量高一点——它按自己的理解执行,你却按另一套标准验收,看起来像忽略,实际是各说各话。三类根子对应三层解法,先分层级,再补压缩,最后改写法,排查顺序在后文给全。
指令的层级:CLAUDE.md 是建议不是法律
把 Claude Code 的指令来源按约束力排一下。对话内指令:当前任务里你亲口说的要求,权重最高,但只活在本会话。CLAUDE.md:每次会话自动加载的项目说明,覆盖团队约定、代码风格、常用命令——它的定位是建议与上下文,不是硬性法律:模型会尽量遵守,但与当前任务的具体指令冲突时、或与它的执行路径冲突时,它有权权衡。环境配置层:settings.json 里的权限规则决定它「能不能做」,属于硬边界。分清层级的意义在于对号入座:风格类、偏好类的约定放 CLAUDE.md 足够;涉及安全与不可逆动作的禁令,靠建议层兜不住,要下沉到权限规则——allow 名单怎么配,见权限模式与规则一篇。
| 指令来源 | 约束力 | 活多久 | 适合放什么 |
|---|---|---|---|
| 对话内指令 | 权重最高 | 只在本会话 | 当前任务的具体要求 |
| CLAUDE.md | 建议与上下文,冲突时模型有权权衡 | 每次会话自动加载 | 风格、偏好、团队约定 |
| settings.json 权限规则 | 硬边界,决定它能不能做 | 配置层长期有效 | 安全与不可逆动作的禁令 |
| hooks | 必然执行,与模型记不记得无关 | 事件触发即运行 | 改完跑 lint、提交前过测试 |
必须每次执行:交给 hooks 这一层
有一类要求性质完全不同:不是「希望它记住」,而是「必须每次发生」——每次改完代码都要跑 lint,每次提交前都要过测试,任何一次漏掉都算事故。这类要求写进 CLAUDE.md 是把强制的事交给建议层,漏执行只是时间问题;在对话里反复叮嘱更不可靠,长会话一压缩就没了。正确的层级是 hooks:在配置里声明事件与命令,让特定动作前后必然触发你指定的检查,执行的保障由工具链提供,与模型记不记得无关。hooks 的事件类型与拦截机制,本批hooks 与 skills 的分界一篇专门展开,这里只立一条判断标准:检查项失败后流程要不要停下来?要,就属于 hooks 的辖区。
长会话里的指令被压缩丢了
第三类根子最隐蔽:会话开头定的规矩,做到下午就没人记得了。机制上是上下文管理在起作用——历史越长,早期内容越可能被摘要替换,摘要保主干、丢细节,而你那条「测试文件不许动」在它看来就是细节。两个信号可以自查:一是违反发生在长会话的后期,二是同一条指令前期一直被遵守、中途突然失灵,时间点对上压缩,基本可以定案。解法两条:短期,当场重述指令,把它重新拉回上下文的近端;长期,换任务就开新会话,把关键约定写进 CLAUDE.md 或交接说明,别指望一条对话指令活过整个下午。压缩与新会话的取舍细节,见/compact 与 /clear 的取舍一篇。
排查顺序与指令具体化
遇到「忽略」,按四步排查。第一步定位层级:这条要求写在哪一层?在建议层而后果严重,下沉到 hooks 或权限规则。第二步查时间线:长会话后期才失灵,按压缩丢失处理,重述或开新会话。第三步改写法:把形容词换成动作——「代码写规范点」改成「遵循仓库现有命名约定,缩进用两空格」;「别改坏现有功能」改成「改动后运行 npm test,结果必须全绿」。第四步验证据:让它复述这条约束再开工,复述不出来说明指令没送达,别急着让它动手。指令写得越具体,各层的执行率都会上升,任务描述的展开写法见任务描述攻略一篇。想让团队的习惯落成文件,可以让 DeepSeek 把最近一个月的「忽略」事件按三类根子归档,提炼成层级放置清单,再让 Kimi 对照现有 CLAUDE.md 逐条标注哪些该下沉,一轮就能把规矩各归其位。
指令层级速查
- 三类忽略:层级错位、压缩丢失、表述模糊
- CLAUDE.md 是建议不是法律,硬约束下沉到 hooks 与权限规则
- 「必须每次发生」的要求交给 hooks,不靠叮嘱
- 长会话后期失灵先查压缩,重述或开新会话
- 形容词换动作,开工前让它复述约束
指令层级快问快答
- CLAUDE.md 写了为什么还是不遵守?它的定位是建议与上下文,与当前任务冲突时模型有权权衡;后果严重的要求下沉到 hooks 或权限规则,用工具链保执行。
- 同一条指令上午还管用下午失效,是版本变了吗?先查会话长度。长会话压缩会丢早期细节,时间点对得上就重述指令或开新会话,与模型版本无关。
- 把所有规矩都写成 hooks 一劳永逸吗?不值。hooks 适合少量必须每次发生的检查,全量塞入会让每次动作都变慢;风格与偏好留在 CLAUDE.md,让模型灵活取用。


