Report

每日技术报告|2026-09-19:SWA 有界重放、L3 乐观 Prefill 与可更新 Agent 记忆

聚焦 vLLM 的 DeepSeek-V4.1 SWA 有界重放、SGLang 的 L3 乐观 Prefill,以及上下文压缩、多 Agent 协作和无监督安全检测的新论文。

今日概览

今天最值得关注的主线不是单一 kernel 提速,而是推理与 Agent 系统开始更明确地区分“必须长期保存的状态”和“可以低成本重建的状态”。过去 24 小时内,vLLM 与 SGLang 都合入了直接涉及 KV 生命周期和分层恢复路径的改动;与此同时,两篇新的 Agent 论文分别从上下文压缩和多 Agent 协作角度说明,状态管理不能只优化当前一步,而必须考虑未来更新与任务依赖结构。

  1. vLLM 将 DeepSeek-V4.1 的 SWA KV 从可复用前缀状态中剥离。 新合入的 SWA bounded replay 不再把 128-token sliding-window KV 放入 prefix cache 或 KV Connector;发生前缀命中时,仅重算命中位置之前最后 128 个 token 来恢复这部分状态。
  2. SGLang 把 optimistic prefill 扩展到 L3 write-through HiCache。 当请求让出 prefill 资源并稍后重试时,如果前缀已写穿到 L3,系统会重新查询存储并恢复前缀,而不是直接完整重算。
  3. Agent memory 的评价标准需要从“现在能答对”扩展到“未来更新后仍保留必要区分”。 新论文构造 paired-history audit,展示压缩记忆即使当前回答正确,也可能已经删除未来更新需要的信息。
  4. 多 Agent 并非越多越好。 新工作将收益边界归因于任务结构:长程、稀疏依赖任务更可能从协作获益;紧耦合顺序任务中,多 Agent 的上下文与协调成本可能反而占主导。
  5. 隐空间安全检测出现局部稀疏视角。 新工作利用 SAE 概念空间中的 local sparsity,只建模安全数据来做异常检测。

重点进展

1. Correct Now, Insufficient Later:上下文压缩的“未来更新充分性”

Correct Now, Insufficient Later: Auditing Update Sufficiency in Context Compression 于 2026 年 9 月 17 日提交。它讨论 Agent memory 与 context compaction 中一个容易被传统 benchmark 忽略的问题:一份压缩后的记忆可以足以回答当前问题,却已经丢失未来更新所需的区别信息。

论文采用 paired-history audit:构造两段历史,使它们对当前查询给出相同答案;随后对两段历史施加同一个未来更新,但更新后正确答案应当不同。作者在 24 对 history、6 类合成机制、12 种 memory condition、两个模型后端上进行了 pilot。论文报告 deterministic frontier selector 的 strict reveal accuracy 在 DeepSeek 后端为 96/96,在 GLM 后端为 82/96;structured writer 为 56/96,并出现大量“格式完整但语义错误”的压缩记录。

作者进一步进行了 identifier renaming。原本 frontier 方法的 late-reference adequacy 为 8/8,但在重命名后的 320 个 transformed instances 中只有 94 个满足要求。作者测试的 label-equivariant repair 虽然消除了命名捷径,却只保住 2/8 个原始 late-reference answers。论文明确说明目前没有独立 held-out 或自然任务验证,代码与复现材料将另行发布,因此它更应被视为一种审计未来更新充分性的方法,而不是普适最优的压缩算法。

对 Agent infrastructure 的意义在于,memory compaction 不能只用“压缩后当前任务准确率”验收。长期 Agent 会经历工具返回、用户修正、环境状态变化和分支恢复;一旦压缩器提前删除尚未显现用途的区分信息,错误可能直到后续更新才暴露。

2. Rethinking Multi-Agent Collaboration:协作收益取决于依赖图

Rethinking Multi-Agent Collaboration: When More Is Less 同样于 9 月 17 日提交。论文关注单 Agent harness 持续增强后,增加更多 Agent 是否仍必然提高能力。作者将关键变量指向任务结构。

论文称,多 Agent 的系统性收益主要出现在长程且依赖稀疏的任务中;对于紧耦合、顺序依赖强的 workflow,单 Agent harness 更有优势,因为多 Agent 引入的上下文复制、通信和协调开销难以被并行性抵消。基于这一观察,作者提出 SAIGE(Semantic-Aware Incremental Graph Evolution),把协作过程表示为动态演化图:节点是按需生成的 Agent 实例,边表示通过内容检索建立的语义依赖。

这项工作的系统价值在于提出更合理的 serving 视角:Agent 数量不是独立的扩展维度,任务 DAG 的依赖密度才决定可并行空间。 论文摘要还明确指出,扩大 agent pool 或增加递归深度并不会稳定改善结果。目前公开材料不足以支持通用生产结论,因此这里把它视为“任务结构决定协作边界”的研究信号。

3. Local Sparsity:用 SAE 局部支持集做无监督安全异常检测

Local Sparsity Enables Unsupervised LLM Safety Detection 由 Xin Chen、Gil Kur、Alexander Shevchenko 和 Andreas Krause 提出,9 月 17 日首次提交。它把 deployment-time safety detection 表述为异常检测:只学习安全数据的内部激活分布,然后识别偏离该分布的输入,而不是要求预先收集完整的 unsafe training data。

方法建立在 linear representation hypothesis 与 sparse autoencoder(SAE)概念空间上。作者的关键观察是:在该空间中,邻近样本往往共享一个很小的 active support,因此可以先建立局部 mask,再在局部活跃特征上计算异常程度。论文给出了理论论证,并在多种模型架构、能力数据集与安全数据集上验证。

作者报告,当允许使用 1% 的 OOD 数据做 calibration 时,locally sparse 方法达到接近最优的性能,同时只使用 1–2% 的 SAE neurons 参与计算。这并不等价于已经证明能抵抗自适应攻击,也不能直接替代生产中的输入过滤、策略模型或输出审计,但它展示了一个重要方向:可解释性表征可以从离线解释工具变成在线安全信号。

开源项目的重要新闻

vLLM:DeepSeek-V4.1 的 SWA bounded replay 已合入

vLLM PR #56227 已于 2026 年 9 月 18 日 22:01 UTC 合并,对应北京时间 9 月 19 日 06:01。DeepSeek-V4.1-Flash 每层除了可做 prefix caching 的 compressed MLA 与 indexer cache,还维护 128-token sliding-window KV。该 PR 的判断是:为了跨请求前缀复用而长期保存这 128-token SWA 状态,存储和传输成本高于命中后重建它的成本。

新路径把 SWA cache 标记为不可 prefix-cache,并设置 prefix_replay_tokens=sliding_window。当前缀命中结束于位置 H 时,scheduler 将 computed boundary 回退到 H-128,重放最后一个窗口;其余已经命中的 MLA/indexer KV 保持复用。KV Connector 因此只需传输 MLA 与 indexer cache。该机制默认开启,但要求 Model Runner V2 且不能启用 prefill context parallelism,否则回退到原来的 SWA 缓存行为。

PR 给出的 GSM8K 5-shot 测试使用 TP4 GB200、1319 个样本。replay 开启时 cold/hit 两遍 exact match 为 0.9272/0.9212;关闭 replay 时为 0.9295/0.9295。作者认为差异处于该样本量的 run-to-run noise 范围,但也明确指出 replay 后输出设计上不保证与 cold run bit-identical。此外,kv_load_failure_policy=recompute 下原地重启运行请求仍存在 stale replay boundary 的已知缺口。

SGLang:optimistic prefill 可从 write-through L3 恢复前缀

SGLang PR #40043 于 2026 年 9 月 18 日 23:04 UTC 合并,即北京时间 9 月 19 日 07:04。此前 --optimistic-prefill-attempts 只允许配合 L2 write-back hierarchical cache。新改动支持 buffer-only、write-through L3 storage backend。

请求在 optimistic prefill 中让出资源并重新入队前,记录已经留下的 cached-prefix 长度;因为 write-through L3 已经发布这段前缀,重试时系统会重新查询 L3,尝试恢复已经从 device cache 驱逐的 prefix,而不是立即从头重算。配套的 PR #40042 还修正 retry bookkeeping:如果一次 prefetch 因剩余 span 太短而根本没有访问 storage,就不应消耗有限的 retry budget。

PR 新增 2-GPU 测试,在 file-backed、buffer-only write-through L3 和较小 prefill/decode pool 下强制发生 retry,并要求 GSM8K 200 样本 score > 0.62。作者还表示内部 1P1D 测试中重试后的前缀重算明显减少,但没有公开绝对性能数字,因此不能据此声称吞吐或延迟获得确定幅度提升。

前沿概念和技术

今天几条材料共同指向一个概念:状态的价值不能只按当前位置判断,而要按未来恢复成本和未来可分辨性判断。 vLLM 的 bounded replay 认为某类 SWA 状态未来可以便宜重建,因此选择不保存;SGLang 的 L3 optimistic prefill 认为已发布的前缀未来仍可恢复,因此请求让出资源不等于状态失效;context-compression audit 则展示另一面——有些看似当前无用的信息,未来更新后可能突然成为区分正确状态所必需的证据。

这也说明“压缩”“驱逐”“卸载”“重算”不能只用一个统一的 cache hit/miss 模型描述。对于现代 LLM/Agent runtime,更合适的抽象至少需要区分可直接复用状态、可低成本重建状态、跨层可恢复状态,以及一旦丢失便无法从未来输入恢复的语义状态。

深度分析

从系统角度看,vLLM 与 SGLang 的两项改动都在弱化“请求生命周期 = 状态生命周期”的绑定。前者允许某类模型状态不进入持久化复用路径,后者允许请求暂时退出执行后继续从下层存储继承此前计算结果。这意味着未来的 runtime 更可能把执行实体、状态对象与存储副本分别建模,再由成本和一致性约束决定重算、迁移或复用。

Agent 侧的 context-compression 论文则补充了另一种成本:语义状态不一定可重算。KV 丢失后通常可以重新 prefill;但压缩记忆删除的区分信息如果没有保留在其他层次,未来新增输入可能无法把它恢复出来。因此显式 Agent memory 与隐式模型运行时状态虽然都叫“状态”,其可恢复性和错误代价完全不同,不能使用同一套驱逐准则。

多 Agent 工作进一步说明,状态系统还必须感知任务拓扑。稀疏依赖允许不同分支独立演进,紧耦合依赖则要求频繁同步;同样的 Agent 数量在两类 workload 上会产生完全不同的通信、上下文和 checkpoint 成本。评价 Agent runtime 时,应把 dependency density、branch lifetime、跨 Agent 状态传输量与同步等待纳入 workload 描述。

对大模型推理与存储优化的启发

第一,混合模型状态需要分类型管理。 当模型同时包含 MLA、稀疏索引、SWA、SSM 或其他状态时,把所有状态绑定到同一个 prefix-cache 生命周期会产生不必要的数据移动。vLLM 的 SWA replay 给出了一个直接反例:某些状态更适合重算而非持久化。

第二,分层缓存与调度器必须共享恢复语义。 SGLang 的改动之所以成立,是因为 scheduler 知道 write-through L3 中已经存在可恢复前缀,并在重新入队时保留足够的 match 信息。若 scheduler 只知道 GPU resident/miss,而不知道下层存储是否拥有有效副本,就无法做正确的重试决策。

第三,Agent 状态压缩需要面向更新测试,而不是只面向静态 QA 测试。 长程 Agent 的上下文会持续追加工具结果、用户反馈和环境变化。一个只优化“当前回答正确率”的 compactor 可能提前删除未来状态转换需要的 discriminative information。

第四,多 Agent serving 的资源模型应显式包含依赖结构。 如果任务高度串行,增加 Agent 只会增加 prompt、memory、tool trace 和通信流量;如果任务依赖稀疏,则分支并行才有机会覆盖这些成本。

今夜白的观察

今天最明显的变化是,主流推理框架对“KV Cache”的理解正在继续从一块统一缓存转向由多类状态、多个介质和多种恢复方式组成的状态系统。vLLM 的 bounded replay 与 SGLang 的 L3 retry 都不是简单扩大 cache,而是在问更细的问题:这份状态真的值得保存吗?如果被驱逐,能从哪里恢复?恢复是传输更便宜还是重算更便宜?

Agent 侧存在同构问题,但代价函数不同。推理系统丢掉一段可重算 KV,主要付出计算成本;Agent memory 丢掉一段未来才显现价值的语义信息,可能造成不可逆的状态歧义。因此值得持续观察的是如何为不同状态定义正确的生命周期、恢复语义和验证方法。

多 Agent 论文也提醒了一个容易被工程热潮掩盖的问题:协作本身不是能力。只有任务图中存在足够可并行、低耦合的子结构,多个 Agent 才可能形成净收益。系统研究若能把任务依赖、状态共享和运行时成本统一建模,会比单纯比较 Agent 数量更有解释力。

参考资料

论文

官方代码与 PR