Self-Evolving Coding Agents
Hao Zhou, Haichuan Hu, Ye Shang, Quanjun Zhang
cs.SE
2026-08-04
编码智能体部署后大多固定,而软件工程反馈密集、正适合自我进化。这篇综述按「进化对象」把 26 个系统分成五类,核心结论:进化不难,可信才难。
现在主流的编码智能体(SWE-agent、OpenHands 一类)能读仓库、改文件、跑测试、提补丁,但部署之后基本是静态的:基座模型、prompt、工具接口、记忆、控制流都定死。这跟真实的软件工程对不上。代码库一直在变,依赖会升级,测试会失败,修 bug 的尝试本身就在攒经验。如果智能体不能从这些反馈里学,就会在不同任务上反复踩同样的坑。软件工程之所以是研究「自我进化智能体」的天然试验场,恰恰因为它给的反馈比一般任务具体得多:单元测试、编译报错、运行时栈、CI 日志、code review 都是可执行、可复现的信号。这篇综述要做的,就是把「自我进化的编码智能体」这个还在快速成形的概念理清楚。
综述用三层结构组织这片文献,核心是「对象中心」分类法,按到底进化了智能体的哪一部分,把系统分成五类。
框架自进化:智能体把自己的脚手架源码当可改工件,改完跑测试验证。代表是 SICA、SIFT、STOP,以及 Darwin Gödel Machine 一族(维护多个智能体变体做开放式进化)。最激进,可靠性风险也最大。
记忆自进化:把问题解决轨迹抽象成可检索的经验、仓库知识或修复经验。SWE-Exp、EvoCoder、Subtask Memory、EvoRepair(漏洞修复)、Repository Memory。
技能与工具自进化:把轨迹蒸馏成可复用的程序性技能,甚至让智能体自己造工具。CODESKILL、GSkill、Socratic-SWE、EffiSkill、Live-SWE-Agent(任务进行中造工具)。
模型自进化:改的是权重、策略或验证器,反馈闭环到模型侧。Self-play SWE-RL、Agent-RLVR,以及 coder 与 verifier 协同进化(ReVeal、CURE、ZeroCoder、Sol-Ver)、对抗测试(ACE)。
工作流与拓扑自进化:进化多智能体的协作结构和流程图。SEMAG、EvoMAC、AgentConductor、SEW、AFlow。
再补两个正交维度。「何时进化」分任务中(边做边改)、任务后(把单次结果沉淀成经验或技能)、阶段式(攒一批再更新模型,最接近跨代自我改进)。「靠什么证据进化」分结果证据(基准解决率、测试通过率,提供选择压力但粗)、环境反馈(编译、测试、运行日志,局部、任务中)、轨迹证据(完整尝试记录,靠抽象才能复用)。
作者反复划一条界:不是所有 SWE 方向的后训练都算自我进化,只有当学习信号闭环到智能体自己的尝试、自造任务或交互结果上时才算。SWE-RL、SWE-Gym、SWE-RM 因此被归为基础设施或模型优化,算不上完整的自我进化智能体。
综述没有跑实验,它的「结果」是梳理 26 个代表系统后的几点判断。软件工程给自我进化提供了别处没有的具体反馈(可执行产物加仓库级上下文加轨迹),这是它区别于通用自我进化智能体的根本优势。五类对象里,越靠近「改智能体自身」(框架、模型),增益潜力越大,可靠性、安全、过拟合风险也越高;越靠近「存与取」(记忆、技能),越稳但天花板受限。一个被多次强调的反直觉点是:造更多数据不等于进化。近期的自博弈分析显示,可持续改进要求跨迭代有可学习的信息增益,否则循环只是在强化已有偏置或产出冗余任务。评估现状是强在功能正确性(pass rate、resolve rate、Pass@k),弱在可维护性、安全和长期可靠性,以及在「进化设定之外还管不管用」的泛化;仓库级基准(SWE-bench 一族)是主战场,函数级和竞赛编程是补充。作者的核心主张一句话:中心挑战在于让它的进化可信,进化本身反倒不难。
给了一张能用的地图:如果你在做编码智能体、想加「学习」能力,这五类对象加时机加证据三个维度,能帮你定位自己的系统、找到对标工作。它划清了「自我进化」和「普通 SWE 后训练」的边界,这条线对写论文、做 claim 的人尤其有用,避免把 SWE-RL 这类基础设施工作误当成完整的自我进化智能体。它还把「可信度」立成头号问题,并指出反馈不可靠会沿着记忆、技能、工作流、模型层层放大:一个错的测试不只是影响一个补丁,会被存进记忆、蒸馏进技能、用来更新策略。这对真要上生产的团队是清醒剂。配套还有一个持续更新的 awesome 列表。
这是「引导性综合」而非成熟范式的终评,作者自己说领域边界还在流变,分类有主观成分,五类也不互斥(一个系统常同时进化多个对象)。26 个代表系统的选择标准没完全交代,如何从更大池子里挑出来没说清,可能有遗漏或偏向。没有统一的横向比较,比如各系统在 SWE-bench 上的解决率横评,只做了定性归类,对想知道「哪条路现在最强」的读者帮助有限。综述点出的开放问题(基准过拟合、反馈可靠性、长期记忆维护、跨域泛化)大多是提出而非解答,离工程落地都还有距离。自我进化的安全和对齐风险(智能体改自己的脚手架可能破坏 agent loop、利用评估 harness 的弱点)被提到但没深入。