{"id":33296631,"url":"https://github.com/2ue/ccman","last_synced_at":"2026-04-01T16:41:10.717Z","repository":{"id":308482012,"uuid":"1032928677","full_name":"2ue/ccman","owner":"2ue","description":"一个管理Claude Code + Codex API+GEMINI CLI + OPENCODE服务商配置的工具","archived":false,"fork":false,"pushed_at":"2026-03-04T02:57:58.000Z","size":26787,"stargazers_count":27,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-04T05:43:52.338Z","etag":null,"topics":["claude","claude-ai","claude-code","claudecode-config","codex","codex-cli"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2ue.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-06T03:48:09.000Z","updated_at":"2026-03-04T02:58:01.000Z","dependencies_parsed_at":"2025-08-06T07:23:17.609Z","dependency_job_id":"b39c0e53-8c35-4220-ada5-4762209539bb","html_url":"https://github.com/2ue/ccman","commit_stats":null,"previous_names":["2ue/ccm"],"tags_count":86,"template":false,"template_full_name":null,"purl":"pkg:github/2ue/ccman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fccman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fccman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fccman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fccman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2ue","download_url":"https://codeload.github.com/2ue/ccman/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2ue%2Fccman/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30294866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T11:12:22.024Z","status":"ssl_error","status_checked_at":"2026-03-09T11:10:54.577Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude","claude-ai","claude-code","claudecode-config","codex","codex-cli"],"created_at":"2025-11-18T05:00:32.168Z","updated_at":"2026-04-01T16:41:10.708Z","avatar_url":"https://github.com/2ue.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ccman\n\n一个用于 **Codex / Claude Code / Gemini CLI / OpenCode** 的 API 服务商配置管理工具，支持 CLI + Desktop，并提供 MCP 服务器管理与 WebDAV 同步。\n\n## ✨ 功能概览\n\n- **一键切换服务商**：Codex / Claude Code / Gemini CLI / OpenCode\n- **内置预设模板**：提供常用模板（Desktop 支持自定义预设）\n- **安全写入**：关键配置覆盖前自动备份（`.bak`，权限 `600`）\n- **MCP 管理**：集中管理 MCP 服务器（可在 Desktop 选择同步到 Claude/Gemini，Codex 暂不支持）\n- **WebDAV 同步**：Codex / Claude / Gemini 配置备份、下载、合并\n- **导入/导出**：仅支持 Codex / Claude 配置\n- **Claude 历史清理**：分析并清理 `~/.claude.json`\n\n## ✅ 支持的工具与配置路径\n\n| 工具            | 主要配置文件                                                                | 说明                                                                                        |\n| --------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |\n| **Codex**       | `~/.codex/config.toml` + `~/.codex/auth.json`                               | `auth.json` 使用 `OPENAI_API_KEY`                                                           |\n| **Claude Code** | `~/.claude/settings.json`                                                   | 另有历史文件 `~/.claude.json`                                                               |\n| **Gemini CLI**  | `~/.gemini/settings.json` + `~/.gemini/.env`                                | `.env` 使用 `GOOGLE_GEMINI_BASE_URL` / `GEMINI_API_KEY` / `GOOGLE_API_KEY` / `GEMINI_MODEL` |\n| **OpenCode**    | `~/.config/opencode/opencode.json`                                          | 写入 `provider` 配置与模型变体                                                              |\n| **ccman**       | `~/.ccman/{codex,claude,gemini,opencode,mcp}.json` + `~/.ccman/config.json` | 保存服务商与 MCP 配置，WebDAV 同步配置存放在 `config.json`                                  |\n\n## 📦 内置预设\n\n### Claude Code\n\n- **Anthropic Official**：`https://api.anthropic.com`\n- **GMN**：`https://gmn.chuangzuoli.com/api`\n\n### Codex\n\n- **OpenAI Official**：`https://api.openai.com/v1`\n- **GMN**：`https://gmn.chuangzuoli.com`\n\n### Gemini CLI\n\n- **Google Gemini (API Key)**：官方默认（无需设置 baseUrl）\n- **GMN**：`https://gmn.chuangzuoli.com`\n\n### OpenCode\n\n- **GMN**：`https://gmn.chuangzuoli.com`（npm: `@ai-sdk/openai`）\n\n## 🧭 CLI 使用速览\n\n### 交互式入口\n\n```bash\nccman\n```\n\n执行效果（主菜单）：\n\n```bash\n$ ccman\n\n? 请选择操作:\n  ❯ 🔷 Claude 管理\n    🔶 Codex 管理\n    💎 Gemini 管理\n    🧩 OpenCode 管理\n    🔄 WebDAV 同步\n    📦 预置服务商管理\n    ❌ 退出\n```\n\n### Codex / Claude / Gemini / OpenCode 服务商管理\n\n```bash\nccman cx add|list|use|current|edit|remove|clone\nccman cc add|list|use|current|edit|remove|clone|clean:analyze|clean\nccman gm add|list|use|current|edit|remove|clone\nccman oc add|list|use|current|edit|remove|clone\n```\n\n交互式工具菜单（以 Codex 为例）：\n\n```bash\n$ ccman cx\n\n? 🔶 Codex 操作:\n  ❯ ➕ 添加服务商\n    🔄 切换服务商\n    📋 列出所有服务商\n    👁️  查看当前服务商\n    ✏️  编辑服务商\n    🔁 克隆服务商\n    🗑️  删除服务商\n    ⬅️  返回上级\n```\n\n下面补充每个命令的执行效果示例（交互式流程与输出与源码一致）。\n\n#### Codex 命令执行效果\n\n**add**\n\n```bash\n$ ccman cx add\n\n📝 添加 Codex 服务商\n\n? 选择配置来源:\n  ❯ 📦 使用预置服务商\n    ✏️  自定义配置\n\n? 选择预置服务商:\n  OpenAI Official - OpenAI 官方 API\n  GMN - GMN 服务 (OpenAI/Codex 兼容)\n\n使用预设: GMN - GMN 服务 (OpenAI/Codex 兼容)\n\n? 服务商名称: GMN\n? 描述(可选):\n? API 地址: https://gmn.chuangzuoli.com\n? API 密钥: ********\n\n✅ 添加成功\n\n  GMN [Codex]\n  https://gmn.chuangzuoli.com\n\n? 是否立即切换到此服务商? (Y(y) / N(n))\n✅ 已切换到新服务商\n\n配置已更新:\n  - ~/.codex/config.toml\n  - ~/.codex/auth.json\n```\n\n**list**\n\n```bash\n$ ccman cx list\n\n📋 Codex 服务商 (2 个)\n\n  ●  OpenAI Official [当前]\n     https://api.openai.com/v1\n     OpenAI 官方 API\n\n  ○  GMN\n     https://gmn.chuangzuoli.com\n     GMN 服务 (OpenAI/Codex 兼容)\n```\n\n**use**\n\n```bash\n$ ccman cx use\n\n? 选择要切换的服务商:\n  OpenAI Official - https://api.openai.com/v1\n  GMN - https://gmn.chuangzuoli.com\n\n✅ 切换成功\n\n  GMN [Codex]\n  URL: https://gmn.chuangzuoli.com\n\n配置已更新:\n  - ~/.codex/config.toml\n  - ~/.codex/auth.json\n```\n\n**current**\n\n```bash\n$ ccman cx current\n\n📍 当前 Codex 服务商\n\n  OpenAI Official\n  ID: codex-1768916063885-openai1\n  URL: https://api.openai.com/v1\n  最后使用: 2026/1/20 21:34:24\n```\n\n**edit**\n\n```bash\n$ ccman cx edit\n\n? 选择要编辑的服务商:\n  OpenAI Official - https://api.openai.com/v1\n  GMN - https://gmn.chuangzuoli.com\n\n✏️  编辑服务商\n\n提示: 留空则保持原值\n\n? 服务商名称: GMN\n? API 地址: https://gmn.chuangzuoli.com\n? API 密钥 (留空保持不变): ********\n\n✅ 编辑成功\n\n  GMN [Codex]\n  ID: codex-1768916065885-gmn001\n  URL: https://gmn.chuangzuoli.com\n```\n\n**clone**\n\n```bash\n$ ccman cx clone\n\n? 选择要克隆的服务商:\n  OpenAI Official - https://api.openai.com/v1\n  GMN - https://gmn.chuangzuoli.com\n\n克隆自: OpenAI Official\n\n? 服务商名称: OpenAI Official（副本）\n? 描述(可选):\n? API 地址: https://api.openai.com/v1\n? API 密钥: ********\n\n✅ 克隆成功\n\n  OpenAI Official（副本） [Codex]\n  ID: codex-1768916069999-copy01\n  URL: https://api.openai.com/v1\n```\n\n**remove**\n\n```bash\n$ ccman cx remove\n\n? 选择要删除的服务商:\n  OpenAI Official - https://api.openai.com/v1\n  GMN - https://gmn.chuangzuoli.com\n\n? 确定删除 \"GMN\"? (Y(y) / N(n))\n\n✅ 已删除: GMN\n```\n\n#### Claude Code 命令执行效果\n\n**add**\n\n```bash\n$ ccman cc add\n\n📝 添加 Claude Code 服务商\n\n? 选择配置来源:\n  ❯ 📦 使用预置服务商\n    ✏️  自定义配置\n\n? 选择预置服务商:\n  Anthropic Official - Anthropic 官方 API\n\n使用预设: Anthropic Official - Anthropic 官方 API\n\n? 服务商名称: Anthropic Official\n? 描述(可选):\n? API 地址: https://api.anthropic.com\n? API 密钥: ********\n\n✅ 添加成功\n\n  Anthropic Official [Claude Code]\n  https://api.anthropic.com\n\n? 是否立即切换到此服务商? (Y(y) / N(n))\n✅ 已切换到新服务商\n\n配置已更新:\n  - ~/.claude/settings.json\n```\n\n**list**\n\n```bash\n$ ccman cc list\n\n📋 Claude Code 服务商 (1 个)\n\n  ●  Anthropic Official [当前]\n     https://api.anthropic.com\n     Anthropic 官方 API\n```\n\n**use**\n\n```bash\n$ ccman cc use\n\n? 选择要切换的服务商:\n  Anthropic Official - https://api.anthropic.com\n\n✅ 切换成功\n\n  Anthropic Official [Claude Code]\n  URL: https://api.anthropic.com\n\n配置已更新:\n  - ~/.claude/settings.json\n```\n\n**current**\n\n```bash\n$ ccman cc current\n\n📍 当前 Claude Code 服务商\n\n  Anthropic Official\n  ID: claude-1768916065885-anth01\n  URL: https://api.anthropic.com\n  最后使用: 2026/1/20 21:34:26\n```\n\n**edit**\n\n```bash\n$ ccman cc edit\n\n? 选择要编辑的服务商:\n  Anthropic Official - https://api.anthropic.com\n\n✏️  编辑服务商\n\n提示: 留空则保持原值\n\n? 服务商名称: Anthropic Official\n? API 地址: https://api.anthropic.com\n? API 密钥 (留空保持不变): ********\n\n✅ 编辑成功\n\n  Anthropic Official [Claude Code]\n  ID: claude-1768916065885-anth01\n  URL: https://api.anthropic.com\n```\n\n**clone**\n\n```bash\n$ ccman cc clone\n\n? 选择要克隆的服务商:\n  Anthropic Official - https://api.anthropic.com\n\n克隆自: Anthropic Official\n\n? 服务商名称: Anthropic Official（副本）\n? 描述(可选):\n? API 地址: https://api.anthropic.com\n? API 密钥: ********\n\n✅ 克隆成功\n\n  Anthropic Official（副本） [Claude Code]\n  ID: claude-1768916072222-copy01\n  URL: https://api.anthropic.com\n```\n\n**remove**\n\n```bash\n$ ccman cc remove\n\n? 选择要删除的服务商:\n  Anthropic Official - https://api.anthropic.com\n\n? 确定删除 \"Anthropic Official\"? (Y(y) / N(n))\n\n✅ 已删除: Anthropic Official\n```\n\n#### Gemini CLI 命令执行效果\n\n**add**\n\n```bash\n$ ccman gm add\n\n📝 添加 Gemini CLI 服务商\n\n? 选择配置来源:\n  ❯ 📦 使用预置服务商\n    ✏️  自定义配置\n\n? 选择预置服务商:\n  Google Gemini (API Key) - 使用官方 Gemini API（通过 GEMINI_API_KEY 或 GOOGLE_API_KEY 认证）\n  GMN - GMN 服务 (Gemini 兼容)\n\n使用预设: GMN - GMN 服务 (Gemini 兼容)\n\n? 服务商名称: GMN\n? 描述(可选):\n? API 地址: https://gmn.chuangzuoli.com\n? API 密钥: ********\n\n✅ 添加成功\n\n  GMN [Gemini CLI]\n  https://gmn.chuangzuoli.com\n\n? 是否立即切换到此服务商? (Y(y) / N(n))\n✅ 已切换到新服务商\n\n配置已更新:\n  - ~/.gemini/settings.json\n  - ~/.gemini/.env\n```\n\n**list**\n\n```bash\n$ ccman gm list\n\n📋 Gemini CLI 服务商 (2 个)\n\n  ●  Google Gemini (API Key) [当前]\n\n     官方 Gemini API\n\n  ○  GMN\n     https://gmn.chuangzuoli.com\n     GMN 服务 (Gemini 兼容)\n```\n\n**use**\n\n```bash\n$ ccman gm use\n\n? 选择要切换的服务商:\n  Google Gemini (API Key) - (默认端点)\n  GMN - https://gmn.chuangzuoli.com\n\n✅ 切换成功\n\n  GMN [Gemini CLI]\n  URL: https://gmn.chuangzuoli.com\n\n配置已更新:\n  - ~/.gemini/settings.json\n  - ~/.gemini/.env\n```\n\n**current**\n\n```bash\n$ ccman gm current\n\n🎯 当前 Gemini CLI 服务商\n\n  名称: Google Gemini (API Key)\n  地址: (默认端点)\n```\n\n**edit**\n\n```bash\n$ ccman gm edit\n\n? 选择要编辑的服务商:\n  Google Gemini (API Key) - (默认端点)\n  GMN - https://gmn.chuangzuoli.com\n\n? 服务商名称: GMN\n? 描述(可选):\n? API 地址: https://gmn.chuangzuoli.com\n? API 密钥: ********\n\n✅ 编辑成功\n```\n\n**clone**\n\n```bash\n$ ccman gm clone\n\n? 选择要克隆的服务商:\n  Google Gemini (API Key) - (默认端点)\n  GMN - https://gmn.chuangzuoli.com\n\n? 输入新服务商名称:\n\n✅ 克隆成功\n\n  GMN（副本） [Gemini CLI]\n  https://gmn.chuangzuoli.com\n```\n\n**remove**\n\n```bash\n$ ccman gm remove\n\n? 选择要删除的服务商:\n  Google Gemini (API Key) - (默认端点)\n  GMN - https://gmn.chuangzuoli.com\n\n? 确定要删除服务商 \"GMN\" 吗？ (Y(y) / N(n))\n\n✅ 已删除服务商\n```\n\n#### OpenCode 命令执行效果\n\n**add**\n\n```bash\n$ ccman oc add\n\n📝 添加 OpenCode 服务商\n\n? 选择配置来源:\n  ❯ 📦 使用预置服务商\n    ✏️  自定义配置\n\n? 选择预置服务商:\n  GMN - GMN 服务 (OpenCode 兼容)\n\n使用预设: GMN - GMN 服务 (OpenCode 兼容)\n\n? 服务商名称: GMN\n? 描述(可选):\n? API 地址: https://gmn.chuangzuoli.com\n? API 密钥: ********\n? 兼容包 (npm): @ai-sdk/openai\n\n✅ 添加成功\n\n  GMN [OpenCode]\n  https://gmn.chuangzuoli.com\n\n? 是否立即切换到此服务商? (Y(y) / N(n))\n✅ 已切换到新服务商\n\n配置已更新:\n  - ~/.config/opencode/opencode.json\n```\n\n**list**\n\n```bash\n$ ccman oc list\n\n📋 OpenCode 服务商 (1 个)\n\n  ●  GMN [当前]\n     https://gmn.chuangzuoli.com\n     GMN 服务 (OpenCode 兼容)\n```\n\n**use**\n\n```bash\n$ ccman oc use\n\n? 选择要切换的服务商:\n  GMN - https://gmn.chuangzuoli.com\n\n✅ 切换成功\n\n  GMN [OpenCode]\n  URL: https://gmn.chuangzuoli.com\n\n配置已更新:\n  - ~/.config/opencode/opencode.json\n```\n\n**current**\n\n```bash\n$ ccman oc current\n\n🎯 当前 OpenCode 服务商\n\n  名称: GMN\n  地址: https://gmn.chuangzuoli.com\n```\n\n**edit**\n\n```bash\n$ ccman oc edit\n\n? 选择要编辑的服务商:\n  GMN - https://gmn.chuangzuoli.com\n\n? 服务商名称: GMN\n? 描述(可选):\n? API 地址: https://gmn.chuangzuoli.com\n? API 密钥: ********\n? 兼容包 (npm): @ai-sdk/openai\n\n✅ 编辑成功\n```\n\n**clone**\n\n```bash\n$ ccman oc clone\n\n? 选择要克隆的服务商:\n  GMN - https://gmn.chuangzuoli.com\n\n克隆自: GMN\n\n? 服务商名称: GMN（副本）\n? 描述(可选):\n? API 地址: https://gmn.chuangzuoli.com\n? API 密钥: ********\n? 兼容包 (npm): @ai-sdk/openai\n\n✅ 克隆成功\n\n  GMN（副本） [OpenCode]\n  ID: opencode-1768916088888-copy01\n  URL: https://gmn.chuangzuoli.com\n```\n\n**remove**\n\n```bash\n$ ccman oc remove\n\n? 选择要删除的服务商:\n  GMN - https://gmn.chuangzuoli.com\n\n? 确定删除 \"GMN\"? (Y(y) / N(n))\n\n✅ 已删除: GMN\n```\n\n### MCP 管理\n\n```bash\nccman mcp add|list|edit|remove\n```\n\n\u003e MCP 会同步到 Claude / Gemini（Codex 暂不支持）。\n\n执行效果示例：\n\n**add**\n\n```bash\n$ ccman mcp add\n\n📝 添加 MCP 服务器\n\n? 选择配置来源:\n  ❯ 📦 使用预置 MCP 服务器\n    ✏️  自定义配置\n\n? 选择预置 MCP 服务器:\n  filesystem - 文件系统访问\n  github - GitHub 集成\n  postgres - PostgreSQL 数据库\n  brave-search - Brave 搜索\n  google-maps - Google Maps\n  puppeteer - 浏览器自动化\n  sqlite - SQLite 数据库\n  sequential-thinking - 序列思考增强\n\n使用预设: filesystem - 文件系统访问\n\n⚠️  需要修改第3个参数为允许访问的目录路径\n\n? MCP 服务器名称: filesystem\n? 启动命令: npx\n? 命令参数 (空格分隔): -y @modelcontextprotocol/server-filesystem /path/to/allowed/files\n? 环境变量 (JSON 格式, 如 {\"API_KEY\": \"xxx\"}, 可留空):\n\n✅ MCP 服务器添加成功\n\n  filesystem [MCP]\n  npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/files\n\n✅ 配置已自动同步到 ~/.claude/settings.json\n\n配置文件:\n  - ~/.claude/settings.json\n```\n\n**list**\n\n```bash\n$ ccman mcp list\n\n📋 MCP 服务器 (2 个)\n\n  ○ filesystem\n    npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/files\n\n  ○ github\n    npx -y @modelcontextprotocol/server-github\n    环境变量: GITHUB_PERSONAL_ACCESS_TOKEN\n\n提示: 所有配置的 MCP 服务器会自动同步到 ~/.claude/settings.json（可在 Desktop 选择同步到 Gemini CLI）\n```\n\n**edit**\n\n```bash\n$ ccman mcp edit\n\n? 选择要编辑的 MCP 服务器:\n  filesystem - npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/files\n  github - npx -y @modelcontextprotocol/server-github\n\n✏️  编辑 MCP 服务器\n\n提示: 留空则保持原值\n\n? MCP 服务器名称: github\n? 启动命令: npx\n? 命令参数 (空格分隔, 留空保持不变): -y @modelcontextprotocol/server-github\n? 环境变量 (JSON 格式, 留空保持不变): {\"GITHUB_PERSONAL_ACCESS_TOKEN\":\"******\"}\n\n✅ 编辑成功\n\n  github [MCP]\n  命令: npx -y @modelcontextprotocol/server-github\n  环境变量: GITHUB_PERSONAL_ACCESS_TOKEN\n\n✅ 配置已自动同步到 ~/.claude/settings.json\n\n配置文件:\n  - ~/.claude/settings.json\n```\n\n**remove**\n\n```bash\n$ ccman mcp remove\n\n? 选择要删除的 MCP 服务器:\n  filesystem - npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/files\n  github - npx -y @modelcontextprotocol/server-github\n\n? 确定删除 \"github\"? (Y(y) / N(n))\n\n✅ 已删除: github\n\n✅ 配置已自动同步到 ~/.claude/settings.json\n\n配置文件:\n  - ~/.claude/settings.json\n```\n\n### WebDAV 同步\n\n```bash\nccman sync\nccman sync config\nccman sync test\nccman sync upload\nccman sync download\nccman sync merge\nccman sync status\n```\n\n\u003e WebDAV 同步目前覆盖 Codex / Claude / Gemini 配置，OpenCode 与 MCP 暂不参与同步。\n\n执行效果示例（WebDAV）：\n\n**同步菜单**\n\n```bash\n$ ccman sync\n\n? 🔄 同步操作:\n  ❯ ⚙️  配置 WebDAV 连接\n    🔍 测试连接\n    📤 上传到云端\n    📥 从云端下载\n    🔄 智能合并\n    📊 查看同步状态\n    ⬅️  返回上一级\n```\n\n**config**\n\n```bash\n$ ccman sync config\n\n⚙️  配置 WebDAV 同步\n\n? WebDAV 服务器地址: https://dav.example.com\n? 用户名: alice\n? WebDAV 密码: ********\n? 认证类型: Basic Auth（基础认证）\n? 远程同步目录: /ccman\n? 同步密码（用于加密 API Key）: ********\n? 记住同步密码? (Y(y) / N(n))\n\n✅ 配置保存成功\n\n配置文件: ~/.ccman/config.json\n\n? 是否立即测试连接? (Y(y) / N(n))\n\n🔍 测试 WebDAV 连接...\n\n✅ 连接成功\n\n  URL: https://dav.example.com\n  用户: alice\n  远程目录: /ccman\n  认证类型: Basic Auth\n```\n\n**test**\n\n```bash\n$ ccman sync test\n\n🔍 测试 WebDAV 连接...\n\n✅ 连接成功\n\n  URL: https://dav.example.com\n  用户: alice\n  远程目录: /ccman\n  认证类型: Basic Auth\n```\n\n**upload**\n\n```bash\n$ ccman sync upload\n\n📤 上传配置到云端\n\n配置信息:\n  Codex 服务商: 2 个\n  Claude 服务商: 1 个\n\n⚠️  云端现有配置将被覆盖\n\n? 确认上传? (Y(y) / N(n))\n\n🔐 加密 API Key...\n📤 上传到 WebDAV...\n\n✅ 上传成功\n\n远程文件:\n  https://dav.example.com/ccman/.ccman/codex.json\n  https://dav.example.com/ccman/.ccman/claude.json\n\n💡 其他设备可通过 'ccman sync download' 获取配置\n```\n\n**download**\n\n```bash\n$ ccman sync download\n\n📥 从云端下载配置\n\n⚠️  将覆盖本地配置（自动备份）\n\n? 确认下载? (Y(y) / N(n))\n\n💾 备份本地配置...\n📥 下载远程配置...\n🔓 解密 API Key...\n\n✅ 下载成功\n\n本地备份:\n  ~/.ccman/codex.json.backup.1768929300000\n  ~/.ccman/claude.json.backup.1768929300000\n\n💡 配置已更新，重新加载生效\n```\n\n**merge**\n\n```bash\n$ ccman sync merge\n\n🔄 智能合并配置\n\n分析本地和云端配置...\n\n✅ 配置已智能合并并同步\n\n备份:\n  ~/.ccman/codex.json.backup.1768929480000\n  ~/.ccman/claude.json.backup.1768929480000\n\n合并规则:\n  • 相同 ID：保留最新修改\n  • 相同配置（URL+Key）：保留最新修改\n  • 不同配置：全部保留，自动处理 name 冲突\n```\n\n**status**\n\n```bash\n$ ccman sync status\n\n📊 同步状态\n\nWebDAV 配置:\n  URL: https://dav.example.com\n  用户: alice\n  远程目录: /ccman\n  认证: Basic Auth\n  同步密码: ✓ 已保存\n\n本地配置:\n  Codex: 2 个服务商\n  Claude: 1 个服务商\n  最后同步: 2026/1/20 21:38:12\n\n同步建议:\n  💡 上传到云端: ccman sync upload\n  💡 从云端下载: ccman sync download\n  💡 智能合并: ccman sync merge\n```\n\n### 导入 / 导出\n\n```bash\nccman export [dir]\nccman import [dir]\n```\n\n执行效果示例（导入 / 导出）：\n\n**export**\n\n```bash\n$ ccman export ~/backup/ccman\n\n📦 导出配置\n\n导出文件:\n  codex.json  - Codex 配置\n  claude.json - Claude 配置\n\n目标目录: /Users/you/backup/ccman\n\n⚠️  导出文件包含 API Key，请妥善保管\n\n✅ 导出成功\n\n已导出文件:\n  ✓ codex.json\n  ✓ claude.json\n\n💡 导入命令: ccman import /Users/you/backup/ccman\n```\n\n**import**\n\n```bash\n$ ccman import ~/backup/ccman\n\n📥 导入配置\n\n⚠️  警告：导入将覆盖当前配置\n\n源目录: /Users/you/backup/ccman\n\n找到配置文件:\n  ✓ codex.json\n  ✓ claude.json\n\n当前配置将被覆盖（自动备份）\n\n? 确认导入？ (Y(y) / N(n))\n\n⚠️  最后确认：此操作将覆盖所有当前配置！\n\n? 真的要继续吗？ (Y(y) / N(n))\n\n💾 备份当前配置...\n📥 导入新配置...\n\n✅ 导入成功\n\n备份文件:\n  /Users/you/.ccman/codex.json.backup.1768929720000\n  /Users/you/.ccman/claude.json.backup.1768929720000\n\n已导入文件:\n  ✓ codex.json\n  ✓ claude.json\n\n💡 请使用 'ccman cx use' 或 'ccman cc use' 切换服务商\n```\n\n### Claude 历史清理\n\n```bash\nccman cc clean:analyze\nccman cc clean\n```\n\n执行效果示例（历史清理）：\n\n**clean:analyze**\n\n```bash\n$ ccman cc clean:analyze\n\n📊 分析 ~/.claude.json\n\n文件大小: 18.6 MB\n\n项目统计:\n  项目总数: 24\n  历史记录总数: 862 条\n\n历史记录最多的项目:\n   96 条  .../work/projects/alpha\n   88 条  .../work/projects/bravo\n   77 条  .../work/projects/charlie\n   65 条  .../work/projects/delta\n   59 条  .../work/projects/echo\n\n预计可节省空间:\n  保守清理 (保留10条): 6.2 MB\n  中等清理 (保留5条):  9.7 MB\n  激进清理 (清空历史):  14.8 MB\n\n💡 执行清理: ccman cc clean\n```\n\n**clean**\n\n```bash\n$ ccman cc clean\n\n🧹 清理 ~/.claude.json\n\n当前文件大小: 18.6 MB\n项目数: 24, 历史记录: 862 条\n\n? 选择清理方案:\n  ❯ 保守清理 - 保留最近10条记录，清理缓存 (节省约 6.2 MB)\n    中等清理 - 保留最近5条记录，清理缓存和统计 (节省约 9.7 MB)\n    激进清理 - 清空历史记录，清理缓存和统计 (节省约 14.8 MB)\n    自定义 - 自定义清理选项\n\n? 确认执行清理？（会自动备份原文件） (Y(y) / N(n))\n\n正在清理...\n\n✅ 清理完成\n\n清理前: 18.6 MB\n清理后: 9.9 MB\n节省空间: 8.7 MB (46.8%)\n\n清理历史记录: 840 条\n清理缓存: ✓\n\n备份文件: /Users/you/.claude.json.backup-2026-01-20T21-45-00\n```\n\n## 📸 界面截图\n\n**主界面**\n![ccman](docs/screenshoot/ccman.png)\n\n**预置服务商**\n![预置服务商](docs/screenshoot/yuzhifuwushang.png)\n\n**Codex 配置**\n![Codex](docs/screenshoot/codex.png)\n\n**Claude Code 配置**\n![Claude Code](docs/screenshoot/claude-code.png)\n\n**导入导出**\n![导入导出](docs/screenshoot/export.png)\n\n**WebDAV 同步**\n![WebDAV](docs/screenshoot/webdav.png)\n\n## 🧱 目录结构\n\n```\npackages/\n  core/      # 核心逻辑（读写配置、预设、同步）\n  cli/       # CLI 工具\n  desktop/   # Desktop GUI (Electron)\n  types/     # 共享类型定义\n```\n\n## 🛡️ 写入策略说明\n\n- **常规管理命令**（如 `ccman cx` / `ccman cc` / `ccman gm` / `ccman oc` / `ccman openclaw`）：默认采用增量更新，尽量保留用户已有字段\n- **快捷配置命令**（如 `ccman gmn` / `ccman gmn1` / `ccman gmncode`）：对所涉及工具执行覆盖式写入，确保快速落下已知可用配置\n- **Gemini** 会写入 `settings.json` 与 `.env`\n- **OpenCode** 会写入 `~/.config/opencode/opencode.json`\n\n## 🛠️ 开发与构建\n\n```bash\npnpm install\n\n# 启动 CLI（开发模式）\npnpm --filter ccman dev\n\n# 启动 Desktop（可选）\npnpm --filter @ccman/desktop dev\n```\n\n构建全部包：\n\n```bash\npnpm build\n```\n\n## 📄 License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2ue%2Fccman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2ue%2Fccman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2ue%2Fccman/lists"}