Ctx2Skill:让模型读完一份文档就"自己出题考自己"——无反馈下的 skill 自演化
核心摘要
LLM 现在能解奥数、能刷 LeetCode,但你扔给它一份 200 页的工业设备说明书让它做诊断,它经常给你"幻觉式答案"。问题不在能力,在于这种新知识超出了 parametric memory——模型必须从 context 里现学,但 context 太长太密,"现学现用"经常学不全。
直觉解法是 inference-time skill augmentation:把 context 里的规则和流程抽成自然语言 skill。但放到 context learning 场景,这条路有两个大坑:(1) 人工标注 skill 在长且专业的文档上贵到不可行;(2) 不像编程或数学有 unit test 提供 ground truth,context learning 没有外部反馈信号告诉你 skill 抽得对不对。
清华 + DeepLang AI + UIUC 等机构合作的 Ctx2Skill 给出的方案是 multi-agent self-play 自演化:Challenger 出题 + Reasoner 答题 + Judge 二值判定,然后 两边都通过 skill 累积进化(不动模型参数)。为了避免 self-play 常见的 adversarial collapse,加了个 Cross-time Replay 机制——在所有迭代的 skill 候选里选 hard probe × easy probe 乘积最大的那个。
结果:在 CL-bench 四类任务上,GPT-4.1 从 11.1% 涨到 16.5%(+5.4),GPT-5.1 从 21.2% 涨到 25.8%(+4.7),GPT-5.2 从 18.2% 涨到 21.4%(+3.2)。比起 Prompting 和 AutoSkill4Doc 这些 baseline 都明显领先。
一句话评价:这是 "skill bank" 范式从 verifiable task 走向 non-verifiable task 的关键一步。如果你认同"agent 自演化"是个值得追的方向,这篇必看。
论文信息
- 标题:From Context to Skills: Can Language Models Learn from Context Skillfully?
- 作者:Shuzheng Si, Haozhe Zhao, Yu Lei, Qingyi Wang, Dingwei Chen, Zhitong Wang, Zhenhailong Wang, Kangyang Luo, Zheng Wang, Gang Chen, Fanchao Qi, Minjia Zhang, Maosong Sun
- 机构:THU(清华)、DeepLang AI、UIUC、FDU(复旦)、CUHK(港中文)
- 日期:2026/04/30
- arXiv:https://arxiv.org/abs/2604.27660
- 代码:S1s-Z/Ctx2Skill

图1:上方是一份复杂的 context(产品文档、实验数据、规则手册等),中间是 Ctx2Skill 框架,下方是抽出的 reusable natural-language skills——这些 skill 可以 plug 到任何 LM 上,让它在同一个 context 的任意 task 上跑得更准。
问题动机:context learning 是个被低估的命题
说实话我对 context learning 这个 framing 第一次听是有点抵触的——觉得这不就是 in-context learning 的另一个名字吗?读完才意识到这俩是有本质区别的:
| 维度 | In-Context Learning (ICL) | Context Learning |
|---|---|---|
| 输入 | few-shot examples + query | 长文档 / 复杂规则 + query |
| 学的东西 | task pattern | new domain knowledge |
| 任务复杂度 | classification / 简单生成 | multi-step reasoning |
| 评估 | 答对就行 | 多个 rubric 全过 |
context learning 是真的需要从文档里学新知识——医生看新版临床指南调整诊疗、工程师读文档执行流程、研究员从实验数据归纳假设。这是 LLM 在真实工作中最常见也最难的场景。
而 inference-time skill augmentation——把 context 里的规则抽成可复用的 natural-language skill——是个非常 intuitive 的方案。但论文准确地点出了两个 deal-breaker:
挑战 1:人工标注 skill 不可行——长、专业、密的文档让 annotator 都很难一次内化。
挑战 2:没有外部反馈——不像 coding 能跑 unit test、数学能对答案,context learning 里你只有 context,没法告诉系统"你抽的 skill 对不对"。
这第二个挑战是 self-evolving agent 系统从"verifiable domain"走向"non-verifiable domain"的核心阻碍。
方法核心:self-play + cross-time replay
多 agent self-play loop

图2:(a) self-play 循环——Challenger 基于 context 和自己的 skill 集生成 task + rubric;Reasoner 在自己的 skill 集指导下尝试答题;Judge 给二值反馈。失败 case 路由到 Reasoner 一侧的 Proposer-Generator 更新 Reasoner skill;轻松解决的 case 路由到 Challenger 一侧更新 Challenger skill。(b) Cross-Time Replay 在多个迭代的 skill 候选里选出 generalization 最好的那个。
系统里有 5 个 agent,分两侧:
Reasoner 侧: - Reasoner:用当前 skill 答题 - Reasoner Proposer:分析失败 case,给出高层诊断(缺哪些 context 知识) - Reasoner Generator:把诊断材料化成具体 skill 编辑
Challenger 侧: - Challenger:出题 + 出 rubric - Challenger Proposer:分析"被秒掉"的 case,找出 task 生成策略的弱点 - Challenger Generator:把诊断变成 Challenger 自己的 skill 更新
Judge:中立的二值判定器,每个 rubric 都判一次。
整个 loop 的精髓是:
- 两边都进化,但只更新文本 skill,不动参数
- 失败驱动:Reasoner 失败的题让 Reasoner 学更多;Reasoner 解决得太轻松的题让 Challenger 学得更刁
- 永不互相看对方 skill:两侧的 prompt 严格独立,保持对抗性
这种"自己出题考自己"的设计我觉得很有意思——它跟 AlphaGo Zero 的 self-play 在精神上是同源的,但适应到了 non-verifiable domain。verifiable domain 的 self-play 用 win/loss 反馈,non-verifiable domain 的 self-play 用 LLM judge + rubric 系统反馈。
公式化的 iteration
第 i 轮:
失败集 \(\mathcal{F}_i\) 路由到 Reasoner 侧,解决集 \(\mathcal{P}_i\) 路由到 Challenger 侧。两侧 Proposer-Generator 各自更新,得到 \(\mathcal{S}_i^R, \mathcal{S}_i^C\)。
Adversarial Collapse 与 Cross-Time Replay
这块是 Ctx2Skill 最有趣的设计。
问题:随着迭代,Challenger 会出越来越极端的 task(因为它的目标是"难倒 Reasoner"),Reasoner 的 skill 会过度专门化到这些病态 case 上——对原 context 中的 representative 知识反而退化。
更隐蔽的是:这种 collapse 在 loop 内部不可见——每一轮 Judge 只评 Challenger 当前出的题,没有信号告诉你"早期掌握的知识被后面的编辑搞坏了"。
解决:Cross-Time Replay。
在 self-play 过程中顺手收集两个 probe set(无需额外监督):
- 每轮的"最难失败" → hard probe set \(\mathcal{Q}^h\)
- 每轮的"最简单成功" → easy probe set \(\mathcal{Q}^e\)
self-play 结束后,把所有迭代的候选 skill 集 \(\{\mathcal{S}_1^R, ..., \mathcal{S}_N^R\}\) 都拿来在 probe set 上重新跑:
选出乘积最大的那个 skill 集:
为什么是乘积?
- 一个 skill 集只解决 late、idiosyncratic 失败但在 easy 上退化 → \(\rho^e\) 拉低乘积,被淘汰
- 一个 skill 集只搞定 easy 但 hard 全挂 → \(\rho^h\) 拉低乘积,被淘汰
Laplace smoothing 防止 probe 集为空时 product 退化。这个设计细节很精致。

图3:横轴是 iteration index,纵轴是有多少 context 在该轮选出了最佳 skill。可以看到分布相当分散——意味着最优 skill 不一定在最后一轮,cross-time replay 这个组件的设计是真有用的。
实验结果:多 backbone 全面提升
在 CL-bench(500 个 context、1899 个 task、31607 个 rubric)四类任务上:
| 模型 | Overall | Domain Knowledge | Rule System | Procedural | Empirical Discovery |
|---|---|---|---|---|---|
| GPT-4.1(base) | 11.1 | 10.6 | 14.8 | 10.4 | 4.6 |
| GPT-4.1 + Prompting | 12.3 (+1.2) | 12.4 | 12.3 | 13.9 | 8.2 |
| GPT-4.1 + AutoSkill4Doc | 13.2 (+2.1) | 13.3 | 13.1 | 15.0 | 8.7 |
| GPT-4.1 + Ctx2Skill | 16.5 (+5.4) | 16.8 | 17.6 | 17.6 | 9.7 |
| GPT-5.1(base) | 21.1 | 22.4 | 21.0 | 22.8 | 13.6 |
| GPT-5.1 + Prompting | 22.1 (+1.0) | 24.7 | 21.1 | 22.4 | 15.5 |
| GPT-5.1 + AutoSkill4Doc | 22.7 (+1.6) | 25.3 | 21.5 | 23.1 | 16.0 |
| GPT-5.1 + Ctx2Skill | 25.8 (+4.7) | 27.9 | 24.9 | 26.9 | 19.1 |
| GPT-5.2(base) | 18.2 | 19.5 | 18.0 | 19.1 | 12.1 |
| GPT-5.2 + Ctx2Skill | 21.4 (+3.2) | 22.2 | 20.4 | 25.4 | 12.6 |
几个让我皱眉又拍腿的观察:
1. base 越强提升越大?不全是:GPT-5.1 base 21.1 → 25.8(+4.7),GPT-4.1 base 11.1 → 16.5(+5.4)。GPT-4.1 提升更大,但相对比例上 GPT-4.1 涨了 49%,GPT-5.1 涨了 22%——绝对值差不多,相对比例 weaker model 更受益。
2. Empirical Discovery 是最难的子类:所有模型在这一类得分最低(GPT-5.1 base 才 13.6)。Ctx2Skill 在这一类也是相对提升最大的——意味着 self-evolved skill 对"开放式归纳"任务特别有用。
3. Procedural Task Execution 受益明显:GPT-4.1 base 10.4 → 17.6(+7.2)。这跟我们直觉一致——"按步骤执行"类任务非常吃 skill 化的"程序化知识"。

图4:横轴是 sub-category,纵轴是 solving rate。可以看到 Ctx2Skill(红)在绝大多数 sub-category 上压过 base 模型(蓝),且涨幅相对稳定。
我的判断
亮点:
- 解决了"无反馈下 skill 自动化"这个真问题:从"在 verifiable domain 自我演化"到"在 non-verifiable domain 自我演化"是个跨越。Self-play 在这里不靠 oracle,靠 LLM judge + rubric system。
- Cross-Time Replay 设计精致:识别并解决了 self-play 系统的典型病——adversarial collapse。hard × easy probe 乘积这个判据简单且有理论意义。
- 跨 backbone 稳定提升:从 GPT-4.1 到 GPT-5.2 都涨。不是只在某个特定模型上调出来的 trick。
- 完全 parameter-free:不需要微调,可以应用到闭源 API 模型。这是工程上的巨大优势。
- paradigm-level 启发:它隐含的判断是——"Agent self-improvement 不一定要 RL/SFT,可以靠文本 skill 累积"。这跟 Web2BigTable 同时期工作传递的 message 是一致的。
问题:
- 依赖 LLM judge 的可靠性:CL-bench rubric 的 judge 用 GPT-5.1。如果 judge 本身在 rubric 评估上有偏差,整个 self-play 闭环会被污染。论文虽然给了 cross-verifier agreement 90%+,但90% 的 disagreement 累积 N 轮可能放大。
- 训练成本没正面披露:每个 context 自己跑一遍 N 轮 self-play 才能得到 skill set。一个 context 大概要多少 API 调用?$1 还是 $50?这个数字直接决定能不能 deploy。
- Cross-Time Replay 的 probe set 太小可能不稳:hard probe 每轮加 1 个、easy probe 每轮加 1 个,N=10 轮就是 10 个 probe。10 个样本评 generalization 是不是足够 robust?
- 绝对数字依然不高:GPT-5.1 + Ctx2Skill 也只到 25.8%。这是 CL-bench 本身设计得非常难(rubric 全过才算 solved),但也说明context learning 离实用还远。这篇是个 promising start,不是 solution。
- vs 微调的对比缺失:如果允许在某个 context 上做 LoRA 微调,效果会怎样?论文没做这个对照。
工程启发
如果你在做:
- 企业知识库 agent:把员工手册、SOP、产品文档作为 context,跑一次 Ctx2Skill 提取 skill,然后让后续 agent 用这个 skill 答 query——比 RAG 更结构化、比微调更轻量。
- 任何 "把文档变成可操作流程" 的应用:医疗指南诊断、法律条文检索、技术故障排查——这些场景的核心难点就是从 dense doc 提取程序化知识,Ctx2Skill 给了个 reusable 框架。
- agent 自演化系统设计:Cross-Time Replay 这种"用 self-play 内部信号做 model selection"的思路可以推广——任何 self-improving agent 都该有个机制识别 collapse 并回退。
- non-verifiable RL 替代:如果你想做 self-play 但任务没有 ground truth,Ctx2Skill 的范式(LLM judge + rubric + 双侧文本进化)可能比 RLHF 便宜很多。
最后说一个略带哲学的反向论证——你可能觉得"既然 LLM 越来越强,等 GPT-7 出来 context learning 自然就解决了"。但你看 GPT-5.1 在 CL-bench 上才 21.1%——这是个证明,base 模型变强解决不了 context learning 的核心瓶颈。问题不在能力上限,在"如何把文档里的零散信号组织成可复用的程序化知识"。
Ctx2Skill 的范式可能是这个方向上最值得追的工程主线之一。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新 AI 前沿,关注我