2026年7月8日 1 分钟阅读

Context Warp Drive:AI Agent 上下文窗口不够用?确定性折叠技术让长会话永不超限

tinyash 0 条评论

AI Agent 在复杂任务中,每轮对话的上下文都在增长——读取文件、分析代码、调用工具,很快就把窗口撑满。传统的做法要么截断(truncation)丢失关键信息,要么用 LLM 做摘要压缩(summarization)但消耗 token 并让 provider 缓存冷却。Context Warp Drive(CWD)提供了第三种路径:确定性上下文折叠,纯 CPU 计算、零 LLM 调用、字节级确定性输出。

问题:上下文窗口是 Agent 的硬天花板

当你的 Claude Code 或 Codex Agent 运行到第 50 轮对话时,即使最强的上下文窗口也被填满。三种常规补救方案各有代价:

  • 截断(Truncation):直接丢弃最早的上下文。Agent 忘记之前分析过的文件、已经做出的决策,可能重复工作或做出矛盾判断。
  • LLM 摘要压缩(Summarization):让模型把历史对话”压缩”成摘要。每次压缩消耗模型调用的 token 成本($3.00/MTok fresh input),并且因为重写了 prompt 前缀,导致 provider 的 prompt caching 完全失效——后续输入都按新请求计费而非缓存命中($0.30/MTok)。
  • 结束会话重开:手动告诉 Agent “从之前停下的地方继续”,但 Agent 实际上已经丢失了之前的所有状态。

Context Warp Drive 的答案是:不应该压缩语义,应该压缩存储格式

确定性折叠的工作原理

CWD 的核心引擎是一个纯 TypeScript 实现(无 Python 依赖),总共 380+ 个确定性测试覆盖。它的工作方式可以理解为一个”智能分页系统”:

当前会话状态(按时间排序)
│
├── 活跃页面(agent 正在引用)
├── 折叠区域(压缩存储,agent 不直接看到)
│   └── 按原始顺序恢复到上下文底部
└── 冻结前缀(provider 缓存友好,永不修改)

关键设计决策是冻结前缀(frozen prefix)——每次折叠后,对话的起始部分被压缩为一个字节级确定性的前缀块,provider 的 prompt caching 机制识别到这部分内容没变,继续按缓存命中计费。实测数据显示,在生产环境的 Claude Opus 4.8 agent 工作负载中,691 轮对话实现了 89.6% 的缓存命中率;另一个 Opus agent 在 510 轮对话中达到 93.2%

作为对比,使用常规 truncation 或 summarization 的会话,每次压缩后缓存命中率归零。

快速上手

CWD 通过 npm 安装,支持 Anthropic、OpenAI 和 Gemini 三种 provider:

npm install context-warp-drive

基本用法是创建一个 FoldSession 实例,在每轮 LLM 调用前调用 session.prepare()

import { FoldSession } from 'context-warp-drive';

// 每个对话创建一个 FoldSession
const session = new FoldSession();

// 你的完整对话历史(Anthropic / OpenAI / Gemini 格式的消息对象)
const history = [
  { role: 'user', content: '分析一下 src/parser.ts 中的性能问题' },
  // ... 每轮对话后追加新消息
];

// 每次调用 LLM 之前,先对上下文做折叠处理:
const { messages, cacheHot, stats } = session.prepare(history, {
  // 可选:传入上轮的 input token 数,
  // 超过 240K 时自动触发新一轮折叠
  measuredInputTokens: previousUsage?.input_tokens,
});

// messages 是折叠后的视图。cacheHot=true 表示前缀字节级一致,
// provider prompt cache 继续命中,按缓存价计费。
await callLLM(messages);
console.log(`折叠后 ${messages.length} 条消息 · cacheHot=${cacheHot} · 节省 ${stats.savingsPercent ?? 0}%`);

CWD 不直接调用 LLM 的 API——它只处理消息列表的结构变换,把折叠后的消息传给 Claude/OpenAI SDK 即可。FoldSession 会自动判断何时触发折叠,内部使用三种机制协同工作:

  • 滚动折叠(rolling fold):将最早的消息压缩为紧凑的骨架结构
  • 冻结层(freeze):稳定前缀使其被 provider 缓存识别,保持缓存热度
  • 召回层(recall):Agent 再次引用已折叠内容时,自动回溯展开

三种折叠机制协同工作

FoldSession 内部使用三种互补的机制,开发者不需要手动选择策略:

机制说明时机
滚动折叠将最早的对话消息压缩为单行骨架结构(每轮工具调用保留 1 行 + 关键理由)session.prepare() 检测到输入超过压力阈值时自动触发
冻结层保持折叠后的前缀字节级不变,确保 provider prompt caching 持续命中session.prepare() 每次调用都会尝试维持冻结前缀
召回层索引已折叠的内容,当 Agent 再次触及相关路径或文件时自动回溯展开通过 buildFoldIndex + buildFoldRecallContext 按需调用

高级配置选项中,ALWAYS_ON_FOLD_CONFIG 会在每次 prepare 时都进行紧凑折叠(适合持续运行的 Agent),DEFAULT_FOLD_CONFIG 则只在超过阈值时折叠。还可以通过 freeze: { ... } 设置匹配 provider 实际缓存 TTL 的冻结时长。

实测效果

离线基准测试(16 轮故障排查模拟,用 o200k_base BPE token 计数):

策略输入成本额外 LLM 调用信息保留率
截断(滚动窗口)$0.0516044%
LLM 摘要压缩$0.0685644%
CWD 确定性折叠$0.0208094%

确定性折叠的成本最低、信息保留率最高,且不消耗任何额外 LLM 调用。按照 Claude Sonnet 定价,CWD 比摘要压缩节省 70%、比截断节省 60%。生产环境实测的 691 轮对话中,CWD 的缓存命中率维持在 89.6%,这意味着近 90% 的输入 token 按 $0.30/MTok 计费而非 $3.00/MTok。

与 Agent 框架的集成

CWD 是 provider-agnostic 的,可以直接集成到现有的 Agent 工作流中:

  • Claude Code:在每次 claude 调用前对 messages 做折叠处理
  • OpenAI Assistants API:在 thread.runs 循环中每 N 步执行折叠
  • Codex / Cursor:通过工具调用注入折叠逻辑
  • 自定义 Agent 框架:在 agent.step() 前调用 session.prepare(history, options) 做折叠处理

适用场景

  • 长时间代码重构:Agent 阅读 50+ 个文件后仍记得最初修改的目的
  • 多轮调试会话:Agent 持续分析日志、堆栈和代码,不丢失上下文线索
  • 自动化测试生成:Agent 需要持续引用被测模块的结构定义
  • 文档生成:Agent 遍历整个代码库生成文档,始终记得已经覆盖的部分

写在最后

Context Warp Drive 不是另一个 Agent 框架——它是一个专注解决上下文窗口问题的底层库。它的独特价值在于:不依赖 LLM 的智能、不牺牲缓存效率、不丢失信息。对于运行长会话 AI Agent 的开发者来说,这可能是让你从”Agent 跑一半忘了”到”Agent 完整跑完复杂任务”的关键基础设施。

如果你正在用 Claude Code、Codex 或自定义 Agent 处理多步任务,且频繁遇到上下文窗口瓶颈,值得试试这个确定性折叠方案。

相关链接:

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。