一个值得警惕的发现
起初,事情似乎并不对劲——OpenAI 专注于“如何驾驭AI”的研究团队,在实验初期就遭遇了一个棘手的挑战。
AI智能体在编写代码时,会不折不扣地复制仓库中已经存在的模式。即使是糟糕的模式也不例外。
举例来说,如果仓库中存在一个手写的辅助函数,AI会原样再复制一个;如果错误处理方式缺乏一致性,AI会延续这种不一致;如果某个文件的代码行数已经累积到1000行,AI会理所当然地认为文件就该如此庞大。
AI缺乏判断模式优劣的能力——它无法区分哪些是“良好实践”,哪些是“历史遗留的坏习惯”。在它眼中,仓库中存在的任何模式都是“正确的”。
这就是代码熵的体现——代码库的混乱程度会随着时间自然增长,而AI恰恰是这种混乱最好的放大器。
OpenAI 的初步尝试与失败教训
最初,团队尝试了传统方法:每周投入20%的时间手动清理“AI残留”——包括重复代码、不一致的错误处理逻辑以及过时的文档。结果如何?
- 耗费20%的时间用于清理 → 生产力直接下降20%
- 手动清理的速度始终追不上AI的生成速度
- 人类会疲劳、会遗漏、会感到厌烦
从本质上讲,这依然是传统软件工程中的技术债务问题,只不过被AI加速了十倍。
垃圾回收机制:一个恰当的类比
OpenAI最终找到的解决方案,借助了一个极其精准的类比——垃圾回收(Garbage Collection)。
在编程语言领域,GC并非等待内存耗尽才一次性清理,而是通过持续、小颗粒、自动的方式回收。技术债务的管理也应遵循同样的理念:
❌ 传统模式:累积6个月 → 一个月的大型重构冲刺 → 再累积6个月 → ...
✅ Harness模式:每天进行小额偿还 → 持续清理 → 债务永不累积
具体实施:规则编码与自动化流程
第一步:将“黄金规则”编码到仓库中
OpenAI定义了几条黄金规则(本质上是一组带有主观判断的机械规则):
- 优先使用共享工具包,而非手写辅助函数 — 将不变式集中管理
- 禁止YOLO探测 — 不基于猜测访问数据,必须提供类型或验证保障
- 优先采用自有实现的关键子集 — 与其封装复杂的第三方库,不如构建一个简单可控的自有实现
请注意,这些并非写在文档中的“建议”——它们是被编码为lint规则和结构测试的可执行约束。
第二步:建立自动化清理流程
定期运行后台Codex任务 → 扫描整个代码仓库 → 检测偏差 → 更新质量评分 → 发起重构PR → 大多数情况下1分钟内审查并自动合并。
简而言之,这是让AI来清理AI自身留下的混乱产物。
第三步:构建自我纠正的循环
人类审查发现不良模式 → 更新黄金规则文档 → 将其转化为lint规则 → 自动应用于所有代码 → doc-gardening智能体扫描文档一致性。
一旦人类发现的不良模式被编码为规则,后续的代码生成将自动遵循——无需每次都依赖人工监督。
Claude Code源码揭示的熵管理原则
张汉东在《驾驭工程》(马书)中从Claude Code源码提炼了几条与熵管理直接相关的原则,值得深入探讨。
“三行重复代码优于过早抽象”
这听起来有些反直觉——我们不是一直在追求DRY(不重复)原则吗?
但在AI编码的世界中,过早抽象比适度重复具有更大的危险。原因非常实际:
- AI理解“三行重复代码”远比理解“一个通用抽象层”容易
- 抽象一旦出现缺陷,影响将波及所有调用方
- 重复代码可以通过lint检测和批量重构来清理;而抽象错误则需要深入理解才能被发现和修正
“不要为你未修改的代码添加文档注释”
这里基于Claude Code的行为总结出一个实用习惯:AI存在一种倾向——顺手“优化”它经过的代码,添加注释、增加类型、重构命名。表面上看是好事,但实际上增加了diff的噪声,使代码审查变得困难,还可能引入意外的变更。
这条原则本质上就是范围管理:只修改应修改的部分,不要越界干预。
不同场景下的熵管理策略对比
| 应用场景 | 熵增速度 | 清理策略 |
|---|---|---|
| AI独立生成的绿地项目 | 极高 | 需要建立完整的自动化清理流程 |
| AI辅助的现有项目 | 中等级别 | 重点关注AI修改过的文件 |
| 纯人工项目 | 较低 | 采用传统的技术债务管理即可 |
| AI重构的遗留代码 | 极高 | AI可能将不良模式引入新代码 |
个人开发者的最小化熵管理方案
你不需要具备OpenAI级别的基础设施。一套简单的方案就能起到显著效果。
每周一次“园艺时间”(15分钟)
- 查看AI本周改动的diff
- 是否存在重复代码?→ 将其提炼为共享函数
- 是否存在不一致的模式?→ 添加lint规则
- 是否有过时的文档?→ 及时更新
- 新发现的不良模式?→ 添加到黄金规则中
自动化的最低要求
- 类型检查 — 防止数据结构产生漂移
- 基础lint — 维持代码风格的一致性
- 测试覆盖率检查 — 确保不遗漏任何功能点
这三项工具只需配置一次,便能长期受益。它们是最经济且最高效的“熵传感器”。
总结与展望
很多团队从未认真思考过这个问题。AI编写代码的项目交付效率大约是人类的10倍,同时制造技术债务的速度也大致相同——毕竟AI一天可以修改数百个文件,而人类一天仅能审查几个。如果不进行熵管理,代码库终将崩溃。
好消息是:熵管理本身也可以实现自动化。让AI来清理AI遗留的混乱——这是驾驭工程(即驭缰工程)中最实用的自循环机制之一。
