04-AI 应当帮助我们产出更好的代码

By 刘志军 , 2026-03-21, 分类: agentic-patterns-translation

许多开发者担心,将代码外包给 AI 工具会导致质量下降,产生大量虽然产出极快、却充满缺陷的代码,而决策者为了效率往往会忽视这些瑕疵。

如果采用编程智能体明显降低了你产出的代码或功能质量,你应该直接面对并解决这个问题:找出流程中哪些环节损害了输出质量,并修复它们。

使用智能体交付更烂的代码是一种“选择”。我们完全可以选择交付更好的代码。

避免背负技术债

我喜欢从“技术债”的角度来思考如何交付更好的代码。技术债通常是折衷方案的结果:因为按“正确的方式”做太花时间,所以我们被迫在时间压力下妥协,并祈祷项目能活到以后有机会还债的那一天。

缓解技术债的最佳手段,就是从一开始就避免背负它。

根据我的经验,有一类常见的技术债修复工作属于“原理简单但耗时巨大”:

这些改动在概念上都很简单,但都需要专门的时间投入。在面临更紧迫的任务时,这些工作往往很难获得优先级。

编程智能体可以胜任这些工作

这类重构任务是编程智能体的理想应用场景

启动一个智能体,告诉它要改什么,然后让它在后台的分支或工作区里自行忙碌去吧。

我通常使用异步编程智能体来处理这些,比如 Gemini JulesOpenAI Codex 网页版Claude Code 网页版。这样我可以运行这些重构任务,而不必中断我笔记本电脑上的工作流。

然后在 Pull Request(拉取请求)中评估结果:如果不错,就合并;如果差一点,就通过提示词告诉它哪里需要改进;如果很烂,直接丢弃。

这些代码改进的成本已经降得如此之低,以至于我们完全可以对微小的“代码异味(Code Smells)”和不便之处保持零容忍态度。

AI 工具让我们考虑更多选项

任何软件开发任务都有多种实现方案。最严重的技术债往往源于规划阶段的错误选择——比如漏掉了显而易见的简单方案,或者选了一个后来发现并不契合的技术栈。

LLM 可以确保我们不会遗漏那些之前未曾留意的方案。它们通常会推荐训练数据中常见的方案,而这些往往是那些最可能行之有效的“无聊技术(Boring Technology)”。

更重要的是,编程智能体可以辅助探索性原型开发

做出自信技术决策的最佳方式,就是通过原型证明其适用性。

“对于一个预期有数千并发用户的网站,Redis 是活动流(Activity Feed)的好选择吗?”

确认这一点的最佳方式是编写一个系统仿真模型,并对其进行压力测试。

编程智能体只需一个精心编写的提示词就能构建这种仿真,将实验成本降至几乎为零。既然如此廉价,我们可以同时运行多个实验,测试多种方案,从而选出最适合的那一个。

拥抱“复利工程循环”

智能体会遵循指令。我们可以根据以往的经验教训,不断演进这些指令,以便在未来的运行中获得更好的结果。

Every 公司的 Dan Shipper 和 Kieran Klaassen 将他们与编程智能体协作的方法称为“复利工程(Compound Engineering)”。他们每完成一个编程项目都会进行复盘,称之为“复利步骤(Compound Step)”——他们会将行之有效的经验记录下来,供未来的智能体运行参考。

如果我们想从智能体那里获得最佳结果,就应该致力于随时间推移不断提升代码库的质量。微小的改进会产生复利效应。过去耗时的质量提升工作,现在的成本已经降到了让你没有任何借口不投入的地步。 编程智能体意味着我们终于可以同时拥有“高质量”和“新功能”。


原文:Agentic Engineering Patterns by Simon Willison


关注公众号「Python之禅」,回复「1024」免费获取Python资源

python之禅