找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3398

积分

0

好友

503

主题
发表于 3 小时前 | 查看: 3| 回复: 0

Simon Willison,Django框架的联合创始人,最近系统性地总结了他使用AI编程工具一年多的实战经验,写成了一份《Agentic Engineering Patterns》指南。

这并非简单的入门教程,而是一套关于如何高效指挥Claude Code、Codex这类AI编程智能体进行开发的深度方法论。理解并运用这些模式,或许能让你手中的工具效能翻倍。

AI编程智能体工程模式思维导图

什么是 Agentic Engineering?

Simon给出的定义是:使用AI编程智能体来开发软件的实践

这里的关键词是“智能体(Agent)”,而非“副驾驶(Copilot)”。两者的核心区别在于自主性:Copilot是你写一行它补一行,而Agent是你给定一个目标,它会自主规划、编写代码、执行验证,并循环此过程直到任务完成。

Simon的原话一针见血:

“Agent在循环中运行工具来达成目标。”

Claude Code、Codex、Gemini CLI都属于这类Agent。它们的核心能力不仅仅是“生成代码”,更在于执行代码。能执行,才能验证;能验证,才能迭代。

那么,在智能体时代,程序员的价值何在?Simon的观点很直接:写代码从来不是软件工程师的核心工作,想清楚该写什么代码才是。 任何一个软件问题都有数十种解法,我们的价值在于导航这些选项,为当前场景找到最合适的路径。

主Agent与子Agent协作流程图

这不是Vibe Coding吗?

Simon专门澄清了这一点。Vibe Coding是Karpathy在2025年提出的概念,核心是“让AI写代码,你忘记代码的存在就好”。

Simon的态度是:Vibe Coding可以用于快速原型验证,但不能用于生产开发。 Agentic Engineering与Vibe Coding的本质区别在于,前者要求你审查结果、验证质量,并将代码提升到可生产级别。简而言之,一个是让AI自由发挥,一个是让AI在规则框架内高效工作。

AI编程智能体的底层构成

很多人天天使用Claude Code,却不清楚其底层工作原理。Simon的拆解非常清晰:

一个AI编程智能体 = LLM(大语言模型) + 系统提示词 + 工具集 + 执行循环。

  1. LLM — 核心大脑,本质上是一个强大的文本续写器。
  2. 系统提示词 — 长达数百行的隐藏指令,告诉LLM如何扮演代码助手的角色(例如,Codex的系统提示词已在GitHub开源)。
  3. 工具 — 十几个可调用的外部函数,例如执行Bash命令、读写文件、运行代码、进行网络搜索等。
  4. 循环 — 智能体运作的核心流程:LLM思考后调用工具 → 获取工具执行结果 → 基于结果继续推理 → 再次调用工具 → 如此循环直至任务完成。

AI编程智能体构成图

此外,还有两个容易被忽略但至关重要的技术细节:

  • LLM是无状态的:每次调用都是一次全新的开始。你所感受到的“对话连续性”,实际上是软件将整个对话历史作为上下文重新输入给模型。因此,对话轮次越多,成本越高,且模型处理长上下文的能力会下降,这就凸显了上下文管理的重要性。
  • Token缓存能节省成本:大多数服务提供商对重复出现的“前缀Token”收费更低。Claude Code的设计会刻意避免修改历史对话内容——这并非偷懒,而是为了保持缓存命中率,从而为用户省钱。

子Agent:Claude Code最被低估的能力

什么是子Agent?

子Agent是主Agent派出去执行特定子任务的“分身”。每个子Agent拥有独立的上下文窗口,完成任务后将精炼的结果返回给主Agent。

为何需要子Agent?因为上下文是最昂贵且有限的资源。尽管LLM的上下文窗口可能高达100万Token,但实践中超过20万Token后输出质量就会显著下降。子Agent机制允许消耗独立的上下文来处理信息密集的子任务,从而保持主Agent上下文的精简与高效。

实战案例:Claude Code如何使用子Agent

Simon分享了一个真实场景:他让Claude Code修改其博客的diff展示功能,增加字符级高亮。

Claude Code的第一步并非直接动手编码,而是派发了一个探索型(Explore)子Agent去摸底。它自动生成了如下Prompt给子Agent:

找到这个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需要理解一个陌生代码库或查找分散的信息时,派一个子Agent去探索并返回摘要,避免主上下文被无关细节污染。
  2. 并行子Agent:当需要修改多个互不依赖的文件时,可以指令Agent派发多个子Agent并行工作,从而大幅提升任务速度。可以尝试这样的Prompt:用子Agent并行找到并更新所有受这个改动影响的模板文件。
  3. 专业子Agent:为子Agent分配特定“角色”,发挥其专项优势:
    • 代码评审Agent — 专门审查代码,寻找潜在Bug和设计缺陷。
    • 测试运行Agent — 专门执行测试套件,并将冗长的测试输出过滤、摘要后返回(极为实用)。
    • 调试Agent — 专注于定位Bug的根本原因。

Simon也提醒了一点:切勿过度设计。 子Agent的核心价值是优化上下文使用,而非构建复杂的微服务式智能体编排系统。保持简单直接。

Red/Green TDD:AI编程的质量守护神

Simon提到,他在Claude Code中使用频率最高的一句指令是:

Use red/green TDD

仅仅六个单词,所有主流模型都能理解其完整含义:

  1. Red(红) — 先编写测试用例,并确认测试运行失败(红色)。这验证了测试本身是有效的,而非一个永远通过的“空测试”。
  2. Green(绿) — 再编写最小化的实现代码,让测试通过(绿色)。

Red/Green TDD测试驱动开发流程图

为什么测试驱动开发(TDD)与AI编程如此契合?因为它完美解决了AI辅助开发中的两个高频痛点:

  • AI写出了无法运行或不符合预期的代码。
  • AI实现了一堆偏离实际需求的功能。

TDD通过测试先行,明确定义了“何为正确”。AI可以依据这个清晰的标准进行迭代,从而产出更可靠的结果。切记,“红”阶段不可省略,否则你可能写了一个毫无约束力的测试,失去了TDD的核心价值。

实用Prompt策略清单

Simon在指南末尾分享了一些日常使用的Prompt策略,颇具启发性:

  • 限制技术选型:在前端原型开发中,他会在Claude项目的自定义指令中明确禁止使用React,因为React需要构建步骤,而他的目标是生成可直接复制粘贴到静态托管的代码。
  • 划定AI协作边界:在文章写作中,他允许AI协助校对拼写和语法,但所有包含第一人称“我”的观点性、叙述性文字必须亲自撰写。这条原则确保了内容的个人色彩与真实性。
  • 善用模型特长:他发现Claude Opus在编写图片Alt文本上“品味独到”,能自动识别图表中最值得在描述中强调的关键数据。

总结

这份指南最大的价值,并非在于传授某个特定工具的操作技巧,而在于提供了一套与AI智能体协同工作的思维框架

许多人使用Claude Code仍停留在“帮我写个函数”的初级阶段。通过学习子Agent的并行探索、TDD驱动的迭代闭环,你会意识到这些工具能承载的协作深度远超想象。关键在于,你能否像一位经验丰富的架构师那样,有效地指挥它们。

Simon有一句话说得极为深刻:LLM本身不会从过去的错误中学习,但基于LLM构建的智能体可以——前提是我们主动更新指令和工具,以反映我们不断积累的经验。

这不正是“授人以渔”吗?工具会快速迭代更新,而正确的方法论才是持久的生产力。如果你对这类Python与AI结合的深度实战内容感兴趣,欢迎在云栈社区继续交流探讨。




上一篇:源杰科技崛起千元股:AI算力引爆光模块芯片,陕西国资浮盈几何
下一篇:TypeScript项目规范配置教程:ESLint与Prettier从零到生产环境
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-23 04:38 , Processed in 0.549711 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表