最近几个月同事们都申请到了一堆模型: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,感谢支持!,我们下期见!

Logo

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

更多推荐