Z.ai × Tsinghua University · Paper Guide

Trace as State:让推理轨迹成为长上下文的条件状态

《Trace as State: Reasoning Traces as Conditional States for Long-Context Transformers》中文技术学习文档

作者:Xu Zou、Jie Tang 机构:Z.ai、清华大学 arXiv:2609.02702v1 提交:2026-09-02
长上下文推理 推理时扩展 因果注意力 文本状态 二次读取
01

先看结论:创新点不是“更多思考”,而是“更早提供状态”

一句话:模型先读长上下文并产生推理轨迹,再把轨迹放到原始长上下文之前进行第二遍读取,使第一遍发现的任务状态能够参与第二遍每个上下文 token 的因果表示构建。
26 / 27
组合优于 Trace Append
3 个模型 × 多任务 × 多指标
29.2 → 81.8
DeepSeek Parents EM
首遍 → Trace as State,+52.6 点
66.4 → 100.0
GLM-5.2 Parents EM
首遍 → Trace as State,达到满分
论文真正证明了什么

在相同模型、相同长上下文、相同轨迹文本 T 下,仅改变 T 位于上下文之前还是之后,前置方案在绝大多数实验格上更好。

论文没有证明什么

理论给出的是确定性、精确、单遍处理器的最坏情形分离;它不能直接证明现实 Transformer 的提升完全由“内存复杂度下降”造成。

02

问题从哪里来:输入顺序与推理顺序不一致

因果 Transformer 在位置 i 只能读取前缀 1…i。但很多长上下文任务的关键状态——当前目标、已解析指代、搜索边界、被排除的假设——要到读完整段材料并开始推理后才逐渐明确。

读取超长上下文
早期表示已经形成
→
推理后发现任务状态
目标、线索、搜索边界
→
状态来得太晚
无法反向改写早期表示

一个直观例子

假设上下文是一条 25 万 token 的图边列表,问题最后才要求“找出节点 X 的全部父节点”。首遍读取边列表时,模型还未充分建立“X 是当前目标、需要维护前驱集合”的任务状态。问题虽然在末尾能指导后续回答,却不能改变前面边列表在同一因果 pass 中已经形成的表示。

论文在所有主实验中都把问题 q 放在末尾;严格比较的实际顺序是 [T, x, q] 与 [x, T, q]。

03

理论依据:条件先到,处理器只需维护一条状态路径

3.1 因果状态更新处理器

给定信息序列 C = (c₁, …, cₙ)、有限状态空间 S 和固定更新规则 U,处理器按输入顺序更新状态:

si = U(si-1, ci),i = 1, …, n

条件 z ∈ S 决定初始状态 s₀ = z。当顺序是 [z, C],处理器已经知道从哪条状态路径开始,只需保存当前 sᵢ。

条件优先 · [z, C]
z→c₁…cₙ→sₙ

边读边沿已选中的一条路径更新;工作状态只需表示一个 S 中的值。

条件滞后 · [C, z]
c₁…cₙ→z→sₙ

读完 C 仍不知道初始状态;最坏情况下要保留 C 对所有可能 z 的作用。

3.2 指数级差异如何得到

令 |S| = 2ᵇ。条件优先只需标识当前状态,因此使用约 b bits。条件滞后时,序列可能对应从 S 到 S 的任意函数;这样的函数共有 |S||S| 个,区分它们需要:

log₂(|S||S|) = |S| · log₂|S| = b · 2b bits
具体检查:当 |S| = 4 时,条件优先需要 2 bits;条件滞后要区分 4⁴ = 256 个残余映射,需要 8 bits。

3.3 理论的适用边界

确定性

证明针对确定性处理器,不直接覆盖随机采样模型。

精确计算

要求对所有输入精确,不讨论容错近似所需的更小状态。

单遍且不可重读

晚条件设置不能回看 C;而论文方法正是用新 pass 主动重读。

作者把有限上下文、有限精度的因果 Transformer 视作因果状态更新处理器:工作状态包含位置、各层 KV 项以及其他持续的输入相关推理缓冲区。但这是一种抽象对应,不是对某个具体模型参数规模的定量下界。

04

Trace as State:读、算、反馈、重读

PASS 1

独立读取与推理

模型对同一问题运行 ntr 次,每次得到推理轨迹 rⱼ 与可见答案 aⱼ。

SERIALIZE

把轨迹冻结成文本状态 T

固定序列化器 π 按来源顺序拼接轨迹,加入固定说明、编号和边界标签;答案不进入 T。

PASS 2

状态前置后重读上下文

新 pass 接收 [T, x, q]。轨迹中的目标、线索与中间判断在模型重新读取 x 时已经可见。

CONTROL

用相同 T 做位置对照

Trace Append 接收 [x, T, q];两组只有轨迹相对长上下文的位置不同。

Trace as State
Txq

T 能影响第二遍上下文 token 的因果处理过程。

Trace Append
xTq

T 能指导后续推理与答案,但不能改变此前已形成的 x 表示。

论文采用的轨迹块

<first_run_reasoning_traces>
[Trace 1]
{r1}
[Trace 2]
{r2}
...
[Trace n]
{rn}
</first_run_reasoning_traces>

主实验每题首遍运行 5 次,并把 5 条轨迹全部放入第二遍。单条轨迹超过 50,000 字符时仅保留前 50,000 字符并追加省略号;序列化说明明确警告轨迹可能出错,需要回到原始上下文核验。

05

实验设计:严格控制“同一 T,不同位置”

维度设置为什么重要
模型DeepSeek V4 Pro Preview、Qwen 3.7 Max、GLM-5.2来自不同提供方与不同长上下文架构
GraphWalks 256K200 题 × 5 次;BFS / Parents;EM、集合 F1要求在长边列表上维护遍历或前驱状态
MRCRv2 8-needle256K / 512K;200 题 × 5 次;EM、SequenceMatcher把最终请求绑定到更早的正确请求-响应实例
NUB-1M Season 2400–700K token 小说;20 题 × 5 次;模型判分准确率长篇小说中的复杂阅读理解
无效输出阻断、超长、格式错误、缺失、非终止、内容过滤均记 0避免只统计成功响应造成乐观偏差
公平对照同一 x、同一 T、同一模型,仅交换 T 与 x直接检验“状态何时可见”
版本细节:论文说明 DeepSeek V4 Pro 使用 2026-04-24 版本,而不是同名的 2026-08-13 版本。三种模型均通过官方提供方接口运行;Qwen 的 “xhigh” 是固定系统提示词,不是服务端 reasoning_effort 参数。
06

核心结果:位置优势在状态维护型任务上最明显

下表保留论文 Table 2 的全部主结果。每个数值均为 5 次重复平均后的百分数;同一模型与指标内的最佳值以粗体显示。

模型 / 条件GW BFSGW ParentsMR 256KMR 512KNUB
EMF1EMF1EMSeq.EMSeq.Acc.
DeepSeek · First31.636.429.246.553.878.545.463.660.0
DeepSeek · Append41.848.343.065.366.679.649.466.971.0
DeepSeek · State58.865.981.891.376.888.752.673.373.0
Qwen · First60.068.160.887.279.883.136.243.737.0
Qwen · Append60.470.471.091.784.087.140.447.449.0
Qwen · State63.871.796.499.188.491.346.852.551.0
GLM · First55.870.766.488.540.248.242.652.043.0
GLM · Append60.075.883.292.740.058.344.659.965.0
GLM · State63.475.0100.0100.061.271.955.470.166.0

Trace as State 相对 Trace Append 的 EM 提升

DeepSeek · Parents
+38.8
Qwen · Parents
+25.4
GLM · MR 256K
+21.2
DeepSeek · BFS
+17.0
GLM · Parents
+16.8

单位:百分点;条形最大值按 40 点归一化,仅用于比较代表性 EM 差值。

统计稳健性

严格同 T 对照的 24 个 GraphWalks / MR 指标单元中,20 个问题簇 bootstrap 95% 区间完全高于 0。

唯一反例

GLM-5.2 的 GraphWalks BFS F1:Append 75.8,State 75.0,低 0.8 点;但该任务 EM 仍由 60.0 提升到 63.4。

07

消融实验:为什么不能只归因于“多读一遍”或“看到答案”

作者在 DeepSeek V4 Pro Preview + GraphWalks 256K 上加入多种控制。Parents 子任务的差距最能说明问题。

条件提示顺序Parents EMParents F1解释
First pass[x, q]29.246.5单遍基线
Oracle@5事后挑 5 次中最佳50.075.0State 仍超过事后最优首遍答案
Question First[q, x, q]53.064.6问题本身确实可充当一部分任务状态
Re2[x, q, x, q]50.068.9重读有效,但不等于带状态重读
Answer Feedback[a, x, q]45.458.0最终答案承载的状态少于完整轨迹
Random Trace[Trand, x, q]14.231.3泛化“脚手架格式”无效,错误状态反而伤害
Trace Only[T, q]43.867.3轨迹有信息,但不能替代原上下文
Trace Append[x, T, q]43.065.3轨迹能指导最后回答,但来得太晚
Trace as State[T, x, q]81.891.3任务相关状态在重读前已经可用
轨迹数量也是推理预算:在 ntr = 1…5 的嵌套实验中,性能总体随轨迹数量上升,且每个数量下 State 都高于 Append。它提示可以把“收集多少条状态候选”作为 inference scaling 参数。
08

如何正确理解:轨迹是状态代理,不是模型真实内部状态

成立

推理轨迹可以携带目标、已找到证据、候选路径、排除项等任务相关信息,并在下一 pass 中影响计算。

成立

相同文本在上下文前后的位置并不等价;因果注意力使“何时可见”成为能力变量。

需谨慎

轨迹可能不完整、带偏见或包含错误。论文明确把它称为 textual proxy,没有把它等同于隐藏状态或形式化条件 z。

不成立

不能据此断言模型“理解了自己全部推理过程”,也不能把输出的思考文本当作忠实可解释性证据。

本质上是“跨 pass 的外部递归”

因果 Transformer(模型结构不变)
└─ Pass 1:从长上下文中发现状态
└─ 文本接口:把状态外化为 T
└─ Pass 2:T 作为前缀,重新处理上下文
└─ 效果:用“已知目标”重新组织证据
09

工程实现:优先使用可审计的结构化状态

很多线上 API 不开放原始私有推理轨迹。工程上更稳妥的做法,是让首遍显式输出一个可保存、可校验、可裁剪的“任务状态摘要”,而不是依赖隐藏思维链。

推荐的状态字段

  • 任务目标与最终约束
  • 已定位证据及来源位置
  • 已解析实体与指代关系
  • 候选结论与置信度
  • 待验证假设与冲突项
  • 第二遍的读取 / 搜索策略

必须加的防护

  • 把状态声明为“不可信提示”,要求回原文复核
  • 给证据保存稳定 ID,不复制无法追踪的片段
  • 过滤提示注入与敏感数据
  • 限制状态长度并保留高价值字段
  • 记录状态来源、模型版本与生成时间
  • 用同一状态做 Prefix / Append A/B 测试
# 伪代码:用“显式状态摘要”实现可部署版本
states = []
for seed in range(n_traces):
    result = model.generate(
        prompt=[long_context, question],
        output_schema=TaskStateAndAnswer,
        seed=seed,
    )
    states.append(result.task_state)

state_prefix = serialize_and_filter(states)

# 关键位置:状态必须在长上下文之前
final = model.generate(
    prompt=[
        "以下状态可能有误,必须依据原文逐项核验:",
        state_prefix,
        long_context,
        question,
    ]
)
return final.answer

何时值得使用

场景适配度原因
超长图结构、日志、代码库、合同集合高任务状态在首遍中逐步形成,第二遍可按目标重读
多证据绑定、跨章节指代、排除式检索高状态可记录实体绑定、候选与排除项
短上下文、单点检索、直接分类低额外完整 pass 的成本通常大于收益
高实时交互低到中需要权衡首遍并行数和第二遍重读时延
上下文不可重复发送或高度敏感谨慎重复传输扩大成本与数据治理范围
10

对 Agent 开发的启发:把状态放到“下一轮读环境”之前

对 Agent 最重要的启发:反思文本只有在下一轮感知环境、检索记忆或读取代码之前可见,才真正成为控制后续计算的状态;如果在读完所有材料后才追加,它更像回答阶段的提示。
代码 Agent

首遍记录目标模块、调用链、失败假设;第二遍将状态前置,再重读相关文件或仓库索引。

研究 Agent

首遍形成证据表、术语映射和冲突列表;第二遍按该状态重新扫描材料并核验引用。

故障诊断 Agent

首遍从日志中发现时间窗和故障组件;第二遍以它们为状态重新读取原始日志。

与常见 Agent Memory 的区别

Memory 关注跨任务或跨轮保存什么;Trace as State 更关注同一个长任务中,已发现的状态应该在下一次处理原始上下文的哪个位置出现。二者可以组合:Memory 负责持久化,State Prefix 负责在新的因果 pass 开始前注入。

11

局限、成本与尚未回答的问题

问题影响后续应怎么验证
闭源模型与动态接口模型版本、默认输出上限和缓存策略可能变化,难做完全复现开放脚本、固定快照、报告延迟与价格
理论与实证之间仍有距离最坏情形证明不能确认现实任务的因果机制设计可控合成任务,直接测状态容量与顺序
任务覆盖有限仅 3 个长上下文任务族,未测试多轮 Agent加入代码仓库、日志、网页操作和工具使用任务
NUB-1M 仅 20 题置信区间更宽,1–2 点差异证据较弱扩大题量并采用人工 / 多裁判一致性
成本与时延显著增加需要多个来源运行 + 完整第二遍,且可能降低 KV cache 复用报告准确率 / 成本前沿,做选择性触发
轨迹会放大错误Random Trace 明显低于基线,说明错误状态可能系统性误导重读加入状态校验、证据引用、置信门控与冲突合并
未比较更强的压缩状态原始轨迹冗长,首 50K 字符截断也未必保留最重要状态比较摘要、结构化状态、检索式状态与同 token 预算

论文附录报告了各提供方返回的 cached input、missed input 与 output token。结果表明成本形态强依赖提供方缓存策略,不能简单把前置状态视作“只多一点提示词”;它通常意味着重新处理整段长上下文。

12

建议的学习与复现实验

STEP 1 · 理解

自己推导 |S| = 4 的例子

列出 4 个状态到自身的全部函数数量,解释为什么晚条件必须区分 256 种响应轮廓。

STEP 2 · 最小复现

从 20–50K token 的日志或代码开始

构造需要先发现目标、再回看证据的问题;首遍只输出显式结构化状态。

STEP 3 · 严格 A/B

冻结同一份状态文本

比较 [T,x,q]、[x,T,q]、[x,q,x,q]、[a,x,q];不能为不同条件重新生成 T。

STEP 4 · 统计

按问题配对,先平均重复再 bootstrap

同时统计准确率、无效输出、输入缓存、未命中输入、输出 token、首 token 延迟和总时延。

STEP 5 · 工程化

加入选择性触发与状态压缩

仅当首遍低置信、长上下文确需状态维护时启动第二遍;比较结构化状态与原始轨迹的成本收益。

阅读后的最终判断:Trace as State 提供了一个简单而有力度的系统原则——对因果模型而言,“信息是否存在”不够,还要问“它在处理关键材料之前是否已经存在”。论文的对照实验很强,机制解释合理但仍需更直接验证;工程价值主要在长上下文 Agent、代码理解和复杂证据绑定,而不适合作为所有请求的默认流程。
13

论文来源与数据口径

主要来源:arXiv:2609.02702 — Trace as State,版本 v1,提交于 2026-09-02。

内容范围:正文、附录中的证明构造、Prompt / State 模板、GraphWalks 难度分层、置信区间和 token 用量。

数值规则:实验值均逐项转录自论文 Table 2、Table 3、Table 5;文中“百分点”为百分数直接相减,不是相对增长率。

代码状态:截至 2026-09-10,论文及 arXiv 条目未给出官方实现仓库,因此工程代码为依据方法描述整理的可部署伪代码,不代表作者官方实现。

← 返回内容索引