跳转到内容

deepseek接入 模型勾选了1m,但是在claudecode里模型选择里没有1m上下文的选项

Quick fix

升级 cc-switch 到 v3.17.0+,DeepSeek 供应商的「默认兜底模型」(ANTHROPIC_MODEL)留空或也勾选 1M,只填 Haiku/Sonnet/Opus 映射后重启 Claude Code。

报错原文
deepseek接入 模型勾选了1m,但是在claudecode里模型选择里没有1m上下文的选项。

根因是 Claude Code 选主模型时的优先级:先读 CLI --model,没有则直接读 ANTHROPIC_MODEL(cc-switch 表单里的「默认兜底模型」),读到了就用它且不再看 ANTHROPIC_DEFAULT_OPUS_MODEL / SONNET / HAIKU 等角色 alias,只有在 /model 主动选择时角色映射才生效。旧版 cc-switch 只在 Sonnet/Opus/Haiku 三行提供「声明支持 1M」勾选框,兜底字段旁边没有,用户只勾角色行时兜底字段不带 [1m] 后缀并反向覆盖角色行设置,导致 1M 不启用、模型选择器里没有 1M 选项,/context 仍显示 200K 分母。该 UI 缺陷在 v3.17.0(PR #5124,源自 PR #3680)修复:兜底字段新增了 1M 勾选框(读取不区分大小写,Claude Code 源码用 /\[1m\]/i 匹配,故 #3679 报告的「大写 [1M] 不识别」后被证实是误判)。 另一个相关变体出现在开启 CCS 本地路由/代理时:此时 provider 的模型字段会被 CCS 当作上游 API 的真实 model 值参与映射(src-tauri/src/proxy/model_mapper.rs 直接写回请求体,没有 Claude Code 那种 normalizeModelStringForAPI() 去后缀逻辑)。如果把模型字段填成 deepseek-v4-pro[1m],CCS 会把 [1m] 原样转发给 DeepSeek,DeepSeek 判定它不是规范模型名后 fallback 到 deepseek-v4-flash,CCS 统计页于是出现「deepseek-v4-pro -> deepseek-v4-flash」的记录(左为请求模型,右为上游响应声明的实际模型)。此外 #2780 报告了一个变体:配置 ANTHROPIC_MODEL=deepseek-v4-pro[1m] 且未开代理时,Claude Code 隐含的 haiku/flash 子调用在 cc-switch 用量统计中丢失,评论指出这是未开代理时的子 agent 统计问题,开启 Proxy 后不会漏记。

  1. 升级 cc-switch 到 v3.17.0 或更新版本(旧版表单的「默认兜底模型」字段没有 1M 勾选框,会覆盖角色行的 1M 设置)。

  2. 若开启了 CCS 本地路由/代理:主模型 / ANTHROPIC_MODEL / Default model 留空,Haiku、Sonnet、Opus 三行都填 deepseek-v4-pro(不要带 [1m] 后缀)。留空后 Claude Code 会使用自己支持 1M 的默认 Opus/Sonnet 预设,由 CCS 把模型族映射到 DeepSeek 真实模型名。

  3. 等价地,直接检查写入 Claude Code 的配置,确保没有固定的 ANTHROPIC_MODEL,只保留模型族映射:

    // ~/.claude/settings.json(由 cc-switch 写入的 env 块)
    {
    "env": {
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro"
    }
    }
  4. 若未开启本地路由/代理(CCS 只写配置不接管转发):可以按 Claude Code 客户端语法使用 [1m],主模型填 deepseek-v4-pro[1m],Haiku 填 deepseek-v4-pro[1m],Sonnet/Opus 填 deepseek-v4-pro(不建议也加 [1m],否则 /model 可能出现 deepseek-v4-pro[1m][1m] 的重复后缀显示)。

  5. 重启 Claude Code(必须真正重启以重读 settings.json),用 /context 确认分母变为 1M tokens,用 /model 确认出现 1M 上下文选项;若当前模型未自动落到支持 1M 的预设,用 /model 手动切换。

ToolClaude Code
Versioncc-switch 3.14.1 - 3.16.x 受影响(兜底字段无 1M 勾选框),v3.17.0 起修复
PlatformsmacOSWindows
我勾选了 1M,为什么 /context 显示的还是 200K tokens?
因为 Claude Code 优先读 ANTHROPIC_MODEL(默认兜底模型),它的优先级高于 Sonnet/Opus/Haiku 角色 alias。旧版 cc-switch 的兜底字段没有 1M 勾选框,只勾角色行不生效。升级到 v3.17.0+ 后给兜底字段也勾选 1M,或直接把兜底字段留空,然后重启 Claude Code 再验证。
为什么我输入 /context 之后模型会自动变成 v4 flash 执行?
这通常是开启了 CCS 本地路由且模型字段填了 deepseek-v4-pro[1m]:CCS 会把 [1m] 当成上游模型名的一部分原样转发,DeepSeek 判定 deepseek-v4-pro[1m] 不是规范模型名后回退到 deepseek-v4-flash。本地路由模式下请去掉 [1m] 后缀,只保留 deepseek-v4-pro。
CCS 统计页显示「deepseek-v4-pro -> deepseek-v4-flash」是统计错了吗?
不是。左边是进入 CCS 代理时请求体里的模型,右边是 DeepSeek 上游响应里声明的实际模型。出现这个记录说明代理确实把带 [1m] 的字符串发给了 DeepSeek,DeepSeek 回退到了 flash,统计页如实记录了差异。
大写 [1M] 和小写 [1m] 有区别吗?
没有。Claude Code 源码用 /\[1m\]/i 匹配,大小写不敏感,写入大写也能被正确识别和 strip。#3679 最初报告的「大写不生效」已被报告者本人承认为误判(当时没有真正重启 Claude Code 重读配置)。
为什么上下文里有图片时一直报 model not found?
deepseek-v4-pro 是纯文本模型,Claude Code 对含图片的上下文会误报为 model not found 而不是 unsupported image。换成支持图像识别的模型(如有用户实测 mimo-v2.5 正常)即可。

这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。