从上下文中自动提取Skill!清华等提出 Ctx2Skill,上下文学习新方案
从复杂文档中提炼规则、流程与约束,让大模型真正掌握可复用的技能,Ctx2Skill 提供了一种无需人工标注的自动化学习方案。
一句话讲清楚?
这篇论文来自清华大学、DeepLang AI、UIUC、复旦大学、香港中文大学等机构。论文题目是《From Context to Skills: Can Language Models Learn from Context Skillfully?》,提出的框架叫
Ctx2Skill
它的目标不是再做一个更花哨的 RAG,也不是让模型多背一点知识,而是把“上下文学习”这件事往前推一步。
传统做法呢?是把上下文一股脑塞进提示词里,让模型边读边答。而 Ctx2Skill 选择了一条不同的路:它先让模型把上下文里的规则、流程、约束、判断标准提炼成自然语言技能;等到后续答题时,模型再带着这份“技能集”去处理任务,而不是临时抱佛脚。
更有意思的是,这套方法不依赖人工标注,也不需要外部环境给出执行反馈。整个技能发现过程靠的是多智能体自博弈:一个模型负责出题,一个模型负责解题,一个模型负责判题。Reasoner 解不出来,就推动它去补技能;Reasoner 全答对了,就推动 Challenger 出更刁钻的题。
听起来有点像“自己给自己出卷子,自己批改,自己总结错题本”。但论文真正难的地方在于:这种自博弈很容易失控。出题方越出越偏,解题方越学越窄,最后技能集看起来很厚,泛化能力反而变差。为了解决这个问题,作者又加了一个
Cross-Time Replay (跨时间重放)

为什么“从上下文中学技能”越来越重要
大模型今天已经很会“读上下文”了。你给它一段文档、一段规则、一段代码说明,它常常能现场回答得有模有样。
但问题也就在这里:很多真实任务里的上下文,不是几段说明,而是好几万字的长文档、多表格、多步骤流程、领域规则和隐含约束混在一起的“大杂烩”。比如:
• 企业内部 SOP,里面有大量例外情况;
• 医疗、法律、金融场景里的规则手册;
• 科研论文或技术报告里的复杂方法;
• 一个软件系统的接口说明、配置要求和调试经验;
• 一个游戏、仿真系统或业务系统的运行规则。
这类任务要求模型做的不是“检索一句话”,而是理解一整套操作规范,然后举一反三,迁移到新问题上。
论文把这种能力叫做
context learning (上下文学习)
作者指出,已有的路线有两个明显的瓶颈。
第一,人工标注技能太贵。要把一份复杂上下文提炼成技能,标注者必须真正读懂整份材料,还要判断哪些规则重要、哪些步骤可复用、哪些例外不能漏。这个过程的认知负担很高,规模化成本也很难接受。
第二,很多上下文学习任务缺少外部反馈。写代码可以跑测试,数学题可以对答案,游戏环境可以执行动作。但如果模型从一份长文档中抽出一条“技能”,我们很难自动判断它是否忠实、完整、可用。没有反馈,就很难自动优化技能。
Ctx2Skill 的切入点就是:既然没有人工标注,也没有外部反馈,那能不能让模型自己制造反馈?
Ctx2Skill 的核心:用自博弈逼出技能
Ctx2Skill 里最核心的设计,是一个面向技能优化的 self-play loop。它不是简单让模型“总结一下文档”,而是让不同角色围绕同一份上下文不断对抗。
主要角色有三个:
•
Challenger
•
Reasoner
•
Judge
另外还有两类辅助角色:Proposer 和 Generator。Proposer 负责诊断问题,Generator 负责把诊断转成具体技能修改。
这套流程可以拆成六步。
第一步,Challenger 出题。
第二步,Reasoner 解题。
第三步,Judge 判题。
第四步,结果分流。
第五步,失败推动 Reasoner 学技能。
第六步,成功推动 Challenger 变强。

这才是 Ctx2Skill 和普通自动总结最不一样的地方:它不是只训练答题者,而是连出题者也一起训练。
一套是
Reasoner 技能集
另一套是
Challenger 技能集
这就形成了一个动态对抗系统。Reasoner 不断补自己的短板,Challenger 也不断升级自己的“考法”。如果只让 Reasoner 更新,任务很快会变得太容易;如果只让 Challenger 变难,Reasoner 又可能被压垮。论文的设计是让两边都进化。
可以把它理解成一个“自动化错题本系统”。区别在于,普通错题本只记录你错了什么,而 Ctx2Skill 还会让出题老师一起进化:当你掌握了旧知识点,老师会换一种角度继续考你。
技能不是向量,而是一份 Markdown
很多人一听“技能”,可能会想到模型参数、LoRA、工具调用脚本,或者某种隐藏向量。但 Ctx2Skill 里的技能非常朴素:就是自然语言 Markdown。
技能会被放进系统提示中,和上下文、任务一起输入模型。这样做有三个好处。
第一,可读。人可以直接检查模型到底总结了什么。
第二,可编辑。如果技能不对,理论上可以人工修。
第三,可迁移。自然语言技能不绑定某个模型内部结构,强模型生成的技能有机会给弱模型用。
这也是论文后面做“技能迁移”实验的原因:如果 GPT-5.1 生成的技能可以帮助 GPT-4.1,那说明技能里确实包含了可复用知识,而不只是某个模型自己的提示词偏好。
最大风险:自博弈会把系统带偏
自博弈听上去很优雅,但它有一个天然风险:对抗会越来越极端。
论文把这个问题叫
Adversarial Collapse (对抗性崩溃)
• Challenger 为了难倒 Reasoner,生成越来越刁钻、越来越长、越来越偏的任务;
• Reasoner 为了应对这些任务,开始补越来越具体、越来越局部的技能;
• 技能集变厚了,但学到的是“应付当前出题风格”的技巧;
• 换到真实未见任务上,泛化反而下降。
这很像刷题刷偏了:你可能越来越擅长某个老师的怪题,却不一定真正掌握了知识。
所以 Ctx2Skill 没有直接采用最后一轮技能,而是设计了 Cross-Time Replay。
这个机制会在 self-play 过程中收集两类探针任务。
•
Hard Probe
•
Easy Probe
等自博弈结束后,系统会拿历史上每一轮的 Reasoner 技能集,重新在 Hard 和 Easy 两类探针上测试。最后选择同时兼顾困难任务和简单任务的技能集。
它不是追求“Hard 分数最高”,也不是追求“Easy 分数最高”,而是看两者的乘积。这样一来,牺牲简单任务去硬啃困难任务的技能集会被惩罚;只会做简单题、不敢碰难题的技能集也会被惩罚。
这个设计很朴素,但可以说是整篇论文里最有工程味的一处:它承认自博弈会带来偏差,然后用历史回放去做选择,而不是相信“迭代越多越好”。

实验基准:CL-bench 有多难?
论文主要在 CL-bench 上做评估。这个基准专门考察模型在复杂上下文里的学习能力。
CL-bench 的规模不小:500 个上下文、1899 个任务、31607 条验证标准。平均每个上下文包含 3.8 个任务,每个任务有 16.6 条标准。平均输入长度是 10.4K tokens,最大达到 65.0K tokens。
任务分成四类:
| 类别 | 上下文数 | 任务数 | 平均长度 |
|---|---|---|---|
| 领域知识 | 190 | 663 | 8.3K |
| 规则系统 | 140 | 566 | 12.2K |
| 程序执行 | 100 | 471 | 8.5K |
| 经验模拟 | 70 | 199 | 16.7K |
还有一个细节很重要:51.1% 的任务是多轮顺序任务,需要依赖前面任务的回答。这意味着模型不能只做局部匹配,而要维持跨步骤状态。
评估也很严格。一个任务通常有很多条 rubric,只要有一条没过,就不算解出。论文里也观察到,rubric 级别通过率远高于任务级别通过率,说明很多答案不是完全不会,而是经常漏掉某些细节。
这正是技能提炼可能发挥作用的地方:把容易漏的规则、步骤、约束提前整理出来。
主结果:提升不夸张,但很稳定
论文把 Ctx2Skill 和两类基线比较:
•
Prompting
•
AutoSkill4Doc
•
Ctx2Skill
在三个骨干模型上,Ctx2Skill 都带来了整体提升。
| 模型 | 基础 | Ctx2Skill | 提升 |
|---|---|---|---|
| GPT-4.1 | 11.1% | 16.5% | +5.4 |
| GPT-5.1 | 21.1% | 25.8% | +4.7 |
| GPT-5.2 | 18.2% | 21.4% | +3.2 |
如果只看相对提升,GPT-4.1 从 11.1% 到 16.5%,大约是 48.6% 的相对增幅。这个数字很醒目,但也要冷静看:CL-bench 本身很难,绝对求解率仍然不高。
所以这组结果不能解读成一次性能飞跃。它更像是在一个极难基准上证明:把文档先整理成技能,确实比直接硬读更稳。
同时也必须看到,今天的大模型在长上下文、强约束、多步骤任务里仍然很容易漏细节。Ctx2Skill 提高了天花板,但还远没把这类问题打穿。
不同任务类别里,程序任务执行的收益尤其明显。例如 GPT-4.1 在程序执行类任务上从 10.4% 提升到 17.6%,提升 7.2 个百分点;GPT-5.2 也从 19.1% 提升到 25.4%,提升 6.3 个百分点。
这很符合直觉:流程类、规则类任务最适合被整理成“如果遇到 A,就按 B 步骤做;注意 C 例外”的技能。

生成的技能质量如何?
性能提升之外,论文还评估了生成技能本身的质量,维度包括简洁性、忠实性、清晰性、有效性、可复用性。
这里的结果很有意思。Ctx2Skill 不只是让下游任务分数变高,技能质量评分也超过 Prompting 和 AutoSkill4Doc。
| 骨干模型 | Prompting | AutoSkill4Doc | Ctx2Skill |
|---|---|---|---|
| GPT-4.1 | 81.8 | 86.2 | 89.8 |
| GPT-5.1 | 90.7 | 91.5 | 93.6 |
| GPT-5.2 | 87.9 | 89.7 | 92.0 |
最明显的优势在清晰性和可复用性。换句话说,自博弈不是简单把文档压缩一遍,而是在不断被任务检验的过程中,把技能写得更像“可操作说明”。
这也是这篇论文值得关注的地方:它把“总结上下文”变成了“经任务压力检验的技能编辑”。两者差别很大。
消融实验:Challenger 比想象中重要
消融实验能看出哪些组件真正有用。以 GPT-4.1 为例,完整 Ctx2Skill 的总体分数是 16.5%。
| 去掉什么 | 分数 | 下降 |
|---|---|---|
| 完整方法 | 16.5% | - |
| 无跨时间重放 | 14.7% | -1.8 |
| 无技能解耦 | 15.9% | -0.6 |
| 无 Challenger 演化 | 13.8% | -2.7 |
| 无 Easy 探针 | 15.7% | -0.8 |
| 无 Hard 探针 | 15.2% | -1.3 |
影响最大的是“去掉 Challenger 技能演化”,下降 2.7 个百分点。GPT-5.1 上这个下降达到 3.3 个百分点。
这说明出题方不是一个辅助模块,而是整个系统的压力来源。Challenger 如果不进化,Reasoner 很快就会在固定考法里局部收敛;只有 Challenger 持续升级,失败案例才会不断暴露新的缺口。
第二重要的是跨时间重放。去掉后,GPT-4.1 下降 1.8 个百分点,GPT-5.1 下降 2.8 个百分点。这个结果支持了前面的判断:自博弈会产生后期过拟合,最后一轮不一定是最好的。
还有一个细节:Hard 探针比 Easy 探针更重要,但两者都不能少。只有 Hard 会让系统追难题,只有 Easy 又容易保守;组合在一起才像一个健康的回放集。
自博弈动态:技能会变多,但不一定越多越好
论文还分析了 self-play 过程中任务、答案和技能集的变化。
以 GPT-4.1 为例,任务级解决率从 Iter-1 的 18.2% 上升到 Iter-5 的 23.3%,看起来 Reasoner 在变强。但失败率始终超过 76%,说明 Challenger 仍然能制造足够压力。
GPT-5.2 的现象更有戏剧性:任务解决率从 Iter-1 的 36.1% 下降到 Iter-4 的 23.0%,之后略微回升到 23.7%。这就是论文说的对抗性崩溃。强模型的 Challenger 可能更会“刁难”,导致任务复杂度上升过快。
任务长度也支持这个判断。GPT-5.2 的 Challenger 任务平均长度从 69.1 词涨到 139.1 词,增长 101%。相比之下,GPT-4.1 增长 28%,GPT-5.1 增长 30%。
技能集字数同样一路上涨。GPT-5.1 的技能集中位数从 Iter-1 的 1235 词涨到 Iter-5 的 6447 词。但跨时间重放最后选中的版本中位数是 3682 词,而不是最长版本。
这件事有一个很直接的启发:在智能体系统里,记忆和技能不是越多越好。过长的技能集会带来噪声、冗余和过拟合。真正有价值的是“恰好足够”的技能。
技能迁移:强模型写的技能更通用
论文还做了跨模型技能迁移实验。
结果显示,GPT-5.1 生成的技能迁移给 GPT-4.1 后,GPT-4.1 的性能是 16.1%,只比使用自己技能的 16.5% 低 0.4 个百分点。
反过来,GPT-4.1 的技能迁移给 GPT-5.1 后,GPT-5.1 的性能是 23.1%,低于使用自己技能的 25.8%,差距 2.7 个百分点。
这说明强模型生成的技能更容易被弱模型复用;弱模型生成的技能虽然有帮助,但可能不够完整、不够抽象,不能充分释放强模型能力。
这个结果很有实际意义。未来如果企业要为复杂文档构建技能库,可能不需要每次都用最贵的模型执行任务,但可以用更强的模型离线生成技能,再让更便宜的模型在线使用。
和普通 RAG 有什么区别?
Ctx2Skill 不应该被理解成 RAG 的替代品。它更像是 RAG 前后的一个“技能层”。
RAG 解决的是“把相关内容找出来”。Ctx2Skill 解决的是“把内容里的规则和流程变成可复用操作说明”。
举个例子,如果上下文是一份报销制度,RAG 可以帮你找出“交通费”“发片”“审批”的相关段落。但 Ctx2Skill 更像是整理出一份技能:
• 先判断费用类别;
• 再检查是否需要发片;
• 再看金额是否超过审批阈值;
• 如果跨部门,则走特殊流程;
• 如果是补充报销,还要检查前次记录。
这种技能不是某一句原文,而是多段规则的组合。对复杂任务来说,这比单纯检索更接近人类处理文档的方式。
这篇论文的局限
如果把 Ctx2Skill 放进真实产品,首先会担心成本。
它更适合离线把高价值文档做成技能库,而不是每次用户提问时现场跑一轮自博弈。每个上下文都要多轮 self-play,还要生成任务、解题、判题、更新技能,再做跨时间重放。论文设置中 N 为 5,M 为 5,也就是每个上下文至少要经历多次多智能体调用。
第二,它依赖 Judge 质量。如果 Judge 对评分标准理解错了,反馈就会带偏技能演化。论文中 Judge 使用 GPT-5.1,并与 CL-bench 协议保持一致,但现实场景里 Judge 本身也可能需要校验。
第三,技能是自然语言,优点是可读,缺点是仍然可能含糊。对于强形式化任务,可能需要把技能进一步转成可执行规则、测试用例或工作流。
第四,提升幅度稳定但不是压倒性。CL-bench 上绝对求解率仍然较低,说明长上下文复杂推理远没有被解决。
我更看重它的方向,而不是某个分数
这篇论文最值得关注的,不是 GPT-4.1 提升了多少百分点,而是它提出了一种让模型“主动把上下文加工成技能”的路径。
过去我们常见的长上下文使用方式,是把材料塞进去,然后问模型问题。Ctx2Skill 代表另一种思路:先让模型通过自我测试发现上下文里的可复用结构,再把这些结构沉淀成技能。
如果把它放到智能体系统里,这个思路很自然:
• 新接入一个复杂工具,先让智能体读文档并自测;
• 新进入一个业务场景,先让智能体生成场景技能;
• 遇到失败任务,再把失败转成技能更新;
• 定期回放历史任务,防止技能越来越偏。
这其实已经接近“组织知识库自动技能化”的雏形。
尤其喜欢 Cross-Time Replay 这个设计。很多智能体记忆系统都有一个通病:只会往里加,不会判断什么时候该停、该回退、该选择早期版本。Ctx2Skill 用 Hard/Easy 探针给出了一种简单可执行的选择标准。它提醒我们,长期学习系统最难的不是记住更多,而是避免被自己的学习过程带偏。
结语
Ctx2Skill 把上下文学习从“读完就答”推进到“读完、出题、自测、沉淀技能、再答”。
它的实验说明,在 CL-bench 这种长上下文、多规则、强约束任务上,技能化确实能提高模型表现;它的分析也说明,盲目自博弈会崩,需要跨时间回放这样的机制来做平衡选择。
如果未来的 AI Agent 真要长期服务一个团队、一个产品、一个业务系统,它不能每次都从零开始读上下文。它需要把经验沉淀成技能,也需要知道哪些技能仍然可靠,哪些技能只是对过去错误的过拟合。
从这个角度看,Ctx2Skill 的价值不只是“提高几个百分点”,而是给了我们一个更像学习系统的框架:自己出题,自己失败,自己总结,但也要学会回头看。
资源链接
论文页面
https://arxiv.org/abs/2604.27660