
1. Claude Code 更新后为什么连不上 DeepSeekClaude Code 升级到较新版本后启动阶段会先向 Anthropic 官方服务发起一次连通性探测确认账号与网络状态正常然后才读取本地配置。这个行为导致一个很常见的现象你明明在settings.json里把ANTHROPIC_BASE_URL指向了 DeepSeek 的接口甚至ANTHROPIC_AUTH_TOKEN也填了 DeepSeek 的 key但 Claude Code 依然在启动时抛出Unable to connect to Anthropic services然后直接退出连模型列表都加载不出来。问题的根子在于Claude Code 认的是 Anthropic 的协议格式/v1/messages那套而 DeepSeek 官方 API 走的是 OpenAI 兼容格式/v1/chat/completions。两者请求体结构、响应字段、流式事件名都不一样。你直接把 base_url 换成 DeepSeekClaude Code 发出去的 Anthropic 格式请求DeepSeek 那边根本不认识返回 404 或 400Claude Code 就判定为连不上 Anthropic 服务。所以真正要做的不是改一个 base_url 就完事而是在中间加一层协议转换。这层转换器要同时满足两个条件对 Claude Code 暴露 Anthropic 协议对上游 DeepSeek 说 OpenAI 协议。LiteLLM 的 proxy 模式正好干这个活它内置了 Anthropic 到 OpenAI 的适配层还能顺便把多个模型的 key 统一管理起来。这篇就按Claude Code → LiteLLM 本地代理 → TaoToken 统一 Key 通道 → DeepSeek这条链路把settings.json骨架、config.yaml片段、启动命令和 curl 验证动作一次给全。适合已经在用 Claude Code、想接 DeepSeek 省钱、又被新版启动探测卡住的人。我试过直接改 settings 硬接 DeepSeek结果就是反复报错最后还是回到 LiteLLM 这条路才通。2. 前置准备TaoToken 统一 Key 通道与 LiteLLM 安装在动手改配置之前先把两个前置条件理清楚一个是上游 key 从哪来一个是本地代理怎么装。2.1 为什么用 TaoToken 做统一 Key 通道如果你只接一个 DeepSeek直接在 LiteLLM 的config.yaml里写 DeepSeek 官方 key 也能跑。但实际用起来你会发现几个麻烦Claude Code 里可能想切不同模型团队里几个人共用一套配置key 散落在各个 yaml 里不好管额度用超了也没有统一视图。TaoToken 在这里的角色是统一 Key 通道你拿一个 TaoToken 的 key就能在 LiteLLM 里通过改model字段切换不同上游模型不用为每个模型单独申请和轮换 key。对 Claude Code 来说它始终只认本地 LiteLLM 的地址上游换谁它不关心。具体操作上先去控制台创建一个 API Key地址是 https://taotoken.net/api-keys 创建完复制出来后面填进config.yaml的api_key字段。接入文档在 https://taotoken.net/doc 里面写了 base_url 和可用模型名配置前扫一眼确认模型标识没写错。2.2 安装 LiteLLM proxyLiteLLM 的 proxy 模式依赖 Python 环境建议 Python 3.9 以上。已经装过 Python 并配好环境变量的直接一条命令pip install litellm[proxy]装完验证一下版本能打印出来就说明装好了litellm --version如果提示litellm不是内部或外部命令说明 Python 的 Scripts 目录没进 PATH把C:\Users\用户名\AppData\Local\Programs\Python\Python3x\Scripts加进环境变量再重开终端。注意LiteLLM 的 proxy 和 SDK 是两个东西pip install litellm只装 SDK不带litellm命令行。必须带[proxy]后缀否则启动时会报找不到命令。3. 可复制配置config.yaml 与 settings.json 骨架这一节是核心两个文件配好就能跑通。先建目录再写 yaml最后改 Claude Code 的 settings。3.1 创建 LiteLLM 配置文件建一个专门放配置的目录比如D:\litellm在里面新建config.yaml。内容如下注意把api_key换成你在 TaoToken 控制台创建的那个model_list: - model_name: claude-3-5-sonnet litellm_params: model: openai/deepseek-chat api_base: https://taotoken.net/api api_key: sk-你的TaoToken密钥 - model_name: claude-3-5-haiku litellm_params: model: openai/deepseek-chat api_base: https://taotoken.net/api api_key: sk-你的TaoToken密钥 litellm_settings: drop_params: true set_verbose: false general_settings: master_key: sk-local-anything几个字段解释一下。model_name是 Claude Code 那边看到的模型名你可以随便起但建议保持claude-3-5-sonnet这种 Anthropic 风格因为 Claude Code 内部有些逻辑会按模型名判断能力。litellm_params.model里的openai/前缀是关键它告诉 LiteLLM 用 OpenAI 兼容协议去请求上游这样 TaoToken 的/api端点才能正确接收。api_base填https://taotoken.net/api不要带 UTM 参数那是给网页链接用的API 调用不需要。drop_params: true的作用是让 LiteLLM 自动丢弃上游不支持的参数。Claude Code 发过来的请求里可能带一些 Anthropic 特有的字段DeepSeek 那边不认开了这个就不会因为多余参数报 400。3.2 启动 LiteLLM 代理进入配置目录启动代理cd D:\litellm litellm --config config.yaml --port 4000看到下面这行就说明起来了LiteLLM Proxy running on http://0.0.0.0:4000这个窗口不要关Claude Code 每次请求都要经过它。想后台跑可以用start /b litellm --config config.yaml --port 4000但调试阶段建议前台开着方便看请求日志。3.3 修改 Claude Code 的 settings.json配置文件位置在C:\Users\用户名\.claude\settings.json。如果目录不存在就手动建。内容改成{ theme: dark, env: { ANTHROPIC_BASE_URL: http://127.0.0.1:4000, ANTHROPIC_AUTH_TOKEN: sk-local-anything, ANTHROPIC_MODEL: claude-3-5-sonnet } }ANTHROPIC_BASE_URL指向本地 LiteLLM不是 DeepSeek 也不是 TaoToken。ANTHROPIC_AUTH_TOKEN填什么其实无所谓因为 LiteLLM 的master_key设的是sk-local-anything两边对上就行它只是本地代理的准入凭证不会传到上游。ANTHROPIC_MODEL必须和config.yaml里的model_name完全一致写错了 Claude Code 会报模型不存在。3.4 清理旧缓存这一步很多人会漏。Claude Code 会把上次的会话状态、模型信息缓存在C:\Users\用户名\.claude.json里如果之前你改过 base_url 失败过缓存里可能存了错误的端点信息导致新配置不生效。直接删掉这个文件Remove-Item C:\Users\用户名\.claude.json删完再启动 Claude Code它会重新初始化配置。4. 验证请求curl 打通与 Claude Code 实测配置写完别急着开 Claude Code先用 curl 单独验证 LiteLLM 这一层通不通能把问题范围缩小。4.1 用 curl 验证 LiteLLM 代理新开一个终端发一个 Anthropic 格式的请求给本地代理curl http://127.0.0.1:4000/v1/messages \ -H Content-Type: application/json \ -H x-api-key: sk-local-anything \ -H anthropic-version: 2023-06-01 \ -d { model: claude-3-5-sonnet, max_tokens: 100, messages: [ {role: user, content: 用一句话说明什么是协议转换} ] }如果返回类似下面的结构说明 LiteLLM 成功把 Anthropic 请求转成了 OpenAI 请求发给 TaoToken又把响应转回来了{ id: msg_xxx, type: message, role: assistant, content: [ {type: text, text: 协议转换就是把一种接口格式翻译成另一种...} ], model: claude-3-5-sonnet, stop_reason: end_turn }如果返回 401检查x-api-key和config.yaml里的master_key是否一致。返回 404 通常是model_name对不上。返回 500 且日志里出现上游错误多半是 TaoToken 的 key 或api_base写错了。4.2 启动 Claude Code 实测curl 通了之后直接启动 Claude Codeclaude进去之后随便问一句比如帮我写一个 Python 读取 CSV 的函数。如果能看到流式输出正常吐字说明整条链路通了。这时候回头看 LiteLLM 那个窗口应该能看到对应的请求日志包括转发的模型名和耗时。想确认到底走的是不是 DeepSeek可以在 LiteLLM 日志里看model字段或者去 TaoToken 控制台的用量页面看调用记录。如果 Claude Code 里切换模型比如/model命令只要config.yaml里配了对应的model_name就能切过去。5. 本篇常见报错排查配置过程中最容易卡在几个固定位置这里按报错信息对照排查。5.1 Unable to connect to Anthropic services这个报错在启动阶段出现说明 Claude Code 的连通性探测没通过。排查顺序先确认 LiteLLM 窗口还开着http://127.0.0.1:4000能访问再确认settings.json里ANTHROPIC_BASE_URL是http://127.0.0.1:4000而不是https最后确认.claude.json缓存删过了。三个都对了还报就在 LiteLLM 窗口看有没有收到请求没收到说明 Claude Code 根本没读到 settings.json检查文件路径和 JSON 格式多余逗号会导致解析失败。5.2 401 Invalid API Key分两种。一种是 curl 直接测 LiteLLM 就 401那是x-api-key和master_key不匹配。另一种是 Claude Code 能启动但一发消息就 401那是ANTHROPIC_AUTH_TOKEN和master_key不一致。注意master_key只是本地代理的准入凭证和 TaoToken 的 key 是两回事别混。5.3 上游返回 model not foundLiteLLM 日志里出现model not found或invalid model说明litellm_params.model写的模型标识 TaoToken 不认。去接入文档 https://taotoken.net/doc 核对当前可用的模型名注意大小写和连字符。openai/前缀不能丢丢了 LiteLLM 会按原生 DeepSeek 协议发TaoToken 的/api端点可能不匹配。5.4 流式输出卡住或截断Claude Code 默认用流式。如果 LiteLLM 返回的流式事件格式和 Anthropic 有细微差异可能出现输出到一半卡住。先在config.yaml里加litellm_settings: {stream_options: {include_usage: true}}再重启代理试试。还不行就把set_verbose改成true看日志里流式 chunk 的原始结构定位是哪个字段对不上。5.5 改了配置不生效Claude Code 有配置缓存改完settings.json必须重启进程不是重开一个对话就行。另外.claude.json里可能存了旧的 env 快照删掉最保险。LiteLLM 那边改完config.yaml也要重启代理进程它不会热加载。6. 长期编码与 Agent 场景的 Key 管理单次跑通之后如果你打算把 Claude Code 当日常编码工具用或者接进 Agent 工作流Key 管理会变成一个新问题。本地 LiteLLM 的master_key是明文写在 yaml 里的多人共用一台机器或者把配置提交到仓库时容易泄露。这种场景下更合适的做法是用 TaoToken 的 Coding Plan 来统一管理额度和 key 轮换地址是 https://taotoken.net/coding-plan 。它的思路是把 key 的签发和用量统计放到服务端本地 LiteLLM 只保留一个短期凭证定期刷新。这样即使本地配置泄露影响范围也可控。如果你只是想验证某个模型在当前链路下的表现不想动本地配置可以直接用模型对话页面 https://taotoken.net/chat 发几条请求对比一下输出质量确认没问题再写进config.yaml。接入相关的细节和可用端点以接入文档 https://taotoken.net/doc 为准配置前扫一眼能省不少排查时间。