|
| 1 | +# 命令级备份清单(2026-02-27) |
| 2 | + |
| 3 | +## 判定口径 |
| 4 | + |
| 5 | +- 会备份:命令执行前会创建 `.bak` 或 `.backup.<timestamp>` 备份文件。 |
| 6 | +- 不会备份:命令会写文件,但不会先创建备份(通常使用原子写入)。 |
| 7 | +- 只读:命令不写文件。 |
| 8 | + |
| 9 | +## ccman CLI |
| 10 | + |
| 11 | +### 顶层命令 |
| 12 | + |
| 13 | +| 命令 | 备份结论 | 说明 | |
| 14 | +| --- | --- | --- | |
| 15 | +| `ccman`(无参数) | 只读 | 进入交互菜单,本身不写文件。 | |
| 16 | +| `ccman cx` / `ccman cc` / `ccman gm` / `ccman oc` / `ccman openclaw` / `ccman sync`(无子命令) | 只读 | 进入对应交互菜单,本身不写文件。 | |
| 17 | +| `ccman mcp`(无子命令) | 只读 | 仅展示帮助。 | |
| 18 | + |
| 19 | +### Codex(`ccman cx`) |
| 20 | + |
| 21 | +| 命令 | 备份结论 | 说明 | |
| 22 | +| --- | --- | --- | |
| 23 | +| `ccman cx add` | 不会备份 | 写 `.ccman/codex.json`;若选择立即启用,会继续写 `~/.codex/*`,均不备份。 | |
| 24 | +| `ccman cx edit` | 不会备份 | 写 `.ccman/codex.json`;若编辑的是当前 provider,会写 `~/.codex/*`,不备份。 | |
| 25 | +| `ccman cx remove` | 不会备份 | 仅写 `.ccman/codex.json`。 | |
| 26 | +| `ccman cx clone` | 不会备份 | 仅写 `.ccman/codex.json`。 | |
| 27 | +| `ccman cx use` | 不会备份 | 写 `.ccman/codex.json` + `~/.codex/*`(switch/use 路径不备份)。 | |
| 28 | +| `ccman cx list` / `ccman cx ls` | 只读 | 不写文件。 | |
| 29 | +| `ccman cx current` | 只读 | 不写文件。 | |
| 30 | + |
| 31 | +### Claude(`ccman cc`) |
| 32 | + |
| 33 | +| 命令 | 备份结论 | 说明 | |
| 34 | +| --- | --- | --- | |
| 35 | +| `ccman cc add` | 不会备份 | 写 `.ccman/claude.json`;若选择立即启用,会写 `~/.claude/settings.json`,不备份。 | |
| 36 | +| `ccman cc edit` | 不会备份 | 写 `.ccman/claude.json`;当前 provider 会同步 `~/.claude/settings.json`,不备份。 | |
| 37 | +| `ccman cc remove` | 不会备份 | 仅写 `.ccman/claude.json`。 | |
| 38 | +| `ccman cc clone` | 不会备份 | 仅写 `.ccman/claude.json`。 | |
| 39 | +| `ccman cc use` | 不会备份 | 写 `.ccman/claude.json` + `~/.claude/settings.json`(switch/use 不备份)。 | |
| 40 | +| `ccman cc list` / `ccman cc ls` | 只读 | 不写文件。 | |
| 41 | +| `ccman cc current` | 只读 | 不写文件。 | |
| 42 | +| `ccman cc clean:analyze` | 只读 | 仅读取并分析 `~/.claude.json`。 | |
| 43 | +| `ccman cc clean` | 会备份 | 先备份 `~/.claude.json`,再执行清理。 | |
| 44 | + |
| 45 | +### Gemini(`ccman gm`) |
| 46 | + |
| 47 | +| 命令 | 备份结论 | 说明 | |
| 48 | +| --- | --- | --- | |
| 49 | +| `ccman gm add` | 不会备份 | 写 `.ccman/gemini.json`;若立即启用,会写 `~/.gemini/settings.json` 与 `.env`,不备份。 | |
| 50 | +| `ccman gm edit` | 不会备份 | 写 `.ccman/gemini.json`;当前 provider 会同步 `~/.gemini/*`,不备份。 | |
| 51 | +| `ccman gm remove` / `ccman gm rm` | 不会备份 | 仅写 `.ccman/gemini.json`。 | |
| 52 | +| `ccman gm clone` | 不会备份 | 仅写 `.ccman/gemini.json`。 | |
| 53 | +| `ccman gm use` | 不会备份 | 写 `.ccman/gemini.json` + `~/.gemini/*`(switch/use 不备份)。 | |
| 54 | +| `ccman gm list` / `ccman gm ls` | 只读 | 不写文件。 | |
| 55 | +| `ccman gm current` | 只读 | 不写文件。 | |
| 56 | + |
| 57 | +### OpenCode(`ccman oc`) |
| 58 | + |
| 59 | +| 命令 | 备份结论 | 说明 | |
| 60 | +| --- | --- | --- | |
| 61 | +| `ccman oc add` | 不会备份 | 写 `.ccman/opencode.json`;若立即启用,会写 `~/.config/opencode/opencode.json`,不备份。 | |
| 62 | +| `ccman oc edit` | 不会备份 | 写 `.ccman/opencode.json`;当前 provider 会同步 OpenCode 配置,不备份。 | |
| 63 | +| `ccman oc remove` / `ccman oc rm` | 不会备份 | 仅写 `.ccman/opencode.json`。 | |
| 64 | +| `ccman oc clone` | 不会备份 | 仅写 `.ccman/opencode.json`。 | |
| 65 | +| `ccman oc use` | 不会备份 | 写 `.ccman/opencode.json` + OpenCode 配置(switch/use 不备份)。 | |
| 66 | +| `ccman oc list` / `ccman oc ls` | 只读 | 不写文件。 | |
| 67 | +| `ccman oc current` | 只读 | 不写文件。 | |
| 68 | + |
| 69 | +### OpenClaw(`ccman openclaw` / `ccman ow`) |
| 70 | + |
| 71 | +| 命令 | 备份结论 | 说明 | |
| 72 | +| --- | --- | --- | |
| 73 | +| `ccman openclaw add` | 不会备份 | 写 `.ccman/openclaw.json`;若立即启用,会写 `~/.openclaw/*`,不备份。 | |
| 74 | +| `ccman openclaw edit` | 不会备份 | 写 `.ccman/openclaw.json`;当前 provider 会同步 `~/.openclaw/*`,不备份。 | |
| 75 | +| `ccman openclaw remove` / `ccman openclaw rm` | 不会备份 | 仅写 `.ccman/openclaw.json`。 | |
| 76 | +| `ccman openclaw clone` | 不会备份 | 仅写 `.ccman/openclaw.json`。 | |
| 77 | +| `ccman openclaw use` | 不会备份 | 写 `.ccman/openclaw.json` + `~/.openclaw/*`(switch/use 不备份)。 | |
| 78 | +| `ccman openclaw list` / `ccman openclaw ls` | 只读 | 不写文件。 | |
| 79 | +| `ccman openclaw current` | 只读 | 不写文件。 | |
| 80 | + |
| 81 | +### MCP(`ccman mcp`) |
| 82 | + |
| 83 | +| 命令 | 备份结论 | 说明 | |
| 84 | +| --- | --- | --- | |
| 85 | +| `ccman mcp add` | 不会备份 | 写 `.ccman/mcp.json` 并自动同步应用配置(默认 Claude),均不备份。 | |
| 86 | +| `ccman mcp edit` | 不会备份 | 写 `.ccman/mcp.json` 并自动同步应用配置,不备份。 | |
| 87 | +| `ccman mcp remove` / `ccman mcp rm` | 不会备份 | 写 `.ccman/mcp.json` 并自动同步应用配置,不备份。 | |
| 88 | +| `ccman mcp list` / `ccman mcp ls` | 只读 | 不写文件。 | |
| 89 | + |
| 90 | +### 同步、导入导出与 GMN(顶层命令) |
| 91 | + |
| 92 | +| 命令 | 备份结论 | 说明 | |
| 93 | +| --- | --- | --- | |
| 94 | +| `ccman sync config` | 不会备份 | 写 `~/.ccman/config.json`(同步配置)但不备份。 | |
| 95 | +| `ccman sync test` | 只读 | 仅测试连接;若用户选择先配置,会转入 `sync config`(不备份)。 | |
| 96 | +| `ccman sync status` | 只读 | 不写文件。 | |
| 97 | +| `ccman sync upload` | 不会备份 | 上传云端并更新 `lastSync`(写 `~/.ccman/config.json`),不备份。 | |
| 98 | +| `ccman sync download` | 会备份 | 覆盖本地前备份 `.ccman/*.json`(`.backup.<ts>`),失败可回滚。 | |
| 99 | +| `ccman sync merge` | 会备份 | 有变化时先备份 `.ccman/*.json`(`.backup.<ts>`)再合并。 | |
| 100 | +| `ccman export <dir>` | 会备份 | 若目标目录同名文件存在,会先备份目标文件(`.bak`,fail-closed)。 | |
| 101 | +| `ccman import <dir>` | 会备份 | 覆盖前备份本地 `.ccman/*.json`(`.backup.<ts>`,失败回滚)。 | |
| 102 | +| `ccman gmn [apiKey] ...` | 不会备份 | 本质是 add/edit + switch 流程;`.ccman` 与外部 switch/use 路径均不备份。 | |
| 103 | + |
| 104 | +## desktop(IPC 写入接口) |
| 105 | + |
| 106 | +> 下面仅列写入类 IPC;读取类接口略。 |
| 107 | +
|
| 108 | +| IPC 名称 | 备份结论 | 说明 | |
| 109 | +| --- | --- | --- | |
| 110 | +| `write-config-files` | 会备份 | 手动改写外部工具配置前会 `.bak`,备份失败立即中止(fail-closed)。 | |
| 111 | +| `write-ccman-config-files` | 不会备份 | 改写 `.ccman/*.json` 不做备份(仍保留失败回滚)。 | |
| 112 | +| `codex:*` / `claude:*` / `gemini:*` / `opencode:*` / `openclaw:*` 写入类(`add/edit/remove/clone/switch` + `preset add/edit/remove`) | 不会备份 | 走 tool-manager 与 writer,符合“.ccman + switch/use 不备份”。 | |
| 113 | +| `mcp:add-server` / `mcp:edit-server` / `mcp:clone-server` / `mcp:remove-server` / `mcp:toggle-app` | 不会备份 | `.ccman/mcp.json` 与应用同步写入均不备份。 | |
| 114 | +| `sync:save-config` | 不会备份 | 写 `~/.ccman/config.json` 不备份。 | |
| 115 | +| `sync:upload-to-cloud` | 不会备份 | 更新 `lastSync` 时写 `~/.ccman/config.json`,不备份。 | |
| 116 | +| `sync:download-from-cloud` | 会备份 | 覆盖本地 `.ccman/*.json` 前会做 `.backup.<ts>`。 | |
| 117 | +| `sync:merge-sync` | 会备份 | 合并前会备份 `.ccman/*.json`(有变更时)。 | |
| 118 | +| `importexport:export` | 会备份 | 导出到目标目录时,若目标已存在会先 `.bak`。 | |
| 119 | +| `importexport:import` | 会备份 | 导入覆盖前备份本地 `.ccman/*.json`,失败回滚。 | |
| 120 | +| `clean:run` / `clean:delete-project` / `clean:delete-cache` / `clean:delete-history-entry` / `clean:clear-project-history` | 会备份 | 破坏性清理流程均先备份 `~/.claude.json`。 | |
| 121 | +| `migrate-config` | 会备份 | 迁移旧配置时会生成 `.bak` 迁移备份。 | |
| 122 | + |
| 123 | +## aicoding(`npx @2ue/aicoding` / `aicoding`) |
| 124 | + |
| 125 | +| 命令 | 备份结论 | 说明 | |
| 126 | +| --- | --- | --- | |
| 127 | +| `aicoding [apiKey] [--overwrite] [-p/--platform ...] [--openai-base-url ...]` | 会备份 | 写入已存在目标文件前会先 `.bak`;任一备份失败会中止该工具后续写入(fail-closed)。 | |
| 128 | + |
| 129 | +### aicoding 具体备份目标 |
| 130 | + |
| 131 | +- `codex`:`~/.codex/config.toml`、`~/.codex/auth.json` |
| 132 | +- `opencode`:`~/.config/opencode/opencode.json` |
| 133 | +- `openclaw`:`~/.openclaw/openclaw.json`、`~/.openclaw/agents/main/agent/models.json` |
0 commit comments