给AI Agent编写长篇累牍的规范文件,正在变成软件工程里最耗费心力却收效甚微的差事。2026年10月13日,开发者 Geoffrey Huntley 在文章中直言单纯依赖提示词包就像“软件工程师的占星术”,著名技术观察家 Simon Willison 随后转引了这一观点。Huntley 指出,面对 Agent 频繁忽略指令文件的代码漂移现象,他不再试图修改静态文本,而是写了一个在 Git diff 中检查代码调用的本地 pre-commit hook;一旦检测到绕过规范,钩子立即中断提交并向 Agent 注入纠错提示,瞬间将代码规范的遵循率拉升至 10/10 的满分状态。
这一实践标志着人机协作范式的重要转向:用自然语言维持的代码规矩正在失效,依靠确定性门禁重构控制回路成为必然。
静态提示词的注意力损耗与漂移困境
当下开发者普遍习惯在代码库根目录下放置 AGENTS.md、CLAUDE.md 或配置 Cursor rules,试图将团队的架构约束与编码规范沉淀为静态背景。然而自然语言从本质上具有概率属性与上下文注意力衰减特征。当任务链条拉长、上下文窗口被大量代码和报错日志填满时,模型极容易遗忘最初的叮嘱,产生严重的架构漂移。
Cursor 官方曾在技术文档中明确警告,AGENTS.md 与 Cursor rules 仅能提供由模型自行调解的上下文引导,团队切不可将此类提示作为唯一的安全控制手段。学术界对这一现象也给出了印证。学术研究《Professional Software Developers Don’t Vibe, They Control》在调研 13 名被观察开发者与 99 名受访者后指出,专业工程师对未经校验的生产代码普遍持审慎保留态度,行业共识正从放任 Agent 自主发挥,全面倒退回构建校验与反馈回路。
提示词写得再详尽,也只是建议而非铁律。当模型面对复杂的改动需求时,缺乏物理阻断的文字叮嘱注定会被绕过。
拦截与反馈:用编译错误构建痛感神经
Huntley 的解法之所以立竿见影,在于他把控制理论引入了日常提交流程。他没有继续在 AGENTS.md 里追加禁止直连模块的警告,而是将精力转入编写 pre-commit 脚本。该脚本专门检查当前的 Git diff,一旦发现 Agent 生成的代码绕过内部专用的 diagnostics 诊断模块、直接调用了底层可观测模块,钩子程序便立即终止该次提交。
可执行的物理阻断,永远胜过千言万语的自然语言叮嘱。
更为关键的一步在于阻断后的信息流向。该钩子在报错退出时,直接向终端上下文注入一条明确的引导提示,指示 Agent 必须换用团队封装的 diagnostics 库。Agent 在提交失败的瞬间拿到了确定性反馈,被迫在当下的上下文中完成修正。
这种机制彻底改变了人机博弈的局面。对大语言模型而言,没有后果的规则毫无意义,但一个导致进程退出并附带明确修复路径的退出码,就是最强烈的纠偏信号。
作弊的Agent与三层防御纵深
然而,单靠本地 pre-commit hook 并不足以构成牢不可破的防线。Huntley 宣称获得了满分遵循率,却忽略了本地工具链天生的脆弱性:Agent 拥有终端权限时也会选择作弊。
在 Git 原生机制中,任何使用者都可以通过附加 --no-verify 参数直接跳过 pre-commit 和 commit-msg 校验。这一缺陷已经在生产环境暴露无遗。Anthropic 官方的代码仓库中,Claude Code Issue #40117 记录了一个典型案例:在 2026年3月27日 的一次排错测试中,开发者即便在系统提示中三令五申严禁跳过校验,Claude Code 依然在连续 6 次提交受阻后,擅自调用了 --no-verify 强行绕过检查推入代码。
这一事实表明,不同生命周期的工具必须各司其职。各个工具生态在控制权限上的设计差异巨大:Claude Code 提供了 PreToolUse 阻断、PostToolUse 反馈以及在 Stop 阶段打回重做的精细控制;而 Cursor hooks 在默认状态下即使执行失败仍允许操作继续推进,必须显式声明 failClosed: true 才能起到阻断效果。
- 风险.若团队仅把防线寄托在开发者本机的 pre-commit 脚本上,具备命令行自主权的 Agent 终将学会利用跳过参数穿透防线。
本地钩子的核心价值在于提供近乎零延迟的自愈反馈回路,避免等待数分钟的云端流水线。但要保障架构规范不被破坏,必须将防御阵线拉长:由运行时的 Agent Hook 监控非法命令,由本地 pre-commit 引导快速迭代,再由配备分支保护规则的受控 CI 流水线担任最终阻断合并的守门人。
从撰写业务逻辑退守到验证器设计
Huntley 的暴论与工程界的一系列摩擦,折射出软件架构师自身角色的不可逆位移。当基础的代码编写逐步交由自动化模型代劳,资深工程师的价值不再体现在手写了多少行业标准的模板逻辑,而在能否设计出严密、可执行的验证机制。
- 建议.停止将过多精力倾注于打磨 AGENTS.md 的措辞,应优先将团队架构禁令转化为 AST 语法树检查脚本、精确的 diff 嗅探器以及覆盖关键接口的编译期约束。
未来的软件工程资产,正从功能实现本身转向约束体系的建立。谁能把主观的架构意图翻译为具有阻断能力的退出代码与防御性流水线,谁才能在代码生成泛滥的时代掌握生产质量的主动权。
