daVinci-Agency:以数据高效的方式解锁长视野智能体能力 daVinci-Agency: Unlocking Long-Horizon Agency Data-Efficiently
利用GitHub PR链构建长视野训练数据,仅239个样本显著提升智能体性能
前置知识
长视野智能体(Long-Horizon Agency)
指能够处理跨越多个步骤、需要持续目标导向行为的复杂任务的AI智能体。与短视野任务(如单次代码补全)不同,长视野任务要求智能体在扩展的交互周期内维持方向感、进行迭代决策、管理状态演进,并有效缓解累积错误。例如,一个长视野软件工程任务可能涉及分析代码库、定位问题、实现修复、运行测试、处理反馈等多个阶段,整个过程可能需要数百次工具调用。
本文的核心目标就是提升LLM在长视野任务中的表现,理解这一概念是把握论文动机和贡献的基础。
Pull Request链(Chain of Pull Requests)
在软件开发中,多个Pull Request围绕一个共同的功能目标形成有序序列。后续的PR通常会修复前序PR中的缺陷、扩展功能或整合反馈。这种链式结构天然编码了跨阶段的依赖关系和状态演进信号。例如,PR #15可能添加了一个新功能,PR #21随后修复了该功能中的一个bug,PR #33可能进一步优化性能。这种自然的迭代过程为长视野学习提供了高质量的监督信号。
PR链是本文数据合成范式的核心数据源,理解其结构对于把握方法论至关重要。
拒绝采样(Rejection Sampling)
一种数据质量控制机制,通过评估函数对生成的轨迹进行筛选。具体来说,使用LLM评估器(GLM-4.6)计算生成的代码补丁与真实补丁之间的语义对齐分数,只有分数达到阈值(≥0.8)的轨迹才被保留用于训练。评估器还会提供文本反馈,支持最多三次迭代优化。这一机制确保训练数据的高质量和语义保真度。
实验表明,没有拒绝采样会导致性能灾难性下降(平均分从0.405降至0.205),它是本文数据质量的关键保障。
On-policy自蒸馏(On-policy Self-Distillation)
指使用同一模型(GLM-4.6)既作为轨迹生成器(rollout模型)又作为微调目标模型的训练范式。这与传统的知识蒸馏不同,后者通常使用更强的教师模型生成数据。在本文中,GLM-4.6通过自我探索在精心设计的长视野任务中生成轨迹,然后用这些轨迹微调自身。这意味着性能提升来源于模型内在潜力的释放,而非外部知识的注入。
这一特性使得daVinci-Agency的性能提升更具说服力,证明了数据结构本身(而非教师模型的能力)是关键因素。
研究动机
当前长视野智能体训练面临严重的数据瓶颈。现有数据构建方法存在两个主要问题:第一,基于合成环境的方法(如SWE-Smith、CodeAgent)通常局限于单特征开发场景,缺乏跨阶段演化的监督信号,受限于生成模型的分布,无法覆盖真实的失败模式和优化路径。例如,SWE-Smith虽然有66k个训练样本,但在Toolathlon上的表现仅为0.093,甚至低于基线模型的0.157。第二,人工标注方法虽然能提供更高保真度的监督,但收集、标注和质量保证过程复杂且成本高昂,难以规模化用于系统训练和评估。核心挑战在于:长视野任务的成功不仅依赖于扩展推理长度,更需要智能体在扩展周期内维持方向感、进行任务分解、保持长期一致性、执行迭代优化,而这些元技能只有在跨阶段依赖和错误累积的条件下才能有效习得。
本文的目标是本文旨在提出一种可扩展、数据高效且可验证的长视野智能体数据合成范式。具体目标包括:(1)利用真实世界软件开发的自然演化过程构建高质量长视野训练数据;(2)通过极少的训练样本(239个)实现显著的性能提升;(3)使模型内化任务分解、长期一致性和迭代优化等关键元技能;(4)探索长视野任务特有的数据扩展规律,为未来智能体训练提供理论指导。
与已有工作不同的是,本文的独特切入角度在于将数据合成的视角从孤立的问题求解转向真实世界的软件演化。现有方法将每个步骤独立处理,而daVinci-Agency的核心洞察是:GitHub Pull Request序列天然编码了长视野学习所需的监督信号。PR链将复杂目标分解为可验证的提交单元,通过迭代保持功能一致性,并通过真实的bug修复历史编码优化模式。这种PR驱动的结构天然保留了因果依赖和迭代优化,这对于教导持久的目标导向行为至关重要,并且能够自然地与项目级别的全生命周期任务建模对齐。与合成轨迹不同,daVinci-Agency从PR演化中提取结构化监督,而不是将关键技能视为隐式副产品。
核心方法
daVinci-Agency的方法论可以概括为从真实软件演化中提取结构化监督。整体思路是:首先从GitHub上选择高质量的开源仓库,利用GitHub API的元数据和提交消息中的引用关系构建PR依赖拓扑,形成语义链接的PR链。然后,使用LLM为每个PR生成意图导向的查询(query),这些查询描述了要解决的问题但不包含具体实现细节。接下来,在顺序执行环境中部署智能体进行轨迹生成,要求智能体逐阶段解决PR链中的任务,前一阶段的代码修改会显式传播到下一阶段。最后,通过拒绝采样机制筛选高质量轨迹,构建训练数据集。技术路线的核心是将软件开发的自然迭代过程转化为可验证的长视野训练信号。
本文的核心创新点在于将Pull Request链作为长视野监督信号的来源,这与已有方法存在本质区别。现有方法(如SWE-Smith)基于单一issue生成轨迹,每个任务独立,缺乏跨阶段依赖;或者基于时间顺序拼接PR,缺乏显式的语义链接。而daVinci-Agency的关键洞察是:真实的软件开发是一个持续迭代的过程,多个PR围绕同一功能目标形成因果依赖链。这种结构天然编码了三种关键的长视野元技能:(1)任务分解——通过连续提交将复杂目标分解为可管理的子任务;(2)长期一致性——通过统一的功能目标强制维护全局对齐;(3)迭代优化——通过真实的bug修复轨迹提供可验证的优化信号。本质上,daVinci-Agency不是生成训练数据,而是挖掘真实世界中已存在的长视野结构。
方法步骤详情
daVinci-Agency的数据构建流程包含三个主要步骤:第一步是PR链构建(PR-Chain Combination)。利用GitHub API的元数据,包括提交消息和评审评论中的显式引用,构建依赖拓扑 $C = \{pr_1, ..., pr_k\}$,其中 $pr_i \xrightarrow{ref} pr_{i-1}$ 表示 $pr_i$ 迭代、修复或扩展了前序PR引入的功能。这种拓扑捕获了真实世界迭代的非连续性(例如PR #21迭代PR #15)。第二步是查询构建(Query Construction)。为PR链中的每个PR生成意图导向的子查询,阐明当前步骤要解决的核心问题和推理链,同时解释相关符号和变量的角色。关键设计是故意省略具体实现细节,迫使智能体在rollout过程中充分锻炼代码导航和定位能力。同时,为初始查询添加整个PR链的全局概览。第三步是轨迹生成与筛选(Rollout and Filtering)。在顺序执行环境中,智能体逐阶段解决任务,前一阶段的代码修改通过状态转换机制传播到下一阶段:$S^{(t)}_{init} = B_t \oplus \Delta\tau_{t-1}$,其中 $B_t$ 是阶段t的基础代码库,$\Delta\tau_{t-1}$ 是前一阶段的累积代码补丁。使用GLM-4.6评估器进行拒绝采样,语义对齐分数大于等于0.8的轨迹被保留。
技术新颖性
daVinci-Agency的技术新颖性体现在多个层面。首先,在数据源选择上,本文首次系统性地利用GitHub PR链作为长视野训练数据的来源,这与传统的合成环境或人工标注方法形成鲜明对比。其次,在数据构建范式上,本文提出了挖掘而非生成的哲学——不是通过LLM生成新的轨迹,而是从真实软件演化中提取已存在的长视野结构。第三,在状态传播机制上,本文设计了基于文件修改传播的显式状态转换,确保后续任务严格建立在智能体自身演化的代码状态之上,这强制模型面对长期一致性和错误累积后的优化问题。第四,在评估设计上,本文揭示了长视野任务特有的数据扩展规律:训练视野的扩展和推理时交互预算的增加是持续突破性能上限的关键机制。最后,本文证明了On-policy自蒸馏的有效性——仅使用GLM-4.6自身生成的轨迹就能实现显著提升,表明数据结构而非教师模型能力是决定性因素。
实验结果
实验结果表明daVinci-Agency在数据效率和性能提升方面表现出色。在主要实验中,仅用239个训练样本微调GLM-4.6,在所有基准测试上都取得了显著提升:SWE-bench从0.608提升至0.632,Toolathlon从0.157提升至0.231(47%相对提升),DS-1000从0.522提升至0.526,τ²-bench-retail从0.675提升至0.707,SciCode-MP从0.062提升至0.154。平均分从0.441提升至0.475。与基线数据集的对比更为惊人:SWE-Smith使用66k样本仅达到0.373平均分,CodeAgent使用59,939样本仅达到0.281,而daVinci-Agency仅用239样本就达到0.475。在AgencyBench Code多轮长视野任务上,GLM-4.6-daVinci-Agency达到15.9分,显著超过基线模型(最高11.9)。在效率方面,训练后的模型在SWE-bench上平均token消耗减少113.6K,工具调用减少最高25.8%,表明模型内化了高效的推理策略。跨模型泛化实验显示,在Qwen3系列(包括MoE和密集架构)上也取得一致提升,证明方法的模型无关性。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 软件工程问题解决 | SWE-bench Verified | 0.632 | 0.608 (GLM-4.6原始) | +3.9%相对提升 |
| 工具利用能力 | Toolathlon | 0.231 | 0.157 (GLM-4.6原始) | +47.1%相对提升 |
| 数据科学代码生成 | DS-1000 | 0.526 | 0.522 (GLM-4.6原始) | +0.8%提升 |
| 交互式任务(零售领域) | τ²-bench-retail | 0.707 | 0.675 (GLM-4.6原始) | +4.7%提升 |
| 科学编程 | SciCode-MP | 0.154 | 0.062 (GLM-4.6原始) | +148.4%相对提升 |
| 多轮长视野任务 | AgencyBench Code | 15.9 | 11.9 (GLM-4.6原始) | +33.6%提升 |
局限与改进
尽管daVinci-Agency取得了显著成果,但仍存在一些局限性。首先,受当前rollout成功率的限制,本文最多只能连接5个PR构建任务链,这限制了训练数据的视野长度。作者承认进一步延长这些链条是持续改进的可行路径。其次,数据构建依赖于高质量的GitHub仓库,需要满足规模(大于7000个PR)、社区互动性和语言多样性等条件,这可能限制了方法的适用范围。第三,当前的评估仅在软件工程相关基准上进行,对于其他领域的长视野任务(如多步推理、复杂决策)的泛化能力尚未验证。第四,拒绝采样的评估器使用GLM-4.6自身,可能存在评估偏差。最后,尽管训练样本数量少(239个),但每个样本的轨迹很长(平均85k tokens),这意味着训练的计算成本并不低,只是数据效率高。
独立分析的弱点
本文存在几个值得深入分析的弱点。首先,PR链的构建依赖于GitHub提交消息中的显式引用,这可能导致许多潜在有价值的依赖关系被遗漏。改进方向可以是开发更智能的依赖检测算法,利用代码语义相似性、文件修改重叠等信号补充显式引用。其次,当前的查询构建使用LLM从PR数据反向工程意图,这个过程可能引入噪声或丢失关键信息。可以探索更结构化的查询模板或引入人类专家验证。第三,状态传播机制仅基于文件级别的补丁应用,对于复杂的代码重构或跨文件依赖可能不够精细。可以考虑引入更细粒度的代码图分析。第四,评估器的阈值(大于等于0.8)是固定的,可能过于严格或过于宽松,自适应阈值策略可能更优。最后,当前方法仅在代码生成领域验证,对于其他需要长视野的领域(如机器人控制、复杂规划)的适用性需要进一步探索。
未来方向
作者提出和基于成果可延伸的未来研究方向包括:第一,突破当前rollout成功率的限制,构建更长的演化链条(超过5个PR),这需要改进智能体的基础能力和rollout策略。第二,探索训练视野扩展和推理时交互预算扩展的协同效应,建立更完整的长视野任务扩展规律。第三,将daVinci-Agency范式扩展到软件工程之外的领域,如科学发现、复杂系统设计等需要长期迭代优化的任务。第四,开发更先进的PR链构建算法,利用代码语义分析、变更影响分析等技术自动发现隐式依赖关系。第五,研究如何将长视野训练与其他训练范式(如强化学习、人类反馈)结合,进一步提升智能体的适应性和鲁棒性。第六,探索更高效的拒绝采样策略,降低数据构建的计算成本。最后,研究长视野任务中涌现的元技能如何迁移到短视野任务,以及如何量化和评估这些元技能的习得程度。
复现评估
从复现性角度来看,本文具有较好的可复现性。作者承诺开源代码、模型和数据集。训练框架使用公开的slime框架,训练参数在附录中详细列出(包括学习率2e-6、batch size 64、2个epoch等)。使用的9个GitHub仓库是公开的,PR数据可以通过GitHub API获取。然而,完全复现仍面临一些挑战:首先,rollout过程需要大量计算资源(每个样本平均85k tokens、116次工具调用);其次,拒绝采样的评估器使用GLM-4.6,这本身是一个商业模型,可能无法完全复现相同的评估标准;第三,PR链的构建依赖于特定时间点的GitHub数据,随着时间推移数据可能变化。总体而言,核心方法论和训练流程是可复现的,但数据构建的精确复现可能需要额外努力。
论文图表
展示了三个层次的软件工程任务:函数级别(单个函数实现,约1次工具调用)、功能级别(单个功能的离散问题解决,约40次工具调用)、项目演化级别(跨版本的持续演化,超过100次工具调用)。daVinci-Agency关注的是项目演化级别,需要智能体处理项目持续演化的生命周期。
这张图清晰定位了daVinci-Agency在软件工程任务谱系中的位置,说明了为什么现有的函数级和功能级方法不足以培养长视野能力。