Claude Code + Router + DeepSeek 配置全记录
背景
用户希望在 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
。
- 最终有效配置
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 交互界面。
- 验证与使用
进入 Claude Code 后,可发送消息测试,例如 介绍一下你自己。如果收到 DeepSeek 的回复(内容可能自称 Claude,但实际由 DeepSeek 生成),说明配置成功。
查看当前模型:在 Claude Code 中输入 /status(若 Router 支持)。
如需临时切换模型,可修改 Router 配置文件中的 default 字段并重启 Router。
- 后续使用常见问题
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
命令进行交互式选择。
- 总结
通过 Claude Code Router,我们成功将原本专为 Anthropic API 设计的 Claude Code 工具,转接至 DeepSeek 模型,实现了免费/低成本的高效代码辅助。关键点在于:
安装 WSL 原生 Node.js 避免路径问题;
正确使用 ccr start 启动 Router 服务;
为 ANTHROPIC_API_KEY 设置假密钥绕过登录检查;
修改 Router 配置,将 think 路由也指向支持工具调用的模型。
最终用户只需执行 ccr code 即可愉快使用。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)