本系列文章翻译自Django作者的"智能体工程"(agentic engineering),由LLM粗略翻译了第一遍,经过人工校对。
什么是智能体化工程?
我使用“智能体化工程(Agentic Engineering)”一词,来描述在编程智能体(Coding Agents)辅助下开发软件的实践。
什么是编程智能体? 它们是既能编写代码又能执行代码的智能体。常见的例子包括 Claude Code、OpenAI Codex 和 Gemini CLI。
什么是“智能体(Agent)”? 准确定义这个词是一个困扰了 AI 研究者至少 30 年(自 20 世纪 90 年代起)的难题。但在 GPT-5、Gemini 和 Claude 等大语言模型(LLM)领域,我倾向于接受这样一个定义:
智能体通过循环运行工具来实现目标。
“智能体”本质上是一个软件,它带着你的提示词(Prompt)和一组工具定义去调用 LLM,然后执行 LLM 请求的任何工具,并将结果反馈给 LLM。
对于编程智能体来说,这些工具中必然包含一个能够执行代码的工具。
你通过提示词为编程智能体设定一个目标。随后,智能体会在循环中不断生成并执行代码,直到达成该目标。
代码执行能力是让智能体化工程成为可能的决定性特征。如果无法直接运行代码,LLM 输出的任何内容价值都非常有限。有了代码执行能力,这些智能体就能通过不断迭代,最终交付切实可行的软件。
智能体化工程的任务分配
既然现在软件已经能写出可以运行的代码了,那我们人类还需要做什么呢?
答案是:要做的事情太多了。
编写代码从来都不是软件工程师唯一的活动。这门手艺的核心一直是搞清楚该写什么代码。任何给定的软件问题都有数十种潜在解决方案,每种方案都有其权衡(Trade-offs)。我们的工作是引导这些选项,并找到最适合当前特定环境和需求的方案。
如何让编程智能体发挥出最佳效果,本身就是一个深奥的课题,尤其是在目前技术以惊人速度演进的背景下。
我们需要为编程智能体提供解决问题所需的工具,以恰当的详略程度描述问题,并对结果进行验证和迭代,直到我们确信它们以稳健且可靠的方式解决了问题。
LLM 本身不会从过去的错误中学习,但编程智能体可以——前提是我们有意识地更新指令和工具链,将我们在过程中学到的经验教训固化下来。
如果运用得当,编程智能体能让我们在承接项目时更有野心。智能体化工程应当帮助我们产出更多、质量更高、且能解决更具影响力问题的代码。
这难道不就是“氛围编程”吗?
“氛围编程(Vibe Coding)”一词由 Andrej Karpathy 在 2025 年 2 月提出(巧合的是,这正好在 Claude Code 发布前三周)。它描述的是一种给 LLM 发指令写代码,同时“忘掉代码本身存在”的状态。
有些人将这个定义扩大到了所有使用 LLM 生成代码的场景,但我认为这是一个误区。“氛围编程”在其原始定义下更有参考价值——我们需要一个专门的词来描述那些未经审查、原型质量的 LLM 生成代码,以便将其与作者已提升至生产就绪标准的代码区分开来。
关于本指南
正如它所涵盖的领域一样,《智能体化工程模式》本身也正处于“施工中”状态。我的目标是识别并描述那些已被证明行之有效、且不太可能随着工具进步而过时的模式。
随着新技术涌现,我会持续增加章节。没有任何章节是“终稿”,我会随着我们对这些模式理解的演进而不断更新既有内容。
原文:Agentic Engineering Patterns by Simon Willison
关注公众号「Python之禅」,回复「1024」免费获取Python资源