
前言
Claude Code 是 Anthropic 推出的 AI 编程工具,随着版本迭代速度加快,开发者经常需要在不同版本之间切换——有时最新版引入了 breaking change,有时特定项目依赖特定版本的行为。
claude-cvm(Claude Version Manager)正是为此而生的版本管理工具。它的设计理念类似于 Node.js 的 nvm 或 Python 的 conda,让你可以在不同终端中同时运行不同版本的 Claude Code。
核心特性
- 按终端切换版本 —— 不同终端可以同时运行不同版本,互不干扰
- 自动识别系统版本 —— 能自动检测到你全局安装的 Claude Code
- 零开销提示符集成 —— 导出
$CVM_VERSION环境变量,方便在 shell 提示符中显示当前版本 - 极简架构 —— 单个 shell 函数实现,无后台守护进程
安装
前置条件
- Node.js 和 npm
- macOS 或 Linux
- zsh 或 bash
安装 CVM
npm install -g claude-cvm
安装完成后,CVM 会自动配置 shell 集成。
使用方法
查看可用版本
cvm list
列出所有已安装的 Claude Code 版本,包括系统全局安装的版本。
安装指定版本
cvm install 2.1.77
下载并安装指定版本的 Claude Code。版本文件存储在 ~/.claude-versions/<version>/ 目录下。
激活指定版本
cvm activate 2.1.77
在当前终端中激活指定版本。CVM 通过将版本目录添加到 $PATH 前面来实现切换,因此只影响当前终端会话。
停用版本(恢复系统版本)
cvm deactivate
取消当前终端的版本激活,恢复使用系统全局安装的 Claude Code。
工作原理
CVM 的实现非常简洁:
- 每个版本独立安装在
~/.claude-versions/<version>/目录 - 激活时,将对应版本的
bin目录 prepend 到当前 shell 的$PATH - 由于每个终端维护独立的
$PATH,不同终端可以同时使用不同版本
这种设计确保了:
- 切换版本无需重启终端
- 不同项目可以在不同终端中使用各自需要的版本
- 不影响系统全局安装
Shell 提示符集成
CVM 导出 $CVM_VERSION 环境变量,你可以在 shell 提示符中显示当前激活的版本。
Starship 配置示例
[env_var.CVM_VERSION]
format = "[$env_value]($style) "
style = "bold purple"
Powerlevel10k 配置示例
在 .p10k.zsh 中添加自定义 segment 读取 $CVM_VERSION 即可。
卸载
# 卸载 CVM 本身
npm uninstall -g claude-cvm
# 清理已下载的版本文件(可选)
rm -rf ~/.claude-versions
常见使用场景
| 场景 | 操作 |
|---|---|
| 新版本发布,想尝鲜但不影响工作 | cvm install <新版本> 在新终端激活 |
| 某个项目依赖旧版行为 | 在该项目终端 cvm activate <旧版本> |
| 官方版本与模型不兼容导致异常 | 切换到已验证的稳定版本,保证服务可用 |
| 对比不同版本的输出差异 | 两个终端分别激活不同版本 |
| 回退到稳定版本 | cvm deactivate 恢复系统版本 |
总结
claude-cvm 是一个轻量、实用的 Claude Code 版本管理工具。如果你经常需要在多个 Claude Code 版本之间切换,或者想在不影响生产环境的情况下试用新版本,它是一个值得安装的小工具。