尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

同一把 TaoToken Key,Claude Code Router 在 mac 上切 DeepSeek 的改法

同一把 TaoToken Key,Claude Code Router 在 mac 上切 DeepSeek 的改法 在 mac 上把 Claude Code 和 Claude Code Router 装齐并不难难的是第 3 步ccr ui弹出来之后那几个输入框Providers 里的 baseURL 和 apiKey 到底该填谁。以前的常规做法是跑一趟 DeepSeek 官方控制台复制一把 Key 填进去想再挂第二个模型就再去开第二个账号、复制第二把 Key。这篇换一条路——先去 TaoTokenhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_end创建一把 Key然后在 providers 里把 DeepSeek 那一项的 baseURL 和 apiKey 指向 TaoToken 的接口地址ccr start、ccr model、ccr code这些验证动作原样不动。改完的效果是你在 mac 终端里敲的还是ccr codeClaude Code 读写的还是本地项目文件但请求到了 CCR 之后会被转发到 TaoToken 的 DeepSeek 通道而不是直连各家官方接口。config.json 里只留一把YOUR_API_KEY以后想再加一个模型改的是 Router 段里的模型名而不是再去某个控制台开新 Key。下面按原路径走一遍每一步我都标清楚哪一格的地址该换成接口地址、哪一格的地址该用落地页。1. mac 上装完 Claude Code 和 CCR卡点其实在 Providers1.1 两个 npm 包各自负责什么先把两个包装上这一步和原文完全一致npm install -g anthropic-ai/claude-code npm install -g musistudio/claude-code-router装完之后要分清楚它们的分工。Claude Code 是外壳它读文件、写文件、执行命令、管上下文。Claude Code Router下面简称 CCR是插在中间的一层路由器Claude Code 按 Anthropic 的格式把请求发给本机的 CCR 端口CCR 把请求体改写成目标供应商能吃的格式再按 Router 段的规则决定发给谁。所以“这次用哪个模型”这件事既不在 Claude Code 的配置文件里定也不靠命令行参数临时指定而是在~/.claude-code-router/config.json里的Providers和Router两段里定。理解了这一点后面所有的改动都只发生在同一个文件里。1.2 config.json 里每多一个供应商就多一把 Key~/.claude-code-router/config.json的结构很直白Providers是一个数组每一项代表一个供应商里面有名字、接口地址、密钥、模型列表Router决定 default、background、think、longContext 这些场景分别路由到哪个供应商的哪个模型。问题就出在这个结构上。如果按“一个供应商一项”的写法DeepSeek 一项要一把官方 Key换一家再开一项又要一把 Key三个供应商就是三把 Key、三个控制台、三份额度账单。想切模型之前得先回忆“这个模型的 Key 我存哪了”。这一篇的改法是把 Providers 收敛成一项名字还叫 DeepSeek 相关的名字但地址和密钥换成一个统一入口。这样切模型的动作就退化成改 Router 里的模型名凭据永远只有一把。2. 打开 ccr ui 之前先把 Key 和模型 ID 从 TaoToken 拿齐2.1 创建 API Key注册一次后面只维护这一把动手改配置之前先把材料备齐顺序别颠倒。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 注册并登录进控制台创建一把 API Key复制出来先放在手边。后文所有出现YOUR_API_KEY的地方都替换成你复制到的这一串。注意 Key 只在创建时完整显示页面关掉之后一般就看不全了所以复制完先别急着切标签页直接粘进 config.json 或者粘进终端变量里。真丢了也不用慌回同一个控制台重新生成一把然后把配置里的字符串换掉就行。2.2 在模型广场确认 DeepSeek 对应的模型 ID这是最容易翻车的一步。CCR 的模型名是字符串匹配写错一个字母就是 400 或者模型不存在。所以别凭记忆写“大概是 deepseek-chat 吧”去 TaoToken 的模型广场上看一眼当前列出来的 ID广场上写的是什么config.json 里就填什么。如果广场上同时有对话型和推理型两个条目那就分别对应think场景和default场景后面 Router 段正好用得上。模型 ID 一律以 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 模型广场当时的列表为准不要照抄别人的截图。2.3 为什么这次只往 config.json 里放一把 Key有人会问既然要切 DeepSeek为什么不直接在 providers 里填 DeepSeek 官方的地址和 Key反正也是用 DeepSeek。区别在于扩展成本。填官方 Key 的话将来要试第二个模型就得在 Providers 里加第二项、维护第二把 Key、记住第二套额度规则填统一入口的话Providers 里还是那一项变的只是models数组和 Router 里的名字。对于每天要跑几十轮对话的编码场景后者的好处很实际Key 不用轮换、不用在多处同步、不用在换电脑时重新找一遍。3. 改 ~/.claude-code-router/config.jsonDeepSeek 的 baseURL 和 apiKey 换成 TaoToken3.1 ccr ui 里那几格分别填什么启动配置界面ccr ui浏览器会打开本机的配置页默认端口 3456。原文在这一步是新建一个供应商项、填 DeepSeek 官方地址和官方 Key我们只把其中两格换掉供应商名称保持可读即可比如taotokenAPI 地址baseURL填接口地址https://taotoken.net/apiCCR 这个字段要求精确到对话端点所以实际写进去的是https://taotoken.net/api/v1/chat/completions根地址仍然是https://taotoken.net/apiAPI Key填YOUR_API_KEY也就是 2.1 里创建的那把模型列表填广场上确认过的 ID多个用逗号隔开。有一件事必须分开记落地页https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end是给人点的用来注册、建 Key、看模型广场、看用量填进工具的接口地址是https://taotoken.net/api末尾不带 UTM 参数也不要把参数带进配置文件。3.2 直接编辑 config.json 的完整示例UI 保存之后文件里的内容长这样也可以不走 UI直接用编辑器打开~/.claude-code-router/config.json手写{ LOG: true, APIKEY: , Providers: [ { name: taotoken, api_base_url: https://taotoken.net/api/v1/chat/completions, api_key: YOUR_API_KEY, models: [deepseek-chat, deepseek-reasoner], transformer: { use: [deepseek] } } ], Router: { default: taotoken,deepseek-chat, background: taotoken,deepseek-chat, think: taotoken,deepseek-reasoner, longContext: taotoken,deepseek-chat } }三层配置理解起来不复杂name是这一项的代号Router 里的taotoken,模型名就是“代号 模型”的组合写法api_key是唯一那把 Keymodels是把这一项允许用的模型列出来Router 里只能引用这里出现过的名字写了列表外的名字会直接被拒。3.3 Router 段决定 default / think / longContext 分别走谁很多人配完 Providers 就以为完事了结果发现跑起来还是老模型原因是 Router 段没改。这四个键控制的是不同场景的路由目标字段什么时候用建议指向default日常对话、改代码广场上的通用对话模型background后台小任务、起标题同 default省事think需要推理的步骤广场上的推理型条目longContext上下文很长时同 default或长上下文条目改完这四项切换才真正生效。想临时换个模型试试不必改文件ccr model里选一下就会覆盖 default。4. ccr start、ccr model、ccr code确认走的是 TaoToken 的 DeepSeek4.1 启动服务并看状态配置文件保存后重启路由服务让改动生效ccr restart ccr statusstatus会告诉你服务有没有起来、监听在哪个端口。如果之前是用ccr start起的也可以先ccr stop再ccr start。这一步不涉及任何网络配置纯粹是本机进程的事起不来通常是端口被占或者 Node 版本太旧第 5 节会展开。4.2 ccr model 里选中带 taotoken 前缀的那一项ccr model终端会列出可选项格式就是供应商代号,模型名。这时候你应该能看到类似taotoken,deepseek-chat和taotoken,deepseek-reasoner的条目。选中其中一条回车确认。如果这里只看到别的供应商、看不到 taotoken 开头的项说明 Providers 的保存没生效回去确认api_base_url和models是不是写在了同一个对象里。4.3 发一句测试对话再去控制台看这次调用有没有记上ccr code这会拉起 Claude Code并把它的上游指向本机的 CCR 端口。随便提一个问题比如让它解释当前目录下某个脚本在做什么。回复正常返回只能说明链路通了要确认“确实走的是 DeepSeek 通道、确实记在了这把 Key 上”还得回控制台看一眼调用记录这一步放在第 7 节说。5. 401、404、模型名不对config.json 改完最常见的几个报错5.1 401Key 没生效或者粘错了一位401 基本只有一个原因CCR 发出去的凭据不被接受。逐项排查——api_key是不是还是模板里的YOUR_API_KEY没替换复制时有没有把首尾的空格或者换行带进去Key 是不是在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 上创建的那一把而不是很久以前另一家平台留下的。还有一种隐蔽情况UI 里改过了但没保存就关了页面文件里还是旧值。改完直接打开~/.claude-code-router/config.json看一眼实际内容比盯着界面可靠。5.2 404地址拼重复或者把落地页粘进了配置404 通常出在地址上。CCR 的api_base_url要写到对话端点这一级正确的根是https://taotoken.net/api拼出来是https://taotoken.net/api/v1/chat/completions。如果你在别处抄了一段又多加一层v1就会得到不存在的路径如果直接把给人点的https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end粘进api_base_url那更会 404因为它本质上是一个网页地址而不是接口地址。记住这条分界浏览器地址栏里用带参数的落地页配置文件里只用https://taotoken.net/api开头的接口地址。5.3 端口被占、环境变量没继承如果ccr status显示服务没起来先看 3456 是不是被别的进程占了换一个端口后记得同步调整使用方式。另一种情况是服务起来了、ccr model也正常但在某个已经打开的终端里跑 Claude Code 还是走老路——那是因为 Claude Code 是在服务启动之前拉起来的环境变量没继承到关掉终端重新ccr code就好。6. 不想装 CCR 也能用~/.claude/settings.json 里直接指向 TaoToken6.1 env 三个变量的写法如果你只是想让 Claude Code 走统一通道不需要 Router 那一层按场景分流的逻辑可以不装 CCR直接改 Claude Code 自己的设置文件~/.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_MODEL_ID } }这里的ANTHROPIC_BASE_URL只写到https://taotoken.net/api末尾不要加/v1也不要接任何查询参数ANTHROPIC_MODEL填广场上确认过的模型 ID。它和 CCR 那套的区别是没有 default / think 之分一次只走一个模型换来的是配置更少、出问题时排查路径更短。6.2 或者用 CLI 一条命令起命令行党可以用官方 CLI把 Key、接口地址、模型 ID 一次传进去npm install -g taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m YOUR_MODEL_ID-u后面同样是接口根地址不带路径、不带参数。这条命令适合临时开一个会话、或者给同事演示时用长期使用还是建议落到配置文件里省得每次翻历史记录找参数。7. 跑通之后去控制台对一下这次 DeepSeek 调用配置保存、ccr code也回话了最后一件事是把账对上。先在 TaoToken 模型对话 里用同一把 Key 发一条测试消息确认模型 ID 和接口地址没填错如果打算长期拿它写代码去 Coding Plan 看套餐是否够用Key 随时可以在 控制台 API Keys 重新创建Claude Code 的环境变量对照写在这份 接入文档 里。有一点值得提前记住这套配置解决的是“模型从哪来”不解决“谁去执行”。CCR 和 Claude Code 都不会替你连生产环境跑命令改成 Router 配置之后这一点没变该在本地终端执行的语句还是你手动执行、把输出贴回对话。以后再想在这台 mac 上换模型动作已经很小了——打开~/.claude-code-router/config.json把models数组和 Router 里的模型名换掉ccr restart再ccr model选一次。凭据始终是那把YOUR_API_KEY不用回任何一个额外的控制台重新找 Key。
返回列表