论文链接:Grounded Skill Synthesis from Code at Scale for Agentic Intelligence 发表时间:2026年9月 机构:蚂蚁国际 Ant International(纯企业) 领域标签:cs.SE(软件工程)、Agentic AI、Skill Synthesis、Code Mining
一、论文背景
1.1 什么是 Agent,为什么它需要「技能」
先解释两个最核心的词。
Agent(智能体):你可以把它想象成一个「会动手的 AI」。普通大模型像一位博学但只能动嘴的顾问——你问它问题,它口头回答;而 Agent 是一个能自己调用工具、读写文件、跑命令、在真实环境里一步步把任务做完的「数字员工」。比如让它「修一个 GitHub 上的 bug」,它会自己读代码、改文件、跑测试,直到验证通过。
Skill(技能):论文对 Skill 的定义很精练——它把可复用的程序性知识(procedural knowledge)连同**「什么情况下该用它」的适用条件**一起封装起来,让 Agent 在推理时能把相关流程检索出来执行。
为了通俗,我们给它一个类比:Skill 就像一份「岗位操作手册(SOP)」。
| 操作手册的要素 | 对应 Skill 的字段 |
|---|---|
| 这份手册讲什么活 | PROBLEM CAPTURED(问题捕获) |
| 什么时候该翻这本手册 | WHEN TO USE(适用条件) |
| 必须遵守的操作红线 | CONTROL RULE(控制规则) |
| 标准操作步骤 | WORKFLOW(工作流) |
| 绝不能违背的约束 | INVARIANTS(不变量) |
| 容易踩的坑 / 不要做的事 | ANTI-GOALS(反目标) |
| 这套做法出自哪份权威文件 | SOURCE EVIDENCE(来源证据) |
为什么 Agent 需要这样的「手册库」?因为再大的基础模型,其能力也有两个天花板:一是参数里塞不下所有领域细节;二是它不会自动从失败中学习、不会主动规划长任务、不会稳定地复用过去的经验。Skill 提供一个即插即用、可独立更新版本的接口,把人类沉淀的领域经验低成本地灌进 Agent,相当于给「数字员工」配了一个随时可查的知识库。
1.2 现有技能合成的两大路线及其缺陷
论文指出,已有的技能合成方法按「底物(substrate,即知识从哪来)」分两类,各有硬伤:
- 轨迹派(trajectory-based):从 Agent 自己跑任务的执行轨迹里蒸馏技能(成功片段、失败教训、 workaround)。问题在于它和产生它的模型、任务分布、工具、harness 强耦合——生成 Agent 水平的上限就是技能质量的上限,换套环境这些技能就可能作废。
- 文档派(document-based):从静态人类可读文本(文档、教程)里提炼技能。好处是不依赖 Agent 轨迹,但缺乏可执行的证据来 grounding 和验证——文字写的对不对、能不能跑,谁也说不准。
这两类缺陷共同指向一个空白:是否存在一种底物,既不需要 Agent 先积累经验,又天然带有「可被执行验证」的证据? 答案就是源代码。
1.3 为什么代码是更好的「底物」
GitHub 上那些被广泛使用、持续维护的仓库,里面的函数和方法都是被人类反复调试、打磨、修复过的实现。代码天然支持「执行、评估、验证、维护、版本管理」——这些恰好就是可复用技能所需要的工程属性。也就是说,执行证据在代码里天然存在。把仓库里的程序性知识提炼成技能,就能在 Agent 还没积累自身经验之前,先给它一份「别人已经踩过坑的操作手册」。这正是 Code2Skill 的出发点。
二、论文定位和关联工作
技能合成这个方向并不新,Code2Skill 处在「三条路线谱系」的交汇处。下面按谱系梳理,并指出它相对每条谱系的突破点。
2.1 路线一:轨迹合成(从 Agent 经验里学)
- Voyager(arXiv:2305.16291):开放的具身 Agent,自动构建「技能库」,技能本身就是可执行代码,靠环境反馈不断扩充。但它绑定特定游戏/仿真环境。
- Reflexion(arXiv:2303.11366):用「言语强化」让 Agent 从失败反思中改进,本质是经验层面的自我纠错。
- ExpeL(AAAI 2024, arXiv:2308.10144):把 Agent 的经验洞察蒸馏成自然语言记忆,下次任务时回忆复用。
- Trace2Skill(Ni et al. 2026, arXiv:2603.25158)、SkillRL-Bank(Xia et al. 2026, arXiv:2602.08234):把成功/失败轨迹转成可检索的技能文档或策略检查项。
共性局限:技能质量受限于生成 Agent 的能力与经验,且随环境/模型变动而失效。
2.2 路线二:文档合成(从文本里学)
- Skill-GenBench(Zhou et al. 2026)等:把人类可读文档转成可复用技能。共性局限:没有真实执行来 grounding,可信度存疑。
2.3 路线三:代码合成(本文所在路线)
- Bi et al.(2026, arXiv:2603.11808):从开源 Agent 仓库里检索技能并序列化为
SKILL.md制品——这是与本文最相近的工作。 - Code2Skill(本文):直接在过程性源码单元上操作,先按复用潜力排序,构造带显式 provenance(溯源)的类型化技能记录,再用重建式一致性检查做 grounding,并在检索与下游工作流两处评估。
2.4 定位对比表
| 维度 | 轨迹派(Voyager/ExpeL/Trace2Skill) | 文档派 | 代码派(Code2Skill) |
|---|---|---|---|
| 知识底物 | Agent 自身执行轨迹 | 静态人类文本 | 已维护的开源代码 |
| 是否需要 Agent 先验经验 | 是(必须先跑任务) | 否 | 否 |
| 是否有可执行证据可验证 | 间接(靠轨迹成败) | 无 | 有(代码本身可跑) |
| 是否与特定模型/环境耦合 | 强耦合 | 弱 | 弱(与任务无关) |
| 验证机制 | 基本无独立验证 | 无 | 盲重建往返验证 |
| 规模上限 | 受单 Agent 经验限制 | 取决于文档量 | 取决于公开代码总量 |
定位结论:Code2Skill 不是「又一种技能库」,而是把技能合成从「依赖 Agent 经验 / 依赖不可验证文本」转向「依赖已被执行验证过的代码」这一互补范式,从而打开了一个随公开代码增长而持续扩张的新 scaling 维度。
三、问题定义
3.1 从具体场景到抽象问题
论文面对的具体场景是:给定 GitHub 上海量仓库里的函数、方法、命令行入口、文件级组件,以及它们的仓库上下文,如何把它们变成「Agent 能检索、能执行、可信赖」的资产?
把它抽象到最本质,问题就是:
把仓库中蕴含的「程序性知识」,转化为「可验证(grounded)、可迁移(transferable)、可维护(maintainable)」的智能体资产。
3.2 形式化定义
给定源码单元 $u$ 及其仓库上下文 $c$,构造一个候选技能记录 $r = f(u, c)$。一条被接受的记录必须回答五件事:何时适用、要复现什么行为、前置条件与不变量是什么、失败如何处理、哪些源码片段支撑这些论断。它必须满足三条硬约束:
- Grounded(接地):记录的程序性论断必须有可恢复的源码片段支撑,并被「源码盲重建」挑战;
- Transferable(可迁移):抽象掉项目特有的标识符与集成细节,保留可复用的前置条件、步骤、不变量、失败处理策略;
- Maintainable(可维护):保留溯源、支撑源码片段、记录类型与构建状态,以便随代码演进而检视、作废或再生。
3.3 类比与精妙之处
| 抽象要素 | 类比 |
|---|---|
| 给定 $u, c$ | 给你一份「老师傅写的工序 + 车间环境」 |
| 求 $r$ | 提炼成一份「标准化操作手册」 |
| 约束 Grounded | 手册每句话都要能在原工序里对上号 |
| 约束 Transferable | 去掉只有这家车间才懂的黑话,让别处也能用 |
| 约束 Maintainable | 留好出处,将来工序改了手册能跟着改 |
这个抽象的精妙在于:它没有把「好技能」定义为「写得好看的摘要」,而是把「能否被源码重新证明」当成准入门槛——这把质量验证从「人/模型主观判断」变成了「客观往返实验」。
四、问题解法
Code2Skill 是一条全自动四阶段流水线(见图1)。下面逐阶段讲清「输入→做法→输出」,重点放在盲重建验证。
4.1 阶段一:候选过程性证据筛选
- 输入:截至 2026-04-14 的 GitHub 仓库,保留星标 >500 的项目,得到 19,769 个仓库的源池(中位数 3,133 星、82 个合并 PR,78.3% 至少 1,000 星,66% 一年内仍有推送——都是被广泛使用、活跃维护的代码)。
- 做法:在每个仓库里解析函数、方法、CLI 入口、文件级组件;用一个 LLM 标注器挑出「有复用意图、有操作结构、有可见执行约束」的单元,丢弃琐碎/项目私有/不支持的片段。
- 输出:候选源码单元(仍只是候选,后续才定类型与去留)。
4.2 阶段二:三粒度技能卡生成
为什么分三粒度?因为程序性知识出现在不同源码尺度上,单一类型会把多步流程切碎、或把局部行为过度泛化。
| 粒度 | 捕获什么 | 类比 |
|---|---|---|
| Atomic(原子技能) | 单个函数/方法内一个明确操作 | 手册里「拧一颗螺丝」这种单步 |
| Composite(复合技能) | 协调多个操作的有序工作流 | 「装配一个部件」的多步工序 |
| Recurring-pattern(模式技能) | 超越单点/单工作流的高层实现套路 | 「这类设备通用调试法」 |
每条记录用统一 schema 组织:PROBLEM CAPTURED / WHEN TO USE / CONTROL RULE / WORKFLOW / INVARIANTS AND FAILURES / ANTI-GOALS / SOURCE EVIDENCE。论文给了一个真实例子:从 AdGuard 的 DNS-over-QUIC 解析器提炼出「缓存 QUIC 连接失败后如何有界恢复」的复合技能卡——它写明只重试来自缓存连接的失败、关闭坏连接后再获取、仅对 0-RTT 拒绝清空 token 等控制规则,以及「不无限重试、不全局重置解析器、不吞掉错误」等反目标。这正是普通代码摘要做不到的「结构化程序性知识」。
4.3 阶段三:源码盲重建 + 一致性检查(核心)
这一步是全文最关键的创新,用来回答「这条技能卡到底靠不靠谱」。
- 盲重建(source-body-blind reconstruction):让一个 LLM 只看技能卡、不看原代码去重新写出一份实现。如果原卡片漏了关键步骤、或编造了源码并不支持的约束,重建时就会原形毕露。
- 源码感知裁判(source-aware judge):把重建代码和原始实现比对,足够一致的直接接受。
- 仲裁器(adjudicator):剩余拿不准的病例送交仲裁器,它要区分「是技能卡本身不支持」还是「只是重建过程翻车了」——避免错杀或错收。
这一「往返」用 LLM 比对在「记录—重建—源码」三者间校验一致性。被接受的记录保留最终状态、理由、重建结果,以及仓库/文件/符号/源码片段四级溯源,可审计、可随源刷新。
直觉类比:就像不让你看标准答案,只凭你的复习笔记把题做一遍;做得出来、和原解一致,说明笔记真学到了东西;做不出来,笔记大概率是抄漏了或编了。
4.4 阶段四:面向检索的特征标注与目的索引
- 特征标注:给每条被接受记录做任务导向的检索视图,且与证据档案一一对应。
- 目的索引(purpose indexing):用确定性的聚类把「目的一致」的近重复候选合并,每个聚类选一条作为代表(如按「任务族/动作/对象」归一化键分组)。这一变换不破坏证据档案本身,只改变检索呈现。
最终产出 CodeSkillBank:1,006,822 条被接受记录,带 workflow / boundary / provenance / source-evidence 四类元数据。
五、评估指标与实验证据
论文围绕 6 个研究问题(RQ1–RQ6)设计实验,覆盖 9 种模型设置、8 个基准。下面讲清「实验设计为何能证明论点」,而不是只罗列数字。
5.1 关键实验设计与指标含义
| RQ | 实验设计要点 | 核心指标 | 衡量什么本质能力 |
|---|---|---|---|
| RQ1 | 协议匹配:只改「能否检索技能」,其余(模型/推理模式/任务集/评测/循环)全固定 | 宏平均分、提升组数 | 预构建代码技能库是否普适有效 |
| RQ2 | 同一下游接口下,换不同合成流水线的技能库对比;baseline 在独立任务划分上构建,不碰评测轨迹 | 7 基准均分 | 代码派 vs 轨迹派银行质量 |
| RQ3 | 技能在「生成时 / 规划时 / 生成后审查」三处插入 | 各插入点增益 | 技能在计算流程里的角色 |
| RQ4 | 检索深度 k、全量 vs 摘要渲染、目的索引 | 通过率 vs 上下文字符数 | 紧凑表示能否保效用 |
| RQ5 | 编码 RL 中技能置于策略/奖励/审查侧 | resolve rate | 训练侧集成是否有效 |
| RQ6 | 人类写 vs AI 写代码各抽 25 个实现,各建 50 技能银行,同协议对比 | pass rate | AI 代码能否持续供技能 |
5.2 RQ1:代码技能库真的有用
72 组协议匹配评测中 57 组提升,8 基准宏平均从 42.90 升到 47.90(+11.7% 相对);SWE-bench Verified 全部 9 组一致提升(如 GPT-5.2 非推理 SWE 分数 62.20→67.91)。这个设计之所以有说服力,是因为「协议匹配」只动技能开关,排除了模型/任务/流程差异的干扰,所以提升只能归因于「检索到了好技能」。
5.3 RQ2:统一接口下全面胜出轨迹派
在同一 agent 循环、DS4-Flash 推理下对比三个轨迹派银行,Code2Skill 在全部 7 个共享基准排名第一,均分 49.5,而 Trace2Skill 31.0、ExpeL 27.9、SkillRL-Bank 32.8;即便取三者各自最优的「oracle」也只有 40.1。由于 baseline 在不与评测重叠的独立任务划分上构建、且 CodeSkillBank 完全不用这些基准的轨迹,所以这一对比干净地证明:增益来自「代码为底物的构建方式」,而非「下游循环本身」。
| 方法 | SWE | BigCode | AIME | HMMT | Terminal | LongCLI | AgentBench | 均分 |
|---|---|---|---|---|---|---|---|---|
| Trace2Skill | 6.0 | 31.9 | 63.3 | 46.7 | 6.9 | 18.8 | 43.1 | 31.0 |
| ExpeL | 7.5 | 29.4 | 50.0 | 20.0 | 22.2 | 18.8 | 47.4 | 27.9 |
| SkillRL-Bank | 36.8 | 29.4 | 43.3 | 26.7 | 31.9 | 10.4 | 51.2 | 32.8 |
| Code2Skill | 44.7 | 42.3 | 70.0 | 53.3 | 45.2 | 30.0 | 61.3 | 49.5 |
5.4 RQ3–RQ6 要点
- RQ3:技能在「规划时」和「生成后审查」最稳;「生成时直接塞进首轮 prompt」效果参差(模型要先读懂再作答更难)。
- RQ4:摘要渲染在 k=3 时把平均技能上下文从 6,352 砍到 707 字符(-88.9%),DS4-Flash 反而从 28.40 升到 31.80——说明「任务要的那段工序」比 surrounding 实现细节更有用。
- RQ5:编码 RL 里技能在所有插入点都优于无技能;「生成后审查」把 resolve rate 从 24% 拉到 38%(+14pp),最强。
- RQ6:AI 生成的代码提炼的技能银行通过率 93.50%,人类写代码为 93.00%——初步证明「随着 AI 代码增多,同一流水线可持续扩张技能库」。
六、效果优势的根源解释
本节不满足于「因为用了代码所以好」,而是追到第一性原理,并用外部检索交叉验证。
6.1 根源机制与证据链
建立如下因果链(标注证据等级):
- 底物差异 → 执行证据天然存在(论文实验已支持):被人类调试打磨的仓库代码,本身就被反复执行验证过;轨迹派受限于生成 Agent 水平,文档派根本无可执行证据。
- 盲重建往返 → 过滤不可逆地抬高质量上界(论文实验已支持):盲重建把「卡片是否真接地」变成可检验实验。结果对照极具说服力——被接受池 92% 描述准确、84% 支持正确重建;而被拒池仅 32% 描述准确、28% 值得保留、且无一正确重建。这证明验证器真的筛掉了「看似合理实则编造」的记录。
- 结构化程序性知识 > 纯摘要(论文实验已支持):卡片强制写出不变量、失败分支、反目标。RQ4 显示删掉近九成文本效用不降反升,说明真正迁移的是「约束与工序」而非「代码细节」。
6.2 相关工作检索与对照(外部交叉验证)
围绕上述机制,检索相近尝试与结论(含可核验链接):
| 研究(链接) | 相似尝试 | 相关结论 | 与本文差异 / 边界 | 对根源解释的影响 |
|---|---|---|---|---|
| Voyager (arXiv:2305.16291) | 技能=可执行代码,环境反馈扩充 | 可执行技能确实能自我积累 | 绑定仿真环境,非大规模仓库 | 支持「可执行证据有益」 |
| ExpeL (arXiv:2308.10144, AAAI24) | 从经验蒸馏自然语言洞察 | 经验记忆可复用但受限于经验质量 | 无独立 grounding 验证 | 支持「缺验证是轨迹派瓶颈」 |
| Reflexion (arXiv:2303.11366) | 言语强化自我纠错 | 失败反思提升后续表现 | 验证来自任务成败,非重建 | 补充「验证信号形态多样」 |
| SWE-rebench / R2E-Gym (arXiv:2504.07164) | 合成可执行环境做训练/评测 | 可执行环境能规模化产生真信号 | 聚焦环境合成,非技能蒸馏 | 支持「可执行证据是质量地基」 |
| Bi et al. (arXiv:2603.11808) | 从开源 Agent 仓库检索技能→SKILL.md | 代码派技能可行 | 无盲重建式 grounding 检查 | 限定「本文增量在验证机制」 |
说明:本文自身Related Work 还列出 SkillWeaver、Agent Workflow Memory 等同样缺少「重建式 grounding」的代码/经验派工作,进一步坐实「验证缺口」是普遍瓶颈。
6.3 综合判断与未决问题
- 多研究共同支持:可执行/可验证证据是技能质量地基(Voyager、R2E-Gym 等异源结论一致);轨迹派的质量上限受经验约束(ExpeL、Reflexion 旁证)。
- 仍属合理推测:盲重建「为何能线性外推到百万级记录」主要依赖论文自身的接受/拒绝池对照,缺少第三方大规模复现;AI 代码源(RQ6)仅 25+25 小样本,不能断言与人类源等价。
- 适用条件与失效条件:优势在「有成熟公开代码、任务与代码语义相关」时成立;若任务领域代码稀疏、或仓库质量本身差(未充分调试),底物优势会衰减。盲重建依赖 LLM 比对,对极长/强依赖代码可能误判。
七、必要知识反推
若让一个毫无背景的人重做这项工作,他最少必须掌握以下知识,并在关键节点融合:
7.1 领域知识层
- 代码即可执行证据:理解「被维护仓库里的实现为何天然带验证信号」,否则不会想到用代码当底物。
- Agent / harness / skill 的运行机制:理解技能如何被检索、在推理或训练哪一步注入,否则无法设计利用接口(式1)。
- 程序性知识的构成:不变量、失败分支、反目标为何比步骤列表更关键(RQ4 的紧凑性证据)。
7.2 方法论知识层
- 技能合成谱系(轨迹/文档/代码三派)及其瓶颈,才能定位本文贡献。
- 一致性/重建式验证思想:借鉴「self-consistency」「反向翻译」等思路,把「摘要是否忠实」变成可实验问题。
- 检索与聚类:目的索引的确定性分组,需要信息检索与去重知识。
7.3 工程知识层
- 大规模仓库采集与解析(AST、>500 星筛选、语言分布)。
- 多模型多基准评估协议设计:协议匹配控制变量、held-out 划分防止污染。
- RL 集成接口设计(策略/奖励/审查侧)。
7.4 知识融合的关键节点
真正的创新发生在两个融合点:① 把「代码天然可验证」这一领域事实,与「重建式一致性检查」这一方法论嫁接,诞生了盲重建验证;② 把「程序性知识的约束结构」与「紧凑检索」结合,得出「删九成文本不损效用」。知识不是简单叠加,而是在这两个洞察点发生化学反应。
八、论文中可以提取的通用性灵感
以下灵感均有论文具体证据支撑,且可推广到代码/AI 之外的领域。
灵感一:用「可执行证据」作为知识可信度的黄金标准
核心思想:任何被「跑过、验证过」的知识,比纯陈述更可信。论文证据:盲重建筛出的接受池 92% 准确 vs 拒绝池 32%。推广场景:① 医疗指南从真实病例回溯验证;② 法律条文配合判例库;③ 运维手册绑定事故复盘;④ 教育知识绑定习题通过率。
灵感二:盲重建往返是通用的「蒸馏保真度检测器」
核心思想:遮住原素材、只凭提炼物重建,能暴露提炼遗漏/编造。论文证据:三分支(重建+裁判+仲裁)过滤掉大量不可靠记录。推广场景:① 文档→知识图谱的保真检测;② 视频/讲座→笔记的质量评估;③ 模型压缩后「遮原模型只凭小模型重建输出」测保真;④ 翻译质量反向校验。
灵感三:结构化程序性知识优于纯文本摘要
核心思想:显式写出约束、失败分支、反目标,比「做了什么」更能迁移。论文证据:RQ4 摘要砍掉 88.9% 字符效用不降。推广场景:① SOP 写作模板化(含反目标栏);② Prompt 工程里写「不要做 X」;③ 机器人操作规范;④ 新人培训手册。
灵感四:紧凑性——「任务要的那段」比「全部细节」更有用
核心思想:信息检索中,精准的约束比冗余上下文更有价值。论文证据:DS4-Flash 摘要渲染 28.40→31.80 且省 88.9% 上下文。推广场景:① RAG 摘要而非全文;② 长文档摘要喂模型;③ 监控告警压缩;④ 上下文窗口受限下的知识投送。
灵感五:把「别人调试过的产物」当作可扩展的知识矿
核心思想:人类/AI 已验证的产物是持续扩张的知识供给,应被系统化复用。论文证据:RQ6 AI 代码源 93.50% 通过率 ≈ 人类 93.00%,预示随 AI 代码增加技能库可自扩张。推广场景:① 用 AI 生成内容反哺训练数据;② 开源社区知识自动化汲取;③ 企业内部「踩坑库」自动成手册;④ 跨组织最佳实践沉淀。
本文数据均来自论文原文(arXiv:2609.05571v1)并逐项核对;外部交叉验证文献为论文 Related Work 与给定检索结果中可核验的工作,未做额外联网检索扩充。