npm package: @0x86/claude-config-manager
Description: 🔧 Claude Code 配置管理工具 - 支持多配置方案切换、自动备份、实时预览
Author: xyhuangjia
Latest version: 1.0.0

# Claude Code 配置管理工具

一个使用 TypeScript 和 Bun 构建的交互式 CLI 工具，用于管理 Claude Code 的多个配置方案，支持快速切换不同的 API 提供商和模型映射。

## ✨ 功能特性

- ✅ 添加、编辑、删除、切换配置方案
- ✅ 主菜单直接显示所有配置
- ✅ 支持配置多个 API 提供商（阿里云、OpenAI、Anthropic 等）
- ✅ 自定义模型映射（Opus/Sonnet/Haiku）
- ✅ 交互式 CLI 界面（基于 @clack/prompts）
- ✅ 配置预览功能
- ✅ 配置立即生效
- ✅ **自动备份初始配置**
- ✅ **恢复初始设置功能**
- ✅ 支持编译为独立可执行文件
- ✅ 完整的错误处理和输入验证
- ✅ API Key 安全显示
- ✅ 启动时显示当前配置

## 📦 安装

### 方式 1: npm (推荐)

```bash
# 全局安装
npm install -g claude-config-cli

# 运行
claude-config
```

### 方式 2: Bun

```bash
# 全局安装
bun install -g claude-config-cli

# 运行
claude-config
```

### 方式 3: 从源码安装

```bash
# 克隆仓库
git clone https://github.com/xyhuangjia/claude-config-cli.git
cd claude-config-cli

# 安装依赖
bun install

# 运行
bun start
```

### 方式 4: 编译为可执行文件

```bash
# 编译
bun run build

# 运行
./claude-config
```

### 方式 5: 下载可执行文件

```bash
# macOS/Linux
curl -L https://raw.githubusercontent.com/xyhuangjia/claude-config-cli/main/install.sh | bash

# 或手动下载
# 访问 https://github.com/xyhuangjia/claude-config-cli/releases
```

## 🚀 使用方法

运行工具后，你会看到以下选项：

```
🔧 Claude Code 配置管理工具

当前配置: 阿里云
──────────────────────────────────────────────────
  API Key:  sk-sp-ee...15a1
  Base URL: https://coding.dashscope.aliyuncs.com/apps/anthropic
  Opus:     glm-5
  Sonnet:   qwen3.5-plus
  Haiku:    MiniMax-M2.5
──────────────────────────────────────────────────

? 请选择配置或操作
  📦 阿里云 ⭐
  📦 OpenAI
  📦 Anthropic
  ➕ 添加新配置
  🔄 恢复初始设置
  🚪 退出
```

> 注：⭐ 表示当前正在使用的配置

### 切换/编辑/删除配置

1. 从主菜单直接选择一个配置（如"📦 阿里云"）
2. 查看该配置的详细信息
3. 选择操作：
   - ✅ **切换到此配置** - 立即应用该配置
   - ✏️ **编辑此配置** - 修改配置内容
   - 🗑️ **删除此配置** - 删除该配置
   - 🔙 **返回主菜单** - 返回主菜单

### 恢复初始设置

1. 选择"🔄 恢复初始设置"
2. 查看备份信息（备份时间）
3. 确认恢复操作
4. 系统将自动恢复到工具首次运行时的配置

> **说明**：工具会在首次运行时自动备份当前的 Claude Code 配置（API Key、Base URL、模型映射等），备份文件保存在 `~/.claude/original_settings_backup.json`

### 添加新配置

1. 选择"➕ 添加新配置"
2. 输入配置名称（如"阿里云"、"OpenAI"等）
3. 输入以下信息：
   - **API Key** (ANTHROPIC_AUTH_TOKEN)
   - **Base URL** (ANTHROPIC_BASE_URL)
   - **Opus 模型** (ANTHROPIC_DEFAULT_OPUS_MODEL)
   - **Sonnet 模型** (ANTHROPIC_DEFAULT_SONNET_MODEL)
   - **Haiku 模型** (ANTHROPIC_DEFAULT_HAIKU_MODEL)
4. 选择是否立即切换到此配置

## 📁 配置存储

所有配置存储在 `~/.claude/` 目录下：

```
~/.claude/
├── settings.json                    # 当前使用的配置（Claude Code 读取此文件）
├── profiles/                        # 所有配置方案
│   ├── aliyun.json
│   ├── openai.json
│   └── anthropic.json
├── current_profile.txt              # 记录当前配置名称
└── original_settings_backup.json    # 初始配置备份（首次运行时自动创建）
```
~/.claude/
├── settings.json                    # 当前使用的配置（Claude Code 读取此文件）
├── original_settings_backup.json    # 原始配置备份（首次运行时创建）
├── profiles/                        # 所有配置方案
│   ├── aliyun.json
│   ├── openai.json
│   └── anthropic.json
└── current_profile.txt              # 记录当前配置名称
```

## 📝 配置示例

### 阿里云配置

```json
{
  "name": "阿里云",
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-xxx",
    "ANTHROPIC_BASE_URL": "https://coding.dashscope.aliyuncs.com/apps/anthropic",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "qwen3.5-plus",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M2.5"
  }
}
```

### OpenAI 配置

```json
{
  "name": "OpenAI",
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-xxx",
    "ANTHROPIC_BASE_URL": "https://api.openai.com/v1",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-4",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-4-turbo",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gpt-3.5-turbo"
  }
}
```

### Anthropic 官方配置

```json
{
  "name": "Anthropic",
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-ant-xxx",
    "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-3-opus-20240229",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-3-sonnet-20240229",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-3-haiku-20240307"
  }
}
```

## 🔧 技术栈

- **Runtime**: [Bun](https://bun.sh/) - 快速的 JavaScript 运行时
- **Language**: TypeScript
- **CLI Framework**: [@clack/prompts](https://github.com/natemoo-re/clack) - 优雅的交互式 CLI 组件
- **Colors**: [picocolors](https://github.com/alexeyraspopov/picocolors) - 终端颜色库

## 🎯 快速开始

```bash
# 1. 安装依赖
bun install

# 2. 运行工具
bun start

# 3. 添加第一个配置（选择"添加新配置"）
# 4. 切换到新配置
# 5. 开始使用 Claude Code
```

## 🔒 安全特性

- **API Key 安全显示**: 只显示前8位和后4位，中间用 `...` 代替
- **输入验证**: 验证配置名称、API Key 格式等
- **错误处理**: 完整的 try-catch 保护，防止程序崩溃
- **文件权限**: 建议设置 `chmod 700 ~/.claude` 和 `chmod 600 ~/.claude/*`

## 📌 注意事项

1. **安全性**：API Key 以明文存储在配置文件中，请确保配置目录权限设置正确
2. **当前配置保护**：删除当前配置时需要二次确认
3. **配置立即生效**：切换配置后，Claude Code 会立即使用新配置，无需重启
4. **保留其他设置**：切换配置时，只更新 `env` 相关字段，其他设置保持不变
5. **配置合并**：新配置只会覆盖非空值，保留原有的其他环境变量

## 🐛 故障排除

### 找不到 bun 命令

```bash
# 安装 Bun
curl -fsSL https://bun.sh/install | bash
```

### 配置不生效

1. 检查 `~/.claude/settings.json` 文件是否正确更新
2. 确保配置文件格式正确（有效的 JSON）
3. 重启 Claude Code（通常不需要，但如果遇到问题可以尝试）

### 权限问题

```bash
# 确保配置目录权限正确
chmod 700 ~/.claude
chmod 600 ~/.claude/settings.json
chmod 600 ~/.claude/profiles/*.json
```

### 配置文件损坏

如果配置文件损坏，工具会自动使用默认配置，并提示错误信息。你可以：
1. 删除损坏的配置文件
2. 重新添加配置

## 📄 许可证

MIT

## 🔗 相关链接

- [快速开始](QUICKSTART.md) - 5分钟上手指南
- [更新日志](CHANGELOG.md) - 版本更新记录
- [发布指南](PUBLISHING.md) - 如何发布到 npm/GitHub
- [配置示例](example-profiles.json) - 常见配置示例

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

### 贡献方式
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request

## 📊 开发过程

本项目使用 AI Team 模式开发：
- **规划**: GLM-5 (Research Agent)
- **编码**: GLM-4.7 (Implement Agent)
- **检查**: GLM-5 (Check Agent)

## 🔍 代码质量

- ✅ TypeScript strict 模式
- ✅ 完整的错误处理
- ✅ 输入验证
- ✅ 类型安全
- ✅ 最佳实践

## 📈 项目统计

![GitHub stars](https://img.shields.io/github/stars/xyhuangjia/claude-config-cli?style=social)
![npm downloads](https://img.shields.io/npm/dt/claude-config-cli)
![GitHub license](https://img.shields.io/github/license/xyhuangjia/claude-config-cli)
![GitHub release](https://img.shields.io/github/v/release/xyhuangjia/claude-config-cli)

## ⭐ Star History

如果这个工具对你有帮助，请给个 Star ⭐️

## 💖 支持项目

如果你觉得这个工具有用，可以：
- ⭐ 给项目点星
- 🐛 报告 Bug
- 💡 提出新功能建议
- 📖 改进文档
- 🔀 提交 Pull Request