AI 越跑越偏?从 500 行臃肿规则到 80 行核心约束:多 Agent 项目中的「规则瘦身与防腐」四步排查法

作为一名一线做业务、画原型、写 PRD,同时日常高强度调度多个 Coding Agent(Cursor、Claude Code、Codex、Antigravity 等)独立开发工具的 AI 产品经理,我和许多重度依赖 AI 编程的开发者一样,经历过一个极其漫长的「加规则执念期」。

刚开始用 Coding Agent 协助写代码时,每当 Agent 犯了一个错,我的第一反应往往是:

"这一定是我的规则没写全。我必须把它加进 .cursorrules(或者全局 System Prompt)里,给它立个规矩!"

  • Agent 不小心改了不该改的样式文件?在规则里加一条:"禁止私自修改任何 CSS/SCSS 文件!"
  • Agent 写了一个长函数?在规则里加一条:"每个函数长度严禁超过 30 行,必须拆分子函数!"
  • Agent 把配置参数硬编码了?在规则里加一条:"所有常量必须提取到 config.ts,严禁硬编码!"
  • Agent 漏掉了单测断言?在规则里加一条:"写完代码必须立刻编写完整的单元测试用例!"
  • Agent 没按特定命名法写接口?在规则里加一条:"后端 API 必须严格遵循 RESTful 动宾命名规范!"......

随着项目不断演进,踩过的坑越来越多,我的规则文件也像滚雪球一样越滚越大。直到上个月,我偶然打开项目的规则配置看了一眼,自己都吓了一跳: 不知不觉中,规则文件竟然已经膨胀到了整整 540 多行!

然而,极其讽刺的事情发生了:规则加得越多,AI 反而越不听话。

在那个拥挤不堪的会话环境里,我遇到了前所未有的协作灾难:

  1. 注意力彻底稀释,关键红线被彻底当耳边风 :
    规则写满了整整几屏,结果在一次重构中,Agent 竟然毫不犹豫地把项目中一个核心的数据库迁移文件给删了!我质问它为什么违反"禁止物理删除"的规则,它在终端里客套地道歉,然而下一轮会话,它依然会犯同样的错;
  2. 规则自相矛盾,AI 在生成时"左右互搏" :
    翻看那 500 行规则,我甚至发现了相互冲突的补丁:前面第 40 行写着"优先使用内联计算以减少文件碎片 ",后面第 210 行又写着"严禁出现任何大闭包,必须彻底解耦小模块"。模型在生成代码时无所适从,经常写出一半内联、一半抽离的畸形代码;
  3. 上下文极度浪费,Token 消耗呈指数级增长 :
    每次在终端敲下一句"帮我改个输入框宽度",还没等正文开始,这 500 行庞大的规则就已经白白吃掉了将近 8,000 个上下文 Token。会话才聊了三四轮,窗口就迅速接近截断阈值,响应卡顿、胡言乱语。

我盯着终端里那段逻辑混乱的代码,终于按下了 Ctrl+C:为什么我们明明费尽心机给 AI 制定了如此详尽的规则法典,到头来它却越跑越偏?


一、认知升级:把偶发 Bug 当成规则,是最大的工程误区

经历了那次惨痛的翻车,我复盘了过去几个月与多个 Coding Agent 的协作记录。我发现许多开发者在使用 AI 辅助编程时,普遍陷入了一个**「规则归因谬误」**:

把本该由编译器、自动化测试、类型系统或架构分层拦截的代码问题,误当成提示词规则,一股脑塞给大模型。

从底层逻辑来看,规则盲目膨胀会在三个层面直接摧毁协作系统:

  1. 注意力分配的有限性(Attention Dilution) :
    大模型基于 Transformer 架构,其注意力权重是有限的。当你喂给它 500 行规则时,它分配给每一行规则的注意力权重就被平均摊薄到了千分之几。那些真正关乎项目生死的"核心红线(如禁止物理删除、必须单测验证)",被淹没在一堆关于"变量怎么命名、缩进用两空格还是四空格"的细枝末节里,根本无法被有效激活;
  2. 缺乏生命周期的临时创可贴 :
    很多规则只是针对某一次特定的偶发报错打的临时补丁(比如某次某个第三方库版本不兼容)。一旦这个库升级了,那条规则不仅失去了意义,还会反向阻碍 Agent 使用该库的新特性;
  3. 缺乏机器可执行的强制力 :
    自然语言规则是概率性的约束,而不是确定性的约束。指望通过在 Prompt 里反复叮嘱"写完必须跑测试 ",其可靠性远远低于在 CI 脚本里写一行 npm test。

真正的上下文防腐,不是把规则写得像一部刑法典,而是把规则减到最少,只保留最核心的系统边界。

基于这个思考,在开源项目 Context Continuity (v0.1.1) 中,我们确立了一套系统的「五层根因排查法」与「规则四步瘦身实践」。


二、传统规则堆砌 vs Context Continuity 治理:全方位对比

治理维度 常见传统做法:规则堆砌(500+ 行) 依赖外部长记忆插件(向量黑盒盲捞) Context Continuity (v0.1.1) 核心治理
规则体量与形态 500~1000 行庞大法典,越堆越厚 碎片化自然语言条目,由向量库检索注入 严格控制在 80~100 行内(单文件 AGENTS.md)
规则表述方式 大量"务必、必须、绝不可"等情绪化修饰词 孤立事实与历史记忆片段混杂 "一句原则 + 必要反例",每条不超过两行
对代码质量的约束 试图用文字教 AI 怎么写出好代码 依赖过往采纳偏好匹配 下沉到代码正文与工程工具(Linter / TypeScript / 测试)
面对偶发报错时的动作 立刻在 Prompt 里追加一条新规则 自动记录到全局记忆库 先做五层归因排查,修源头与环境,不滥加规则
Token 启动开销 每轮会话启动常驻吃掉 8,000+ token 每次检索动态注入 3,000~5,000 token 单次加载仅耗 1,000~1,200 token,信噪比极高
指令遵循命中率 随着轮次深入,遵循度迅速滑落至 40% 以下 经常捞出过时记忆干扰当前决策 首轮遵循与代码一次性命中率 > 85%

三、我是如何用「规则瘦身四步法」把 500 行精简到 80 行的?

在 Context Continuity 的项目治理规范(遵循 context-continuity/SKILL.md)中,给项目规则进行彻底瘦身遵循严格的四个步骤:

第一步:剥离业务事实,物归原主

翻看那 500 行规则,我发现有将近 200 行根本不是"开发规则",而是具体的"业务逻辑"!比如:"用户类型分为 VIP、企业和普通用户,VIP 享受 8 折...... "

这种做法极其愚蠢。业务规则随时会变,一旦写进 Prompt,只要业务调整,提示词就会与实际代码脱节。

  • 瘦身动作 :把所有业务事实、领域状态机、字段枚举全部请出规则文件,原汁原味回写到对应模块的正式 PRD 或代码接口注释中。规则只留一句话:"具体业务事实以目标源文件与对应 PRD 为唯一信源。"
第二步:下沉确定性校验,把代码问题交给工程工具

规则里有将近 150 行在叮嘱代码格式和基本语法:"属性命名用小驼峰 ""禁止使用 any ""每个文件结尾留一个空行 "。

让昂贵的大模型去记忆并肉眼检查语法规范,是对算力的极大浪费。

  • 瘦身动作 :将格式与语法约束下沉到 ESLint、Prettier 和 TypeScript 编译器中。配置好 tsconfig.json 的严格模式,在规则中仅保留一条指令:"每次修改后运行 npm run lint && npm test 验证,测试全绿即代表合规。" 编译器能干的硬性拦截,绝不在 Prompt 里多废话一句。
第三步:用「五层根因排查法」过滤偶发补丁

面对每次偶发的问题,先不要急着写规则,而是对照 Context Continuity 的五层归因表进行判断:

  1. 理解问题? 是否是任务目标描述不清?(优化当次任务提示,不加全局规则);
  2. 读取问题? 是否是 Agent 根本没读目标源文件,全凭脑补?(指引 Agent 显式读取具体文件路径);
  3. 信源问题? 是否是项目里有新旧两个版本冲突,导致 Agent 读错了文件?(清理或归档旧文件,确保单一信源);
  4. 执行问题? 是否是代码改对了但没跑测试导致漏查?(强化最低验证标准);
  5. 能力问题? 是否是当前所用模型的上下文或推理上限受限?(换更强模型,或拆小任务)。 只有当同类错误跨会话重复发生、且确属全局共性约定缺失时,才允许落盘为规则。
第四步:顶层刚性约束收敛(遵循 AGENTS.md 规范)

经过前三步清洗,剩下的核心规则收拢到根目录的 AGENTS.md 中,严格控制在 80~100 行内。内容只保留四个刚性维度:

  • 任务级别分级(只读快任务、标准修改任务、高风险重任务);
  • 唯一信源表(判断业务看哪里、判断规范看哪里);
  • 行为安全红线(禁止物理删除文件、未经授权不动主链路配置、Git 提交前必须核对范围);
  • 最低验证标准(文档看链接结构、代码看自动化测试、严禁无证据声称完成)。

所有条款全部写成**"一句原则 + 必要反例"**,每条不超过两行。


四、时间账与总结:克制才是最好的上下文防腐剂

完成这轮规则瘦身之后,我和几个 Coding Agent 的协作体感迎来了颠覆性的改善:

  • 启动成本暴跌 :规则文件从 540 行压缩至 82 行,单次会话注入的 Token 消耗从原来的 8,200 token 直降至 1,200 token 左右,降幅超过 85%;
  • 指令遵循度质的飞跃 :因为没有海量细碎噪音的干扰,Agent 对"禁止删除""必须跑测试"等关键安全红线的遵循率达到了 100% ;代码一次性生成命中率从过去的不足 50% 攀升至 85% 以上;
  • 排错时间大幅节省 :过去平均每天要花 1.5 小时 在拉扯纠偏和清理无效规则上;现在规则精炼透明,几乎无需再为"AI 为什么不听话"而抓狂。

规则不是给大模型打补丁的创可贴,克制与边界才是最好的上下文防腐剂。

在多 Agent 协作开发中,少即是多。把业务还给业务文档,把代码校验还给工程工具,只把最底层的安全红线留给 Agent。给上下文做减法,AI 才能真正跑出高确定性的生产力。

Context Continuity 现已全面开源,规范与模板开箱即用:

  • 一键安装 Skill:npx skills add JasperLin2333/context-continuity --skill context-continuity
  • GitHub 开源仓库:github.com/JasperLin23...
相关推荐
Eyfcom19 分钟前
〖AI物流落地 06〗AI Copilot 在 TMS 调度系统中的应用:Text-to-SQL、意图拆解与自动调参
人工智能·物流系统·快递系统·跨境物流快递系统·ai物流落地
域限奇点访客19 分钟前
怎么让AI稳定输出可解析的问卷结构?schema约束、失败重试与降级策略
人工智能
探索前端22 分钟前
把带贴图的 OBJ / glTF 转成 3D Tiles:我写了个 mesh-to-tiles
人工智能
nicksxs23 分钟前
把 LLM 判断拆成 Choice / Score / Noul:Jev SDK 六条实测
人工智能
AICoder码农王26 分钟前
AgentScope Java v2 Lab-1,审批只走有门的腿
人工智能
AI前端工程狮26 分钟前
1 秒超时,3 秒才写完:MCP 写操作的重复提交实测
人工智能·程序员
dyxal44 分钟前
FireRedVAD 深度解析:小红书开源的工业级语音活动检测“小钢炮”
人工智能·开源·语音识别
加宝的起点雷达1 小时前
40 条候选里 38 条来自同一个源,主卡整屏重样
人工智能·算法·创业