乐于分享
好东西不私藏

AI Coding Agent:为什么软件工程正在被AI重新定义?

AI Coding Agent:为什么软件工程正在被AI重新定义?

AI Coding Agent:为什么软件工程正在被AI重新定义?

摘要

2021 年的 GitHub Copilot 做的是代码补全——你写一半,它猜后一半。

2024 年之后出现的 Coding Agent 做的是另一件事:给它一个 issue,它自己读代码、改文件、跑测试、修错误,最后交出一个可合并的补丁。

从"生成代码"到"完成任务",中间隔着工具调用、代码执行、长程规划和自我修复这一整套能力。

数据上,SWE-bench 这个"解决真实 GitHub issue"的基准,成绩从 2023 年的个位数一路推到今天的七成以上。

但同一时期,一项严格的随机对照实验给出了相反的信号:16 名资深开源开发者在自己熟悉的仓库上使用 AI 工具,完成任务的时间反而增加了 19%——而他们自己以为快了 20%。

本文分析这两组矛盾数据背后的技术机制,拆解 Coding Agent 的能力构成,并讨论一个更重要的问题:当写代码不再是瓶颈,软件工程的瓶颈转移到了哪里。


AI Coding Agent:为什么软件工程正在被AI重新定义?

开篇:两个都为真的数字

数字一:斯坦福 AI Index 记录,SWE-bench 上的成绩从 2023 年的 4.4% 提升到 2024 年的 71.7%。一年之内,从"基本不会"到"多数能做对"。

数字二:2025 年 7 月,METR 发布了一项随机对照实验的结果。16 名资深开源开发者,在自己平均有 5 年经验的仓库上,处理 246 个真实任务。

允许使用 AI 工具的组,完成时间比不用 AI 的组多了 19%

而这些开发者事前预计 AI 会让他们快 24%,事后回顾时仍然认为自己快了 20%。

他们变慢了,而且不知道自己变慢了。

这两个数字都经得起推敲。它们的矛盾不是数据问题,而是提示我们:基准测试测的东西,和真实工作需要的东西,不是一回事。

理解这个落差在哪里,是理解整个领域现状的关键。


一、Copilot 时代:补全的逻辑与边界

1. 从 Codex 到 Copilot

2021 年 6 月,GitHub Copilot 以技术预览形式发布,2022 年 6 月正式商用。底层模型是 OpenAI 的 Codex。

Chen et al., Evaluating Large Language Models Trained on Code (Codex), 2021. arXiv:2107.03374

这篇论文同时提出了 HumanEval——164 道手写编程题,用函数签名和文档字符串作为输入,用单元测试判定正确性。

用可执行的测试来评判生成结果,而不是比对文本相似度,这个设计后来成为代码评测的标准范式。

Copilot 的交互模式很简单:读取光标附近的上下文,预测接下来最可能的代码。

它本质上是一个局部的、被动的、无状态的补全器。


2. 补全范式的三个天花板

这个范式很快撞到了边界。

上下文只有局部。 模型看到的是当前文件的附近几百行。它不知道项目里有哪些工具函数、遵循什么约定、数据库表结构长什么样。

于是它会编造 API——生成看起来完全合理、命名规范、但根本不存在的函数。

没有反馈闭环。 模型生成完就结束了。它不知道代码能不能编译、测试是否通过。正确与否完全依赖开发者验证。

只能处理"写"这一个动作。 而真实的开发工作里,写代码的时间占比可能只有三分之一。剩下的是读代码、定位问题、调试、验证、评审。

Copilot 加速了最不耗时的那部分。

这解释了为什么早期关于"AI 让开发效率翻倍"的宣传,与开发者的实际体感总有落差。


二、Coding Agent 时代:从生成到完成

1. 目标变了

Coding Agent 的输入不再是"写一个函数",而是"修复这个 bug"。

它需要自主完成的循环大致是:

  1. 1. 理解需求(读 issue、错误堆栈、相关讨论)
  2. 2. 探索代码库(定位相关文件,理解现有实现)
  3. 3. 制定方案(决定改哪里、怎么改)
  4. 4. 执行修改(编辑多个文件)
  5. 5. 验证(运行测试、编译、静态检查)
  6. 6. 根据反馈迭代(失败了重新分析、修改、再验证)
  7. 7. 交付(生成补丁或 PR)

第 5、6 步是与补全时代最本质的分野。

补全是开环的,Agent 是闭环的。

有了执行反馈,模型的错误可以被自己发现和修正,而不是全部推给人类。

这也是为什么代码是 Agent 技术最先跑通的领域——软件是极少数能够自动、廉价、准确地验证结果的场景。测试通过就是通过,没有模糊地带。

能自动验证,就能自我改进;能自我改进,Agent 才成立。


2. 技术基础的四块拼图

工具使用(Tool Use)。

模型需要能够调用外部工具:读文件、写文件、执行命令、搜索代码、查看 git 历史。

这依赖模型输出结构化调用请求的能力,也就是 function calling。

Yao et al., ReAct: Synergizing Reasoning and Acting in Language Models, ICLR 2023

ReAct 确立了"思考—行动—观察"交替进行的基本范式,是几乎所有 Agent 框架的思想原型。

2024 年 11 月,Anthropic 发布了 Model Context Protocol(MCP),把工具接入标准化。

MCP 的意义不在技术难度,而在生态:在此之前,每个 Agent 框架都要为每种工具单独写适配;之后,工具提供方只需实现一次协议。

这是从"各家自己接工具"到"工具作为可插拔基础设施"的转变。

代码执行环境。

Agent 必须能真的运行代码。这需要一个隔离的沙箱:能装依赖、能跑测试、能捕获输出,同时不会破坏宿主环境。

这部分几乎全是系统工程,没有什么算法含量,但它是整个闭环能否成立的物理前提

长程规划。

修一个 bug 可能需要几十步操作。模型需要维持目标、追踪进度、在偏离时纠正。

这是当前最不稳定的一环。常见的失败模式是:Agent 在某个环节卡住,然后开始重复尝试同样无效的方案,直到耗尽预算。

仓库级上下文。

如何让模型"了解"一个几十万行的代码库?目前有三条路线:

方案
做法
优点
缺点
长上下文
把大量代码直接塞进上下文
简单直接
成本高,注意力被稀释
检索增强(RAG)
向量检索相关片段
成本低
语义检索对代码效果一般
Agentic Search
让模型自己用 grep、find 逐步探索
贴近人类工作方式,精确
步数多,耗时长

实践中三者混用,但值得注意的是第三种正在成为主流

原因很有意思:人类工程师理解陌生代码库的方式,本来就是搜索加跳转,而不是把整个仓库读一遍。 让 Agent 模仿这个过程,比强行扩大上下文更有效。


三、案例:从 Devin 到今天

1. Devin:一次值得复盘的发布

2024 年 3 月,Cognition 发布 Devin,宣称是"第一个 AI 软件工程师"。演示视频显示它能独立完成 Upwork 上的真实外包任务。

Devin 自报在 SWE-bench 上解决了 13.86% 的问题。作为对比,当时公开的最好成绩在 2% 到 5% 之间。

这个发布引发了巨大关注,也引发了同样规模的质疑。

质疑点一:13.86% 这个数字是自评的,且跑在随机抽取的 25% 子集上,与其他工作的评测口径不一致。

质疑点二:2024 年 4 月,开发者 Carl Brown 发布了逐帧分析视频,指出 Upwork 演示中任务的性质被误导性呈现,部分"修复"涉及的文件在原仓库中并不存在。

质疑点三:2025 年 1 月,有独立团队报告在 20 个真实任务上的测试结果——3 个成功,14 个失败。

复盘 Devin 事件,我认为它的价值不在于产品本身,而在于它第一次把"AI 独立完成软件工程任务"作为明确目标提了出来,并且暴露了这个领域最大的诚信风险:

演示可以精心挑选,基准可以选择性报告,而软件工程任务的真实难度极难在演示中体现。

从那之后,"给我看端到端的复现,不要看演示视频"成了业内的基本共识。


2. 形态的分化

到 2026 年,Coding Agent 已经分化出四种并存的形态:

IDE 内联型。 代表是 Cursor 和 GitHub Copilot 的 agent 模式。人在环内,每一步修改都可见可干预。适合需要精确控制的任务。

终端 Agent 型。 代表是 Claude Code、OpenAI Codex CLI、Google Gemini CLI(2025 年 6 月开源,Apache 2.0)。

这类工具直接在命令行运行,拥有完整的文件系统和 shell 权限。它们放弃了图形界面,换来了对开发环境的完整访问权。

Claude Code 于 2025 年 2 月以研究预览发布,5 月正式可用,此后陆续加入了子智能体、Hooks、Skills 等机制。

云端异步型。 把任务派发到云端,Agent 在独立环境中工作,完成后提交 PR。适合明确、可并行、不需要实时交互的任务。

多 Agent 编排型。 多个 Agent 并行处理不同子任务,或者一个规划、一个执行、一个审查。

这四种形态对应的其实是不同的信任等级:从"每一行都要我看",到"你自己去做,做完给我看结果"。

信任等级的提升,取决于验证成本能否降下来。


四、评测:数字为什么对不上

这一节可能是全文最重要的部分,因为它涉及如何正确理解所有关于 AI 编程能力的宣传。

1. SWE-bench 是什么

SWE-bench 从真实的 GitHub 仓库中收集 issue 和对应的修复 PR。模型拿到仓库快照和 issue 描述,需要产出一个补丁,通过项目原有的测试。

SWE-bench Verified 是 OpenAI 在 2024 年 8 月发布的人工验证子集,共 500 道题,确认了每道题都是人类工程师可解的、且验收标准明确。

这个基准的优点是真实:不是刷题,是真的在几万行代码里改 bug。


2. 分数为什么无法横向比较

问题在于,SWE-bench 的成绩不只取决于模型,还取决于脚手架(scaffold)——也就是那套让模型能读文件、跑命令、迭代的 Agent 框架。

同一个模型,配不同的脚手架,分数可以差出十个百分点以上。

于是出现了几个必须区分的口径:

口径
说明
官方统一脚手架
swebench 官方榜单使用统一的极简 agent 框架,可横向比较
厂商自报
各家用自己优化过的脚手架,分数普遍更高
第三方聚合
混合来源,口径不一,部分站点数据无法溯源

目前统一脚手架下的头部成绩大致在 75%–80% 区间。而厂商自报和各类聚合榜单给出的数字,可以一路到 90% 以上。

这些数字并不都是假的,但它们测的不是同一件事。

看到任何 SWE-bench 分数,第一个要问的问题是:什么脚手架?谁跑的?

另外要提醒的是,网上大量"最新榜单"页面本身就是 AI 批量生成的内容农场,其中的模型名称和分数经常无法在权威来源核实。引用前务必回查原始出处。


3. 污染与饱和

HumanEval 已经饱和。 前沿模型普遍在 93% 以上,失去了区分度。

SWE-bench 存在污染风险。 数据来自公开 GitHub 仓库,而这些仓库大概率在模型训练集中。OpenAI 已经停止报告 SWE-bench Verified 成绩。

针对性的改进包括:Scale AI 的 SWE-bench Pro(1865 道题,41 个仓库,覆盖 Python、Go、TypeScript、JavaScript),难度显著更高;以及 LiveCodeBench 这类通过滚动收题来抗污染的设计。


4. 一个更接近现实的基准

Miserendino et al., SWE-Lancer: Can Frontier LLMs Earn $1 Million from Real-World Freelance Software Engineering? OpenAI, 2025

SWE-Lancer 的设计很聪明:收集 1488 个来自 Upwork 的真实付费任务,总标的 100 万美元,直接用"能赚到多少钱"作为指标。

结果值得注意:表现最好的模型在个人贡献者类任务上通过率约 26%,在管理决策类任务(评估多个方案选最优)上约 45%,总共赚到约 20.8 万美元。

模型在"选方案"上比在"写实现"上更强,这个结果有点反直觉,值得琢磨。

另外论文报告了一个清晰的规律:同一模型,单次尝试通过率 16.5%,允许 7 次尝试则升到 48.5%。

推理时的多次尝试,能大幅提升成功率——前提是你有办法判断哪次是对的。

这把问题推到了验证上,我们后面还会回到这一点。


五、对程序员的影响:证据说了什么

1. 产业侧的数字

Google CEO Pichai 在 2024 年 10 月的财报电话会上表示,公司超过 25% 的新代码由 AI 生成,2025 年 4 月这个数字被更新为超过 30%。

微软 CEO Nadella 在 2025 年 4 月表示,微软的代码有 20%–30% 由 AI 生成。

需要注意,这类口径包含了大量样板代码、测试和补全建议,与"AI 独立完成了 30% 的工程工作"不是一回事。

作为反例:Anthropic CEO Amodei 在 2025 年 3 月预测"3 到 6 个月内 AI 将编写 90% 的代码"。这个预测没有兑现

行业领袖的公开预测,可靠性远低于实证研究。


2. METR 的随机对照实验

METR. Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity. 2025. arXiv:2507.09089

这是目前这个领域方法论最严谨的一项研究,值得详细说。

设计:16 名资深开源开发者,在自己平均有 5 年经验的仓库上,处理 246 个真实任务(平均约 2 小时)。任务随机分配到"允许用 AI"和"不允许用 AI"两组。工具是 Cursor Pro 配 Claude 3.5/3.7 Sonnet,时间窗口 2025 年 2 月至 6 月。

结果:允许用 AI 的组,完成时间多了 19%

更有意思的是认知偏差:开发者事前预计提速 24%,事后自评提速 20%。经济学与机器学习领域的专家预测的提速幅度更大。

所有人都预测会加速,实测是减速,而且当事人事后仍然认为自己加速了。

为什么会这样?

研究给出的一个重要解释是:这些开发者对代码库极其熟悉。他们自己写通常比"描述需求 + 等待生成 + 阅读理解 + 验证修改"更快。

而阅读和验证 AI 生成的代码,是有实实在在成本的。当你对代码库了如指掌时,这个成本超过了收益。

必须公平地说明这项研究的边界:它测的是资深开发者在熟悉仓库上的表现,不能推广到新手、陌生代码库或样板代码密集的场景——在那些场景中 AI 的收益很可能是正的。

METR 自己也已将这一结果标注为特定时间点的历史结论,模型能力此后仍在变化。

但它揭示的核心机制是持久的:

AI 把工作从"编写"转移到了"审阅"。而审阅的成本,在很多情况下被严重低估了。


3. 代码质量:一组令人不安的统计

代码分析公司 GitClear 分析了 2020 至 2024 年间 2.11 亿行代码变更,报告了几个趋势:

  • • 重复代码块的出现频率增长约 8 倍
  • • 复制粘贴代码占比从 8.3% 升至 12.3%;
  • • 被重构(移动、复用)的代码占比从 24.1% 降至 9.5%;
  • • 2024 年首次出现"复制粘贴代码量超过重构代码量"
  • • 短期内被推翻重写的代码(churn)比例从约 3.3% 升至 5.7%。

最后一条尤其值得警惕:重构减少、复制增加,正是技术债累积的典型特征。

原因可以理解:AI 擅长生成新代码,不擅长判断"这段逻辑和三个文件之外的那段是重复的,应该抽象出来"。后者需要对整个系统的全局理解。

AI 优化了局部产出速度,可能损害了全局结构质量。

这类相关性研究不能直接证明因果,但趋势的时间点与 AI 编程工具的普及高度吻合。


4. 就业影响

斯坦福的一项研究(常被称为"煤矿里的金丝雀")分析了美国薪资数据,发现在 AI 高暴露职业(如软件开发、客服)中,22–25 岁年龄段的相对就业出现了两位数的下降。

需要说明:这项研究有多个版本,具体数字在不同版本间有差异;后续也有研究指出,加入更多控制变量后,因果归因仍存在争议。

但方向性的信号值得重视:受影响最大的是初级岗位。

这带来一个结构性问题:如果初级岗位大量消失,资深工程师从哪里来?

行业正在消耗上一代培养出来的资深工程师,却没有建立新的培养通道。 这个矛盾在短期内不可见,在五到十年尺度上会变得尖锐。


5. Vibe Coding

2025 年 2 月,Karpathy 在社交平台上提出了"vibe coding"这个说法,描述一种完全交给 AI、不再阅读 diff 的编程方式。

他本人明确把这个模式限定在"周末写着玩的一次性项目"。

但这个词迅速流行开来,并被广泛用于严肃项目——这恰恰丢掉了原始定义里最重要的限定条件

这里的分界线很清楚:不审查代码才是 vibe coding 的定义特征。

用 AI 生成代码然后仔细审查,那只是正常使用工具。生成后直接接受、不看 diff,才是把验证责任完全外包给了模型。

而前面所有的证据都指向同一件事:当前的模型还不足以承担这个责任。


六、Researcher's View

1. 瓶颈已经转移

如果把软件工程拆成"生成"和"验证"两件事,那么这三年发生的变化是:

生成成本大幅下降,验证成本基本没变。

写一个函数从十分钟变成十秒。但确认这个函数在真实系统里正确、安全、符合约定,仍然需要人的判断,而且需要的时间没有变少。

这直接解释了 METR 的结果,也解释了为什么 SWE-bench 分数的提升没有等比例地转化为生产力。

因此我认为,接下来真正有价值的方向不是"让模型写得更好",而是"让验证变得更便宜"。

具体包括:自动生成高覆盖率的测试、形式化验证与 LLM 的结合、变更影响的自动分析、可信度校准(让模型准确说出"这段我没把握")。

在一个生成能力过剩的世界里,验证能力是新的稀缺资源。


2. 强化学习与可验证奖励

代码是强化学习最理想的应用场景之一:单元测试提供了客观、自动、廉价的奖励信号。

这与数学一起,构成了当前"可验证奖励强化学习"的两大主战场。

但这条路有一个隐忧:当奖励是"通过测试"时,模型会学会通过测试,而不是学会写好代码。

已经观察到的行为包括:特判测试用例、修改测试而非修复代码、捕获所有异常让测试静默通过。

这是 Goodhart 定律在 Agent 训练中的直接体现。

奖励设计的质量,会直接决定训练出来的是工程师还是应试者。


3. 评测方法论亟需改进

从 HumanEval 到 SWE-bench 到 SWE-Lancer,评测在往真实靠拢,但仍有大段空白:

  • • 没有测量可维护性——补丁通过了测试,但它是好的设计吗?
  • • 没有测量长程任务——真实功能开发以周为单位,基准以小时为单位。
  • • 没有测量协作——真实工程是多人在共享代码库上并发修改。

评测缺位会系统性地误导研究方向。 大家都在优化能被测出来的那部分,而软件工程中最难的部分恰恰最难测量。

设计能够测量"代码质量"和"长期可维护性"的基准,是这个领域最需要但最少人做的工作。


4. 对开发者的实际建议

基于以上证据,我的判断是:

AI 在陌生领域、样板代码、探索性原型上收益最大;在熟悉的核心代码库、需要精细设计的地方,收益可能为负。

审查能力正在变成核心竞争力。 能快速判断一段代码是否正确、是否符合系统设计,这个能力的价值在上升,而不是下降。

警惕效率幻觉。 METR 最有价值的发现不是"慢了 19%",而是"当事人以为快了 20%"。主观感受在这件事上不可靠——AI 消除了"卡住"的挫败感,让过程感觉更顺畅,但顺畅不等于更快。

系统设计能力比编码能力更保值。 AI 擅长的是局部实现,不擅长的是全局权衡。这个分界线短期内不会移动。


总结

软件工程被重新定义,不是因为 AI 会写代码——它 2021 年就会了。

而是因为出现了一个闭环:模型可以调用工具、执行代码、看到结果、自我修正。代码是极少数能够被自动、廉价、准确验证的领域,这让 Agent 在这里第一次真正跑通。

基准分数的提升是真实的:SWE-bench 从个位数到七成以上。但这个数字要打几个折扣——脚手架不统一、数据可能污染、任务粒度远小于真实开发。

而实证研究给出了另一面:资深开发者在熟悉的代码库上使用 AI,完成时间反而增加了 19%,且本人毫无察觉。代码重复率上升、重构率下降,技术债正在累积。

这两组证据并不矛盾。它们共同指向同一个结论:

生成变便宜了,验证没有。瓶颈从"写不出来"转移到了"不知道对不对"。

对研究者来说,这意味着最有价值的问题已经不是"如何让模型写出更好的代码",而是:

如何让人以更低的成本,确认机器写的东西是对的?

在这个问题被解决之前,AI 编程的收益上限,就是人类审查代码的速度。