跳转到内容
全部开发指南

Agentic Engineering 怎么落地?Simon Willison 的 Claude Code 子 Agent 与 TDD 用法

AIGoCode发布于 更新于

Agentic Engineering 怎么落地?Simon Willison 的 Claude Code 子 Agent 与 TDD 用法 封面

很多人用 Claude Code、Codex 还停留在“帮我写个函数”的阶段:给一句需求,等它吐代码,出错了再贴报错。工具能做的远不止这些,差别在于你会不会指挥它。

Django 联合创始人 Simon Willison 写了一份《Agentic Engineering Patterns》指南,总结他用 AI 编程 Agent 一年多的实践方法。它不是安装教程,而是一套和 Agent 协作的工作方式:怎么理解 Agent 的底层原理、怎么用子 Agent 节省上下文、怎么用一句 prompt 让 Agent 做测试驱动开发。

本文适合已经在用 Claude Code 或 Codex、想让产出更稳定的开发者。下面按指南的脉络整理:Agentic Engineering 的定义、它和 Vibe Coding 的区别、编程 Agent 的组成、子 Agent 的三种用法、Red/Green TDD,以及几条日常 prompt 习惯。

Agentic Engineering 原文配图 1

什么是 Agentic Engineering

Simon 的定义很简单:用 AI 编程 Agent 来开发软件的实践。

重点在 Agent 而不是 Copilot。Copilot 是你写一行它补一行;Agent 是你给一个目标,它自己规划、写代码、执行、验证,循环直到完成。用他的话说:Agent 在循环中运行工具来达成目标。

Claude Code、Codex、Gemini CLI 都属于这一类。它们的关键能力不是生成代码,而是执行代码:能执行才能验证,能验证才能迭代。

那人做什么?Simon 的观点是:写代码从来不是软件工程师的核心工作,想清楚该写什么代码才是。一个问题有几十种解法,各有取舍,人的价值在于在这些选项里找到最适合当前场景的那个。

Agentic Engineering 原文配图 2

Agentic Engineering 和 Vibe Coding 的区别

Vibe Coding 是 Karpathy 在 2025 年 2 月提出的说法:让 AI 写代码,你忘掉代码的存在就好。

Simon 的态度是:Vibe Coding 可以用来做原型,不能直接用于生产。Agentic Engineering 要求你审查结果、验证质量,把代码拉到生产级别。一个是让 AI 随便写,一个是让 AI 按规矩写。

AI 编程 Agent 由什么组成

AI 编程 Agent = 大模型 + 系统提示词 + 工具 + 循环。

  1. 大模型:核心,本质上是文本续写器;
  2. 系统提示词:几百行隐藏指令,告诉模型怎么干活(Codex 的系统提示词在 GitHub 上是公开的);
  3. 工具:十几个可调用的函数,比如 Bash 命令、文件读写、代码执行;
  4. 循环:模型调用工具 → 拿到结果 → 继续推理 → 再调用工具,直到任务完成。

Agentic Engineering 原文配图 3

还有两个容易被忽略的细节:

  • 大模型是无状态的。 每次调用都从零开始,所谓“对话”,其实是软件把整段历史重新发给模型。对话越长,每轮成本越高,质量也会逐渐下降,这就是上下文管理重要的原因。
  • Token 缓存能省钱。 多数模型提供商对重复的前缀 token 收费更低。Claude Code 会刻意避免改动历史对话内容,以保证缓存命中、降低费用。

如果你在意这部分成本,可以在 AIGoCode 核对一次任务的用量,看长对话到底花在了哪里。

子 Agent:节省上下文的关键

子 Agent 是什么

子 Agent 是主 Agent 派出去干活的“分身”,每个子 Agent 有独立的上下文窗口,干完把结果交回主 Agent。

为什么要用它?因为上下文是最贵的资源。原文提到,即使模型上下文窗口很大,实际使用中上下文过长后质量就会明显下滑。子 Agent 在自己的上下文里处理子任务,不占主 Agent 的额度。

一个真实案例

Simon 让 Claude Code 给博客的 diff 展示加上字符级高亮。Claude Code 第一步没有直接改代码,而是先派一个 Explore 子 Agent 去摸底,给它写的 prompt 大意如下:

找到这个 Django 博客中实现 diff 视图的代码。我需要找到:
- 渲染 diff 的模板(找带红/绿背景的 HTML/CSS)
- 生成 diff 的 Python 代码(找 difflib 的用法)
- 跟 diff 渲染相关的 JavaScript
- diff 视图的 CSS 样式

彻底搜索 templates/、static/、blog/ 目录。
关键词搜 "diff"、"chapter"、"revision"、"history"、"compare"。

子 Agent 几秒钟就把相关文件路径、代码位置和关键函数整理好交回,主 Agent 再开始改代码。Simon 的评价是,模型给自己写的 prompt 质量相当不错。

子 Agent 的三种用法

  1. 探索型:就是上面的例子。主 Agent 不自己翻代码库,派子 Agent 去探索,拿到摘要再行动。
  2. 并行型:要改的文件互不依赖时,让主 Agent 同时派多个子 Agent 并行修改,例如:
用子 Agent 并行找到并更新所有受这个改动影响的模板文件。
  1. 专业型:给子 Agent 分配角色,比如代码评审 Agent 专门找 bug 和设计问题;测试运行 Agent 跑测试、只把结果摘要交回来(测试输出通常很长,这样能过滤噪音);调试 Agent 专门定位根因。

Simon 也提醒:别过头。子 Agent 的价值是节省上下文,不是搭几十个 Agent 的复杂编排,保持简单。Codex 也有类似能力,可以参考 Codex 子代理的并行用法。

Red/Green TDD:一句 prompt 提升代码质量

Simon 说他在 Claude Code 里用得最多的一句话是:

Use red/green TDD

主流模型都理解这句话的完整含义:

  1. Red:先写测试,并确认测试是失败的;
  2. Green:再写实现代码,让测试通过。

Agentic Engineering 原文配图 4

AI 编程有两个高频问题:写出的代码不能用,或者写了一堆没人需要的代码。测试先行可以同时缓解这两点,因为测试定义了“做对了是什么样”,Agent 按这个标准迭代。

“先确认测试失败”这一步不能省,否则你可能写了一个本来就会通过的测试,等于没写。

几条日常 prompt 习惯

指南最后附了 Simon 日常在用的做法,摘几条:

  • 原型不用 React:他在 Claude 项目里设置自定义指令,让 Artifacts 不用 React,因为 React 需要构建步骤,没法直接复制到静态托管;
  • AI 校对,但不代笔:拼写和语法可以交给 AI 检查,但带“我”的观点性文字必须自己写;
  • 用 Claude Opus 写图片 alt text:他发现 Opus 在这件事上判断很好,会自己挑出图表里最值得描述的数字。

总结

这份指南的价值不在于某个工具的用法,而是一套和 AI 协作的思路:理解 Agent 是“模型 + 工具 + 循环”,用子 Agent 管住上下文,用 TDD 给 Agent 一个可验证的目标。Simon 有一句话值得记住:大模型不会从过去的错误中学习,但 Agent 可以,前提是我们主动更新指令和工具,把学到的东西写进去。

想直接上手这些用法,可以在 AIGoCode 上接入 Claude Code 或 Codex,按本文的方式先从一个小任务试起。

参考链接