【Node】实现一个claude-code模型切换器
慕雪前排提醒:本文依旧是AI生成的,有少量人工修改。
在上一篇文章中,我介绍了如何配置Claude Code使用美团LongCat等第三方大模型。但是每次切换模型都需要手动修改配置文件,实在是太麻烦了。
于是,我写了一个小工具来解决这个问题:claude-code-model-switch(简称ccms)。
1. 为什么要做这个工具
用过Claude Code的朋友都知道,它支持接入各种第三方大模型,比如美团LongCat、DeepSeek、智谱GLM等等。但是每次切换模型都需要:
- 打开
~/.claude/settings.json
配置文件 - 修改一堆环境变量
- 保存文件
- 重新启动Claude Code
这个过程重复多了真的很烦人,而且容易出错。比如忘了改某个变量,或者把配置搞乱了。
所以我就想,能不能像nvm
管理node版本那样,用一个命令行工具来管理Claude Code的模型配置呢?
说干就干,直接claude --dangerously-skip-permissions
启动!开始写一个。
2. 工具功能
ccms工具提供了以下几个核心功能:
2.1. 快速切换模型
1 | # 切换到deepseek-chat模型 |
2.2. 查看可用模型
1 | # 列出所有配置好的模型 |
2.3. 恢复官方模型
1 | # 清除所有模型配置,恢复使用官方Claude模型 |
2.4. 查看配置文件路径
1 | # 查看模型配置文件和Claude设置文件的路径 |
3. 安装和使用
3.1. 安装
1 | npm install -g claude-code-model-switch |
3.2. 配置模型
安装完成后,需要先配置你想要使用的模型。编辑配置文件~/.claude-code-model-switch/settings.json
:
1 | { |
3.3. 使用示例
配置好模型后,就可以愉快地切换了:
1 | # 切换到DeepSeek模型 |
4. 技术实现
这个工具的实现其实挺简单的,主要就是:
4.1. 文件操作
- 读取和解析
~/.claude/settings.json
配置文件 - 读取和解析
~/.claude-code-model-switch/settings.json
模型配置 - 安全地修改Claude配置文件中的环境变量
4.2. 命令行界面
使用commander
库来构建命令行界面,支持:
- 参数解析
- 子命令
- 帮助信息
- 版本信息
4.3. 安全设计
工具设计时特别注意了安全性:
- 只修改模型相关变量:不会触及配置文件中的其他设置
- 默认值处理:自动处理缺失的配置项
- 错误处理:友好的错误提示和帮助信息
5. 发布到npm
项目已经发布到npm商店,可以直接安装使用:
1 | npm install -g claude-code-model-switch |
相关链接:
- 开源地址:https://github.com/musnows/claude-code-model-switch
- 本项目发布地址:https://www.npmjs.com/package/claude-code-model-switch
顺带记录一下如何发布npm的包,发布包之前需要有一个https://www.npmjs.com/的账户。
1 | # 登录账户(需要先注册npm账户) |
注意,如果你设置了npm的registry镜像站,需要先npm config delete registry
,否则npm login可能不会登录到源站去,而是登录到镜像站里面去了,不符合我们发布包的需要。除非你打算在某个镜像站里面发包。
6. 总结
用了这个工具之后,切换模型真的方便多了。如果你也经常在多个大模型之间切换,不妨试试这个工具。
工具还在不断完善中,欢迎大家使用和反馈问题。如果你有新的需求或者发现了bug,可以在GitHub上提issue。
这里顺带解答一下一些朋友可能有的疑惑:这个项目的能力是不是可以用claude-code-router替代?
并不!二者算是不同方向的能力!
- claude-code-router本质上是聚合了很多个模型服务商,再对cc统一暴露一个本地url进行服务提供。
- 当你需要修改claude-code-router使用的模型的时候,你需要修改claude-code-router配置文件,没办法用ccr命令搞定。
- 本项目的模型切换是直接基于cc自带的环境变量设置实现的,没有ccr那么复杂的逻辑。能切换到的模型服务商也必须是原生提供了anthropic api的服务商,没有提供anthropic的服务商,只能用ccr转发接入。
所以,你可以在本项目的配置文件中把ccr也配置上,这样你也能切换到ccr去!