Agent 是怎么一步步学会写代码,又把 Vibe Coding 推上风口的
一个被词典收录的词,背后藏着一整条进化链
2025 年初,Andrej Karpathy 在社交媒体上随手抛出一个词——vibe coding。他的大意是:以后写程序,你可以完全顺着"感觉"来,把想要的功能用自然语言描述出来,剩下的交给 AI 去生成代码,你甚至不需要逐行读懂它写了什么。这个词后来被 Collins 词典评为 2025 年度词汇,相关市场被估算到数十亿美元规模,非程序员也能靠它搭出可用的应用。
很多人把 vibe coding 当成一个突然爆发的现象,但如果你把时间轴拉长,会发现它其实是一条进化链的终点。这条链的起点,是一个连"调用计算器"都不会的语言模型;它的中段,是一群在论文里反复试错的研究范式;它的末端,才是今天能在你 IDE 里自动改 bug、跑测试、提 PR 的 coding agent。真正值得讲的不是"vibe coding 火了",而是"agent 是怎么一步步把开发正确率从个位数拉到九成以上的"。这篇文章就沿着这条链,从 agent 的出生讲起。
Agent 的诞生:当语言模型学会"想一想再动手"
要讲 agent 的诞生,得先回到 2022 年。那一年,Chain-of-Thought 这篇论文把一件朴素的事情讲清楚了:让大模型在给出答案前,先写出一串中间推理步骤,它的表现会显著提升。这听起来像废话,但它解决了一个根本问题——在此之前,模型是"一步到位"地吐答案,错了也不知道错在哪。有了思维链,模型第一次有了"可被观察的思考过程",这成了后续一切 agent 范式的地基,这篇论文也被引用了三万六千多次。
紧接着,ReAct 把这块地基往上盖了一层。它的核心思想用一句话就能讲完:让模型把"推理"和"行动"交错着进行——先想一步,再调一个工具,看到工具返回的结果,再想下一步。这种 Thought → Action → Observation 的循环,第一次让语言模型从"只会说"变成"会做事"。下面这段伪代码勾勒的就是这个循环的骨架:
Thought: 用户要修这个 bug,我先看看报错堆栈
Action: read_file("stack_trace.log")
Observation: NullPointerException at line 42 of UserService.java
Thought: 空指针,可能是 user 对象没初始化
Action: read_file("UserService.java")
Observation: line 40 调用 findById(id) 后未判空
Thought: 加一个空值检查再返回
Action: edit_file("UserService.java", ...)
Observation: 修改成功
Action: run_tests()
Observation: 全部测试通过
ReAct 论文被引用了一万三千多次,几乎所有后来的 agent 框架,骨子里都是这个循环的变体。几乎同一时间,Meta 抛出了 Toolformer,让模型自己学会"什么时候该调工具、调哪个工具、参数怎么填"。它把计算器、问答系统、搜索引擎、翻译、日历这些工具塞进训练过程,让模型在自监督下掌握工具使用。这三项工作合在一起,构成了 agent 的"出生证明":思维链给它思考能力,ReAct 给它行动循环,Toolformer 给它工具意识。
Agent 的发展:从会调工具,到会反思、会分工
出生之后的 agent,马上撞上一堵墙:它会调工具,但它会犯错,而且犯了错不会改。于是 2023 年前后,研究重心转向"怎么让 agent 自己纠错"。
Reflexion 给出的答案是"自我反思"。它让 agent 在每次尝试失败后,生成一段对失败原因的自然语言总结,把这段总结塞进下一轮的上下文,相当于让 agent "记住教训"。Tree of Thoughts 则更进一步,它不再只走一条思路,而是同时展开多条可能的推理路径,对每条路径打分,再选最优的那条继续往下走。这两套机制让 agent 从"线性试错"升级成"带评估的搜索",正确率随之抬升,也奠定了后来"先规划再执行"的范式基础。
与此同时,工业侧也在补另一块短板:工具调用的可靠性。早期 agent 调工具靠的是"让模型输出一段文本,再用正则去解析",极其脆弱,参数错一个字符整条链就断。2023 年 6 月,OpenAI 给 GPT-4 加上了正式的 function calling 能力,模型可以直接输出结构化的函数调用 JSON,工具对接从"猜谜游戏"变成了"契约调用"。这一步看似工程小改,实则让 agent 的工具使用错误率断崖式下降,也是从这一刻起,agent 才真正具备了稳定串联多步操作的能力。
工具稳了,反思有了,下一步就是"分工"。ChatDev 和 MetaGPT 把一个虚拟软件公司搬进了 agent 世界:产品经理 agent 写需求,架构师 agent 出设计,程序员 agent 写代码,测试 agent 跑用例,多个 agent 按角色协作完成一个完整项目。MetaGPT 这篇论文被引用三千多次,它证明了一件事——单个 agent 再强也有上限,把任务拆给一组有明确职责的 agent,整体正确率会比单打独斗高出一截。也是在这个阶段,LangChain、LlamaIndex 这类框架迅速崛起,把"搭一个 agent"从论文复现变成了几行代码的事,agent 生态开始成型。
Agent 的流行:从 AutoGPT 的狂欢,到 Vibe Coding 的日常
如果说论文里的 agent 还属于实验室,那 2023 年 3 月的 AutoGPT 就是它第一次"出圈"。AutoGPT 把 GPT-4 套进一个自主循环:给定一个高层目标,它自己拆任务、自己调工具、自己上网搜资料、自己写文件,循环往复直到"完成"。紧接着出现的 BabyAGI 走的是同一条路,只是更精简。这俩项目在 GitHub 上一夜斩获十几万 star,所有人都兴奋地以为"通用人工智能的雏形"已经到家了。
但狂欢很快退潮。早期的 AutoGPT 们有个致命问题:它们会在一个任务上无限打转,跑着跑着就忘了自己最初要干嘛,正确率惨不忍睹,常常在第三四步就彻底跑偏。这场泡沫留下的真正遗产,不是某个能用的产品,而是让全世界开发者第一次直观感受到"agent 长什么样",也暴露出"自主循环 + 长程规划"才是真正的硬骨头。可以说,正是 AutoGPT 的失败,把后续两年的研究精力都引向了"怎么让 agent 不跑偏"。
转折发生在 2024 年。3 月,Cognition 发布 Devin,号称"第一个 AI 软件工程师",它在 SWE-bench 上拿下了 13.86% 的解决率——听上去不高,但要知道此前的无辅助基线只有 1.96%,Devin 直接把它抬高了七倍。Devin 真正打动人的不是数字,而是 demo 里它自己开浏览器查文档、自己写代码、自己跑测试、自己修 bug 的完整闭环。同年 10 月,Anthropic 给 Claude 3.5 Sonnet 加上了 computer use 能力,agent 可以像人一样看屏幕、移鼠标、点按钮;11 月又推出 MCP(Model Context Protocol),把"agent 怎么连外部系统"这件事标准化了,工具生态从"各自为战"走向"即插即用"。
到了 2025 年,所有条件凑齐:模型够强、工具够稳、循环够长、生态够丰富。Karpathy 的 vibe coding 一词精准地命名了这种新状态——Cursor、Windsurf、Claude Code 这类 agentic IDE 走进日常开发,开发者从"写代码"变成"描述意图 + 审查 agent 写的代码"。agent 不再是 demo,而是工作流的一部分,vibe coding 也因此从一句玩笑变成了被词典正式收录的开发范式。
Agent 是怎么一步步把开发正确率拉上去的
这是整条故事线里最值得拆开看的一段。agent 的开发正确率不是某一个魔法带来的,而是一层一层叠加的能力共同抬起来的。下面这张表把关键的"提准确率杠杆"按出现顺序列了出来,每一项都对应着 agent 某一种"短板被补上"的瞬间。
| 阶段 | 关键能力 | 解决的核心问题 | 带来的变化 |
|---|---|---|---|
| 推理 | Chain-of-Thought | 模型一步到位、错了无法定位 | 有了可观察的中间推理步骤 |
| 行动 | ReAct 循环 | 模型只会说、不会做 | 推理与工具调用交错进行 |
| 工具意识 | Toolformer | 不知道何时该用工具 | 自监督学会调用计算器、搜索等 |
| 可靠调用 | Function Calling | 工具调用靠正则解析、极易出错 | 结构化 JSON 契约,错误率骤降 |
| 自我纠错 | Reflexion | 犯了错不会改、不会总结 | 失败后生成反思,下一轮避免重蹈 |
| 路径搜索 | Tree of Thoughts | 只走单条思路、易钻死胡同 | 多路径展开打分,选最优继续 |
| 记忆 | RAG / 向量库 / 长上下文 | 上下文有限、跨会话失忆 | 持久化检索,长程任务不丢线索 |
| 分工 | MetaGPT / ChatDev | 单 agent 上限明显 | 多角色协作,整体正确率提升 |
| 验证闭环 | 测试驱动 agent | 代码写完不知道对不对 | 跑测试 → 看报错 → 改 → 再跑 |
| 环境操作 | Computer Use | 只能在文本里干活 | 像人一样操作真实环境 |
| 工具生态 | MCP | 每个工具都要单独适配 | 标准协议,工具即插即用 |
这里面最容易被低估、但对正确率贡献最大的,是"验证闭环"。早期 agent 写完代码就交差,对不对全凭模型自己判断,而模型恰恰最不擅长判断自己写的代码对不对。后来业界把测试驱动开发(TDD)的思路塞进 agent 循环:agent 先读测试用例,再写实现,写完立刻跑测试,看到失败信息再回去改,改完再跑,直到全绿。这种 写 → 跑 → 看报错 → 改 的闭环,把"代码正确性"从"模型自评"变成了"测试客观裁决",正确率随之出现台阶式跳升。它的循环结构大致是这样的:
while not all_tests_pass:
read failing test cases
write or patch minimal implementation
run tests
if failing:
read error output
reflect on root cause
patch implementation
else:
break
最能直观体现这种跳升的,是 SWE-bench 这条基准线。它用真实的 GitHub issue 来考 agent,能不能修好由隐藏测试决定,几乎没有水分,因此被公认为衡量 coding agent 的"事实标准"。
| 时间 | 系统 / 模型 | SWE-bench Verified 解决率 |
|---|---|---|
| 2024 年 3 月 | 此前无辅助基线 | 1.96% |
| 2024 年 3 月 | Devin | 13.86% |
| 2024 年 8 月 | SWE-bench Verified 子集发布 | — |
| 2025 年 5 月 | Refact.ai(开源方案) | 70.4% |
| 2025 年 | Claude Opus 4.5 | 79.2% |
| 2025 年 | 当前通用 SOTA | 约 87.6% |
| 2025–2026 年 | Claude Opus 5(部分榜单) | 高达 97.00% |
从 1.96% 到 97%,一年多时间里解决率翻了近五十倍。这背后当然有模型本身变强的功劳,但更关键的是 agent 这一层的工程进化:更稳的工具调用、更长的规划、更可靠的反思、更严格的测试验证、更丰富的工具生态。模型是发动机,agent 是底盘和方向盘,光有发动机跑不直,得靠底盘把动力转化成"正确到达终点"。
理解了这条进化链,你才能理解 vibe coding 为什么"现在"火。它不是某一天突然可行的,而是当 agent 的开发正确率跨过某个临界点——大概在 70% 上下——之后,"用自然语言描述意图、让 AI 生成代码"才从"玩具"变成"可日常使用的工作方式"。Karpathy 命名的是 2025 年的现象,但孕育它的,是过去三年里 agent 一点一点把正确率抬上去的全部努力。

浙公网安备 33010602011771号