SOTA Sync
全部文章
AI 编程2026-08-31

自进化 Coding Agent:什么可以更新,什么不该自动更新

一份综述把自进化 Coding Agent 拆成六类持久更新对象,并指出反馈可靠性、回滚、复杂度预算和跨仓库泛化才是走向生产的关键。

今天多数 Coding Agent 在部署后基本保持静态:模型、提示词、工具接口、记忆和控制流由开发者事先确定。可软件环境持续变化,仓库结构、依赖、API 与团队规范都在移动;每一次测试失败、编译错误、CI 日志和代码审查,又都提供了可复用反馈。

自进化 Coding Agent 试图把这些反馈沉淀成持久变化,让 Agent 下一次不再从同一初始状态开始。最新综述整理了截至 2026 年 8 月的相关研究,并用一个非常实用的问题建立分类:一次任务结束后,系统究竟更新了什么?

#反复运行不等于自进化

普通 Coding Agent 会搜索仓库、修改文件、运行测试并根据结果重试。这只是单次任务内适应。只有某种变化跨任务保留下来,并影响未来行为,才属于自进化。

同样,一次性人工改提示词、离线训练新模型,也不自动构成自进化系统。关键在于存在闭环:任务轨迹产生软件反馈,优化机制选择并写入持久组件,后续任务使用更新后的系统,再继续接受检验。

软件工程特别适合研究这种闭环,因为反馈可执行、仓库上下文丰富、错误可以反复重现。但这些优势也有反面:测试可能不完整,CI 可能偶发失败,生成测试可能验证错误需求。错误反馈一旦写入永久状态,影响的不再是一个补丁,而是之后所有补丁。

#六种可以进化的对象

#1. Agent 框架

系统可以修改提示结构、控制器、检索策略、验证逻辑或完整 Harness。它可能从失败轨迹中发现“总是搜索错目录”,于是改变定位步骤;也可能自动生成新的脚手架并在基准上选择表现更好的版本。

框架更新影响范围最大,也最难归因。一次局部提升可能来自更多计算、特定仓库捷径或评估噪声,而非真正更好的通用结构。

#2. 记忆

最常见形态是保存任务经验、仓库事实、失败原因和解决步骤,在未来检索。记忆更新实现容易、风险相对可控,因而也是现有产品最集中的方向。

问题在于记忆会陈旧、重复和污染。旧 API 规则可能已失效,某个仓库的特殊处理可能被错误迁移到其他项目。记忆系统必须支持来源、适用范围、置信度、过期与删除,而不是无限追加成功摘要。

#3. 技能与工具

Agent 可以把成功轨迹编译成可复用流程,创建新脚本、工具封装或操作技能。相比自由文本记忆,技能更可执行、更容易复现,也更可能减少重复推理。

但一个在单次任务中有效的脚本不一定安全通用。新工具需要权限声明、测试、版本和隔离,退役条件也应与创建条件同等重要。

#4. 模型侧组件

系统可以通过微调、适配器、偏好学习、奖励模型或推理时参数更新改变模型行为。它把经验写得更深,不依赖每次检索记忆,却带来更高成本和灾难性遗忘风险。

模型更新还最难回溯到具体经验。若生产行为恶化,需要知道哪批数据、哪次训练和哪个检查点造成变化,并能够迅速切回。

#5. 工作流与拓扑

系统可以改变步骤顺序、角色分工、Agent 数量和通信关系。例如在某类任务上增加独立测试者,或把低价值的多 Agent 结构收缩成单 Agent。

拓扑进化容易把局部补丁固化为组织复杂度。每一次失败都新增角色或条件分支,最终得到更慢、更贵、责任边界更模糊的 Harness。

#6. 环境与上下文

Agent 也可以改变文件选择、上下文压缩、依赖快照、沙盒配置和任务环境。对长仓库而言,改进“看什么”有时比改进模型更有效。

这一层靠近安全边界。允许 Agent 修改环境,如果没有权限隔离和不可变验证器,可能演变成让任务适配当前 Agent,而不是让 Agent 正确解决任务。

#何时更新,以及根据什么更新

进化可以发生在任务过程中、任务结束后、多个任务累计后,或部署之外的批处理阶段。即时更新反馈最快,却最容易把一次偶然结果写入状态;批量更新能用更多证据和独立验证,代价是适应速度较慢。

软件领域提供多种信号:单元测试、编译器、静态分析、运行时轨迹、CI、代码审查和用户反馈。可执行信号通常比模型自评更可靠,但“测试通过”只证明测试覆盖到的行为。若测试本身错误或不完整,Agent 可能学会迎合测试,而不是满足真实需求。

因此,更新策略应组合多个证据,并区分提出变化和批准变化。Agent 可以生成候选记忆、技能或工作流;独立验证在保留仓库、不同任务和安全套件上通过后,再把候选晋升为生产状态。

#进化必须包含遗忘、退役与回滚

综述指出,当前评估擅长测短期通过率,却很少测长期维护、鲁棒性、安全和跨环境迁移。一个系统可能因为持续增加提示规则、记忆和工具而在公开基准上涨分,同时变得更大、更耦合、更难审计。

真正的生命周期控制至少需要:

  • 每项持久修改都有来源、版本、依赖和适用范围;
  • 更新前后在保留任务与未见仓库上比较,而不是只看产生它的案例;
  • 测量保留与遗忘,避免新技能破坏旧能力;
  • 设定复杂度预算,新增组件必须替换或证明优于旧组件;
  • 记录逆操作,使记忆、工具、路由和状态副作用可以整体撤回;
  • 定期退休长期未命中、重复或失效的组件。

论文特别强调“可逆进化”不只是保存旧文件。一个在线组件被撤回时,它造成的状态与依赖影响也应能够恢复,同时服务继续运行。这比普通版本回滚更严格,却是自修改系统进入生产的必要条件。

#评价重点应从分数转向进化质量

除了任务成功率,评估还应报告:相对静态 Agent 的真实增益;连续任务中的保留与遗忘;对未见仓库、语言、工具和模型的迁移;每单位进化成本带来的提升;记忆与技能增长速度;修改复杂度;组件退役和回滚的成功率。

这些指标能区分两种看似相同的上涨:一种是系统学会了可迁移的方法,另一种是 Harness 记住了公开基准的答案和捷径。

自进化 Coding Agent 的长期价值,不是让系统永远积累更多东西,而是让它能够选择性吸收可靠经验,并在证据变化时安全撤回。未来最可信的系统可能不是更新最快的系统,而是每一次更新都可验证、可解释、可迁移,也可删除的系统。