7.7
深览指数
科技Bestblogs·Addy Osmani··AI 生成

棕地代码库的智能体工程实践

Addy Osmani 为使用 AI 编程智能体(coding agents)安全改造遗留代码库提供了实用框架。核心观点是,遗留仓库不再是系统行为的完整描述,大量隐性知识(制度记忆、遗留服务、跨团队约定)存在于代码之外。他提出由人划定风险区域(绿/黄/红),区域决定智能体的自主程度;团队应只记录代码无法说明的内容。文章还给出了含 characterization tests、完整单元迁移、可重复失败记录(harness)等操作建议。适合有 AI 编程工具实战经验的工程师阅读,可获取一套降低棕地改造风险的工程流程。原文 ↗

核心观点
  • 在旧代码库中进行智能体工程(agentic engineering)的本质是让隐藏的约束可见,并使廉价的变更值得信赖。
  • 迁移应以完整单元完成,删除旧路径并留下可证明旧依赖已消失的证据,否则半完成迁移会持续误导后续的智能体。
  1. 01风险区域(green / yellow / red)将智能体的自治程度转化为操作指令:绿色隔离区可进行快速迭代,黄色区必须先用 characterization tests 锁定行为,红色区(鉴权、计费、权限、薪资)每一步都需要人类参与配对。
  2. 02只应记录代码无法说明的内容,包括业务细微差别、权衡理由、未强制执行的准则和领域规则——团队提供的约束越少越好,因为智能体擅长从代码中自行推断系统地图。
  3. 03对于黄区和红区工作,应通过单独的只读通道生成 comprehension memo(入口点、所有者、调用者、抽象、测试、生产信号、历史背景),否则下一个智能体会重复相同的考古工作。
  4. 04每一次重复的代码审查意见都应转化为 lint 规则、hook、类型、测试或 skill,使 harness 成为团队决定不再重复支付的失败记录。
  5. 05迁移案例包括:Bun 的 Zig 到 Rust 端口(50 个工作流,11 天,对抗性审查,已有测试套件作为合并门);Stripe 的 370 万行 TypeScript 迁移;Asana 的 Enzyme 废弃到 React Testing Library;VB6 到 C# 研究显示简单特征行为等价 92%(复杂特征仅 47%)。
  6. 06Characterization tests(特征化测试)应锁定模块今天的行为,包括看起来丑陋但业务依赖的行为,防止智能体在绿色测试套件后误“修正”业务关键逻辑。
反方 / 局限
  • 文章隐含承认,即使有严格框架,agent 生成的代码仍可能“工作”但设计错误、测试脆弱——框架的价值是降低概率而非消除风险。
7 分钟 · 5 卡片 · 8 资料
读原文 →

概念锚点

前置背景

平行视角

未来推演

延伸追问