Claude Code 接 DeepSeek 一直刷 unrecognized_model?4 组对照实验,一次讲清

30 秒解决

在 ~/.claude/settings.json 里加一段:

json 复制代码
{
  "modelOverrides": {
    "claude-opus-5-5": "deepseek-v4-pro",
    "claude-sonnet-5-5": "deepseek-flash",
    "claude-haiku-5-5": "deepseek-flash"
  }
}

重新跑一次 claude -p "回复ok",那行告警就没了。

下面解释为什么,以及我踩过的坑。

现象:一行看起来像报错的"告警"

用 Claude Code 通过 ANTHROPIC_BASE_URL 接 DeepSeek 跑非交互模式时,stderr 会多出一行:

csharp 复制代码
[claude-code:unrecognized_model] {"model":"deepseek-v4-pro[1m]","query_source":"sdk"}
ok

注意下面的 ok------请求是成功的。这行不是错误,是"诊断信息":Claude Code 不认识这个模型 ID,所以每次请求都记一笔。

几个特征:

  • 每个进程只写一次(子代理的模型会各写一行)
  • 交互模式下不显示,写进 ~/.claude/debug/ 日志
  • query_source 是 sdk(-p 模式)或以 agent: 开头(子代理)

我的实验:4 组配置对照

为了确定"到底哪个配置项能消掉它",我在同一台机器上做了对照实验(Claude Code 2.1.308 + DeepSeek 官方 Anthropic 端点):

配置 结果
空配置 {} ❌ 告警出现
只有 modelSettings ❌ 告警仍在
只有 modelOverrides ✅ 告警消失
有 modelOverrides,同时直接设第三方模型 ID ✅ 告警消失

结论:只有 modelOverrides 有效。 modelSettings、[1m] 后缀都消不掉它。

顺便验证:[1m] 后缀确实没用

[1m] 只告诉 Claude Code"这个模型是 1M 上下文",用来校正上下文窗口。即使模型 ID 写成 deepseek-v4-pro[1m],unrecognized_model 照刷不误------因为"上下文多大"和"模型认不认识"是两件事。

为什么

Claude Code 内部维护一份"已知模型注册表"(Anthropic 的模型 ID)。你把 ANTHROPIC_MODEL 或 ANTHROPIC_DEFAULT_*_MODEL 设成第三方 ID(deepseek-v4-pro、glm-5.3 这类)时:

  1. Claude Code 不认识这个 ID
  2. 也找不到映射把它"翻译"成已知模型
  3. 于是每次请求写一行诊断

modelOverrides 的作用就是做"别名登记":告诉 Claude Code"把 deepseek-v4-pro 当作 claude-opus-5-5 处理"。这样它既认识了这个模型,上下文窗口、价格口径也一并继承。

修法的三个细节

① key 必须是 Anthropic 模型 ID,不能写家族别名

json 复制代码
// ✅ 对
"claude-opus-5-5": "deepseek-v4-pro"
// ❌ 错(claude 不认这种写法)
"opus": "deepseek-v4-pro"

② key 必须是你的 Claude Code 版本认识的 ID

claude-opus-5-5 需要较新版本。老版本要换成它认识的老 ID(比如 claude-opus-4-8、claude-opus-4-6),否则映射不生效。

③ 按模型档位选 key,上下文窗口自动对上

第三方模型 档位 建议 key
deepseek-v4-pro Opus 档(复杂推理) claude-opus-5-5
deepseek-flash Sonnet/Haiku 档(轻量、视觉) claude-sonnet-5-5 / claude-haiku-5-5

别搞混:两个长得很像的告警

告警 含义 处置
[claude-code:unrecognized_model] {...,"query_source":...} 模型 ID 未被识别(不影响请求) modelOverrides;或升级版本;或检查拼写
Model "xxx" isn't recognized · context assumed to be 200k tokens 识别不了 → 上下文窗口被假定 200K modelOverrides;或给 ID 加 [1m](只修窗口)

第一个是"诊断行",第二个是"上下文窗口提示"------不是同一件事,处置方式也不同。

完整操作步骤

第 0 步:复现确认

bash 复制代码
claude -p "回复ok" 2>&1 | head
# 看到 [claude-code:unrecognized_model] ... 即为复现

第 1 步:备份(改前必须)

bash 复制代码
mkdir -p ~/.claude/backups
cp ~/.claude/settings.json ~/.claude/backups/settings.json.pre-fix
cp ~/.claude.json          ~/.claude/backups/.claude.json.pre-fix

第 2 步:加 modelOverrides

编辑 ~/.claude/settings.json,注意 JSON 逗号。

第 3 步:冒烟验证

bash 复制代码
claude -p "回复ok" 2>&1
# 期望:只输出 ok,不再有 unrecognized_model

第 4 步:失败回滚

bash 复制代码
cp ~/.claude/backups/settings.json.pre-fix ~/.claude/settings.json
cp ~/.claude/backups/.claude.json.pre-fix  ~/.claude.json

附:DeepSeek 官方推荐的 env 配置

bash 复制代码
export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=<你的 DeepSeek API Key>
export ANTHROPIC_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash
export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432

提醒:这份官方配置的 [1m] 是为了 1M 上下文,它本身不消除 unrecognized_model ,要彻底消掉还是要加 modelOverrides。

参考


相关推荐
lifallen2 小时前
ub-mode skill:软件工程原则
人工智能·学习·ai·软件工程·ai编程
TimeFine3 小时前
AI 编码工作流的设计(二)
android·ai编程
Dumbness3 小时前
二十行手写的 SKILL.md 头部解析,遇到 YAML 的折叠写法、单引号和嵌套键就读错:和 js-yaml 逐条对照
node.js·ai编程
ZzT4 小时前
vibe coding 做小游戏·问题排查篇:解决包体积、引擎适配与 iPhone 机型适配问题
ai编程·游戏开发
VIP_CQCRE5 小时前
Claude Code 如何接入 Ace Data Cloud?终端与 VS Code 配置指南
api·ai编程·vs code·claude code·ace data cloud
濮水大叔5 小时前
AI Vibe Coding 实战(续):SMS 套件产品决策与开发方案
ai编程·全栈·vibecoding
重生之我在番茄自学网安拯救世界5 小时前
AI开发者日报 第2期 | Anthropic零 Rust 团队靠Claude重写核心 API,CPU 降 40–50%
人工智能·网络安全·大模型·ai编程·claude
vipxieliang5 小时前
微服务架构设计:从拆分到治理的完整指南
openai·ai编程
日日大王学编程6 小时前
开源Agent项目记忆设计决策对比
python·ai·langchain·开源·ai编程