CodexQA

行业与实践研究与基准测试

中位输入大约是语料的 1%:阿里把长程上下文做成可执行会话

CodexQA 团队阅读约 5 分钟

阿里 Scroll 把会话历史留在只读日志里,模型写代码查询,只有打印结果进入下一轮。BEAM 10M 为 73.1,但 LongMemEval S 的 94.8 低于已有公开最高分;同骨干下相对 CodeAct 只高 1.4 个百分点。

本文目录

中位输入大约是语料的 1%:阿里把长程上下文做成可执行会话

阿里巴巴集团的 Scroll 不把更早的对话压成一份摘要再交给模型。它把一次会话做成可执行环境:原文留在日志里,模型写代码去查、去算,只有打印出来的结果才进入下一轮上下文。

一、为什么摘要和记忆库都会丢证据

长程任务会跨很多轮模型调用、工具返回和返工。窗口是有限的,而且模型能稳定利用的长度往往小于标称窗口。常见做法有两类。一类是压缩:截断旧片段、丢掉工具输出,或换成摘要。一类是外部记忆:事先抽出事实或情节,再用检索拿回来。

两类都在「还不知道以后要什么」的时候决定保留什么。后来如果要比对相距很远的两次工具输出,摘要里没有的细节就回不来,即便磁盘上还有原文。

Scroll(把会话历史放在模型窗口之外、用代码按需取回的上下文管理器)的做法是反过来:追加写入的 Event Log 保存带稳定序号的原文;一个跨调用还在的 Python 内核保存变量;模型用代码搜索、物化和计算;只有 print 的结果进入工作视图。快到预算时,旧片段被移出视图,但序号还在,可以再取回来。检索默认用 BM25(按词项统计排序、不调用嵌入模型的全文检索),论文给出的理由是确定、而且建索引时不用再调一次模型。

内核是失败即关闭的沙箱:日志对内核只读,数据库、文件、网络和工具只开放 harness 声明过的能力。

二、评测怎么摆

论文把问题拆成两截。

长期记忆用 LongMemEval(在跨会话历史里找证据并回答的基准)。Oracle 只有证据会话;S 大约 50 个会话、约 11.5 万 token;M 大约 500 个会话、约 150 万 token。BEAM(更长连贯历史上的记忆推理基准)做到 128K、500K、1M 和 10M token。10M 已经放不进当时的模型窗口。题目会要求收集不相邻证据、跟踪变化、去重或把分散事实加总。

行动用 LOCA(环境描述随工具输出变长、看智能体还能不能继续做事的基准)。论文只报最大的两档:128K 和 256K。

主实验骨干是 Qwen3.8-Max(通义千问这一代的旗舰模型)。上下文管理都跑在 QwenPaw(AgentScope 的智能体操作系统,负责工具调用和执行)上,再用 Harbor 接到基准给的环境。复现入口写在 QwenPaw 仓库的 scroll-research 分支。

模型看到的主要是两个动作:repl_exec 在持久内核里跑一段 Python,中间结果留在内核里;recall_history_python 绑上记忆接口,search 定位被移出窗口的记录,expand 把它们变成 Python 对象,过滤和聚合后再打印。全基准共用一套系统提示和上下文规则,没有 few-shot。记忆基准只加一小段数据布局和答案格式说明。LOCA 用基准自带任务说明,只补可用 API 和工作区路径。

记忆题按会话、按时间灌进 Scroll。每到会话边界就清空原始上下文,只把驱逐索引和 Event Log 带过去。LOCA 从基准给的初始环境开始,轨迹变长时由 Scroll 管上下文。

LongMemEval 报准确率,BEAM 报裁判分,裁判都是基准自带的 LLM-as-a-judge 提示,模型是 Qwen3.6-flash,温度为 0。LOCA 用规则核验最终环境状态,报准确率。除非另有说明,每题在基准容器里只跑一次、一个随机种子。同时记下面向模型的输入、输出 token 和交互轮数。

三、数字:同台和不同台要分开看

记忆系统对照截止 2026-08-15 的公开最好成绩,而且作者写明自己没有重跑基线,因为这一领域的独立复现经常在设置上对不上。表注也写明:这些是文献参照,不是控制变量后的对比,读题模型各行不同,会明显影响分数。

在这个前提下,Scroll 加 Qwen3.8-Max 在 LongMemEval S 为 94.8%。公开数字里 Exabase M-1 为 96.4%,Mastra OM 为 94.9%,Hindsight 为 94.6%,Mem0 为 94.4%。S 上它不是最高。BEAM 10M 为 73.1%,比表中最高的 Exabase M-1(68.0)高 5.1 分。摘要里「超过最好的已发表记忆系统 5.1 分」指的是 BEAM 10M,不是 LongMemEval S。

LOCA 上,四种回路共用 Qwen3.8-Max 和同一套工具,只改上下文怎么管:

回路128K256K从 128K 到 256K
定期摘要的 ReAct86.7%65.3%-21.4
溢出后用召回工具的 ReAct88.0%66.7%-21.3
CodeAct(用代码调用工具、而不是只写文本动作)89.3%85.3%-4.0
Scroll89.3%86.7%-2.6

同骨干下,Scroll 相对 CodeAct 在 256K 只高 1.4 个百分点,掉点更小。摘要里的另一句是:86.7% 比已发表的最好长程智能体高 37.4 分。那是相对 LOCA 论文和榜上的已发表数字,不是相对上面这张同骨干表。

换骨干、其余 harness、工具、提示和规则不动:LongMemEval S 上六家都在 88.8% 到 94.8% 之间,Qwen3.6-35B-A3B(激活参数更小的开源权重模型)也能到 88.8%。BEAM 10M 差距在 15 分以内(73.1% 对 58.1%)。LOCA 256K 拉开到 64 分:Qwen3.8-Max 86.7%,Kimi-K2.7 32.0%,35B 模型 22.7%。论文认为失败不在接口协议,而在执行错误和过早停止。

BEAM 10M 消融(仍是 Qwen3.8-Max,打开思考):灌入时就改成摘要、丢掉原文,总分掉到 19.9,抽精确值、时间推理和知识更新接近 0。去掉持久内核、把搜索和展开改成普通工具调用,低 7.3 分;知识更新 92.5 对 82.5,指令遵循 97.5 对 76.3,单次查找差不多。去掉驱逐索引、只留关键词搜索,总分只低 1.8,但证据散落的题更明显:偏好遵循 89.1 对 74.9,摘要题 70.5 对 62.6,事件排序 64.1 对 58.1。

成本只报 token,不报时延和金额,因为后两者取决于部署。灌入阶段不再额外调模型。BEAM 10M 每题输入 token 的中位数是 10.5 万,大约是语料的 1%;输出比输入小一个数量级。LongMemEval S 和 BEAM 10M 量的是检索,LOCA 量的是做完整道题,所以轨迹更长。

附录里的失败例子包括:检索本身没问题,但跟的是错误的偏好轴;以及按位置抽样时漏掉会话中段的证据。

四、限制

记忆榜不能当成「同一模型、同一裁判、同一预算」的胜负。作者没有重跑基线,裁判又是 Qwen3.6-flash。每题一次,没有报方差。

同骨干时,长程行动的主要差距来自「把中间结果留在环境对象里」,Scroll 相对 CodeAct 的增量不大。弱模型会用这套接口,但长轨迹上的上限明显更低。

索引省下的总分有限,散落证据才看得到差别。有损摘要会把精确值题打穿,所以这套评测奖励「还能回到原文」,不奖励更短的摘要。

论文没有把沙箱逃逸或提示注入当成评测项。结论里的下一步是用前沿模型轨迹做监督微调或策略蒸馏,检索代码怎么写、哪些结果该打印回去,这两件事还没有在本文里测完。

出处:阿里,Yin Lin、Erkang Zhu、Bolin Ding、Jingren Zhou 等(Elaine Ang 实习于阿里巴巴集团),《Context as an Environment: Programmatic Context Management for Long-Horizon Agents》,2026-08-21,https://arxiv.org/abs/2608.21690

觉得有用,转给同事

微信扫码

用微信扫一扫,在手机上打开后即可转发。

用 RSS 订阅

提交勘误