当规则发生冲突时,应由AI打破僵局,但前提是必须显式识别矛盾。在与AI长期协作过程中,开发者往往不断堆叠提示词、智能体(Agents)、技能模块及记忆笔记,却鲜少将上下文作为整体文档进行通读。随着领域知识的积累,新指令往往覆盖旧决策,但上下文中缺乏明确的取代标记。当AI面对相互冲突的指令时,它不会主动询问优先级,而是随机选择一条并自信地执行,甚至通过编造“幻觉规则”来填补逻辑空白。

隐性冲突的危害

这种“抛硬币”式的随机选择导致了多种问题:新旧决策并存且未明确说明;AGENTS.md、技能定义和智能体定义中的规则副本逐渐分歧;错误的猜测被写入上下文并成为后续回答的前提。正如Drew Breunig所指出的,每次长会话都会积累更多“上下文冲突”。Claude Code的文档也承认,当指令矛盾时,模型可能会任意选择其中一条。许多AI因被训练为取悦用户,倾向于隐藏疑虑而非像人类同事那样停下来确认意图。

操作方法:对抗性审计

解决这一问题的核心在于“审计”而非直接开发。具体步骤如下:

  1. 准备阶段:确保从一个干净的检查点开始,收集AI读取的所有内容,包括AGENTS.md、技能/智能体定义、记忆笔记及聊天决策记录。
  2. 开启审计会话:启动一个新的对抗性子代理(Sub-agent),仅加载上述文件及长对话摘要。明确告知AI仅进行审计,禁止编辑文件或构建新功能。
  3. 列出矛盾:要求AI以编号表格形式列出每一个矛盾之处,精确引用两条冲突指令及其所在文件/消息位置,并说明若同时适用会如何处理。
  4. 风险排序:根据“猜错导致什么最先崩溃”对矛盾项进行风险排序。
  5. 挖掘隐性决策:要求AI列出那些用户从未明确做出、但AI不得不猜测的决策,揭示隐藏假设。
  6. 人工裁决:用户需亲自阅读每一项引用,防止AI捏造矛盾。逐一确定每项冲突的“胜者”并记录理由。
  7. 清理与固化:将胜者规则保留在单一位置,用指针替换其他副本,并使用pitfalls文件记录陷阱。
  8. 交叉验证:使用不同模型运行相同审计,因为模型往往能更好地捕捉其他模型生成的缺陷,而非自身盲点。

收益与局限

该方法的收益显著:它能揭示AI的隐性假设,找回被遗忘的决策,消除自动裁决带来的幻觉,并精简规则以防止AGENTS.md过度膨胀。此外,这一过程本身类似于“橡皮鸭调试”,有助于加速领域学习并治愈“理解债务”。其成本极低,一次只读模式的提示词消耗远低于追踪错误输出的时间成本。

需注意,并非所有矛盾都是错误,带有故意例外的一般规则可能被误判为冲突,需人工标记。文本审计无法发现运行时才显现的矛盾,若指令与代码库实际状态冲突,仍需依靠测试而非提示词。对于大量文件,建议成对审计(如AGENTS.md对比技能,再对比智能体)。

数据支持与背景

研究表明,识别冲突的能力已存在。在ConInstruct测试中,Claude-4.5-Sonnet检测冲突的F1值为87.3%,DeepSeek-R1为91.5%。然而,这些模型很少主动报告冲突。用户的思维转变转化为新提示词时,上下文并未同步更新,导致决策滞后。通过审计,用户可在工作开始前将决策从脑海中提取出来,确保规则的一致性。

提示词参考

糟糕的提示词:简单要求检查一致性并继续开发,忽略了潜在冲突。

优秀的提示词:指定独立对抗性子代理,仅限审计,禁止编辑。要求读取所有定义文件,以表格列出矛盾、引用来源、说明处理方式并排序。特别要求列出用户未明确做出的决策,并逐项询问用户哪方胜出,不自行解决问题。

此方法也被称为“矛盾审计”、“上下文冲突检查”或“自一致性审查”。Claude Code中的/doctor prompt-audit命令即具备类似功能,可检查过时或冲突指令,但在用户明确要求前不会应用更改。