从代码到自我进化:揭秘首个自主改进编码智能体SICA的突破性进展
SICA的提出和实现,标志着智能体系统进入了一个新的发展阶段。通过自主编辑自身代码库实现自我改进,SICA在SWE-Bench Verified等基准测试中展现出从17%到53%的性能提升,同时平均每个问题的花费时间也略有减少。这一成果证明了自我改进在智能体系统中的可行性,尤其是在那些基础LLMs能从支架系统的结构和指导中显著获益的长期“智能体”任务中。SICA框架不仅提供了一种自动化智能体系统设
论文名称:A Self-Improving Coding Agent
论文地址:https://arxiv.org/pdf/2504.15228
在人工智能迅猛发展的浪潮中,大型语言模型(LLMs)已在众多领域展现出惊人能力。然而,要将这些模型应用于实际场景,还需借助代码来协调其运行并提供工具支持,由此诞生了“智能体”这一概念。传统的智能体系统优化依赖人工设计策略,不仅耗费大量人力,还难以探索广阔的解决方案空间。
近期,来自布里斯托尔大学和iGent AI的研究团队提出了一项颠覆性成果——自改进编码智能体(SICA)。这一智能体能够自主编辑自身代码库,在基准测试中性能提升显著,为智能体系统的自动化设计开辟了全新道路。接下来,让我们深入探究SICA的奥秘。
智能体系统的进化困境与突破方向
在人工智能领域,智能体系统是让LLMs发挥实际作用的关键。它们通过各种提示策略和LLM输出组合方法,在基准测试中表现远超“纯粹”的LLMs。从早期的最佳N采样、思维链等简单策略,到STaR、思维树、思维图等复杂方案,研究者们不断探索提升模型性能的方法。
但长期以来,智能体系统的发展面临着一大瓶颈。正如Schulhoff等人的综合调查所示,目前存在大量人工创建的策略,这些策略依赖于研究者的经验和试错,只能探索解决方案空间的一小部分。这种手工设计的方式效率低下,严重限制了智能体系统的发展潜力。
在此背景下,一个关键问题浮出水面:编码智能体能否自主修改和改进自身代码?研究团队认为,这种完全自指的元智能体编程如今已成为可能,它为手工设计协调器的临时、试错方法提供了可靠替代方案。
与之前的自动化智能体系统设计(ADAS)工作不同,SICA消除了元智能体和目标智能体的区别。ADAS中有两个独立的智能体,目标智能体执行任务,元智能体改进目标智能体,并非真正的自我改进。而SICA的自我改进特性使得编码能力的提升可以在后续改进步骤中得到利用,有望实现性能的复利增长。
SICA的核心架构:自我改进的循环机制

SICA的主要运行循环类似于ADAS循环,但具有独特的创新之处。它会保留先前智能体及其基准测试结果的档案库。在每一步中,SICA从档案库中选取迄今为止性能最佳的智能体作为元智能体,该元智能体查看档案库、识别改进点并实施改进,随后在一组评估基准上评估新智能体并存储结果。
性能评估的关键指标
为了确定“最佳”性能的智能体,研究团队定义了一个效用函数,综合考虑了多个关键指标:
- 标准化基准性能得分pscore∈[0,1]p_{score} \in[0,1]pscore∈[0,1]
- wall-clock时间ptimep_{time}ptime
- 成本 pcostp_{cost}pcost
基础效用计算公式为:
U=wscorepscore+wcost(1−min(1,pcost/$10))+wtime(1−min(1,ptime/300s)) U=w_{score} p_{score}+w_{cost}\left(1-min \left(1, p_{cost} / \$10\right)\right)+w_{time}\left(1-min \left(1, p_{time} / 300 s\right)\right) U=wscorepscore+wcost(1−min(1,pcost/$10))+wtime(1−min(1,ptime/300s))
其中,系数设置为 wscore=0.5w_{score}=0.5wscore=0.5,wcost=0.25w_{cost}=0.25wcost=0.25,wtime=0.25w_{time}=0.25wtime=0.25。该函数将最坏成本限制在每个问题10美元,并设定300秒的超时时间。为了对超时前完成的工作给予部分 credit,最终效用计算如下(超时惩罚(\tau=0.5)):
Ufinal={U(1−τ),iftimedoutU,otherwiseU_{final} = \begin{cases}U(1-\tau), & if timed out \\ U, & otherwise \end{cases}Ufinal={U(1−τ),U,iftimedoutotherwise
值得注意的是,由于没有进行任何权重更新,这个数值分数仅用于选择下一个元智能体以及下一次迭代的基础智能体。
初始智能体的核心组件
SICA的初始编码智能体具备一系列精心设计的组件,为自我改进奠定了基础:
- 工具集:包括打开和关闭文件、覆盖文件、执行shell命令、计算器工具等,还有提交最终答案、从子智能体调用向调用者返回结果、提前退出子智能体调用等工具,以及用于提取档案库中每个智能体迭代的高级汇总统计信息的“档案分析”工具。
- 子智能体:初始包含编码智能体、问题解决智能体和推理智能体。子智能体的引入一是确保基准任务能在没有人工指导的情况下完全自主运行,二是管理扩展智能体运行的上下文长度。当子智能体返回时,子任务使用的上下文会被自然丢弃,子智能体返回的值在主智能体的上下文中提供该子任务的摘要。
- 异步监督器:这是一个在并发线程中定期运行的LLM,负责判断是否存在病态行为或偏离原始任务的情况。它可以通过在助手上下文中插入消息来通知当前运行的智能体(或其任何父智能体),在严重情况下还能取消智能体的执行。监督器每30秒调用一次,或在关键事件发生时调用,它会收到系统状态的全面文本表示,包括智能体和子智能体执行的“调用图”,以及与每个智能体调用相关的LLM消息、工具调用和响应、子智能体调用和响应的事件流。
精心设计的上下文窗口结构

智能体上下文的结构至关重要,其中包含打开的文件内容等信息,而非仅仅是提示词。初始编码智能体的上下文结构如下:
- 系统提示:首先呈现包含智能体定义(来自附录A)的系统提示,列出智能体可用的工具定义和可调用的子智能体,最后是系统信息,如如何退出智能体循环并返回调用进程的说明。
- 核心提示:作为聊天模板格式中的第一条用户消息,包含调用者指定的要处理的问题陈述,还会插入智能体已打开文件的视图以及当前工作目录的表示。
- 助手消息:包含关于问题的思维链推理,穿插着工具调用及其响应、子智能体调用及其响应,以及异步监督器系统的任何通知或评论。
这种LLM上下文布局允许附加新内容,从而保留KV缓存,有利于减少工具调用之间的延迟和成本。对于基础智能体,采用一种简单方案,将文件编辑作为差异附加,在累积到一定数量后定期重新合并到陈旧的文件视图中。智能体还可以编写更复杂的KV缓存保存方案来降低成本。
实验设计与令人瞩目的结果
为了验证SICA的性能,研究团队进行了一系列实验,涵盖了不同类型的基准测试任务,取得了显著的成果。
多样化的基准测试集
实验中使用的基准测试集包括:
- SWE Bench Verified:包含50个随机选择的问题,测试问题分解、代码导航以及快速高效的文件编辑能力。
- LiveCodeBench:选取50个随机问题,这些问题类似于竞争性编程,通常包含更多的理论推理。
- 合成基准任务:完全在智能体代码库内定义和策划的两个示例任务。一是文件编辑基准,通过克隆SWE bench中使用的存储库,在连续提交中找到“有趣的”(即非 trivial,也非完全覆盖)文件编辑,将存储库在第一个提交时检出并挂载到工作目录,提示智能体编辑文件使其与第二个提交的目标内容匹配,根据最终文件内容与目标内容的接近程度评分。二是代码库导航问题,通过克隆一些Python存储库,从中识别“有趣的”符号以及该符号在项目中的至少一个引用,任务是让智能体定位该符号的定义,并按照path/to/file.py:line_num:column_num的格式返回位置。
实验设置细节
智能体系统运行时,大多数智能体使用Sonnet 3.5(v2),“推理智能体”除外,它使用o3 mini。虽然基础智能体系统可以在更小、更便宜的模型上运行,且许多基准任务可以由此类模型解决,但元改进任务是复杂的长期任务,需要强大的模型支持。15次迭代运行的API成本约为7000美元。
性能提升的显著表现

实验结果显示出令人鼓舞的进展。在文件编辑基准测试中,智能体最初仅具备覆盖文件的能力,这种方式速度慢且令牌效率低,但它很快实现了基于差异和范围的自称为“智能”的编辑工具。在符号导航任务中,智能体在第9次迭代时实现了一个简单的基于AST的符号定位器,这在其他任务中也带来了良好的改进。SWE Bench Verified子集的性能在整个运行过程中显著提升,这得益于智能体框架的改进。LiveCodeBench分数也有细微改进,尽管不如其他一些基准测试明显。
从表1中的详细迭代级性能数据可以更清晰地看到这种进步。在SWE-Bv(SWE Bench Verified)上,性能从初始迭代0的0.17逐步提升到迭代14的0.53,提升幅度达到了惊人的53%,充分证明了SICA自我改进的有效性。
推理任务中的表现与局限

除了编码相关任务,研究团队还评估了自指智能体系统在更注重推理的领域中改进任务性能的效果,选择了AIME 2024和GPQA Diamond两个问答任务进行实验。
然而,结果显示改进较少,这凸显了基础模型与支架系统之间的重要相互作用。图4中第0次迭代使用的基础智能体系统采用Sonnet 3.5,带有一个使用o3-mini的“推理”子智能体。单独的o3-mini模型在AIME和GPQA Diamond上以“高”推理努力分别获得87%和79%的分数,而整个智能体系统在两个基准测试中的平均得分为76%。
通过检查轨迹发现,在许多运行中,主智能体仅仅将问题委托给基于o3-mini的推理智能体,没有充分利用智能体系统的全部能力。对于像o1、o3-mini或DeepSeek的R1这样的“推理模型”,研究人员怀疑,包含旨在诱导推理行为的粗糙组件(如第4和第6次迭代中包含的组件)实际上可能会中断在智能体系统之外训练的推理模型的思维链,导致性能下降。这表明未来的工作需要联合训练“智能体”LLMs和智能体系统设计,以更好地利用两者的优势。
局限性与未来展望
尽管SICA取得了显著成功,但它仍存在一些局限性,同时也为未来的研究指明了方向。
当前的局限性
- 创新想法的生成挑战:让基于LLM的智能体在每个元改进步骤自主提出真正新颖、创新、可行且有趣的修改想法是一个关键难题。选择一个糟糕想法的代价是漫长的智能体编辑步骤,随后是更昂贵的基准测试运行。尽管失败的迭代会保存在档案库中,原则上可作为反面例子,但初始特征想法往往会严重影响后续特征想法,导致它们成为同一主题的变体。这种路径依赖可能导致智能体运行的更高方差,质量差的初始特征建议通常会降低后续特征建议的质量。
- 超时和成本限制的影响:在优化智能体运行时间和成本时,相对较短的5分钟超时(在较小程度上是每个问题的成本限制)导致初始基准分数可能低于基础语言模型(如Sonnet 3.5 v2)的预期,特别是对于像SWE-Bench这样的长期基准任务。实际上,报告的初始改进很大程度上来自于加快文件编辑和降低智能体成本的功能,而这些在传统的SWE-Bench数值中没有得到同等程度的反映。
未来的研究方向
- 联合更新基础模型权重与智能体系统:SICA采用的是非基于权重的学习机制,通过优化模型所依据的提示以及通过编辑底层代码来协调LLM调用的方式来更新系统行为,这种方式在某种意义上具有很高的样本效率。然而,联合更新基础模型的权重与智能体系统具有巨大潜力。AlphaEvolve的工作证明了这一原理,更明确地微调基础模型以在每次迭代中使用新创建的工具和支架可能会取得丰硕成果。
- 自动化基准设计与策划:在相对较短的运行中,尚未达到基准饱和点,但未来的系统可能会从静态基准集中耗尽可学习的内容。解决这个问题的一种方法是通过自动化设计和策划基准,如OMNI-EPIC的工作所示,其中RL环境是用代码设计的。通过在工作中包含两个完全由智能体通过手动提示策划的合成基准(文件编辑和符号导航基准),证明了SICA足够灵活,可以支持为自身创建新的基准和评估。
安全考量:确保自我改进的可控性
随着自我改进系统的发展,安全问题至关重要。虽然SICA在某些智能体任务中表现出改进,但纯支架系统(如图4所示,不修改模型权重)的成就似乎存在限制。如果系统同时更新模型权重和支架,递归自我改进系统的风险将会更高。研究团队提出了两种关键的风险缓解机制。
可观测性机制
可观测性是此类系统中的一个关键安全缓解措施,即人类能够监督潜在自我改进系统的所有方面。因此,SICA的架构配备了复杂但用户友好的可观测性机制,提供对每一步的思维链、动作和子智能体调用的丰富洞察。其中包括一个交互式Web界面,便于监督智能体系统中发生的所有事件,以及异步的基于LLM的监督器,它可以被提示将各种行为视为取消智能体的理由,并且可以使用与运行中的智能体不同的LLM。鉴于没有模型权重更新(这使得模型难以在思维链中编码例如速记消息),这种可观测性机制提供了强大的安全缓解。但对于同时更新模型权重的递归自我改进系统,仅靠可观测性机制显然是不够的,还需要进一步研究安全机制。
基于迭代评估的更新程序
基于迭代、评估的更新程序是安全缓解的另一个机会。虽然初始基准集侧重于衡量希望改进的能力,但完全可以在基准集中包含与安全相关的评估,在每个智能体作为元智能体进入下一次迭代之前对其进行验证。
研究团队认为,这项工作不会产生任何重大的、直接的不利社会后果,其目标要么是通过长期编码任务改进代码编辑机制,要么是提高多步骤推理的有效性。
结语:开启智能体自我进化的新纪元
SICA的提出和实现,标志着智能体系统进入了一个新的发展阶段。通过自主编辑自身代码库实现自我改进,SICA在SWE-Bench Verified等基准测试中展现出从17%到53%的性能提升,同时平均每个问题的花费时间也略有减少。这一成果证明了自我改进在智能体系统中的可行性,尤其是在那些基础LLMs能从支架系统的结构和指导中显著获益的长期“智能体”任务中。
SICA框架不仅提供了一种自动化智能体系统设计的实用方法,也为未来联合训练基础模型与其智能体系统奠定了基础。尽管目前还存在一些局限性,如创新想法生成困难、路径依赖等问题,但这些都为未来的研究指明了方向。
随着技术的不断发展,我们有理由相信,自我改进的智能体系统将在更多领域发挥重要作用。通过持续的研究和改进,解决安全问题和性能瓶颈,智能体将能够实现更高效、更可靠的自我进化,为人工智能的实际应用带来更广阔的前景。SICA的突破性进展,无疑为这一未来开启了一扇充满希望的大门。
更多推荐

所有评论(0)