truncation_policy.limit 硬编码 10000 导致 Codex 上下文受限 - CC Switch
Quick fix
手动将 cc-switch-model-catalog.json 中 truncation_policy.limit 改为模型实际上下文长度即可临时修复。
Symptom
Section titled “Symptom”truncation_policy.limit 仍是 10000根源在于 cc-switch 内部模板文件 src-tauri/src/resources/codex_native_responses_template.json 第 24-27 行硬编码了 truncation_policy.limit 为 10000。无论用户在 UI 职务角色设定中配置什么上下文长度,生成的 cc-switch-model-catalog.json 中该值始终被重置为 10000。Codex 根据此文件决定每次请求发送多少 tokens 给模型,10000 tokens 对现代 LLM 极度不足,导致对话几轮后被截断。PR #5534 已将 truncation_policy.limit 改为跟随 context_window 动态生成,但截至 v3.16.5 该修复尚未合并,问题仍然存在。
每次在 CC Switch 中修改任何设定后,手动编辑 cc-switch-model-catalog.json,将 truncation_policy.limit 从 10000 改为模型实际支持的上下文长度(例如 1000000 对应 1M 上下文)。
cc-switch-model-catalog.json "truncation_policy": {"mode": "bytes","limit": 10000"limit": 1000000}
Affected Versions
Section titled “Affected Versions”ToolCodex
Version3.16.4 - 3.16.5(受影响版本,尚未修复)
PlatformsWindows
Source Issues
Section titled “Source Issues”本页汇总自 9 个真实 issue
- #3510feat(codex): optionally align session history when enabling providers / 启用供应商时可选对齐会话历史
- #158导出配置,导入至新的 mac,发现 DeepSeek 不可用,检查后发现是导出时就不完整
- #3790针对Codex自定义provider的“一次性设备迁移来改写历史 JSONL 会话与 state_5.sqlite 线程表”功能如何使用?
- #4670怎么关掉自动生成instructions?
- #4832codex_native_responses_template.json truncation_policy.limit 預設 10000 導致 Codex 上下文受限
- #2675Hermes: switching provider does NOT update top-level model.default/provider at all
- #6626[Bug] Claude Code 2.1.235 reports zero cache tokens for DeepSeek
- #6992OMO Slim "Import from local" does not read per-agent models from presets.<active> - agent rows empty with recommended-model placeholders
- #4623配置 claude code cli apikey 会导致 vscode 插件claude code for vscode apikey同步
- 为什么我在 CC Switch UI 里设置了 1M 上下文,生成的配置文件里 limit 还是 10000?
- 因为 codex_native_responses_template.json 中 truncation_policy.limit 是硬编码的 10000,目前不会跟随 UI 设置的 context_window 动态变化。PR #5534 已提供修复,等待合并。
- v3.16.5 修复了这个问题吗?
- 没有。用户在 v3.16.5 上测试确认问题仍然存在。cc-switch-model-catalog.json 正确包含了 max_context_window: 1000000,但 truncation_policy.limit 仍被硬编码为 10000。
- 每次 CC Switch 覆盖设置后都要手动改一次吗?
- 是的,这是目前的临时解法。只要在 CC Switch 中修改任何设定,cc-switch-model-catalog.json 就会被重新覆盖回 limit: 10000,需要再次手动修改。
供应商 API Key 被覆盖:Codex 重启或切换后升级到 cc-switch v4.0.0 或更高版本;该版本重写了切换逻辑,避免供应商密钥互相覆盖并恢复官方登录态。Codex接入第三方模型,对话经常自动中断根因是 cc-switch 把 Codex 的 Responses API 工具调用转成上游 Chat Completions 时丢失了 function call 的 name/call_id;可让 DeepSeek 直连 Codex 绕过代理,或升级 cc-switch 后复测。只在 OpenCode agent 下更新到 v3.16.4 或更新版本,可在 Claude Code、Claude Desktop、Codex 和 OpenCode 中使用 OpenCode Go 预设及纯 API Key 配置。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。