Skip to content

v2.7.8 — 三大防截断机制:上下文压力膨胀 / 自适应历史预算 / 智能截断

Latest

Choose a tag to compare

@7836246 7836246 released this 27 Mar 03:49
· 22 commits to main since this release

🎯 核心改进:从根源缓解 max_output_token 截断

长对话 + 多工具场景下,Claude Code 经常遇到输出被截断的问题。本版本新增三个可选的防截断机制,全部默认关闭,按需在 config.yaml 或环境变量中开启。


🆕 上下文压力膨胀(Context Pressure Inflation)

配置:context_pressure: 1.35 / 环境变量:CONTEXT_PRESSURE=1.35

原理:Claude Code 假设模型 context window 为 200K tokens,在 ~80%(160K)时才触发自动压缩。但 Cursor API 实际窗口只有 ~150K,导致客户端压缩太晚,输出空间被挤压。

解决方案:虚增报告给客户端的 input_tokens(×1.35),让 Claude Code 提前触发内置的自动压缩机制。用户无需修改客户端任何设置

实际输入 报告给客户端 效果
118K tokens 160K tokens ✅ 触发自动压缩,避免截断

🆕 自适应历史预算(Adaptive Budget)

配置:tools.adaptive_budget: true / 环境变量:TOOLS_ADAPTIVE_BUDGET=true

工具数量越多,自动从历史 token 预算中预留越多输出空间:

  • 90 个工具 → 额外预留 ~8K tokens
  • 5 个工具 → 额外预留 ~450 tokens

🆕 工具结果智能截断(Smart Truncation)

配置:tools.smart_truncation: true / 环境变量:TOOLS_SMART_TRUNCATION=true

按工具类型差异化截断,保留最有价值的部分:

工具类型 头部保留 尾部保留 原因
Read 50% 30% import/声明在头部,关键代码可能在尾部
Bash 20% 60% 错误信息和最终输出在末尾
Search 70% 15% 第一批匹配结果最相关
Default 60% 40% 通用平衡策略

📦 变更文件

  • src/handler.ts — 上下文压力膨胀逻辑
  • src/converter.ts — 自适应预算算法 + 智能截断逻辑 + tool_use_id 映射
  • src/config.ts — 新增配置解析 + 环境变量覆盖
  • src/types.ts — 新增 contextPressureadaptiveBudgetsmartTruncation 类型
  • config.yaml.example — 新增配置项及详细注释
  • docker-compose.yml — 新增环境变量条目
  • README.md — 更新特性列表 + 环境变量表 + 更新日志

⬆️ 升级指南

  1. 拉取最新代码或 Docker 镜像
  2. 三个功能默认关闭,零配置即可平滑升级
  3. 如需开启,在 config.yaml 中取消注释对应配置项即可(支持热重载)

完整版对照: v2.7.7...v2.7.8