开源一个Claude Code多模型管理工具ccm,可以方便地使用多个模型做不同的事情

最近几个月同事们都申请到了一堆模型:GLM、DeepSeek、MiniMax、MiMo等玩得飞起。

我自己也买了不少,还薅到了小米7亿Tokens,每天都在折腾。

用久了之后,一个真实的痛点冒出来了。

Claude Code 全局只有一套模型配置。终端 A 想用 DeepSeek 写代码、终端 B 想用 Mimo 做 Review、终端 C 想用官方 Claude 做架构设计------每次都得手动改环境变量,互相干扰,烦得很

于是就有了 ccm(Claude Code Model Manager)。

一行命令切换模型,每个终端独立绑定,互不干扰。还能管理配置、查看会话历史。

Github:https://github.com/leeandrew94/ccm-cli

ccm怎么使用

复制代码
npm i -g @leeandrew94/ccm

装完后 ccm -h 看所有命令,核心就这几个:

复制代码
Commands:
  add <name>        添加模型配置
  edit <name>       编辑配置
  rm <name>         删除配置
  list, ls          查看所有配置
  ps                查看运行中的实例
  kill <name>       停止实例
  test [name]       测试 API 连通性
  balance [name]    查询余额
  sessions          浏览会话历史

添加模型

ccm add glm,按提示输入 API 地址、Token、模型名称就行:

查看配置和运行状态

ccm ls 列出所有配置好的模型,同时显示哪些正在运行:

查余额

ccm balance 查所有模型余额,加 name 查单个。有些平台不支持余额查询,免费 Token 也查不了。

哦豁,DeepSeek 又要充钱了。不过价格已经降到原价的 1/4,性价比还行。

会话历史

ccm sessions 列出所有历史记录,支持搜索、单个和批量删除,还有 30 天回收站。

还有个 Web 页面可以看历史会话,能直接复制命令恢复对话。

ccm 支持 Claude 的所有启动参数:

复制代码
ccm mimo --permission-mode <mode>
ccm mimo --continue
ccm mimo --remote-control [name]

等同于:

复制代码
claude --settings ~/.ccm/settings/mimo.json --permission-mode <mode>

另外加了 Shell 补全(zsh/bash),按 Tab 就能看所有命令:

实现思路是酱紫的

ccm 只叠加模型配置,不替换 Claude Code 的全局 settings.json------状态栏、Skill、MCP Server 等原有能力不受任何影响

终端隔离:用 --settings 代替 export

这是整个项目最关键的设计。

ccm 没有改全局环境变量,而是利用 Claude Code 的 --settings 参数。每个模型对应一个独立的 settings 文件:

复制代码
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.example.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-xxx",
    "ANTHROPIC_MODEL": "mimo-v2.5-pro"
  }
}

执行 ccm mimo 时,ccm 读取配置、写入 settings 文件、通过 spawn('claude', ['--settings', settingsPath], { stdio: 'inherit' }) 启动 Claude Code。stdio: 'inherit' 保证子进程继承当前终端的输入输出,体验和直接跑 claude 一样。

为什么不用 export

因为 export 会影响当前 shell 的所有子进程,多个终端会互相覆盖。--settings 把环境变量限制在单个进程内,天然隔离。

进程追踪:文件系统搞定

ccm 用文件系统追踪运行中的实例。启动时在 ~/.ccm/runs/<pid>.json 写入:

复制代码
{
  "pid": 12345,
  "profile": "mimo",
  "started_at": "2026-05-23T10:00:00Z",
  "tty": "/dev/ttys001"
}

存活检测用 POSIX 的 kill(pid, 0)------这个信号不会杀进程,只是检查进程是否存在,是操作系统级别的原子操作。

清理时遍历所有 run 文件,移除 PID 已失效的记录。

终止时先发 SIGTERM 等 500ms,没退出再升级为 SIGKILL。

零依赖 Web 查看器

ccm sessions --web 启动本地 HTTP 服务器,整个 SPA 应用以模板字符串嵌入 TypeScript 源码里:

  • 客户端路由:history.pushState + popstate 实现 SPA 路由

  • Markdown 渲染:纯正则实现,支持代码块、表格、引用、标题、链接

  • 代码高亮:基于关键字的简单着色,不需要 highlight.js

  • 会话索引:右侧栏用 IntersectionObserver 追踪当前可见消息

整个页面没有任何外部依赖,不引 CDN、不加载第三方库,所有资源自包含。

成本很低,但能快速找到想恢复的对话,还能直接切到当时的模型继续vibe coding。

用在什么场景

终端 A 跑 DeepSeek 分析数据,终端 B 跑 Mimo 做 coding,终端 C 用官方 Claude 做 Code Revie。

三个终端同时工作,互不干扰,ccm ps 一眼看清谁在用什么。

昨天用 Claude 写了一段代码,今天想找回来继续。

ccm sessions 浏览历史,支持搜索、Web 查看完整对话,误删的还能从回收站恢复。

Claude Code 本身就是 CLI 工具。ccm 就是它的伴侣,用户已经在终端里了。

为了切模型跳出终端、打开 GUI、点几下再回来,上下文切换的成本远高于敲一行 ccm deepseek

写在最后

ccm 最初就是个工作中的小脚本------每天在不同终端切模型。

手动改环境变量改烦了,cc-switch又满足不了现状,写了几行代码自动化。

后来发现同事也有同样的痛点,才慢慢打磨成完整的工具第一版是Python实现的。

所以好的工具不需要宏大的愿景,只需要解决一个真实存在的问题,然后做到足够简单。

先让自己用得舒服,再让别人也能用得舒服------我想这应该就是我去做工具的初心。

Github:https://github.com/leeandrew94/ccm-cli 欢迎大家提意见反馈

我是赛博李同学,大厂写代码的,觉得有用点个赞 + 转发给需要的TA,感谢支持!,我们下期见!

相关推荐
AI2中文网18 小时前
App Inventor接入Supabase:开源免费的后端新选择
开源·app inventor
darkb1rd1 天前
bumblebee:供应链安全本地扫描实战指南
开源·github·好物分享
冬奇Lab1 天前
一天一个开源项目(第111篇):Understand Anything - 把代码库变成可探索知识图谱的 AI 引擎
人工智能·开源·llm
plainGeekDev1 天前
Glide 该换了?Coil:Kotlin 时代的图片加载库
android·开源·kotlin
阿里云云原生1 天前
让 AI 读懂企业世界:UModel 对象图语义运行时开源,打造 AI 时代的“数据方言”翻译官
开源
java小吕布2 天前
Hermes Agent:自带学习闭环的开源 AI 智能体,一键部署全平台可用
人工智能·学习·开源
a1117762 天前
小马宝莉 桌宠软件(开源项目 c#)
开源·软件·小马宝莉
a1117762 天前
动森UI组件(开源 html animal-island-ui )
前端·javascript·ui·开源·html
Hommy882 天前
【剪映小助手】贴纸搜索接口
开源·github·aigc·剪映小助手·视频剪辑自动化