用智能体工程提升代码质量

深度Simon Willison2026年3月16日3 分钟阅读
开发者担心 AI 工具会降低代码质量,但智能体工程(Agentic Engineering)能帮我们避免技术债。通过异步智能体处理重构任务,成本低到可以零容忍代码异味。

很多开发者担心,把代码外包给 AI 工具会导致质量下降——快速产出糟糕的代码,而决策者可能因为速度够快就忽略其缺陷。

如果采用编码智能体确实降低了代码和功能的质量,你应该直接解决这个问题:找出流程中哪些环节损害了输出质量,然后修复它们。

用智能体产出更差的代码是一种选择。我们完全可以选择产出更好的代码。

避免背上技术债

我喜欢从技术债的角度思考如何产出更好的代码。我们背上技术债是因为权衡取舍:用“正确的方式”做事耗时太长,所以只能在时间限制内工作,并祈祷项目能撑到将来还债的那天。

避免技术债最好的方法,就是一开始就别背上它。

根据我的经验,有一类常见的技术债修复属于“简单但耗时”的改动。

  • 最初的 API 设计没覆盖后来出现的重要用例。修复这个 API 需要改动几十处代码,于是干脆新增一个略有不同的 API,忍受重复代码。
  • 早期给某个概念起了个糟糕的名字(比如用 teams 而不是 groups),但清理整个代码库里的命名工作量太大,所以只在 UI 层修复。
  • 系统里逐渐出现了重复但略有差异的功能,需要合并和重构。
  • 某个文件膨胀到几千行代码,理想情况下应该拆分成独立模块。

这些改动在概念上都很简单,但需要投入专门的时间,而面对更紧迫的问题时,往往很难为此找到理由。

编码智能体能替我们处理这些

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

启动一个智能体,告诉它要改什么,然后让它在一个分支或工作树里默默运行。

我通常用异步编码智能体来做这个,比如 Gemini Jules、OpenAI Codex web 或 Claude Code on the web。这样我可以在笔记本电脑上运行重构任务,同时不打断自己的工作流。

在 Pull Request 里评估结果。如果不错,就合并。如果接近完成,就给它提示,告诉它哪里需要调整。如果结果很差,直接丢弃。

现在代码改进的成本已经降到如此之低,我们可以对轻微的代码异味和不便采取零容忍态度。

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

任何软件开发任务都有多种解决方案。一些最严重的技术债源于规划阶段做出了糟糕的选择——比如错过了一个显而易见的简单方案,或者选了一项后来发现并不完全合适的技术。

大语言模型(LLM)能帮助我们确保不会错过那些之前可能没注意到的明显解决方案。它们只会建议训练数据中常见的方案,而这些往往是更可能奏效的“无聊技术”。

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

做出可靠技术选择的最佳方式,是用原型证明它们适合目标。

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

最可靠的方法是搭建一个系统模拟,然后对它进行负载测试,看看哪里会出问题。

编码智能体可以根据一个精心设计的提示构建这类模拟,将实验成本降到几乎为零。而且因为成本如此低廉,我们可以同时运行多个实验,测试几种方案,选出最适合我们问题的那一个。

拥抱复合工程循环

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

Every 公司的 Dan Shipper 和 Kieran Klaassen 将他们与编码智能体协作的方法称为复合工程(Compound Engineering)。他们完成的每个编码项目都以回顾总结收尾,他们称之为复合步骤(compound step),即把有效的方法记录下来,供未来的智能体运行使用。

如果我们想从智能体那里获得最佳结果,就应该致力于持续提升代码库的质量。微小的改进会不断累积。过去那些耗时的质量提升工作,现在成本已经降到没有理由不在开发新功能的同时投资于质量。编码智能体意味着我们终于可以两者兼得。

本文编译自 AI should help us produce better code - Agentic Engineering Patterns,版权归原作者所有。

觉得有用?分享给更多人

获取每周 AI 工具精选

工具推荐、实战教程和生态洞察,每周更新。

相关文章

Simon Willison 正在重构 LLM Python 库的抽象层,以支持服务器端工具执行等新功能。他利用 Claude Code 分析了四大 LLM 提供商的客户端库,生成了用于测试的 curl 命令和 JSON 输出。这些调研材料已开源,旨在帮助设计更通用的 API 抽象。

深度Simon Willison·4月5日·1 分钟

智能体技能——包含程序性知识和可执行资源的结构化包,供智能体在推理时动态加载——已成为增强 LLM 智能体的可靠机制。然而,推理时技能增强存在根本性限制:检索噪声引入无关指导,注入的技能内容带来大量 token 开销,而模型从未真正习得它所遵循的知识。我们提出一个问题:技能是否可以被内化到模型参数中,使其在无需任何运行时技能检索的情况下实现零样本自主行为?我们提出 Skill0,一个专为技能内化设计的上下文强化学习框架。Skill0 引入了一种训练时课程,从提供完整技能上下文开始,逐步撤除。技能按类别离线分组,并与交互历史一起渲染为紧凑的视觉上下文,教授模型工具调用和多轮任务完成。动态课程机制…

深度·4月5日·17 分钟

评论