团队在项目根目录的 AGENTS.md 里反复加粗强调,所有日志调用必须走内部封装的 diagnostics 模块,杜绝直接引入底层 observability 日志库。然而编程智能体在多轮修改后,依然直接在代码里导入底层日志包。面对这种规范漂移,工程师 Geoffrey Huntley 在 2026 年 10 月实战复盘《nobody should type code by hand anymore. here’s what’s left》(由 Simon Willison 于 2026 年 10 月 13 日摘录分享)中给出了确定性解法。他彻底放弃在 AGENTS.md 里追加规则,改写了一个 git pre-commit hook 脚本。每当 git diff 检测到绕过 diagnostics 模块直接调用 observability 模块的代码,脚本立即返回非零退出码拦截提交,并在报错输出中把要求改用 diagnostics 库的修复提示词反向注入给智能体,合规率直接达到 ten out of ten(十分满分)。这一做法与 The Pragmatic Engineer 在 2026 年 10 月 15 日披露的趋势一致,Ramp 与 Stripe 构建的内部氛围编程应用平台(internal vibe-coding apps),同样把确定性护栏内置到构建与提交管道中。
长上下文稀释让静态文档沦为软建议
研发团队常把目录边界与公共库规范塞进 AGENTS.md 或 CLAUDE.md,指望智能体全程遵守。这种静态文档在短对话里尚能生效,进入数十轮迭代后便频繁失效。根源在于自回归模型的注意力分配机制。
随着工具输出、文件切片与编译日志不断涌入上下文窗口,位于开头的 AGENTS.md 会被数万个后续令牌迅速稀释。面对眼前的报错,模型注意力高度向最新几轮的局部上下文倾斜,早先加载的规则逐渐退化为背景噪声。继续修补 AGENTS.md 只会挤占初始上下文预算,依然无法消除预期与生成结果之间的偏差与漂移(delta and drift)。写在文档里的编码规范只是供模型参考的软建议,只有挡在提交入口并把报错变成提示词的钩子才是物理铁律。

上图展示了两种路径的物理分叉,静态文档随对话拉长必然遭遇注意力衰减,提交入口的确定性钩子则在落盘瞬间完成刚性拦截。
提交钩子拦截差异并把报错变成提示词
根治规范遗忘的核心动作,是将静态文档里的架构约束剥离为 git pre-commit hook 差异检查脚本。日常编码时规则无需常驻上下文,只有当代码触犯边界时才按需激活。通过扫描暂存区的 git diff 增量,脚本只需数毫秒就能揪出绕过 diagnostics 模块直接调用底层 observability 接口的违规行。

如上方 Simon Willison 博客实拍记录所示,一旦 pre-commit 钩子捕获违规差异,便立即执行两步动作。第一步是返回非零退出码阻断 git commit,杜绝违规代码入库;第二步是在标准错误流中打印修复提示词,明确指出违规行并要求智能体改用 diagnostics 库。
| 约束机制维度 | AGENTS.md 静态规则文档 |
git pre-commit 硬门禁反向注入 |
|---|---|---|
| 触发时机 | 会话启动时全量塞入上下文头部 | 执行 git commit 落盘瞬间按需触发 |
| 注意力消耗 | 全程常驻并随多轮输出不断衰减 | 平时零消耗,仅在违规报错时占据焦点 |
| 执行确定性 | 依赖概率生成,长会话极易漂移 | 进程非零退出码阻断,物理级刚性拦截 |
| 合规表现 | 反复修补文档仍会出现绕过调用 | 弹回修复提示词当场重写,达成 ten out of ten 满分合规 |
由于编程智能体会紧盯最新一轮工具调用的标准错误输出,随报错弹回的提示词会自动占据上下文窗口最末端。把架构护栏写成提交钩子并在报错流里塞入修复提示词,本质上是在智能体犯错的精确毫秒把规则塞回注意力焦点。
按需触发确定性门禁取代全量规则堆砌
从前置长文说教转向触发式硬门禁,正成为智能体工程的标准范式。2026 年 10 月 14 日发布的 Anthropic Claude Code v2.1.301 版本同样印证了这一方向,该版本新增 CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS 环境变量,为无人值守运行设置看门狗等待额度恢复的硬性时间上限,并将长粘贴文本折叠为 [Pasted text #1 +5 lines, 240 chars] 摘要,用外部确定性阈值与上下文减负保障长周期收敛。

如上方工程闭环图所示,提交钩子拦截与看门狗熔断协同工作,既能守住代码库边界,又能防止无人值守任务无限挂起。这套机制也有明确边界,pre-commit 差异扫描仅对可通过静态语法、依赖路径或差异模式判定的架构规范具备百分百拦截效果,而开放式产品设计仍需人工把关。将静态规则文件瘦身为高阶上下文索引,把所有可静态判定的模块边界下沉为带提示词反馈的提交钩子,才是管住编程智能体的终极工程解法。
资料:Simon Willison 摘录 Geoffrey Huntley 实践 https://simonwillison.net/2026/Oct/13/geoffrey-huntley/ 、Anthropic Claude Code v2.1.301 发布说明 https://github.com/anthropics/claude-code/releases/tag/v2.1.301 、The Pragmatic Engineer 内部氛围编程平台报道 https://newsletter.pragmaticengineer.com/p/the-pulse-new-trend-of-building-internal-aeb
