DeepSeek Harness 长会话成本与自动压缩:增长、失效与恢复

作者
DeepSeekAgent.io 编辑部
发布
更新

长会话成本并不只取决于最终回答有多长。Agent 每一轮都可能重新携带系统提示词、历史消息、工具定义与工具结果;当自动压缩没有及时完成,单次请求上下文会持续变大,累计计费可能远高于界面上某一轮看到的 Token。

近期社区在 0.1.7-rc.2 与 0.2.0-rc.2 中报告了自动压缩未触发、长会话后期成本扩大,以及 Goal Round 与截断工具结果相互放大的案例。这些是具体环境中的复现,不代表所有 Session 都会发生,但暴露了一条值得监控的故障链。

DSH 的压缩链路

Compaction 是可选能力,不属于 Agent Loop 主干。自动路径在请求生成前根据两类 Trigger 判断:

  • pressure:估算上下文接近配置阈值;
  • context-overflow:Provider 已确认请求超过窗口。

压缩会选择一段保持 Tool Call/Result 配对的 Surface,用模型生成摘要,再以新的 User Message 替换旧区间。compaction/start、summary 与 end 记录完整事务;中途失败会留下可识别的失败尝试,而不是伪装成已经完成。

为什么窗口满了反而难以压缩

压缩本身也需要一次模型请求。若当前历史已经占满上下文,同时为摘要保留的输出空间过大,Provider 可能在摘要生成前就拒绝请求。此时自动压缩虽然被触发,却没有足够空间完成自救。

例如模型窗口为 80K、最大输出配置为 32K 时,真正可安全装入的历史远小于 80K。把进度条跑到 100% 再压缩,通常已经太晚。应给摘要请求、工具声明和下一轮输出保留明确余量。

工具结果截断如何放大循环

压缩前,DSH 可以先对过大的 Tool Result 做确定性剪枝,保留头尾并移除中间内容。但如果 Agent 依赖的关键证据正好被截断,模型可能重复读取文件、重跑命令或不断验证。Goal 尚未完成时,自动续轮又会继续扩大累计请求量。

因此排查高费用不能只看“模型推理太多”,还要对照:

  • 哪一轮开始出现 […] 或 Spill File;
  • Agent 是否反复读取同一资源;
  • Compaction 事件是否有 start 但没有成功摘要;
  • Goal Driver 是否因未调用完成状态持续续轮;
  • Sub-agent 是否同时复制大段上下文。

监控指标

指标预警信号
单轮输入 Token连续多轮快速上升
缓存未命中输入工具 Schema、系统提示或前缀频繁变化
工具重复率相同路径或命令被反复读取
Compaction 状态多次失败、摘要无明显缩减或遗留锁
Goal 轮数已无新进展但仍自动继续
费用/分钟与输出质量脱钩地持续增长

安全配置与恢复

  1. 上下文阈值不要贴近模型硬上限,为摘要和输出留出空间。
  2. 给长任务设置轮数、时间与费用预算,达到任一上限就暂停检查。
  3. 大文件优先按范围读取,不要每轮重新加载全文。
  4. 观察工具结果剪枝标记,关键证据写入独立短摘要。
  5. 自动压缩失败时停止 Agent,临时扩大窗口后执行一次手动压缩,再恢复原配置。
  6. 恢复前检查可能已经执行的副作用,避免重复发布、写入或远程操作。

如何做可复现实验

固定模型、Profile、任务与工具集合,分别记录前 10 轮与后 10 轮的平均输入 Token、缓存命中、压缩次数、工具调用和费用。再设置一个更保守的压缩阈值重跑。只有当任务成功标准一致时,才能把费用差归因于压缩策略,而不是任务难度或输出质量。

相关阅读

参考资料