2.6.2 - 无敌大更新
🗜️ 动态工具结果预算 — 替代固定 15K 硬编码
- 根因:Cursor API 输出预算与输入大小成反比,固定 15K
工具结果在大上下文下严重挤压输出空间,导致工具调用截断 - 新增 getToolResultBudget():根据当前上下文大小动态计算工具结果截断阈值
-
100K chars → 4K | >60K → 6K | >30K → 10K | ≤30K → 15K(完整保留)
-
- 在 convertToCursorRequest() 中预估并跟踪上下文字符数,压缩前后均更新
🗜️ 工具指令体积优化 — 减少 ~30% 输入
- 已知工具跳过描述:Read/Write/Edit/Bash/Search 等常用工具不再输出冗余描述(模型已从训练数据中了解)
- 大工具集激进压缩:>25 个工具时 compactSchema() 仅保留 required 参数,进一步缩减输入
- few-shot 紧凑化:示例工具调用从 pretty-print JSON 改为单行紧凑 JSON
- 历史压缩阈值从 400K 降至 100K,工具模式下早期消息截断从 2000 降至 1500 字符
🧠 Thinking 处理简化 — 消除浪费性重试
- 问题:之前检测到 thinking 占比过高时会发起额外 API 调用重试,浪费 1 次请求且效果不稳定
- 新策略:工具指令中主动注入 Do NOT use tags 禁令,从源头阻止 thinking 输出
- 工具模式下收到 thinking 直接静默剥离,不再触发重试 API 调用
- 流式 / 非流式路径统一对齐:thinking 提取逻辑从 config.enableThinking 条件改为无条件提取 +
按模式选择性保留 - 效果:工具模式下节省 1-2 次 API 调用,降低延迟和 quota 消耗
⚡ 输出格式优化
- 工具指令新增 Use compact JSON 规则,引导模型输出无多余空白的 JSON action blocks
- Write 工具行数限制从 150 → 80 行,超出时引导使用 cat >> file 分片写入
- 整体减少输出 token 消耗,为实际内容留更多空间