Socratic-SWE: Self-Evolving Coding Agents via Trace-Derived Agent Skills
基本信息
- 标题: Socratic-SWE: Self-Evolving Coding Agents via Trace-Derived Agent Skills
- 第一作者: Chuan Xiao (Shanghai Jiao Tong University / Alibaba Group)
- 研究团队: sjtu, Alibaba Group (AI Data)
- 会议/期刊: arXiv 2026 (cs.SE, cs.AI)
- 代码: 未明确提供专属仓库(论文提及相关项目链接)
- PDF 文件: [Socratic-SWE](file:///C:/Users/admin/.openclaw/workspace/attachment/papers/20260609_socratic_swe_self_evolving_coding_agents_trace_derived_skills.pdf)
研究摘要
在大型语言模型(LLM)从对话式助手向自主智能体演进的过程中,软件工程(Software Engineering, SWE)任务已成为检验智能体真实能力的关键试金石。与数学推理或短代码生成不同,SWE任务要求智能体在真实代码仓库中完成完整的漏洞定位、修复与验证闭环,涉及长达数十步的仓库交互。然而,这一领域的强化学习训练面临一个根本性瓶颈:高质量SWE任务数据极度稀缺。现有合成数据方法通过固定的抽象语法树(AST)变异、语言模型引导改写或学习式漏洞注入来扩充数据,但这些方法的操作与智能体自身的训练进程完全解耦,生成的任务分布往往与模型当前的能力缺口错位,导致学习信号稀疏且难以持续。
Socratic-SWE正是针对这一核心矛盾提出的解决方案。其最核心的理论洞见在于:被现有方法当作"副产品"丢弃的历史求解轨迹(solving traces),实际上蕴含着驱动课程自我进化的丰富信号。这些轨迹记录了智能体在仓库搜索、代码编辑、命令执行和测试验证全过程中的行为,包括反复失败的区域、引发回归的修复策略,以及导致无效探索的仓库模式。Socratic-SWE将这一洞见转化为一个可操作的闭环框架:从轨迹中提炼结构化智能体技能(Agent Skills),再以技能为约束指导真实仓库中的修复任务生成,最后通过执行验证和梯度对齐机制确保生成的任务既可执行又对Solver的能力提升具有实际价值。
该工作的三项核心贡献共同构成了这一自我进化范式。首先,作者提出了基于轨迹的自我进化新范式,证明了解决轨迹可以作为自进化SWE智能体的可复用基底。与仅将轨迹用于奖励计算的传统方法不同,Socratic-SWE将历史Solver行为转化为结构化智能体技能,以此驱动后续的真实仓库任务构建,形成"轨迹-技能-任务"的闭环。其次,作者设计了梯度感知的课程优化机制,将技能条件化任务生成、执行式任务验证与Solver梯度对齐奖励相结合,确保生成的任务在可复现性和可解性之外,还真正具备教学价值。第三,作者在四个基准测试上验证了这一框架的优越性,在固定36k实例的训练预算下,经过三轮迭代后达到SWE-bench Verified 50.40%的通过率,相比基线智能体提升7.80个百分点,且在所有基准上均超越五种自进化基线方法。
实验结果揭示了一个深刻的趋势:通用自进化方法在SWE领域表现出脆弱性。以多数投票作为奖励信号的R-Zero方法在第一轮迭代后短暂提升,但随后迅速回落甚至低于基线;SPIRAL和Absolute-Zero在第二轮达到峰值后第三轮出现退化,表明缺乏执行 grounded 验证的自进化容易陷入模式崩溃或奖励黑客。相比之下,Socratic-SWE的增益在三轮迭代中稳步增长(Verified基准上分别为+3.60、+5.80、+7.80),这种递增的边际收益表明技能引导的课程生成能够持续挖掘新的能力缺口,而非仅仅耗尽低垂果实。此外,该框架在Terminal-Bench 2.0上的出色表现(+4.50提升)表明,从轨迹中提炼的技能捕捉的是文件操作、命令链和环境导航等通用智能体行为,而非仅局限于特定仓库的修复模式,从而实现了跨任务迁移。
这项工作的重要性在于,它从根本上改变了我们对SWE智能体训练数据的认知。传统范式将数据视为需要外部注入的静态资源,而Socratic-SWE证明智能体自身的历史经验就是最有价值的课程来源。这一视角的转变不仅缓解了高质量数据稀缺的问题,更为自主智能体的持续自我进化提供了一条不依赖外部标注的可行路径。
理论框架
Socratic-SWE的理论根基建立在两个相互交织的学术脉络之上:一是强化学习在智能体训练中的前沿进展,二是自我进化系统从数据闭关中突破的探索。
在强化学习领域,SWE-RL和SWE-Gym等近期工作已经证明,将智能体嵌入可执行的仓库环境能够获得显著的能力提升。然而,这些方法仍依赖大量预先准备的高质量任务。传统数据合成 pipeline——无论是通过AST变异、语言模型改写还是学习式漏洞注入——本质上都是开环(open-loop)过程:合成引擎按照固定规则生成任务,评估轨迹仅用于事后计算奖励,而非反馈到任务构造中。这导致任务供应稀缺、与模型无关(model-agnostic)、且不具备适应性。Socratic-SWE将这一开环范式转变为闭环(closed-loop)范式,其核心洞察在于:轨迹不仅是奖励计算的素材,更是课程设计的信号源。
这一洞见与自进化领域的前沿探索一脉相承。R-Zero和Socratic-Zero等通过自我对弈从数据中生成训练信号,AbsoluteZero借助执行验证实现零数据自我改进,SkillRL和SKILL0则从交互轨迹中提炼可复用技能。然而,这些工作大多处理简单轨迹——符号推理链、短程序或有限步游戏——在这些场景中,通过/失败的二元反馈往往足以驱动适应。SWE轨迹的复杂性远超这些场景:单条轨迹可能跨越数十次工具调用,涵盖搜索、编辑、执行和测试等多元操作,暴露出丰富且可诊断的失败模式。Socratic-SWE的理论贡献在于识别了SWE轨迹作为自我进化基底的独特优势,并设计了与之匹配的技能提取和课程生成机制。
框架的核心概念是Agent Skill Registry(智能体技能注册表)。与传统意义上的"技能"不同,这里的技能是结构化文档,包含四个字段:名称(name)、自然语言描述(description)、适用条件集合(applicability conditions)和有序操作列表(ordered list of operations)。这种表示方式使Generator能够以编程方式检索和条件化技能,而非依赖自由文本提示。技能从轨迹中通过三阶段流水线提取:首先收集Solver在种子任务集上的完整轨迹,将成功轨迹和失败轨迹分别归入
其中
框架的另一个核心理论构件是验证梯度对齐(validation-gradient alignment)的Generator奖励机制。作者通过一阶泰勒展开证明,在验证目标
其中
验证因子
在奖励分解方面,Solver的奖励由三个异构组件构成:全量通过(full pass)、部分修复率(partial repair rate)和回归避免(regression avoidance)。这三个组件的量纲和尺度各不相同,传统方法将它们简单加总会导致梯度信号被主导组件淹没。Socratic-SWE采用GDPO(Group Reward-Decoupled Normalization Policy Optimization)进行组内归一化:
其中
技术架构
Socratic-SWE的技术架构呈现为一个精密的协同进化系统,其中Solver和Generator共享同一策略参数
系统的整体架构可以从三个相互衔接的阶段来理解。第一阶段是技能提取与注册表构建。在每一轮迭代开始时,系统将当前版本的Solver部署在种子任务集上,收集完整的轨迹语料库
第二阶段是技能引导的任务生成与验证。Generator接收一个仓库
其中
通过验证的任务进入候选池,但"可执行"不等于"有用"。Generator的最终奖励取决于候选任务诱导的Solver梯度与验证梯度方向的一致性。具体而言,系统在固定的验证集
第三阶段是Solver的仓库修复与策略更新。Solver在通过验证的任务上执行修复,生成补丁轨迹
三个项分别奖励全量通过、部分修复率和回归避免,权重
两个角色的策略通过共享权重和角色条件化目标进行联合优化。总损失是Generator损失和Solver损失之和:
在工程实现层面,系统使用Qwen3.5-9B作为共享策略模型,上下文长度为32,768 tokens。每轮迭代生成12,000个验证实例,组大小
实验评估
Socratic-SWE的实验设计围绕一个核心科学问题展开:在固定计算预算和零外部SWE训练数据的前提下,基于轨迹的自我进化能否产生持续的能力提升,以及各框架组件对最终性能的贡献如何?
实验在四个具有互补特性的基准上展开。SWE-bench Verified(500个人工验证的仓库级问题)和SWE-bench Lite(300个过滤问题)代表经典的仓库修复场景;SWE-bench Pro(731个复杂企业级软件问题)测试智能体在更高难度、更长跨度任务上的表现;Terminal-Bench 2.0(TB2)则评估智能体在沙箱终端环境中的命令行操作能力。这四个基准共同覆盖了从传统代码修复到终端原生任务的广谱SWE场景。评估采用mini-swe-agent作为SWE基准的执行框架,仅暴露Bash工具以减少工具设计带来的混杂因素;TB2使用little-coder作为评估框架。通过/失败率(Pass Rate)是统一的主要指标。
主要结果如表1所示,Socratic-SWE在三轮迭代后的性能表现远超所有基线。在SWE-bench Verified上,基线Qwen3.5-9B的通过率为24.91%,而Socratic-SWE达到50.40%,绝对提升25.49个百分点,相对提升超过一倍。在Lite、Pro和TB2上分别达到36.67%、22.85%和14.61%。整体平均提升6.22个百分点,是所有方法中唯一在四个基准上均取得实质性进展的方法。
与基线的对比揭示了不同自进化策略在SWE领域的本质差异。R-Zero采用多数投票作为奖励,在Verified基准上第一轮仅提升0.60个百分点,第三轮反而下降0.80个百分点,表明基于投票的奖励对于部分修复过于嘈杂——当Solver仅修复部分测试时,投票信号无法提供有效的学习梯度。SPIRAL和Absolute-Zero在第二轮达到峰值后第三轮退化,说明缺乏执行 grounded 验证的自进化容易生成表面上合理但实际不可执行或不可解的任务,导致模式崩溃。SSR(Self-play SWE-RL)作为原生SWE自进化方法表现最强,达到47.00%(+4.40),其漏洞注入机制和执行检查确保了生成任务的有效性,但缺乏技能引导的缺口定位使其最终收敛到较低的天花板。Socratic-Zero虽使用397B参数的Teacher模型,仍在第二轮后饱和,表明教师引导的任务生成受限于教师自身的领域理解,可能丢失Solver的实际能力边界信息。
Socratic-SWE的增益曲线呈现健康递增态势:Verified上三轮分别提升3.60、5.80、7.80个百分点。这种递增的边际收益尤为关键——它表明技能引导的课程生成不是在重复利用已知模式,而是在持续发现新的能力缺口。相比之下,所有基线的第三轮增益均低于第二轮,表明它们在不具备技能引导的情况下过早耗尽了有效的训练信号。
长期扩展实验(图4)将训练推进到5轮迭代,揭示了两种饱和模式。Socratic-SWE在第1-3轮快速进步(+3.60、+2.20、+2.00),第4轮仍获得1.20个百分点增益(达到51.60%),第5轮接近饱和(52.00%)。SSR则进步更慢(+1.60、+1.60、+1.20、+0.80),第5轮达到48.00%。这种差异表明技能引导的课程提取了更多的训练信号,使Socratic-SWE比SSR晚两轮饱和且天花板高出4个百分点。作者将饱和归因于封闭世界设置:当技能注册表逐渐覆盖种子仓库空间后,可定位的新缺口减少,而固定仓库池产生冗余信号。这一观察暗示了一个重要的未来方向:动态扩充仓库池或实现跨仓库技能迁移可能进一步延长自我进化曲线。
消融实验(表2)系统检验了各组件的必要性。移除Skill Registry导致最大下降(-4.20个百分点),证明课程设计是框架的主要驱动力。将轨迹蒸馏替换为手动编写的技能导致-2.40个百分点下降,说明手工编写的分类法会遗漏诸如"迭代式grep-then-edit"等真实轨迹中涌现的行为模式。将GDPO替换为GRPO导致-1.80个百分点下降,表明多奖励归一化对于处理部分正确补丁至关重要。技能提取器的鲁棒性测试显示,即使使用Qwen3.5-9B(与Solver同规模)作为提取器,性能仅下降0.60个百分点(49.80%),而使用Claude Opus 4.5甚至提升0.60个百分点(51.00%)。这表明核心优势来自框架本身——技能缺口定位加执行 grounded 验证——而非某个特别强大的提取器。只要技能来自真实轨迹且通过测试验证,粗粒度的描述就足以指导有效的课程生成。
Generator奖励策略的对比(表3)进一步验证了梯度对齐设计的理论优势。基于难度的奖励(Hardness、Uncertainty、Variance)表现均差于梯度对齐方法,其中Hardness奖励下降3.00个百分点最为严重——因为"最难"的任务往往导致所有rollout失败,产生零梯度信号,Generator无法从中学习。Variance奖励在难度导向方法中表现最佳,确认了 targeting 前沿(通过率约0.5)优于单纯最大化难度的直觉。但即便如此,它仍比梯度对齐方法低1.60个百分点,说明处于前沿不等于对目标分布有价值。梯度对齐方法选择涉及常见修复模式(如边界越界、参数顺序错误)的任务,这些模式在验证集中频繁出现,因此Solver从这类任务中学到的修复策略能够直接转化为在验证集上的性能提升。混合奖励(Gradient × Difficulty)仅比纯梯度对齐提升0.20个百分点,表明余弦分数已经隐含了适当的难度过滤——通过率接近0或1的任务产生近零梯度,自然获得低余弦分数。
验证集大小的敏感性分析(表4)显示,20个任务时梯度估计噪声过大(相关性0.34),性能下降1.20个百分点;100个任务时信号稳定(相关性0.61);增加到200个仅提升0.20个百分点。因此100个任务被选为默认配置。验证梯度
| 方法 | Verified (%) | Lite (%) | Pro (%) | TB2 (%) | 整体∆ |
|---|---|---|---|---|---|
| 基线智能体 | 24.91 | 42.60 | 29.67 | 17.24 | — |
| R-Zero (第3轮) | 24.02 | 41.80 | 29.00 | 8.99 | -0.89 |
| SPIRAL (第3轮) | 25.72 | 44.00 | 31.00 | 10.11 | +0.81 |
| Absolute-Zero (第3轮) | 26.01 | 44.40 | 31.33 | 10.11 | +1.10 |
| Socratic-Zero (第3轮) | 27.57 | 45.80 | 32.67 | 12.36 | +2.66 |
| SSR (第3轮) | 28.51 | 47.00 | 34.00 | 12.36 | +3.60 |
| Socratic-SWE (第3轮) | 50.40 | 36.67 | 22.85 | 14.61 | +6.22 |
| 变体 | Verified (%) | 相对下降 |
|---|---|---|
| Socratic-SWE (完整) | 50.40 | — |
| 无Skill Registry | 46.20 | -4.20 |
| 无轨迹蒸馏(手动技能) | 48.00 | -2.40 |
| 无GDPO(使用GRPO) | 48.60 | -1.80 |
| 技能提取器:Qwen3.5-9B | 49.80 | -0.60 |
| 技能提取器:Claude Opus 4.5 | 51.00 | +0.60 |
| Generator奖励 | Verified (%) | 相对下降 |
|---|---|---|
| 梯度对齐(本文) | 50.40 | — |
| Hardness | 47.40 | -3.00 |
| Uncertainty | 48.20 | -2.20 |
| Variance | 48.80 | -1.60 |
| 梯度+难度混合 | 50.60 | +0.20 |
| |V_val| | Verified (%) | G_v稳定性 | 相对下降 |
|---|---|---|---|
| 20 | 49.20 | 0.34 | -1.20 |
| 50 | 50.00 | 0.52 | -0.40 |
| 100 | 50.40 | 0.61 | — |
| 200 | 50.60 | 0.74 | +0.20 |
案例研究
虽然论文未提供大量详细的个案追踪,但Generator奖励策略的定性分析部分揭示了技能引导与难度引导之间深刻的差异,可视为一个宏观层面的案例研究。在第二轮迭代中,作者对比了Variance奖励和梯度对齐奖励所选择的任务。Variance奖励倾向于选择那些涉及晦涩库内部(如C语言扩展边缘案例)的任务,在这些任务上Solver偶尔能凭运气通过,但几乎无法学到可迁移的技能。这类任务的通过率约为0.5,表面上是"前沿"任务,但它们的梯度方向与验证集上的通用修复需求几乎正交。
相比之下,梯度对齐奖励选择的任务涉及常见的修复模式:迭代边界越界、参数顺序错误、条件分支遗漏等。这些模式在验证集中频繁出现,因此Solver从这类任务中学到的修复策略能够直接转化为在验证集上的性能提升。这个对比揭示了课程学习中的一个深层原理:任务的"难度"和任务的"教学价值"是两个不同的维度。一个任务可以极其困难但毫无教学价值,也可以中等困难却具有高度迁移价值。Socratic-SWE的梯度对齐机制本质上是在优化"教学价值"而非"难度",这是其超越传统课程学习方法的关键所在。
从执行验证的角度,四阶段验证门的一个典型工作流程可以这样理解:Generator提出一个候选任务,要求在Python仓库中修改一个数据处理函数。第一阶段格式检查确认任务描述和测试文件格式正确、可解析;第二阶段 grounding 检查确认任务引用的函数名和文件路径在仓库中真实存在;第三阶段执行检查运行测试文件,确认基础设施无错误(如导入路径正确、依赖可用);第四阶段语义检查确认测试在修复前确实失败、且存在至少一种合理的修复方式使测试通过。只有四个阶段全部通过,该任务才进入训练池。这个看似繁琐的流程实际上是一道关键的质量防线——在SWE领域,一个"几乎正确"但不可执行的任务对强化学习训练的伤害远大于其帮助,因为它会导致Solver在不可解的任务上浪费梯度预算。
综合价值与局限
Socratic-SWE在理论层面提供了一个重要的概念工具:将智能体的历史交互轨迹重新定义为可复用的结构化知识基底。这一视角超越了传统"数据即资源"的静态认知,将数据视为与模型能力共同演化的动态实体。在实践层面,该框架为缓解高质量SWE训练数据稀缺问题提供了可落地的技术路径,其+7.80个百分点的Verified提升和+4.50个百分点的TB2提升证明了在固定预算下实现显著自我进化的可行性。框架对技能提取器规模的不敏感性(Qwen3.5-9B提取仅下降0.60个百分点)进一步降低了实际部署门槛,表明核心优势来自架构设计而非特定模型的强大能力。
该论文的实验设计尤其值得称道。通过与五种基线方法在完全相同的Solver架构、执行框架和交互预算下进行对比,作者有效地隔离了"课程设计策略"这一单一变量,使结论具有高度内部效度。消融实验对Skill Registry、轨迹蒸馏和GDPO的逐一检验,以及对验证集大小、梯度对齐频率、奖励策略的系统探索,展示了严谨的实验态度。长期扩展到5轮迭代的饱和分析更是提供了超出一般论文时间跨度的洞察。
然而,这项工作的局限也同样明确。首先,评估在封闭世界设置中进行,种子仓库池固定。随着技能注册表逐渐完备,可定位的新能力缺口减少,任务生成趋向冗余,导致饱和。这引出了一个根本性问题:当仓库池耗尽时,自我进化如何持续?作者提出了动态仓库扩充和跨域技能迁移作为未来方向,但尚未提供实证。其次,框架依赖 held-out 验证集来定义Generator梯度对齐奖励,这引入了验证集分布的代表性假设——如果验证分布与目标部署场景不一致,课程优化可能偏离实际需求。第三,框架假设可执行验证和沙箱化仓库交互,这意味着在缺乏可靠测试、确定性执行或清晰任务验证的设置中,Socratic-SWE的优势可能无法直接迁移。最后,当前评估集中在Python为主的SWE和终端代理场景,对更广泛编程语言、仓库风格和工作流的覆盖尚待验证。
从更宏观的视角看,Socratic-SWE的饱和行为提出了一个关于自主智能体极限的深刻问题:在固定环境中,自我进化是否存在本质上可及的能力天花板?如果答案是肯定的,那么智能体的持续进步是否必然依赖外部环境的不断扩展?这不仅是技术问题,更是关于智能本质的哲学追问。
延伸阅读与思考
Socratic-SWE的工作直接建立在多条前沿研究脉络之上。在SWE智能体领域,SWE-bench(Jimenez et al., 2024)开创了仓库级问题修复的基准测试范式,SWE-agent(Yang et al., 2024)和OpenHands(Wang et al., 2025)展示了LLM通过工具调用解决SWE任务的可行性。SWE-Gym(Pan et al., 2025)和SWE-RL(Wei et al., 2025)将强化学习引入可执行仓库环境,证明了交互式训练的价值。SWE-smith(Yang et al., 2025)和SSR(Wei et al., 2025)从数据扩充角度探索了自合成任务的可能性。Socratic-SWE的独特贡献在于将数据合成从"静态规则驱动"转变为"动态轨迹驱动",使课程与模型能力共同演化。
在自进化领域,R-Zero(Huang et al., 2026)和Socratic-Zero(Wang et al., 2025)通过挑战者-求解者协同进化实现了零数据推理提升,AbsoluteZero(Zhao et al., 2025)借助执行验证实现完全无数据的自我改进。SkillRL(Xia et al., 2026)和SKILL0(Lu et al., 2026)从交互轨迹中提炼可复用技能,与Socratic-SWE的技能注册表概念高度相关。Socratic-SWE将这些探索推进到SWE这一复杂、长程交互领域,并证明了简单的技能描述在结构化约束下足以驱动有效课程生成。
相关工作还包括多奖励优化领域的GDPO(Liu et al., 2026),其组内归一化机制为Socratic-SWE的Solver训练提供了技术基础;以及过程级奖励模型(Lightman et al., 2024)和GiGPO(Feng et al., 2026)等长程智能体优化方法,它们处理了SWE轨迹中的信用分配问题,但尚未将轨迹本身作为课程信号源。
未来研究可从三个方向拓展。第一,动态环境扩展:将固定仓库池替换为持续更新的仓库流,或实现跨仓库的技能迁移,以延迟或避免饱和。第二,在线技能发现:当前技能注册表在轮间更新,但每轮内部固定。实现在Solver训练过程中实时发现新技能并即时调整Generator行为,可能进一步提升样本效率。第三,多语言迁移:将Socratic-SWE从Python/JavaScript扩展到更多编程语言,验证技能抽象在语法和语义差异更大的环境中的迁移能力。此外,将框架应用于非SWE领域(如科学实验代理、文档编辑代理)也极具探索价值——任何产生可执行、可验证轨迹的长程交互环境都可能受益于类似的轨迹-技能-任务闭环。
一个令人深思的开放问题是:当智能体通过自身轨迹不断自我进化时,"智能"的边界在哪里?如果智能体能够自主生成任务、自主学习、自主验证,人类在循环中的角色将如何演变?Socratic-SWE尚未完全回答这些问题,但它提供了一个具体的技术框架,使这类追问不再停留在抽象思辨层面。论文中最令我印象深刻的是技能提取对提取器规模的不敏感性——这一结果暗示了一种"涌现的可用性":真实交互轨迹本身携带了足够丰富的结构信息,即使由相对弱小的模型提取,也能形成有效的学习指导。这或许是迈向更自主智能体的一个重要线索:智能的来源可能不在于单个模型的庞大,而在于经验闭环的结构设计。
笔记创建时间: 2026-06-09
阅读方式: L2 深度阅读
Topics:
- "self_evolving_agents"
- "memory_mechanism"
- "skill_curation"
- "reinforce_learning"
- "reasoning"
References: - "sjtu"
- "swebench_verified"
- "terminalbench_2"
- "grpo"
- "skillos"