feat: 支持按第三方 Provider 和模型配置上下文窗口

Author: DavidShawaCreated Jul 22, 2026Updated Aug 5, 2026

发帖前必读

  • 我已经搜索过现有 Issues,没有找到重复。
  • 这是功能建议,不是 Bug 报告或使用问题。
  • 使用问题请前往 Discussions。

要解决的问题

目前未知模型的上下文窗口通常按 200K 处理,CLAUDE_CODE_AUTO_COMPACT_WINDOW 又只能全局设置,无法为同一 Provider 下的不同模型分别配置。

第三方 Provider 完成模型映射后,实际模型信息没有参与中央上下文预算,可能导致:

  • 状态栏显示的上下文占用不准确。
  • 自动压缩触发过早或过晚。
  • 小窗口模型在压缩前就被 Provider 拒绝。
  • [1m] 等本地设置与第三方模型实际能力不一致。
  • OpenAI、Gemini、Grok 的超窗错误无法稳定触发反应式压缩。

相关代码主要位于:

  • src/utils/context.ts
  • src/services/compact/autoCompact.ts
  • src/query.ts
  • src/utils/model/modelCapabilities.ts
  • 各第三方 Provider 的 model mapping 和 API adapter

建议方案

增加以 Provider + 实际模型 ID 为键的模型能力配置,支持分别设置上下文窗口和最大输出,并让状态栏、自动压缩及超窗恢复统一使用该配置。

考虑过的替代方案

继续使用全局 CLAUDE_CODE_AUTO_COMPACT_WINDOW,但它无法支持同一 Provider 下窗口不同的多个模型。

为各 Provider 增加单独的环境变量,但它仍然无法区分同一 Provider 下的不同模型。

维护第三方模型硬编码表,但它无法覆盖本地模型、自定义端点和用户自定义部署。

补充信息

建议同时将 OpenAI、Gemini 和 Grok 常见的上下文超限错误统一转换为内部的 Prompt is too long,作为配置不准确时的反应式压缩兜底。

该功能不需要为每个 Provider 实现独立的压缩算法,只需要让现有统一压缩逻辑获得准确的模型上下文能力。

Source: claude-code-best/claude-code