#CL-Bench:为什么“会读长上下文”还不等于“会从上下文中学习”
一句话总结:CL-Bench 试图测的不是模型能不能在长文档里“找到答案”,而是模型能不能把一段陌生、复杂、带局部规则的上下文当成一个临时世界来学习,然后在这个世界里正确行动。
这里有一个容易混淆的点:现在论文里有两个名字很像的 benchmark:
- CL-bench: A Benchmark for Context Learning:这里的 CL 指 Context Learning,关注“从复杂上下文中学习新知识、新规则、新流程”。这是本文重点讲的 CL-Bench。
- Continual Learning Bench, CL-BENCH:这里的 CL 指 Continual Learning,关注 agent / LLM 系统能不能在一串连续任务中利用过去经验持续变强。它和第一个 CL-bench 不是同一个 benchmark,但研究问题高度相邻,所以后面也会一起讲。
如果把它们放到 LLM Agent 的长期能力图谱里,可以这样理解:
- Context Learning:在一次任务或一个大上下文里,模型能不能快速学会“这个局部世界”的知识和规则。
- Continual Learning:在一连串 episode / session / task 中,系统能不能把过去经验变成未来表现提升。
- Agent Memory / Skill / Parametric Memory:这些是为了解决上述问题提出的不同机制。
#1. CL-Bench 到底想测什么?
传统长上下文 benchmark 很多时候测的是:
- 这句话在不在文档里?
- 能不能从长文档中检索出某个事实?
- 能不能总结一篇长报告?
- needle-in-a-haystack 里能不能找到针?
但现实中的任务经常不是这样。现实任务更像:
我给你一套陌生公司的 API 文档、内部流程、命名规范、异常处理规则、历史案例和输出格式要求。你不能上网,也不能靠预训练知识。你要先读懂这套局部规则,然后帮我完成一个真实操作。
这就是 context learning:模型要从上下文中学习任务相关知识,并把它应用到新任务上。
CL-bench 论文给出的定义大致是:当前语言模型擅长基于预训练知识对 prompt 推理,但真实任务更复杂、更依赖上下文;模型必须从任务特定上下文中学习,并利用预训练之外的新知识解决问题。
所以它强调三个差异:
| 能力 | 典型任务 | CL-Bench 认为还不够的原因 |
|---|---|---|
| 长上下文检索 | 在 100K token 里找一个事实 | 只测“找得到”,不测“学会规则并迁移应用” |
| 阅读理解 | 根据文章回答问题 | 往往答案在局部文本中比较直接 |
| few-shot ICL | 看几个例子学输入输出模式 | 通常模式简单,且上下文不像真实任务那样复杂 |
| Context Learning | 从陌生文档/规则/流程/数据中学会一个局部世界 | 要综合规则、隐含约束、流程、格式、经验规律,并正确执行 |
#2. Benchmark 的规模和结构
CL-bench 的核心数据规模是:
- 500 个复杂上下文
- 1,899 个任务
- 31,607 条验证 rubrics
- 平均每个上下文 3.8 个任务,最多 12 个任务
- 平均输入长度约 10.4K tokens,最长约 65K tokens
- 每个任务平均 16.6 条 rubrics,最多 114 条

它把任务分成四大类:
#2.1 Domain Knowledge Reasoning:领域知识推理
上下文提供某个领域的专门知识,可能是虚构法律体系、新金融工具、冷门科学知识、医疗安全规范等。模型要学会这些知识,再用于决策或分析。
例子:
- 给你一个虚构国家的完整法律制度、判例和法律原则,让你判断新案件。
- 给你某种新金融产品的条款,让你分析收益、风险和适用人群。
- 给你某个生态系统报告,让你预测物种风险,但答案不能靠常识,要靠报告中的局部信息。
这类任务难点不是“法律/金融/生态”这些词模型见过,而是上下文里的局部规则可能是新的,甚至故意和预训练常识冲突。
#2.2 Rule System Application:规则系统应用
上下文提供一个新的形式系统:游戏机制、数学形式化、编程语言语法、技术标准、监管规则等。模型要先学规则,再按规则求解。
例子:
- 给你一个新桌游或游戏机制,要求分析某个局面下一步最佳操作。
- 给你一个虚构编程语言 EZLang 的语法和运行规则,要求写出可运行代码。
- 给你一套技术标准,让你判断某个工程设计是否合规。
这类任务很适合暴露 LLM 的一个弱点:模型会用“看起来合理”的常识补洞,而不是严格服从上下文中的局部规则。
#2.3 Procedural Task Execution:流程任务执行
上下文给出操作手册、workflow、API 文档、故障处理流程等。模型要把自然语言请求转成可执行步骤、伪代码或操作计划。
论文里有一个简化示例:SkyNet Logistics,一个无人机物流系统。上下文包含三个模块的 API 文档:
- navigation control
- payload control
- safety control
模型的任务是作为自动执行助手,把用户的自然语言操作请求转成严格伪代码,并解释 rationale。
这类任务在现实 agent 中非常常见:读 README、读代码库规范、读 API 文档、读公司内部 SOP,然后做事。
#2.4 Empirical Discovery & Simulation:经验规律发现与模拟
上下文给出实验数据、观测数据、仿真环境或搜索结果。模型要从数据中发现规律,再进行预测、模拟或决策。
例子:
- 给你一组实验数据,让你归纳规律并预测新条件下的结果。
- 给你仿真环境规则和历史轨迹,让你判断下一步状态。
- 给你某个系统的观测日志,让你发现异常触发条件。
这类任务更接近“临时科学发现”:不是检索事实,而是从上下文里的数据和规则中学出一个局部模型。
#3. 举几个更直观的例子
下面我把 CL-Bench 的任务类型翻译成更直白的形式。
#例子 1:虚构法律体系判案
上下文可能给出:
- 一个虚构国家的法律条款;
- 若干历史判例;
- 法律原则之间的优先级;
- 某些例外情况;
- 输出判决书的格式要求。
任务问:
A 公司在某种合同场景下是否违约?应该适用哪条原则?赔偿如何计算?
模型如果只靠预训练中的真实法律常识,很可能错。它必须先学会这个虚构法律体系。
这和普通阅读理解的差别是:答案不是一句话能抄出来,而是要组合条款、判例、优先级和例外条件。
#例子 2:新游戏规则下的策略判断
上下文可能定义一个没见过的桌游:
- 角色属性;
- 回合流程;
- 特殊卡牌效果;
- 资源转换规则;
- 胜负条件。
任务问:
当前局面下,如果玩家想在 3 回合内达成目标,应该如何行动?
模型常见错误是:它能复述部分规则,但在推理时忘掉某个局部约束,比如卡牌只能在特定阶段使用,或者某个资源转换有冷却条件。
#例子 3:陌生 API 文档转伪代码
上下文可能是类似 SkyNet Logistics 的系统文档:
NAV_INIT怎么调用;- payload 锁定/释放有哪些安全检查;
- 异常状态必须先进入
SAFE_HOLD; - 输出必须包含严格伪代码和 rationale。
任务问:
把无人机从 A 点移动到 B 点,中途投递包裹,如果电量低于阈值要返航。
模型不只要找 API 名字,还要学会操作顺序、安全约束、异常处理和输出格式。
#例子 4:从实验数据中发现局部规律
上下文可能给出一组实验表格,里面有某种材料在不同温度、压力、浓度下的表现。任务问:
在新的条件组合下,预测指标 X,并解释依据。
这里模型不能靠外部物理化学知识直接猜,而要从上下文数据中归纳经验关系。这类任务很考验模型“从上下文中拟合一个临时规律”的能力。
#4. 评测方式:为什么要用 rubrics?
CL-Bench 不是简单 exact match。每个任务都有多条专家标注的 binary rubrics,用来检查答案是否满足关键要求。
例如一个任务的 rubrics 可能包括:
- 是否引用了正确规则;
- 是否计算了正确数值;
- 是否处理了例外条件;
- 是否遵守输出格式;
- 是否给出必要解释;
- 是否没有引入上下文外的假设。
一个任务只有所有关键 rubrics 通过,才算 solved。这一点很重要,因为真实任务不是“答对一点就算对”。例如你写 API 调用计划时,主要流程对了,但漏掉 safety check,现实中仍然是失败。
论文还做了 context-free ablation:不给上下文时,模型任务解决率低于 1%,说明这些题确实依赖上下文,而不是靠预训练知识就能答。
#5. 当前模型表现:非常低
CL-bench 测了十个前沿 LLM。核心结论很直接:现在最强模型也远没掌握 context learning。
论文报告:
- 十个 frontier LMs 平均 solved rate:17.2%
- 最好模型 GPT-5.1:23.7%
- Claude Opus 4.5 Thinking:21.1%
- Empirical Discovery & Simulation 类别尤其难,最好也只有约 18.1%

这说明:即使模型有长上下文窗口、强推理模式,也不等于它会可靠地从上下文中学习。
论文进一步分析了错误类型:
- context-ignored:忽略了上下文里的关键信息;
- context-misused:看到了信息,但错误应用;
- reasoning error:推理链条出错;
- format error:没有遵守上下文要求的格式;
- refusal / insufficient information:模型声称信息不足,但其实上下文里有。
一个有意思的观察是:强模型更少忽略上下文,但仍然经常误用上下文。也就是说,瓶颈不只是 attention 找不到信息,而是“把局部知识变成可执行内部规则”的能力不足。

#6. CL-Bench 和普通 long-context benchmark 的根本区别
可以用一个类比:
- Long-context retrieval 像“开卷找答案”。
- Context learning 像“现场读一本陌生规则书,然后马上参加考试/上岗操作”。
前者主要需要定位信息;后者需要建立一个临时认知模型。
更具体地说,CL-Bench 要求模型同时做几件事:
- 选择相关知识:从复杂上下文中识别哪些规则、数据、案例相关。
- 形成局部规则:把分散描述合成为可执行规则。
- 处理冲突和例外:当上下文与常识冲突时,以上下文为准。
- 迁移到新任务:不是复述上下文,而是把学到的东西用于新实例。
- 遵守隐含规格:输出格式、完整性条件、领域约束都要满足。
对 LLM Agent 来说,这正是最核心的能力之一:agent 不可能所有工具、代码库、组织流程、用户偏好都在预训练中学过,它必须在运行时快速学习局部环境。
#7. 学术界如何使用 CL-Bench:几条研究线索
CL-Bench 发布后,很自然地变成了研究“上下文学习 / agent memory / skill induction”的试金石。下面是几条已经出现的研究方向。
#7.1 规格归纳:Agentic Context Learning with Self-Discovered Specification
一篇很直接使用 CL-Bench 的工作是 Agentic Context Learning with Self-Discovered Specification。
这篇工作的核心判断是:CL-Bench 难,不只是因为模型找不到内容,而是因为模型没学会上下文里的 specification。
这里的 specification 可以理解为:
- 局部格式要求;
- 领域特定输出规范;
- 什么算完整答案;
- 哪些异常必须怎样标记;
- 哪些步骤不能省略;
- 某个局部系统里的“有效性条件”。
论文分析了 CL-Bench 的 31,592 条 rubric,发现:
- 55.4% 明确评估 specification acquisition;
- 只有 22.6% 评估 content acquisition;
- 76.7% 的 specification 在用户 query 里没有明说;
- 但 95.5% 可以追溯到上下文中。
这非常关键:很多要求不是隐藏规则,而是散落在上下文里。模型失败,不是因为题目不公平,而是因为它没有把这些散落规则抽象成“我接下来必须遵守的契约”。
他们提出了 PSCI(private specification-contract induction):先从上下文中抽取局部 specification contract,再用 adversarial checking and repair 强制答案满足这些 contract。结果在 CL-Bench 上把 GPT-5.1 提到 28.14%,相对 baseline 有明显提升。
这个方向对 agent 很有启发:未来 agent 读代码库、读工具文档、读用户偏好时,可能不应该只是做 RAG,而应该先归纳一份“局部规格契约”。
#7.2 技能抽取:Ctx2Skill / From Context to Skills
另一条线是把上下文中的规则和流程抽成显式自然语言 skill。
From Context to Skills: Can Language Models Learn from Context Skillfully? 提出 Ctx2Skill。它的想法是:
如果上下文太长、太杂,模型每次直接读原文很难稳定使用。能不能先把其中的规则、流程、技巧提炼成一组可复用 skill,再把这些 skill 注入模型?
Ctx2Skill 用了一个 multi-agent self-play 框架:
- Challenger 生成 probing tasks 和 rubrics,用来逼出模型没学会的地方;
- Reasoner 尝试用当前 skill set 解题;
- Judge 给二元反馈;
- Proposer / Generator 根据失败案例更新 skill;
- Cross-time Replay 避免技能过拟合到后期极端任务。
它在 CL-Bench 的四类任务上都提升了表现,例如:
- GPT-4.1 从 11.1% 提到 16.5%;
- GPT-5.1 从 21.1% 提到 25.8%。
这条线和我们平时写 agent skill 很像:把一次上下文阅读中的隐含经验沉淀成可读、可查、可复用的 procedure。区别是 Ctx2Skill 希望这个过程自动化,并用自博弈发现遗漏规则。
#7.3 推理合成:Context-CoT
Context-CoT: Enhancing Context Learning via High-Quality Reasoning Synthesis 也以 CL-Bench 暴露出的能力缺口为出发点。
它关注的是:模型不是完全没有相关信息,而是缺少高质量的中间推理过程来把上下文知识组织起来。
可以把它理解成:
- 直接回答:模型容易漏规则;
- 普通 CoT:可能只是泛泛而谈;
- Context-CoT:希望围绕上下文中的新知识生成更高质量、更针对性的 reasoning traces。
这类方法的基本假设是:context learning 不只是 retrieval,也不只是 final answer,而需要一个显式的“学习—整理—推理”中间层。
#7.4 现实生活上下文:CL-bench Life
CL-bench 原版更多是专业、领域化、相对整理好的复杂上下文。后续又有 CL-bench Life: Can Language Models Learn from Real-Life Context?。
它把问题推进到更日常的 AI assistant 场景:
- 多人群聊记录;
- 个人档案;
- 行为轨迹;
- 零散笔记;
- 日常交流中的指代和社会关系。
数据规模:
- 405 个 context-task pairs
- 5,348 条 rubrics
- 三大类别:Communication & Social Interactions、Fragmented Information & Revisions、Behavioral Records & Activity Trails
结果也很低:
- 最好模型 GPT-5.4:19.3%
- 平均:13.8%
这对个人 AI 助手很关键。真正的 personal agent 面对的不是干净 API 文档,而是乱七八糟的聊天、日程、文件、偏好、历史决定。CL-bench Life 说明:仅仅给模型更多上下文,不足以让它变成可靠生活助理。
#7.5 从 Context Learning 到 Continual Learning Bench
另一个同名但不同 benchmark 是 Continual Learning Bench: Evaluating Frontier AI Systems in Real-World Stateful Environments。
它关心的问题从“一次上下文中学会规则”扩展到“连续经验中持续变强”。它设计了六类真实 stateful 环境:
| 任务 | latent structure | 希望系统学会什么 |
|---|---|---|
| Blind Spectrum Monitoring | RF 发射器中心频率、带宽、休眠模式 | 多次扫描后建立频道地图 |
| Codebase Adaptation | 文件布局、模块结构、测试模式 | 解决 GitHub issue 时越来越少探索 |
| Cohort Studies | 患者分布、生存曲线 | 整合连续观察研究,估计总体风险 |
| Database Exploration | schema、列编码、表名 | 问 SQL 问题时复用之前探索经验 |
| Exploitable Poker | 对手 archetype、下注阶段策略 | 从对局中推断固定策略并盈利 |
| Sales Prediction | 门店与产品簇增长率 | 从连续可见数据中预测未来需求 |
它还引入了 gain 指标,用来区分:
- 模型本来就强;
- 系统真的从过去经验中学到了东西。
一个很有意思的发现是:最简单的 full-context ICL 反而是强 baseline。论文报告 full-context ICL with Claude Sonnet 4.6 在 aggregate normalized reward 和 gain 上表现最好之一;一些专门 memory 系统并没有自然胜出。这说明:现在很多 memory agent 的问题不是“有没有记忆模块”,而是“记下来的东西是否可用、是否能改变未来行为”。
#7.6 参数化记忆:TMEM / Scaling Self-Evolving Agents via Parametric Memory
Scaling Self-Evolving Agents via Parametric Memory 更进一步:它认为 prompt-space memory 只能“查阅过去”,但不能真正改变模型策略。
它提出 TMEM:
- agent 不只把历史压缩成文字 memory;
- 还把经验蒸馏成 fast LoRA weights;
- 在一个 episode 内通过轻量 online updates 改变后续行为。
这相当于把 memory 从“外部笔记”推进到“临时参数变化”。
这篇工作也在 CL-Bench 上做了实验,把它作为 context-learning testbed,并报告 TMEM 相比 summary-based 和 retrieval-based memory baselines 有持续提升。
这条线和 wenjun 关心的 model-based RL / latent-space reasoning / agentic RL 很接近:如果 agent 的长轨迹经验只存在 prompt 里,系统很容易受 context window、检索噪声和总结丢失影响;如果经验能进入某种可更新 latent / parameter substrate,才更像真正的持续学习。
#8. 对 LLM Agent 研究的启发
CL-Bench 的价值不只是一个排行榜,而是它把一个问题钉清楚了:
未来 agent 的关键能力不是“上下文窗口够长”,而是“能不能把上下文转化成可执行的局部世界模型”。
这对几个研究方向都有启发。
#8.1 RAG 不够,必须有 rule/spec induction
RAG 解决的是“相关片段在哪里”。但 CL-Bench 表明,很多失败来自 specification acquisition。
所以未来 agent pipeline 可能需要:
- retrieve relevant context;
- induce local rules / specs;
- convert specs into executable checks;
- answer;
- verify against specs;
- repair。
这比单纯“检索后生成”更像一个可控工程系统。
#8.2 Memory 的质量比 memory 的存在更重要
Continual Learning Bench 的结果说明:简单 full-context ICL 仍然很强,而专门 memory 系统未必更好。原因可能是:
- memory 抽取不准;
- memory 太泛;
- memory 和当前任务不匹配;
- memory 没有形成可执行规则;
- memory 没有改变模型策略。
所以 agent memory 的核心问题不是“存什么向量库”,而是“经验如何变成未来行动的 policy improvement”。
#8.3 Skill 是一种中间形态
Ctx2Skill 展示了一种有趣路线:把上下文压缩成自然语言技能。
这比原始上下文更短、更结构化;又比参数更新更可解释、更容易编辑。
对实际 agent 系统,skill 可能是短期最实用的形态:
- 从文档中自动抽取操作规程;
- 从失败案例中更新 checklist;
- 从用户偏好中抽象 stable preference;
- 从代码库探索中沉淀 repo-specific playbook。
#8.4 需要从“答案正确”走向“环境适应”
CL-Bench 其实在逼问一个更基础的问题:模型是否能适应一个临时环境?
这和传统 benchmark 不同。传统 benchmark 里,环境基本固定,模型靠预训练和后训练获得通用能力。CL-Bench 中,每个 context 都像一个小环境,模型必须现场适应。
这很像 agentic RL 中的 meta-learning / online adaptation 问题:
- context 是任务环境描述;
- rubrics 是 reward / validity constraints;
- skill/spec 是 latent task representation;
- answer 是 policy action;
- feedback / self-check 是在线改进信号。
从这个角度看,CL-Bench 是一个很适合连接 inference-time learning、agent memory、contextual policy adaptation、model-based reasoning 的 benchmark。
#9. 我的判断:CL-Bench 重要在哪里?
我觉得 CL-Bench 的重要性在于,它把 LLM 当前能力边界从“会不会推理”推进到了“会不会学习”。
过去很多 benchmark 问的是:
模型预训练和后训练之后,已经会什么?
CL-Bench 问的是:
当我给模型一个陌生局部世界,它能不能在运行时学会这个世界?
这对于真正的 agent 是关键分水岭。因为 agent 面对的永远是局部的、动态的、个体化的环境:
- 一个新代码库;
- 一个新工具链;
- 一个新用户;
- 一个新组织流程;
- 一组新实验结果;
- 一段长期互动历史。
如果模型只能“读到”这些上下文,却不能把它们变成稳定的局部规则、技能和可执行策略,那么它仍然只是一个强大的问答器,而不是能持续适应环境的 agent。
对 wenjun 关心的长轨迹 Agent RL 来说,CL-Bench 给出的信号也很明确:直接在超长轨迹上做 RL 可能会非常难,因为基础模型甚至还没有稳定掌握“从上下文中归纳局部任务结构”的能力。更可能有价值的路线是:
- 先学会从上下文中抽取 spec / skill / latent task state;
- 再让 agent 基于这些中间表示进行 planning / verification / memory update;
- 最后再考虑通过 RL 优化这些抽取、压缩、更新和使用策略。
换句话说,CL-Bench 指向的不是更长 prompt,而是更好的 context-to-state 机制。
#参考论文
- Shihan Dou et al. CL-bench: A Benchmark for Context Learning. arXiv:2602.03587, 2026.
- Shihan Dou et al. CL-bench Life: Can Language Models Learn from Real-Life Context? arXiv:2604.27043, 2026.
- Jike Zhong et al. Agentic Context Learning with Self-Discovered Specification. arXiv:2607.09794, 2026.
- Shuzheng Si et al. From Context to Skills: Can Language Models Learn from Context Skillfully? arXiv:2604.27660, 2026.
- Hongbo Jin et al. Context-CoT: Enhancing Context Learning via High-Quality Reasoning Synthesis. arXiv:2605.25354, 2026.
- Parth Asawa et al. Continual Learning Bench: Evaluating Frontier AI Systems in Real-World Stateful Environments. arXiv:2606.05661, 2026.
- Tao Ren et al. Scaling Self-Evolving Agents via Parametric Memory. arXiv:2606.04536, 2026.