← 返回 2026-09-21

从大规模源代码合成可验证的智能体技能 Grounded Skill Synthesis from Code at Scale for Agentic Intelligence

Yongqi Tong, Pan Wang, Hang Wang, Jianshe Li, Xin Zhang, Jiang-Ming Yang, Wei Wu 📅 2026-09-04 👍 92 2026-11-02 18:30
代码挖掘 强化学习 智能体技能合成 检索增强 程序性知识 软件工程智能体

从 19,769 个 GitHub 仓库自动合成百万级智能体技能库,72 项评测平均提升 11.7%

前置知识

智能体技能库(Skill Library)

技能是封装可复用程序性知识及其适用条件的结构化记录,存储在模型权重之外,推理时按任务检索并注入上下文。技能库可独立于模型更新、版本化与部署,是给智能体持续加装领域能力的即插即用接口,被视为继模型参数和推理算力之外的又一能力扩展维度。

本文全部贡献围绕技能库展开:CodeSkillBank 就是一个含 1,006,822 条记录的技能库。只有理解技能作为 agent harness 组件的角色,才能理解「扩技能库」为何是与「扩参数、扩算力」并列的新扩展维度。

轨迹蒸馏(trajectory distillation)

从智能体自身执行轨迹(成功与失败的 episode、反思、补救过程)中自动总结可复用提示、流程或技能的方法族,代表工作包括 ExpeL、Trace2Skill、SkillRL 等,是自进化智能体的主流技能来源,但技能质量受限于生成轨迹的智能体能力。

论文把代码合成定位为与轨迹合成、文档合成并列的第三条路线;RQ2 直接与三个轨迹蒸馏技能库对比。理解轨迹法的环境耦合缺陷,才能读懂本文的差异化贡献。

检索增强生成(RAG)

推理时用任务相关查询 $q_t$ 从外部库取 top-$k$ 条最相关内容,渲染后拼入模型上下文,从而把参数外知识按需引入。检索深度 $k$、渲染格式(全文或摘要)与索引方式共同决定效果与上下文开销的权衡。

CodeSkillBank 的使用方式就是任务相关检索注入(论文式 1);RQ3 与 RQ4 研究的正是注入位置、渲染方式与目的索引等检索设计问题,如摘要渲染省 88.9% 上下文的结论。

SWE-bench Verified

基于真实 GitHub issue 的软件工程基准,要求智能体在真实仓库中定位并修复缺陷;Verified 是经人工核验的子集。本文使用固定的 475 题子集,以解决率衡量端到端软件工程能力。

它是主实验的核心基准:RQ1 中九组模型对比全部提升(如 Qwen3.6-27b 推理模式 30.53→50.32),RQ2 中领先最强轨迹基线(44.7 对 36.8),是「代码技能转化为工程能力」的最有力证据。

可验证奖励的编码强化学习(coding RL)

以测试通过率等可程序化验证的信号作为奖励对代码生成策略做强化学习,奖励可由 verifier(验证器模型)产生;verifier 可以访问策略端看不到的外部知识,形成信息不对称的多种接入方式。

RQ5 探索技能进入 RL 的三种位置——策略端提示、奖励侧参考、生成后审查——无技能对照 24% 对审查接口 38% 的对比只有在理解这一训练回路后才有意义。

研究动机

现有技能合成的两条主流路线都难以支撑「持续扩展」这一目标。轨迹蒸馏方法(如 ExpeL、Trace2Skill、SkillRL)从智能体自身执行轨迹中总结可复用流程,但技能与生成它的模型、任务分布、工具链和 harness 深度耦合:技能质量受限于生成智能体的能力上限与经验积累,一旦底层模型或环境组件升级,旧技能就可能失效甚至误导。文档驱动方法从静态人工文档合成技能,虽摆脱了对轨迹的依赖,却没有任何可执行证据可供落地与验证,容易产生缺乏支撑的过度泛化。与此同时,智能体面对多步软件工程、终端操作、系统交互等长程任务时,仅靠模型参数中的知识明显不足——论文的动机性证据是:无技能条件下九个模型设置在八个基准上的宏平均仅 42.90 分,例如 Qwen3.5-27b 无推理模式在 SWE-bench Verified 上只有 6.53 分。程序性知识迫切需要一种不依赖经验积累、又能被接地验证的外部来源。

本文的目标是本文的目标是把软件仓库中已被实现、调试、反复打磨过的海量代码,转化为智能体可直接检索使用的程序性技能,并建立「有据可依」(grounded)的技能合成新范式。具体包括三件事:其一,提出全自动流水线 Code2Skill,把筛选后的代码单元提升为原子操作(atomic)、组合工作流(composite)、复现模式(pattern)三类技能记录,每条记录同时刻画适用条件、执行步骤、不变量、失败处理、反目标与源码证据;其二,设计「源码盲重构 + 源码感知比对」的往返机制,自动验证每条记录是否被实现支撑;其三,在 2026 年 4 月 14 日前可用、star 数超过 500 的 19,769 个活跃 GitHub 仓库上构建含 1,006,822 条接受记录的 CodeSkillBank,并在 9 个模型设置、8 个基准、共 72 组协议匹配评测中系统验证其在推理期与训练期的效用,目标是在 42.90 的无技能宏平均上取得显著且一致的提升。

与已有工作不同的是,本文的独特之处在于选择源代码作为技能合成的「第三条路」。代码天然支持执行、评测、验证、维护和版本管理,恰好契合可复用技能的运维要求,而且完全不依赖智能体先积累交互经验。核心难点是「既要超越具体实现,又要保留足够实现证据」:真实代码混杂框架胶水代码、项目局部命名、重复实现与隐式依赖,好的技能必须抽象掉这些细节,同时保住边界条件、不变量与失败路径。作者的切入角度是反向验证——让 LLM 只读技能记录、不看源码函数体去重写实现,再用能看见源码的裁判比对重构结果:如果记录遗漏关键步骤或约束,重构就会暴露行为不一致。相比假设存在测试或形式化规约的属性测试路线,这种盲重构一致性检查不依赖任何规约,是可扩展到百万级仓库的接地过滤器;相比 Bi 等人从开源 agent 仓库挖 SKILL.md 的工作,本文有类型化记录、行级溯源元数据和覆盖 72 组对照的系统下游验证。

核心方法

直觉上,一个「黄金技能」应回答:何时适用、核心步骤是什么、须维持哪些不变量、哪些失败会改变执行路径、哪些泛化超出范围——这些信息恰是高质量代码里写明了的(图 2 的 DNS-over-QUIC 重试技能即一例)。Code2Skill 分四阶段:第一阶段候选证据选择,AST 解析器把仓库拆成函数、方法、命令行入口和文件级组件,LLM 标注器按六项评分筛选可复用单元;第二阶段技能记录生成,把选中单元抽象为原子、组合、模式三类粒度的技能卡;第三阶段接地验证,源码盲重构器只根据技能记录重写代码,源码感知裁判比较重构与原实现,直接接受或送仲裁;第四阶段检索化,通过受控词表特征标注与确定性目的聚类构建检索视图。下游使用统一为式 (1):给定任务 $x$ 与状态 $h_t$,查询 $q_t$ 后渲染 top-$k$ 技能 $z_t=\mathrm{Render}(\mathrm{TopK}_k(q_t;\mathcal{B}))$,再由策略产出 $a_t\sim\pi_\theta^{(s)}(\cdot\mid x,h_t,z_t)$,无技能对照即 $z_t=\varnothing$。

核心创新是把「技能是否被实现支撑」变成可自动判定的往返问题:重构器只看技能记录 $s$ 与接口元数据 $I_u^{\mathrm{rec}}$、看不到源码函数体 $b_u$,盲写 $\hat{b}_u\leftarrow M^{\mathrm{rec}}(s,I_u^{\mathrm{rec}})$;裁判 $M^{\mathrm{judge}}$ 同时看到源码与重构码,判定行为是否等价,等价则直接接受,否则仲裁器 $M^{\mathrm{adj}}$ 参考判定理由区分「技能无支撑」与「重构失败」。与已有方法的本质区别有三:其一,轨迹法需先积累经验、文档法没有可执行证据,代码法兼具「无需经验」的规模与「可重构验证」的接地;其二,验证不依赖测试或形式化规约,重构差异本身就是无支撑内容的暴露机制,因而能扩展到缺测试的真实仓库;其三,记录分离操作指导(when-to-use、workflow)与执行约束(invariants、error cases、anti-goals),并携带仓库、文件、符号、行级溯源,可审计、可刷新、可废弃。

方法步骤详情

第一步仓库采集:扫描 2026 年 4 月 14 日前、star>500 的 GitHub 仓库,得 19,769 个仓库源池。第二步单元选择:解析函数、方法、命令行入口与文件级组件,排除测试与二进制;LLM 标注器按可复用意图、过程步骤、边界条件、可迁移性、接口充分性、非平凡性六项打分,过滤 getter、薄包装与样板并设每仓库上限。第三步记录生成:抽取器输出 atomic/composite/pattern 三类的 JSON 技能卡(摘要限 80 词),worth_extracting=false 或 skill_value_score<0.45 被过滤。第四步验证:盲重构→等价判定→仲裁(算法 1),接受记录标记 accepted_stage。第五步检索化:按受控词表(16 任务族、36 能力标签、13 约束标签等)做特征标注,按「任务族+意图动作+意图目标」键做确定性目的聚类(算法 2),每簇按固定分数选既有记录作代表;检索视图与证据档案一对一保持。

技术新颖性

技术新颖性可从四个层面评价。问题层面,论文把 grounded skill synthesis 形式化为独立问题:从无经验、有证据的代码语料中构建可验证技能库,与轨迹蒸馏、文档合成并列成第三种范式。机制层面,源码盲重构是最关键的原创点——它把「信息充分性」转化为生成一致性测试:记录若遗漏关键步骤、边界或失败处理,盲写出的代码就难以在行为上对齐原实现,误差自动暴露;仲裁阶段进一步区分记录缺陷与重构失败以避免误杀(人审显示仲裁接受记录 88% 描述准确、84% 值得保留,尽管其初始重构正确率为 0)。数据层面,三种粒度与反目标、证据字段共同构成比代码摘要更丰富的表示:附录统计显示 90.8% 的记录保留执行序列或执行条件(57.3% 多步过程 + 33.5% 约束推理),79.6% 为正确性关键行为,65.35% 的目的卡仍属原子级、34.65% 保留工作流级内容。工程层面,目的聚类完全确定性、受控词表规范化、证据档案与检索视图分离,在规模化的同时保证可维护可审计。

The pipeline of Code2Skill
Figure 1: The pipeline of Code2Skill
Repository statistics for the GitHub candidate list from which the Code2Skill source pool is formed
Figure 3: Repository statistics for the GitHub candidate list from which the Code2Skill source pool is formed

实验结果

RQ1(表 1):9 个模型设置×8 个基准共 72 组协议匹配对比中 57 组提升,宏平均 42.90→47.90(相对 +11.7%),各设置平均提升 2.26–7.39 分;SWE-bench Verified 九组全升(Qwen3.6-27b 推理 30.53→50.32),AIME 达 73.33→90.00。RQ2(表 2):共享接口下七基准全第一,平均 49.5 对最强轨迹基线 SkillRL-Bank 的 32.8,逐基准领先 6.6–13.3 分。RQ3:规划期注入 8/8 全升,生成后审查最稳。RQ4:检索深度增至 10 上下文涨至 17.8K 字符几无增益,摘要渲染省 88.9%(6,352→707 字符)且 DS4-Flash 28.40→31.80。RQ5:SWE-World 编码 RL 无技能 24%,审查接口 38%(+14 点)。RQ6:AI 代码技能库 93.50%(374/400)对人工库 93.00%(372/400),16 个分歧任务 9:7。人审(表 4):接受库 92% 描述准确、80% 值得保留。

Agentic workflow evaluation with and without CodeSkillBank skills
Table 1: Agentic workflow evaluation with and without CodeSkillBank skills
Skill source comparison under a shared agentic loop
Table 2: Skill source comparison under a shared agentic loop
CodeSkillBank interfaces in SWE-World coding RL under simulated test-pass rewards
Table 3: CodeSkillBank interfaces in SWE-World coding RL under simulated test-pass rewards
Human judgments across four separately sampled construction outcomes and the accepted-bank summary
Table 4: Human judgments across four separately sampled construction outcomes and the accepted-bank summary
Controlled vocabularies used by the retrieval-oriented feature-tagging template
Table 5: Controlled vocabularies used by the retrieval-oriented feature-tagging template
Generation-time integration on the planning-stage benchmark set
Figure 4: Generation-time integration on the planning-stage benchmark set
Planning-stage performance with and without retrieved CodeSkillBank skills
Figure 5: Planning-stage performance with and without retrieved CodeSkillBank skills
Retrieval depth, rendering, and purpose indexing on BigCodeBench Instruct-Hard
Figure 6: Retrieval depth, rendering, and purpose indexing on BigCodeBench Instruct-Hard
Origin-matched evaluation of human- and AI-code skill banks on LiveCodeBench
Figure 7: Origin-matched evaluation of human- and AI-code skill banks on LiveCodeBench
Source-granularity composition of purpose-level cards formed by grouping accepted records in CodeSkillBank
Figure 8: Source-granularity composition of purpose-level cards formed by grouping accepted records in CodeSkillBank
Marginal distributions of problem archetypes and reuse mechanisms in CodeSkillBank
Figure 9: Marginal distributions of problem archetypes and reuse mechanisms in CodeSkillBank
Reasoning depth and types of software behavior represented in CodeSkillBank
Figure 10: Reasoning depth and types of software behavior represented in CodeSkillBank
Knowledge requirements and risk profile of CodeSkillBank
Figure 11: Knowledge requirements and risk profile of CodeSkillBank
Agent relevance and teaching role of CodeSkillBank
Figure 12: Agent relevance and teaching role of CodeSkillBank
Cross-label structure in CodeSkillBank
Figure 13: Cross-label structure in CodeSkillBank
查看结构化数据
任务指标本文基线提升
八基准宏平均(9 个模型设置) 宏平均分(0–100) 47.90(检索注入 CodeSkillBank 技能) 42.90(无技能对照) +5.00 分,相对提升 11.7%;72 组协议匹配对比中 57 组胜出
SWE-bench Verified(Qwen3.6-27b,推理模式) 解决率 50.32 30.53(无技能) +19.79 分;且全部 9 组模型对比均提升
AIME 2026(Qwen3.6-27b,推理模式) 准确率 90.00 73.33(无技能) +16.67 分
七基准共享接口对比(Qwen3.5-397B-A17B,5 次运行) 平均分 49.5(Code2Skill) SkillRL-Bank 32.8 / Trace2Skill 31.0 / ExpeL 27.9 七基准全第一,逐基准超最强轨迹基线 6.6–13.3 分
SWE-World 编码 RL(Qwen3-32B,训练步 150) 解决率 38%(生成后审查接口) 24%(无技能) +14 个百分点;策略端提示 32%、奖励侧参考 31%
LiveCodeBench 400 题子集(AI 生成代码技能库) 通过率 93.50%(374/400) 93.00%(372/400,人工代码技能库) +0.50 个百分点;16 个分歧任务上 AI 库独解 9 个、人工库独解 7 个
BigCodeBench Instruct-Hard(DS4-Flash,摘要渲染 k=3) 通过率 31.80 28.40(全记录渲染) +3.40 分,同时上下文开销降低 88.9%(6,352→707 字符)

局限与改进

作者承认的局限:RQ5 只报告训练步 150 的单一检查点,无多种子与学习曲线,无法对学习速度、收敛或最终策略下结论;RQ6 的 0.5 个百分点差异不足以证明人工与 AI 代码来源等价;人审四池分别抽样,刻画结果质量而非各阶段因果效应;盲重构检查被定位为仓库级过滤器,不能替代测试或形式化验证。我的观察:默认检索只随机抽 10% 库记录,检索器未经学习优化;部分设置回退——GPT 5.2 推理模式 BigCodeBench 52.17→45.27、Qwen3.5 无推理 AgentBench-OS 55.56→50.69、Gemini HMMT 20.00→15.00,说明对短任务或已能直接解决的强模型技能可能构成干扰;目的聚类的代表选择可能挤掉局部更相关的候选;GitHub 代码与评测任务(尤其 SWE-bench 真实仓库)间的知识重叠与许可证合规未讨论。

独立分析的弱点

第一,验证停留在文本一致性层面:等价判定与仲裁完全依赖 LLM,人审显示直接接受记录的重构正确率为 84%,意味着约六分之一的接受记录可能存在未被发现的偏差,改进方向是对有测试的单元叠加属性测试或差分测试,把「重构等价」升级为「执行等价」。第二,检索侧完全静态:随机 10% 抽样加固定 top-$k$,没有查询改写、重排序或以下游解决率为奖励端到端训练检索器,而库中 92% 描述准确意味着上界远未触达。第三,规模对照不严格:RQ2 的三个轨迹基线库与 CodeSkillBank 抽样库在记录数量、领域覆盖上不对齐,难以完全排除「更大更全」而非「构造更好」的解释,应补一条随库规模变化的增益曲线。第四,增益机制解释不足:AIME/HMMT/GPQA 的提升被归因于「结构化检查迁移」,但缺少消融定位是哪些技能类型在起作用,可以做技能类别与题目的归因分析。第五,域边界:90.8% 的记录以代码为中心,向 GUI 操作、科研自动化等非代码域的外推完全未验证。第六,上下文经济学:即使摘要渲染,深度检索在长会话中仍会挤压任务上下文,可探索技能分层加载或将高频技能编译为工具调用。

未来方向

作者明确提出的方向:随着 AI 生成代码日益普及,同一条流水线可持续消化经过测试的 AI 实现,把 CodeSkillBank 变成自我扩张的资源(RQ6 的 93.50% 通过率是初步证据);技能与强化学习更系统的结合,包括训练期技能条件化与奖励侧技能参考(RQ5 只是单检查点观察)。基于本文成果可延伸的方向:其一,把技能库用作过程奖励信号,训练能引用源证据的 verifier 或过程奖励模型(PRM);其二,技能随源码演化的主动维护——利用已保留的行级溯源监控上游变更,自动触发记录刷新或废弃;其三,跨仓库技能融合与冲突消解,把同一目的的多种实现合并为带条件分支的元技能;其四,把盲重构验证思想迁移到非代码程序性知识,如运维 runbook、实验协议的「代码化」表示;其五,技能感知的预训练或继续训练,让技能先验内化进权重,形成「外部技能库 + 内部技能化」的双通道扩展;其六,建立技能检索的专用评测基准,标准化度量检索质量本身,替代当前随机抽样的检索池。

复现评估

复现条件总体友好但有门槛。公开情况:论文标注了 Website 与 Dataset 链接;附录完整公开六个构造阶段(标注、抽取、盲重构、等价判定、仲裁、特征标注)的 SYSTEM/USER 模板、受控词表(表 5)、算法伪代码(算法 1、2)、各阶段可见与隐藏信息边界,以及评测协议(SWE-bench 固定 475 题子集、LongCLI 每题三次、上下文成本口径),人审标准见附录 B。数据:源仓库均公开;CodeSkillBank 若随论文发布,下游实验可直接复用。算力:六阶段共享一个模型配置,百万级记录意味着千万级 LLM 调用,主要成本是 API 推理预算而非训练算力;完整下游复现(含 GPT 5.2、Gemini 2.5 Pro 闭源 API)费用更高,可只复现开源模型子集。难度中高:工程管道复杂(解析、去重、限流、聚类、词表规范化)但无隐藏组件;用抽样仓库加开源模型复现 RQ1 协议匹配对比是可行的入门路径。

相似论文推荐