背景

用户希望在 WSL 环境中使用 Claude Code,但通过 Router 中间件将请求转发到 DeepSeek 模型(而非 Anthropic 官方 API)。本文档记录了配置过程中遇到的所有问题及最终解决方案,供后续参考。

1. 初始安装与环境

1.1 安装 Claude Code
使用官方推荐的原生安装脚本(在 WSL 中执行):

curl -fsSL https://claude.ai/install.sh | bash

安装后验证:claude --version

1.2 安装 Claude Code Router
在 WSL 中安装 Node.js(必须使用 WSL 原生 Node.js,而非 Windows 侧继承的):

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

全局安装 Router:

npm install -g @musistudio/claude-code-router

2. 遇到的典型问题及解决方法

问题 1:执行 ccr --version 报错 node: not found
原因:WSL 中未安装原生 Node.js,npm 来自 Windows 侧,但 node 命令无法在 WSL 中运行。

解决:按 1.2 步骤在 WSL 内安装原生 Node.js,并确保 PATH 中 /usr/bin 优先于 Windows 路径。

问题 2:Claude Code 仍尝试连接 api.anthropic.com(ERR_BAD_REQUEST)
原因:环境变量 ANTHROPIC_BASE_URL 未生效或被覆盖。

解决:

确认 Router 启动正确(使用 ccr start 而非 ccr serve)。

设置环境变量后,用 ccr code 启动 Claude Code(它会自动注入所需变量),或手动设置:

export ANTHROPIC_BASE_URL="http://localhost:3456"
export ANTHROPIC_API_KEY="dummy"   # 任意非空字符串
claude

问题 3:Router 启动命令错误
现象:运行 ccr serve 提示“Usage: ccr [command]”,服务未启动。

解决:Router 的正确启动命令是 ccr start(后台运行)或 ccr start 前台运行。常用命令:

ccr start # 后台启动

ccr restart # 重启

ccr stop # 停止

ccr status # 查看状态

ccr code # 启动 Claude Code 并自动设置环境变量(推荐)

问题 4:Claude Code 提示“Not logged in · Please run /login”
原因:ANTHROPIC_API_KEY 为空字符串,Claude Code 认为未登录。

解决:将 ANTHROPIC_API_KEY 设为任意非空字符串(如 “sk-ant-dummy123”)。Router 会忽略该值,使用自己的配置中的真实密钥。

问题 5:Auth conflict 警告(Both a token and an API key are set)
原因:同时存在 ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 环境变量。

解决:检查并清除 ANTHROPIC_AUTH_TOKEN:

bash
unset ANTHROPIC_AUTH_TOKEN

如果该变量在 ~/.bashrc 等文件中被设置,需编辑删除。

问题 6:API 错误 400 “deepseek-reasoner does not support this tool_choice”
原因:Router 配置中 think 路由使用了 deepseek-reasoner 模型,但该模型不支持工具调用(tool_choice),而 Claude Code 在复杂任务中自动启用了 think 路由。

解决:修改 Router 配置文件 ~/.claude-code-router/config.json,将 think 路由改为同样使用 deepseek-chat(支持工具调用):

json
"Router": {
  "default": "deepseek,deepseek-chat",
  "think": "deepseek,deepseek-chat"   // 原为 deepseek-reasoner
}

然后重启 Router:

ccr restart

  1. 最终有效配置
    3.1 Router 配置文件
    路径:~/.claude-code-router/config.json
    内容(API Key 已替换为实际值):

json

{
  "Providers": [
    {
      "name": "deepseek",
      "api_base_url": "https://api.deepseek.com/v1/chat/completions",
      "api_key": "sk-xxxxxxxxxxxxx",   // 真实 DeepSeek API Key
      "models": ["deepseek-chat", "deepseek-reasoner"],
      "transformer": {
        "use": ["deepseek", "tooluse"]
      }
    }
  ],
  "Router": {
    "default": "deepseek,deepseek-chat",
    "think": "deepseek,deepseek-chat"
  }
}

3.2 环境变量(可选,ccr code 会自动设置)

export ANTHROPIC_BASE_URL="http://localhost:3456"
export ANTHROPIC_API_KEY="sk-ant-dummy123"   # 假密钥,仅用于满足 Claude Code 登录检查

3.3 启动方式(推荐)

ccr code

此命令自动启动 Router 服务(若未运行)并设置所需环境变量,然后进入 Claude Code 交互界面。

  1. 验证与使用
    进入 Claude Code 后,可发送消息测试,例如 介绍一下你自己。如果收到 DeepSeek 的回复(内容可能自称 Claude,但实际由 DeepSeek 生成),说明配置成功。

查看当前模型:在 Claude Code 中输入 /status(若 Router 支持)。

如需临时切换模型,可修改 Router 配置文件中的 default 字段并重启 Router。

  1. 后续使用常见问题
    Q:后期用哪个登录 claude 呢?
    A:使用 ccr code 启动时,无需登录 Anthropic 账号。Router 使用你配置的 DeepSeek API 密钥进行中转。若以后想使用 Anthropic 官方模型,可获取官方 API 密钥,并运行 claude(同时确保 ANTHROPIC_BASE_URL 未设置或指向官方端点)。

Q:如何停止 Router?

ccr stop

Q:如何更新 Router?

npm update -g @musistudio/claude-code-router

Q:如何切换模型?
编辑 ~/.claude-code-router/config.json,修改 Router.default 的模型名称(需在对应 Provider 的 models 列表中)。

重启 Router:

ccr restart

也可使用

ccr model

命令进行交互式选择。

  1. 总结
    通过 Claude Code Router,我们成功将原本专为 Anthropic API 设计的 Claude Code 工具,转接至 DeepSeek 模型,实现了免费/低成本的高效代码辅助。关键点在于:

安装 WSL 原生 Node.js 避免路径问题;

正确使用 ccr start 启动 Router 服务;

为 ANTHROPIC_API_KEY 设置假密钥绕过登录检查;

修改 Router 配置,将 think 路由也指向支持工具调用的模型。

最终用户只需执行 ccr code 即可愉快使用。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐