软件工程的终结 (论文)
本文认为,AI Agent 的出现并不是一次渐进式改良,而是对软件范式的根本重构。
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
半个多世纪以来,软件工程一直建立在一个基本前提之上:人类工程师负责分解问题,把决策逻辑编码进静态代码,并在需求变化时手动调整这些代码。本文认为,AI Agent 的出现并不是一次渐进式改良,而是对软件范式的根本重构。这里的 AI Agent 指的是以大语言模型作为主要推理引擎,并把动态生成和丢弃代码当作工具资源的系统。
作者从复杂度扩展的第一性原理出发,区分了传统软件和 Agent 系统:传统软件里,代码是决策逻辑的载体;Agent 系统里,代码只是 LLM 推理循环中的临时工具。论文回顾了从授权软件到 SaaS,再到作者所说的 AaaS 的历史路径,指出每一次转变都把更多复杂度从最终用户身上转移出去。
论文进一步提出「Agent 工程」这个新兴学科:它在研究对象、控制模型和人的角色上,都不同于传统软件工程。作者通过 SWE-bench Verified、EvoClaw、LangChain 多 Agent 协同研究等基准证据,展示 Agent 范式的变革潜力和当前限制。最后,论文给出一条通向自演化 Agent 生态的四阶段路线图,并为正在经历这场转变的实践者提出建议。
论文原文:https://arxiv.org/pdf/2606.05608
1. 引言
软件工程作为一门学科,通常追溯到 1968 年 NATO 软件工程会议。当时的背景是一场危机:系统复杂度正在超出临时编程实践能够管理的范围。软件工程的创始洞察是,严格的方法论可以驯服这种复杂性,比如结构化设计、模块化分解、配置管理和系统化测试。
五十年来,这个赌注大体上是成功的。软件行业从瀑布模型走向敏捷,从单体架构走向微服务,从手工部署走向 CI/CD。
但更深层的结构性问题始终存在。Brooks 在《人月神话》中指出,软件复杂度的扩展方式和其他工程领域根本不同。桥梁和电路有制造环节,而软件没有;在软件中,设计本身就是产品。每一个新功能、每一个边界情况、每一个集成点,都会把系统推向可能状态和交互关系的组合爆炸。Brooks 将这种复杂度称为「本质复杂度」:它来自问题本身,而不是实现方式的偶然缺陷。
本文主张,AI Agent 的出现并不是在既有范式中增加了一个新工具,而是消解了软件工程成立时的那个根本前提。当一个大语言模型能够理解任务、分解子任务、动态生成代码执行这些子任务,并在不再需要时丢弃代码时,代码的角色就从「系统本身」变成了「推理过程中的临时工具」。这种变化的重要性,类似于从模拟电路转向存储程序计算机。
论文提出三个核心主张:
- 第一性原理上的必然性。 Agent 范式不是市场偏好,而是复杂度扩展规律的必然结果。传统软件要求人类工程师显式编码每一个决策;基于 LLM 的 Agent 可以把推理外包给模型,而模型能力会随训练算力增长,从而以非线性方式处理复杂度。
- 这是范式转移,不是优化。 从「AI → 软件 → 结果」转向「Agent → 结果」,意味着软件制品不再是必要中介。这类似于 SaaS 让本地安装不再成为必要中介。作者将其形式化为软件交付的第三次主要范式转移。
- 一门新学科正在出现。 Agent 工程正在形成自己的概念、工具和指标。它的从业者不是「更好的程序员」,而是一种不同的角色:意图架构师、Agent 协调者和结果审计者。
后文结构如下:第二节从第一性原理分析传统软件和 Agent 系统,并提出形式化复杂度论证;第三节追溯软件交付的历史范式变化,并把 AaaS 放在逻辑终点的位置;第四节定义 Agent 工程,并与传统软件工程对比;第五节回顾近期基准研究中的经验证据,同时承认突破和持续存在的挑战;第六节提出演进路线图;第七节总结对实践者和研究社区的影响。
2. 第一性原理分析
2.1 传统软件的本质
作者先给出一个精确定义。
定义 2.1:传统软件系统。 一个传统软件系统 S 是三元组:
S = (C, D, E)
其中:
- C 是一组计算资源,包括 CPU、内存、I/O;
- D 是编码在源代码中的一组确定性决策规则;
- E 是执行环境,它根据输入对 D 求值并产生输出。
关键属性是:D 相对于执行过程是静态的。也就是说,所有决策逻辑都必须在人类工程师遇到任何输入之前被显式写出来。
在这个定义下,每一次功能增加、每一次 bug 修复、每一次对环境变化的适配,都要求人类完成四件事:理解需要改变什么,定位 D 中正确的位置,在不引入回归的前提下修改逻辑,并验证正确性。每次变更的成本,是 D 的规模和其内部依赖密度的函数。
2.2 复杂度壁垒
Brooks 区分了偶然复杂度和本质复杂度。偶然复杂度来自具体实现,比如语言、工具、框架的限制;本质复杂度来自问题本身。过去几十年里,高级语言、框架、自动化测试不断降低偶然复杂度,但本质复杂度没有上限。事实上,随着系统增长,组件之间的交互面会以组合方式扩张。
命题 2.1:复杂度扩展。 对一个包含 n 个组件的系统,如果每个组件都可能和其他组件交互,那么可能的交互路径数量 P(n) 会呈指数级增长:
P(n) ∈ Θ(2^n)
原因是,在 n 个组件之间,每一对组件都可能存在或不存在有意义的交互,从而形成大量可能的依赖图。现实系统不会实现所有配置,但复杂度上界呈指数增长;与此同时,人类用于推理这些交互关系的认知能力基本是常数。
这种错配,是软件项目在规模变大后边际生产率下降的深层结构原因。传统应对方式是层级分解、模块化接口和封装。这些方法可以降低常数因子,却不会改变渐近行为。
2.3 Agent 系统的形式化模型
相较之下,Agent 系统遵循完全不同的原则。
定义 2.2:AI Agent 系统。 一个 AI Agent 系统 A 是四元组:
A = (M, T, Mem, Π)
其中:
- M 是作为推理引擎的大语言模型;
- T 是一组可执行工具,包括代码解释器、API、数据库、文件系统;
- Mem 是记忆子系统,包括短期上下文和长期向量存储;
- Π 是规划机制,它把用户意图分解为行动序列。
系统以迭代方式运行:模型根据当前状态和记忆选择行动,执行行动后进入下一状态。关键差异在于,在 Agent 系统中,决策逻辑是在运行时生成的。LLM 可以动态生成代码、调用工具,并根据中间结果调整行为,这些都不需要提前逐项编程。
它生成的代码不是系统本身,而是临时产物:需要时生成,不需要时丢弃。
这种区别可以和 Karpathy 的「Software 2.0」框架对应起来,但又更进一步。在 Karpathy 的表述中,神经网络用学习得到的权重取代手写程序逻辑。Agent 系统更进一步:神经网络不只是取代程序,它会按需编写程序,把代码作为更大推理目标的工具。这个模式也和 ReAct 框架、Chain-of-Thought prompting 的结果一致:将推理轨迹和工具调用交织起来,显著提升任务表现;显式的中间推理步骤可以释放 LLM 的潜在能力。
2.4 为什么 Agent 必然更能扩展
设想一个任务 T,其解决方案需要在规模为 N 的空间中推理。
在传统范式下:
- 人类工程师必须在心智上遍历这个空间,识别解决路径;
- 该路径必须被编码成静态程序;
- 人类认知容量 C_H 基本固定;
- 因此,当 N > C_H 时,这个任务在现实成本下不可行。
在 Agent 范式下:
- LLM M 负责遍历空间,其有效容量 C_M 会随模型规模和训练算力扩展;
- 规划机制 Π 把任务 T 分解成子问题,每个子问题可独立处理;
- 代码只针对具体解决路径生成,而不是为所有可能情况提前编写;
- 随着 LLM 能力提升,C_M 也随之增长。
因此,Agent 范式把解决问题的能力从人类认知限制中解耦出来。这不是 10% 的改进,而是经济上可处理的问题类型发生了质变。
3. 从 SaaS 到 AaaS:第三次范式转移
3.1 软件交付的三代形态
商业软件的历史,可以被理解为复杂度逐步从最终用户身上转移出去的过程。
| 世代 | 核心机制 | 复杂度承担者 | 收入模型 | 代表 |
|---|---|---|---|---|
| Software 1.0,本地软件 | 代码和数据在本地执行 | 最终用户,负责安装和维护 | 授权销售 | Microsoft、Oracle |
| Software 2.0,SaaS | 代码和数据在云端执行 | 厂商,负责基础设施和更新 | 订阅 | Salesforce、AWS |
| Software 3.0,AaaS Agent | 在云端自主运行 | Agent,负责理解、构建和运行 | 按结果付费 | OpenAI、Anthropic |
每一次转变都遵循同一个模式:最有能力吸收复杂度的一方吸收复杂度,最不适合管理复杂度的一方被解放出来。SaaS 让企业从机房中解放出来;AaaS 则承诺让企业不再需要指定结果应该如何产生,只需要指定想要什么结果。
3.2 「AI → 软件 → 结果」为什么会失败
到目前为止,企业 AI 的主流范式是 AI 增强开发:用 LLM 帮助人类工程师更快写代码,但仍处在传统软件生命周期里。作者将其称为「AI → 软件 → 结果」管线。这个模式有三个结构性弱点:
- 瓶颈仍然存在。 人类工程师仍然是设计决策、架构、集成测试和部署的关键路径。AI 加速的是代码生成,而代码生成只是实现过程中的一个子步骤,并没有把人类从任何阶段移除。
- 复杂度上限没有变化。 最终交付物仍然是传统软件系统 S = (C, D, E)。其复杂度仍然随 D 的规模增长,任何修改仍然需要人类理解。AI 只是让 D 的构建略快一些。
- 迭代延迟仍然存在。 即使有 AI 辅助,任何功能变化仍然要经过需求、设计、代码、测试、部署这条完整链路。这个延迟无法低于人类沟通和协调的速度。
3.3 「Agent → 结果」:消除中介
替代范式是消除软件制品作为必要中介:
- 人类向 Agent 表达意图和约束;
- Agent 自主规划、执行、验证并交付结果,过程中可以按需生成代码;
- 人类审计结果并给出反馈。
在这个模型中,交付的不是软件,而是结果。Agent 可能生成数千行代码、执行数据库查询、调用外部 API、产出可视化,但这些都是临时的。真正持久存在的是 Agent 的能力,而不是其中间产物。
Kumar 和 Ramagopal 对这个差异的概括是:AI coding agent 擅长在一次用户驱动的会话中把意图翻译成代码;Agent 工程则处在更高抽象层,它是一个控制平面,用来编排跨团队工作流,在多个 Agent 之间维护长期记忆,并管理整个软件交付生命周期中的状态与可追溯性。
4. Agent 工程:一门新学科
4.1 定义这个领域
LangChain 在 2026 年 4 月正式提出 Agent 工程,将其定义为一种多 Agent 协调模型:AI Agent 像数字团队成员一样工作,每个 Agent 有明确角色、共享记忆和统一可观测层,用于推动软件穿过整个交付管线,而不只是更快生成代码。
Wang 等人给出了软件工程中基于 LLM 的 Agent 分类法,识别了三个核心模块。Guo 等人则系统梳理了 LLM 多 Agent 系统中的协作模式和进展。
论文中的框架图可以概括为:
- 感知模块:处理多模态输入;
- 记忆模块:维护语义记忆、情节记忆和程序性知识;
- 行动模块:执行内部推理和外部工具调用;
- LLM 推理核心:编排上述模块并与外部环境交互。
Hermes Agent 是这种架构的一个具体实现。它是 Nous Research 的开源框架,把「感知-记忆-行动」模型落实为可运行系统,并加入了自演化机制。其最重要的特性是闭环学习:完成复杂任务后,Agent 会自主创建可复用的 Skills,也就是参数化的程序性模块;这些 Skills 会在后续使用中自我改进,当发现自己不足时自动修补。
跨会话的情节记忆通过 FTS5 会话搜索和 LLM 摘要实现,让 Agent 能够随时间积累经验知识。子 Agent 委派机制则展示了早期多 Agent 协调在生产系统中的形态。
4.2 Agent 工程与传统工程的对比
| 维度 | 传统软件工程 | Agent 工程 |
|---|---|---|
| 核心制品 | 源代码、静态程序 | Agent 系统、动态工作流 |
| 控制中心 | 人类工程师 | LLM 推理引擎 |
| 决策机制 | 预先设计的逻辑 | 运行时生成的推理 |
| 开发周期 | 线性:设计 → 编码 → 测试 | 自主迭代循环 |
| 人类角色 | 代码作者 | 意图架构师、协调者、审计者 |
| 复杂度上限 | 受人类认知限制,近似常数 | 受模型能力限制,随算力增长 |
| 输出单位 | 可运行软件 | 被交付的结果(Outcome) |
| 错误处理 | 程序员预定义异常处理 | 模型自主纠错与适应 |
| 演化方式 | 手动重构与升级 | 自我修改与持续优化 |
4.3 人类角色被重新想象
最重要的变化,可能是人类角色的变化。在传统范式中,人类价值取决于能否写出正确、高效的代码。在 Agent 范式中,代码生成能力会商品化。新的差异化能力包括:
- 意图表达。 能否足够清晰地指定目标和约束,让 Agent 可以自主工作而不产出意外结果。
- 架构监督。 从系统层面理解多个 Agent 应该如何协调、哪些记忆应该共享、哪些地方必须有人类判断介入。
- 质量校准。 定义什么是「好」,并构建 Agent 可用于自我修正的评估框架。
- 伦理治理。 确保 Agent 行为符合组织价值、法律要求和社会期望。
作者认为,对个体实践者而言,这种变化影响深远。随着 Agent 能力成熟,掌握 Agent 编排的人所获得的生产力倍增,将远超传统意义上的「10x 工程师」。这不是因为打字更快,而是因为他们能够协调一群 Agent 达成复杂结果。上限不再固定,而会随着模型能力和编排基础设施的提升而上升。
5. 经验证据与当前限制
5.1 突破性结果
作者列举了四类代表性证据。
SWE-bench Verified。 Ma 等人展示了 Lingma SWE-GPT 72B 的结果:这是一个开放的、以开发过程为中心的模型,在 SWE-bench Verified 上解决了 30.20% 的 GitHub issue,接近 GPT-4o 的 31.80%,同时完全开放。值得注意的是,7B 版本也解决了 18.20%,说明如果模型接受的是过程数据训练,而不只是静态代码训练,小模型也能完成有意义的自动化软件工程任务。相对于 Llama 3.1 405B,这代表 22.76% 的相对提升,而后者模型规模接近其 6 倍。
多 Agent 协调。 Kumar 和 Ramagopal 报告了一项试点研究:在 20 多个企业调试工作流中部署协同 Agent 群,根因定位时间减少了 93%,一个月节省超过 200 个工程小时。关键在于,这些收益不是来自单个 Agent 更强,而是来自编排能力:在多个 Agent 之间维护共享上下文、并行调查、交叉验证发现。
自我演化。 Hermes Agent 是 Nous Research 的开源框架,拥有大量 GitHub star,是生产系统中比较完整体现自演化原则的案例。它实现了一个闭环学习架构:完成复杂任务后,Agent 会自主创建可复用的 Skills,以捕获成功策略;这些 Skills 在使用中自我改进,当 Skill 被调用且被发现不足时,Agent 会自动修补它。这个「创建、使用、发现弱点、自我修补」的模式不需要人类介入,正是 Agent 系统区别于传统软件的自演化动态。
泛化能力。 Wang 等人整理了数百项研究,覆盖软件生命周期的各个环节:需求分析、架构设计、代码生成、测试、调试、部署和维护。覆盖范围表明,Agent 模式并不限于狭窄任务,而是能泛化到多种软件工程活动。
5.2 持续存在的挑战
尽管进展很快,挑战仍然显著。EvoClaw 基准提供了一个冷静的视角。Deng 等人构建了一个要求 Agent 执行连续软件演化的基准:不是孤立 issue 修复,而是在一系列 commit 历史中持续开发,每次变更都要保持系统完整性,错误还会累积。
他们的关键发现是:在孤立任务上高于 80% 的表现,一旦进入连续场景,整体分数最多下降到 38%。这暴露了 Agent 在长期维护和错误传播上的深层困难。
作者归纳出四个核心挑战:
- 上下文漂移。 当代码库超过有效上下文窗口时,Agent 会失去对系统级不变量和依赖关系的一致理解。
- 错误传播。 早期 commit 中的一个小错误,会在后续工作中级联成复合失败;Agent 缺少可靠机制去检测和恢复这些错误链。
- 技术债意识。 当前 Agent 还不能建模设计决策的长期成本。它们倾向于优化即时任务完成,而不充分考虑可维护性。
- 验证保真度。 自动化测试仍不完整;Agent 可能通过测试,却引入微妙的语义错误,这些错误只有在新输入下才暴露。
EvoClaw 展示的性能断崖可以概括为:
评估设置 成功率 孤立任务 约 82% 连续演化 最高约 38%
当任务从孤立问题变成跨 commit 的持续开发,并且错误会累积时,成功率下降约 54 个百分点。这个结果来自对 12 个前沿模型和 4 个 Agent 框架的评估。
5.3 差距分析
孤立任务表现高于 80%,连续演化表现低于 38%,这中间的差距量化了当前 Agent 能力和完全自动化软件工程门槛之间的距离。
作者强调,这个差距不是根本性的。它反映的是上下文管理、记忆架构和验证机制的限制,而这些都是活跃研究方向。但它提供了重要校准:作为增强范式,Agent 工程已经真实存在,并且有变革性;但要让完全自主的软件开发在生产环境中可靠运作,还需要数年集中研究。
6. 演进路线图
基于当前能力和发展趋势,作者提出 Agent 工程演进的四阶段路线图。
| 阶段 | Agent 能力 | 关键技术 | 人类角色 | 代表系统 |
|---|---|---|---|---|
| I. 工具增强(Tool-Augmented) | 代码补全、单 Issue 修复、简单脚本生成 | 上下文学习(ICL)、RAG | 作者 + 审阅者 | GitHub Copilot、Claude Code |
| II. 单任务自主(Task Autonomous) | 端到端功能构建、调试、基础系统维护 | 规划(Planning)、工具调用(Tool Use)、自我修正(Self-Correction) | 意图架构师 + 审计者 | Devin、OpenHands |
| III. 多 Agent 团队(Multi-Agent Organization) | 面向大型系统的协同 Agent 群、全生命周期管理 | 共享记忆、角色专业化、Agent 编排 | PM + 架构师 + 审计者 | LangChain 编排、MetaGPT |
| IV. 自演化生态(Self-Evolving Ecosystem) | 自主发现、学习、复制、适应 | 元学习(Meta-Learning)、自我修改、生态治理 | 目标设定者 + 伦理治理者 | AGI 助手(前瞻性) |
6.1 第一阶段:工具增强,2023-2025
这是当前主导模式。Agent 作为助手嵌入人类主导的工作流。突破主要发生在编码层面:对范围明确的任务,模型可以接近专家水平地生成、解释和调试代码。限制在于,人类仍然必须分解问题、设计架构并验证正确性。6
6.2 第二阶段:单任务自主,2025-2027
Agent 开始从规格说明到部署完整拥有一个任务。Devin 和 OpenHands 之类系统显示,Agent 可以自主浏览代码库、实现功能并提交 pull request。人类从「做事」转向「指定做什么并验证做成了什么」。
6.3 第三阶段:多 Agent 团队,2026-2029
专业化 Agent 像人类工程组织一样协同工作。「产品经理 Agent」把业务需求翻译成技术规格,「架构师 Agent」设计系统结构,「开发 Agent」实现组件,「QA Agent」测试和验证。共享记忆和可观测性成为关键基础设施。LangChain 的试点研究是这种模式的早期验证。
6.4 第四阶段:自演化生态,2028 以后
Agent 获得改进自身架构、为新问题领域派生专业子 Agent、并在没有人类干预时适应环境变化的能力。在这一阶段,「软件」和「Agent」之间的区别彻底消失:Agent 就是系统,并且持续演化。人类参与转移到元层治理:设定伦理边界、定义价值函数、确保对齐。
7. 影响与建议
7.1 给实践者
向 Agent 工程的转变要求有意识地重塑技能:
- 从代码生产转向意图工程。 最有价值的技能不再是高效写代码,而是用足够清晰的上下文和约束表达任务,让 Agent 能正确执行。
- 建立 Agent 编排能力。 能否把工作拆给多个 Agent、管理共享记忆、设计评估 rubrics,将区分有效实践者和普通使用者。
- 投资可观测性基础设施。 Agent 系统需要和传统软件根本不同的监控方式。追踪 Agent 推理链、检测幻觉、衡量结果质量,都需要新工具。
- 采用「人在回路中,Agent 在驾驶位」的姿态。 今天最有效的模型既不是完全自主,也不是完全由人驱动。Agent 应该负责执行,人类应该负责意图、关键判断和伦理监督。
7.2 给研究者
几个开放问题尤其紧迫:
- 长上下文状态管理。 EvoClaw 说明,Agent 在长序列开发中会失去一致性。如何大规模压缩、索引和检索相关上下文,是关键问题。
- 开放场景中的验证。 当前基准测试的是孤立正确性;真实系统要求安全性、可靠性和可维护性在时间维度上都有保证。需要能捕获这些时间维度的新验证框架。
- 大规模 Agent 对齐。 当 Agent 更自主,并被组合成团队时,确保其集体行为与人类价值一致,会更重要也更困难。
- 经济模型。 Agent 服务应该如何定价?按解决 issue、部署 feature 等结果付费,可能取代订阅和按使用量计费,但激励结构和风险分配需要仔细分析。
7.3 给组织
组织应该现在就开始为 Agent 转型做准备:
- 识别适合 Agent 的工作流。 不是所有软件工作都同样适合 Agent 自动化。成功标准清晰、范围定义明确、已有测试基础设施的任务,是理想起点。
- 投资评估框架。 Agent 输出质量高度依赖评估信号质量。组织应该构建不只衡量正确性,也衡量鲁棒性、可维护性和业务意图对齐的测试套件。
- 重新设计团队结构。 当个人生产力通过 Agent 杠杆倍增时,团队拓扑也必须演化。更小的「Agent 编排者」团队,可能替代更大的开发团队,相应地,招聘、晋升和职业发展也会变化。
8. 结论
本文主张,AI Agent 的出现构成的是软件范式转移,而不是工具升级。从「AI → 软件 → 结果」到「Agent → 结果」的转变,消除了静态软件制品作为必要中介的地位,就像 SaaS 曾经消除了本地安装,云曾经消除了物理基础设施。
这一转变建立在第一性原理上。传统软件要求人类工程师显式编码所有决策逻辑;这个任务的复杂度随系统规模指数增长,而人类能力保持固定。Agent 系统把决策外包给能力随训练算力扩展的 LLM,把解决能力从人类认知限制中解耦出来。这改变了哪些软件问题在经济上可以被处理。
但作者也承认,我们仍处在早期阶段。EvoClaw 这类基准揭示了孤立任务表现和持续自主开发之间的巨大差距。当前需要的是雄心勃勃但有校准的投入:把 Agent 工程作为增强范式的主导方向拥抱,同时承认完全自主的软件工程仍然是一个需要多年研究的挑战。
Agent 工程正在作为一门独立学科出现,拥有自己的概念、工具和职业身份。它的从业者不会只是学会了新工具的程序员,而会是一类新的专业人士:他们是意图架构师,负责指挥 AI Agent 群达成复杂结果。旧的软件工程正在结束,新的软件工程已经开始。
原文链接:软件工程的终结:AI Agent 如何从根本上重构软件范式(译)
汇智网编辑整理,转载请标明出处