第 1 篇说第三代工具是"智能体式编程",能自己改一整个功能。这一篇就拆开看:它到底是怎么"自己搞定"的?
理解了这个循环,你就知道该在什么时候放手、什么时候盯紧。
核心:一个会自我纠错的循环
普通对话式 AI(第二代)是一问一答:你要代码,它给代码,完了。它给的对不对,得你自己去跑、去验。
智能体式编程(第三代)的质变在于——它把"跑和验"也揽了过去,形成一个自己转的闭环:
┌─────────────────────────────┐
│ ① 想:这一步该干什么 │
│ ② 做:改文件 / 运行命令 / 跑测试 │
│ ③ 看:结果如何?报错了吗? │
│ ④ 根据结果,回到 ① 决定下一步 │
└──────────┬──────────────────┘
│ 直到目标达成
▼
交付
眼熟吗?这正是《AI Agent 专栏》第 3 篇讲的 ReAct 循环(思考→行动→观察),只不过"行动"具体化成了程序员的日常动作:读文件、写文件、跑命令、看输出。
举个真实的例子
假设你说:"修复购物车金额算错的 bug。"一个智能体式工具大致会这样跑:
① 想:先得复现和定位问题
② 做:搜 "cart" "total" → 读 cart_service.py
③ 看:发现打折逻辑把折扣加了两次
① 想:改掉重复计算,再验证
② 做:改 cart_service.py,跑相关单元测试
③ 看:3 个测试挂了 —— 原来有别处依赖旧行为
① 想:这几处也得同步改
② 做:改调用方,补一个针对该 bug 的回归测试
③ 看:全部测试通过 ✅
→ 交付:"修复了折扣重复计算,改了 2 个文件,
加了 1 个回归测试,全绿。"
关键就在第三步"看":它能看到测试挂了、报错了,于是自己回头修——不用你在中间来回传话。这个"做错了能自己发现、自己纠正"的能力,是它比第二代强一大截的根本原因。
为什么"能跑测试"是分水岭
智能体式编程能成立,很大程度靠一件事:它能真的运行代码、拿到真实反馈。
这带来一个重要推论——你的项目"可验证性"越强,AI 干得越好:
- 有测试:它改完能自己跑,挂了自己知道。没测试,它改完只能"觉得对了",你也没法快速验。
- 报错清晰:编译错误、类型检查、linter 报警——这些都是喂给它的"观察"。信号越明确,它纠错越准。
- 能快速运行:跑一次要十分钟的项目,会拖慢整个循环。
所以一个反直觉的结论:投资测试和自动化检查,不只是为了工程质量,也是在给 AI 铺一条"能自己验对错"的跑道。 有了这条跑道,你才敢真正放手。
你在循环里扮演什么角色
放手不等于甩手。你的角色变成了三个关键节点上的"人":
- 开工前——定目标、划边界:把需求讲清楚(第 3 篇),并划出禁区:"别碰数据库迁移""别动线上配置"。
- 过程中——在关键处把关:好的工具会在有风险的操作(删文件、跑危险命令、改核心逻辑)前停下来问你。别习惯性地无脑点"同意",该看的要看。
- 交付后——审查与验收:它说"完成"不等于真的对。这是第 5 篇的主题,也是你最不能省的一步。
一句话:它负责"把活干完",你负责"把好方向和结果"。 循环转得再自动,方向盘还在你手里。
别踩的几个坑
- 任务给太大、太模糊:"帮我把整个项目重构一遍"——它容易越改越乱、越走越偏。拆成能验证的小步,一步步来。
- 无脑连点同意:图省事一路"允许",等于把方向盘扔了。风险操作前的确认,是给你留的刹车。
- 让它在没有版本管理的地方乱跑:一定在 git 有干净提交的前提下让它动手,随时能回滚。改乱了
git reset一下就回来了。 - 循环空转还不打断:偶尔它会卡在"改—错—再改"的怪圈里绕不出来。发现它原地打转,果断停下,自己看看,给个提示再让它继续。
小结
- 智能体式编程的核心是一个自我纠错的闭环:想 → 做(改文件/跑命令/跑测试)→ 看结果 → 再决定,直到达成目标。
- 它就是ReAct 循环在编程上的落地,比第二代强在能自己发现错、自己修。
- 可验证性是分水岭:有测试、报错清晰、运行快的项目,AI 干得明显更好——测试也是在给 AI 铺跑道。
- 你的角色在三个节点:开工前定目标划边界、过程中关键处把关、交付后审查验收。
- 别踩坑:任务别太大、别无脑同意、务必在 git 保护下、空转就打断。
它能自己写、自己跑、还说"全绿了"——但它写的代码真能信吗? 它可是会一本正经地调用不存在的函数。下一篇专门讲怎么守住质量这道关。