@codelook/codem
v0.10.2
Published
Multi-environment manager for Claude Code CLI - codem (code-multi)
Maintainers
Readme
@codelook/codem
Claude Code CLI 的多环境管理器,具有基于 Ink 的精美界面。
codem = code multi - 一个简单易记的名字,用于管理多个 Claude Code 环境
💡 向后兼容:
claude-multi命令仍然可用作codem的别名
功能特性
- 🌍 多环境管理:创建和管理隔离的 Claude Code 环境
- 🔐 API 密钥管理:为每个环境安全存储不同的 API 密钥
- 🚀 全局环境:跨不同项目共享环境
- 💰 使用分析:跟踪每个环境的令牌使用量和成本
- 🎨 精美界面:使用 Ink 和 React 构建的交互式界面
- 📤 导出/导入:共享环境配置(不包含 API 密钥)
- 🔄 快速切换:在环境之间快速切换
- 📊 成本跟踪:通过详细分析监控 API 使用成本
- ⚡ 快速启动:直接运行
codem run <env>启动指定环境(v0.2.2+) - 🚀 即时选择:运行
codem后直接选择环境运行(v0.2.2+) - 🌐 代理支持:为每个环境配置独立的 HTTP/HTTPS 代理(v0.3.0+)
- 🔐 代理认证:支持带有 Bearer Token 认证的代理服务器(v0.3.1+)
- 🔄 代理池管理:管理多个代理服务器,支持健康检查和快速切换(v0.4.0+)
- 🚀 远程环境共享:通过代理服务器共享环境,支持团队协作(v0.5.8+)
- 🎫 一次性 Token:生成临时访问令牌,安全分享环境(v0.5.8+)
- 🔄 Claude 会话支持:支持继续对话(-c)和恢复会话(-r)功能(v0.9.16+)
- 📝 Task 命令:直接执行 Claude 任务命令(v0.9.16+)
安装
# 全局安装
npm install -g @codelook/codem@latest
# 或直接使用 npx
npx @codelook/codem快速开始
交互模式(v0.2.2+ 增强)
只需运行 codem 即可启动交互式界面:
codem # 直接显示环境列表,可快速选择运行新功能:
- 启动后直接显示环境列表,可立即选择环境运行 Claude
- 支持返回主菜单进行其他操作
- 修复了列表显示后自动退出的问题
命令行模式
# 列出所有环境
codem list
# 创建新环境
codem create work --api-key sk-ant-xxx
# 创建环境并配置代理(v0.3.0+ 新功能)
codem create china --proxy http://proxy.example.com:8080
# 使用代理池中的代理创建环境(v0.4.0+ 新功能)
codem create work --use-proxy us-proxy
# 从当前 Claude Code 实例创建环境(v0.4.1+ 新功能)
codem create dev --from-current
# 管理代理池(v0.4.0+ 新功能)
codem proxy add us-proxy http://us.proxy.com:8080 --auth "pst_token" --description "美国区域"
codem proxy list # 列出所有代理及健康状态
codem proxy test # 测试所有代理
codem proxy use asia-proxy # 设置默认代理
codem proxy remove old-proxy # 从池中删除代理
# 全局代理控制(v0.4.0+ 新功能)
codem proxy global enable # 启用全局代理
codem proxy global disable # 禁用全局代理
# 传统代理命令(仍然支持)
codem proxy set work http://proxy.example.com:8080
codem proxy show work
codem proxy remove work
# 切换默认环境
codem use work
# 在特定环境中运行 Claude
codem run work -- chat "你好"
# 直接运行环境(v0.2.2+ 新功能)
codem run work # 直接在 work 环境中启动 Claude,无需额外参数
# 继续最近的对话(v0.9.16+ 新功能)
codem -c # 使用默认环境继续最近对话
codem run work -c # 在 work 环境中继续最近对话
# 恢复特定会话(v0.9.16+ 新功能)
codem -r <session-id> # 使用默认环境恢复特定会话
codem run work -r <id> # 在 work 环境中恢复特定会话
# 执行任务(v0.9.16+ 新功能)
codem task "编写一个Python脚本" # 使用默认环境执行任务
# 查看使用量和成本
codem usage # 所有环境
codem usage work # 特定环境
codem usage -d # 每日明细
codem usage -b # 模型明细
codem usage --since 2024-01-01 # 日期范围使用分析
Codem 通过分析 Claude Code 的对话日志自动跟踪每个环境的令牌使用量和成本。
功能
- 按环境跟踪:查看按环境隔离的使用情况
- 成本计算:基于当前 Claude API 定价自动计算成本
- 模型细分:查看不同 Claude 模型(Opus、Sonnet、Haiku)的使用情况
- 时间过滤:按日期范围过滤使用情况
- 会话分析:查看单个对话会话
使用方法
# 交互模式 - 从菜单中选择"查看使用量和成本"
codem
# 命令行模式
codem usage # 显示所有环境
codem usage work # 显示特定环境
codem usage -d # 每日细分
codem usage -m # 每月汇总
codem usage -b # 模型细分
codem usage --since 2024-01-01 # 从特定日期开始
codem usage --until 2024-12-31 # 到特定日期结束输出示例
环境使用情况:work
总成本:$2.45
会话数:23
令牌数:145.2K 输入,89.3K 输出
缓存:12.5K 令牌
模型细分:
claude-opus-4-20250514:
成本:$2.10
消息:18
令牌:120.5K/75.2K
claude-3-5-sonnet-20241022:
成本:$0.35
消息:5
令牌:24.7K/14.1K
最近会话:
2024-01-15 • 45分钟 • 12条消息 • $0.85
2024-01-14 • 23分钟 • 8条消息 • $0.42环境共享
全局环境
全局环境在机器上的所有项目之间共享:
# 创建全局环境
codem create shared-work --global
# 全局环境会出现在所有项目中
cd ~/any-project
codem list # 将显示 'shared-work [全局]'导出/导入
与团队成员共享环境配置:
# 导出环境(不包含 API 密钥)
codem export work > work-env.json
# 在另一台机器上导入
codem import work < work-env.json配置
环境存储位置
- 本地环境:
~/.claude-profiles/<name>/ - 全局环境:
~/.codem/environments/<name>/ - 配置文件:
~/.claude-profiles/config.json
API 密钥安全
API 密钥存储在每个环境的 .claude/settings.json 文件中,并且永远不会包含在导出中。
代理配置
Codem v0.3.0+ 支持为每个环境配置独立的 HTTP/HTTPS 代理,v0.4.0+ 引入代理池管理功能,提供更好的可靠性和灵活性。
代理池管理(v0.4.0+)
管理多个代理服务器,支持健康检查和快速切换:
# 添加代理到池中
codem proxy add us-proxy http://us.proxy.com:8080 --auth "pst_us_token" --description "美国区域"
codem proxy add asia-proxy http://asia.proxy.com:8080 --auth "pst_asia_token" --description "亚洲区域"
codem proxy add eu-proxy http://eu.proxy.com:8080 --auth "pst_eu_token" --description "欧洲区域"
# 列出所有代理及健康状态
codem proxy list
# 输出:
# 代理池:
# ✅ us-proxy (默认) [已认证] - 美国区域
# http://us.proxy.com:8080 (2分钟前检查)
# ❌ asia-proxy [已认证] - 亚洲区域
# http://asia.proxy.com:8080 (5分钟前检查)
# ❓ eu-proxy [已认证] - 欧洲区域
# http://eu.proxy.com:8080
# 测试代理连接
codem proxy test # 测试所有代理
codem proxy test us-proxy # 测试特定代理
# 切换默认代理
codem proxy use asia-proxy
# 从池中删除代理
codem proxy remove old-proxy
# 全局代理控制
codem proxy global enable # 启用全局代理(使用默认代理)
codem proxy global disable # 禁用全局代理
codem proxy global status # 查看全局代理状态创建环境时配置代理
# 使用代理池中的代理(v0.4.0+)
codem create work --use-proxy us-proxy
# 直接配置代理
codem create china --proxy http://proxy.example.com:8080
# 分别设置不同的代理
codem create corp --http-proxy http://proxy.company.com:8080 --https-proxy https://secure-proxy.company.com:8443
# 设置代理和不代理列表
codem create dev --proxy http://localhost:7890 --no-proxy localhost,127.0.0.1,*.local
# 设置带认证的代理(v0.3.1+)
codem create secure --proxy http://proxy.example.com:8080 --proxy-auth "pst_your_token_here"管理现有环境的代理
# 设置代理(传统方式,仍然支持)
codem proxy set work http://proxy.example.com:8080
# 设置带认证的代理
codem proxy set work http://proxy.example.com:8080 --auth "pst_your_token_here"
# 设置不同类型的代理
codem proxy set work --http http://proxy.example.com:8080 --https https://proxy.example.com:8443
# 查看代理设置
codem proxy show work
# 移除代理设置
codem proxy remove work代理优先级
当运行 Claude 时,代理配置按以下优先级生效:
- 环境使用的代理池代理:如果环境使用
--use-proxy配置 - 环境特定的直接代理:在环境中直接设置的代理
- 全局代理池代理:如果启用了全局代理
- 系统环境变量:
HTTP_PROXY、HTTPS_PROXY、NO_PROXY
使用场景
- 代理故障切换:配置多个代理,当一个失败时快速切换
- 区域优化:为不同地区使用不同的代理
- 企业网络:管理多个企业代理服务器
- 开发调试:使用本地代理工具(如 Charles、Fiddler)调试 API 请求
交互式代理管理
通过交互式界面访问代理管理:
codem
# 从主菜单选择"🌐 代理管理"在代理管理界面中,您可以:
- 添加带认证的新代理
- 查看所有代理及健康状态
- 测试代理连接
- 设置默认代理
- 删除代理
- 控制全局代理设置
远程环境共享(v0.5.8+)
Codem 支持通过 codem-proxy 代理服务器实现环境的远程共享,方便团队协作和临时访问。
部署代理服务器
首先需要部署 codem-proxy 代理服务器。推荐使用 Cloudflare Workers:
# 克隆项目(如果还没有)
git clone https://github.com/your-org/codelook.git
cd codelook/packages/codem-proxy/cloudflare
# 配置你的代理服务器
# 编辑 wrangler.toml,设置你的账户 ID
# 编辑 worker.js,设置你的认证 token
# 部署到 Cloudflare Workers
npm install -g wrangler
wrangler deploy --env production
# 部署成功后会得到类似这样的 URL:
# https://your-proxy.workers.dev远程环境共享使用指南
1. 通过交互式菜单使用(推荐)
# 启动 codem
codem
# 从主菜单选择 "🔄 远程环境与共享"
# 这会进入统一的远程共享管理界面在远程共享管理界面,你可以:
- 🔗 连接到代理服务器:输入代理 URL 和认证 token
- 📋 查看远程环境列表:查看代理服务器上的所有环境
- ⬇️ 拉取远程环境:下载远程环境到本地
- ⬆️ 推送本地环境:上传本地环境到代理服务器
- 🔄 同步环境:双向同步本地和远程环境
- 📤 快捷复制共享命令:生成分享命令供他人使用
- 🎫 生成一次性 Token:创建临时访问令牌(需要代理服务器支持)
- 👁️ 查看已共享的环境:查看所有已上传的环境
2. 使用一次性 Token 快速访问
一次性 Token(OTT)是最安全便捷的共享方式:
# 直接使用一次性 token 运行远程环境
npx @codelook/codem run https://your-proxy.workers.dev --token ott_xxxxx
# 添加 --no-cache 避免缓存到本地
npx @codelook/codem run https://your-proxy.workers.dev --token ott_xxxxx --no-cache一次性 Token 的特点:
- 以
ott_前缀开头 - 使用一次后自动失效
- 无需提供环境 ID
- 更加安全,适合临时分享
3. 使用永久共享命令
对于长期团队协作,可以使用永久共享:
# 使用环境 ID 和认证 token
npx @codelook/codem run https://your-proxy.workers.dev \
--auth "YOUR_AUTH_TOKEN" \
--env "env_xxxxx"4. 命令行操作(开发中)
# 连接到远程代理
codem remote connect https://your-proxy.workers.dev YOUR_TOKEN
# 列出远程环境
codem remote list
# 推送本地环境
codem remote push myenv
# 拉取远程环境
codem remote pull env_xxxxx local-name
# 同步环境
codem remote sync myenv --direction pull # 从远程拉取
codem remote sync myenv --direction push # 推送到远程
# 断开连接
codem remote disconnect安全最佳实践
保护你的代理服务器信息
- 永远不要在公开代码中硬编码代理 URL 和 token
- 使用环境变量或配置文件存储敏感信息
- 定期轮换认证 token
使用一次性 Token
- 临时分享时优先使用一次性 token
- 避免分享永久 token 给不信任的用户
- 一次性 token 使用后立即失效,更加安全
权限控制
- 为不同团队部署不同的代理服务器
- 使用不同的认证 token 区分访问权限
- 定期审查和清理不再使用的环境
使用场景
团队协作
# 团队成员 A 推送环境 codem remote push team-project # 团队成员 B 拉取使用 codem remote pull env_team-project my-local-copy临时技术支持
# 生成一次性分享命令 # 在交互式菜单中选择 "📤 快捷复制共享命令" # 发送给需要帮助的人跨设备同步
# 在办公室电脑推送 codem remote push my-work # 在家里电脑拉取 codem remote pull env_my-work home-work
故障排除
问题:远程功能显示"正在开发中"
- 当前版本的远程功能仍在完善中
- 可以使用
run命令的--token参数作为替代方案
问题:无法连接到代理服务器
- 检查代理服务器 URL 是否正确
- 验证认证 token 是否有效
- 确保网络连接正常
问题:一次性 Token 无效
- 确认 token 以
ott_开头 - 检查是否已经使用过(一次性 token 只能使用一次)
- 验证代理服务器是否支持一次性 token 功能
高级用法
编程接口
import { EnvironmentManager } from '@codelook/codem';
const manager = new EnvironmentManager();
await manager.initialize();
// 创建环境
await manager.createEnvironment({
name: 'dev',
apiKey: 'sk-ant-xxx',
description: '开发环境',
global: false,
});
// 列出环境
const environments = await manager.listEnvironments();
// 使用环境运行
await manager.runWithEnvironment('dev', ['chat', '你好']);与项目集成
在项目的 package.json 中添加:
{
"scripts": {
"claude": "codem run dev --",
"claude:prod": "codem run prod --"
}
}然后使用:
npm run claude chat "帮我处理这段代码"常见问题
如何迁移现有的 Claude 配置?
如果你已经在使用 Claude Code CLI,codem 会自动检测并兼容现有配置:
# 创建基于现有配置的环境
codem create default --from-existing如何在 CI/CD 中使用?
# 通过环境变量设置 API 密钥
export ANTHROPIC_API_KEY=sk-ant-xxx
codem create ci --api-key $ANTHROPIC_API_KEY
codem run ci -- chat "运行测试"如何备份所有环境?
# 导出所有环境
for env in $(codem list --json | jq -r '.[].name'); do
codem export $env > backup-$env.json
done故障排除
环境未显示
确保你在正确的目录中,或者使用 --global 标志查看全局环境:
codem list --globalAPI 密钥未保存
确保你有写入权限到配置目录:
# 检查权限
ls -la ~/.claude-profiles/成本计算不准确
成本基于 Claude API 的标准定价计算。如果你有特殊定价,可以通过环境变量自定义:
export CLAUDE_OPUS_INPUT_PRICE=0.015
export CLAUDE_OPUS_OUTPUT_PRICE=0.075最新更新
v0.5.11 (2025-06-30)
- 🔄 统一菜单:合并"远程环境共享"和"共享管理"为一个统一的"远程环境与共享"菜单
- 🐛 错误修复:修复了调用不存在方法的运行时错误
- 🔒 安全改进:移除了所有硬编码的私有环境配置,保护用户隐私
v0.5.8 (2025-06-30)
- 🎫 一次性 Token 共享:支持使用
ott_前缀的一次性 token,更安全便捷 - 🔄 环境共享管理:新增专门的共享管理界面,快捷复制分享命令
- 🚀 远程环境支持:通过代理服务器实现环境的远程共享和同步
- 📤 快速共享:一键生成分享命令,方便团队协作
v0.4.1 (2025-06)
- 🔄 代理池管理:管理多个代理服务器,支持健康检查和快速切换
- 🏥 代理健康检查:自动测试所有代理的连接性,提供可视化状态指示
- 🌐 全局代理控制:使用
proxy global enable/disable/status命令一键控制全局代理 - ✨ 增强的代理命令:新增
proxy add/list/use/test/remove子命令进行全面的代理管理 - 🎯 智能默认选择:添加到空池中的第一个代理自动成为默认代理
- 🔧 环境集成:创建环境时使用
--use-proxy参数引用池中代理 - 📊 交互式代理界面:主界面新增"🌐 代理管理"菜单选项
- 🔀 导入当前配置:新增
--from-current选项,可从当前 Claude Code 实例创建环境
v0.4.0 (2025-01)
- 🎯 环境模板:为个人、团队、区域和企业使用提供预配置模板
- 🧾 健康检查:新增
codem health命令验证环境配置 - 🛡️ 增强错误处理:提供有用的错误信息和恢复建议
- 🎆 交互式设置向导:为新环境提供引导式设置
v0.3.0 (2025-06)
- 🌐 新增代理支持:为每个环境配置独立的 HTTP/HTTPS 代理
- ✨ 新增
proxy命令:管理环境的代理设置(set/show/remove) - 🔧 支持在创建环境时直接配置代理
- 📝 完善代理配置文档和使用示例
v0.2.3 (2024-12)
- 🐛 修复了交互式选择环境运行 Claude 时的报错问题
- 🔧 改进了 Ink 界面的卸载机制,避免与 Claude 交互冲突
v0.2.2 (2024-12)
- ✨ 支持
codem run <env>直接运行环境,无需额外参数 - 🎯 改进主界面:运行
codem后直接显示环境列表供快速选择 - 🐛 修复了列表显示后自动退出的问题
- ✅ 实现了所有主菜单功能(运行、切换、删除、导出等)
v0.2.1 (2024-12)
- 🐛 修复了 CLI 启动时的 shebang 错误
- 📝 添加了完整的中文文档
贡献
欢迎贡献!在提交 PR 之前,请阅读我们的贡献指南。
许可证
MIT © CodeBox 团队
English | 简体中文
