wangchuan 1.0.2 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.wangchuan/config.example.json +44 -19
  2. package/README.md +145 -91
  3. package/dist/bin/wangchuan.js +9 -0
  4. package/dist/bin/wangchuan.js.map +1 -1
  5. package/dist/src/commands/diff.d.ts.map +1 -1
  6. package/dist/src/commands/diff.js +3 -1
  7. package/dist/src/commands/diff.js.map +1 -1
  8. package/dist/src/commands/dump.d.ts +9 -0
  9. package/dist/src/commands/dump.d.ts.map +1 -0
  10. package/dist/src/commands/dump.js +68 -0
  11. package/dist/src/commands/dump.js.map +1 -0
  12. package/dist/src/commands/list.d.ts +1 -1
  13. package/dist/src/commands/list.d.ts.map +1 -1
  14. package/dist/src/commands/list.js +26 -12
  15. package/dist/src/commands/list.js.map +1 -1
  16. package/dist/src/commands/pull.d.ts.map +1 -1
  17. package/dist/src/commands/pull.js +11 -1
  18. package/dist/src/commands/pull.js.map +1 -1
  19. package/dist/src/commands/push.d.ts.map +1 -1
  20. package/dist/src/commands/push.js +13 -5
  21. package/dist/src/commands/push.js.map +1 -1
  22. package/dist/src/commands/status.d.ts.map +1 -1
  23. package/dist/src/commands/status.js +5 -2
  24. package/dist/src/commands/status.js.map +1 -1
  25. package/dist/src/core/config.d.ts +8 -1
  26. package/dist/src/core/config.d.ts.map +1 -1
  27. package/dist/src/core/config.js +54 -15
  28. package/dist/src/core/config.js.map +1 -1
  29. package/dist/src/core/json-field.d.ts +17 -0
  30. package/dist/src/core/json-field.d.ts.map +1 -0
  31. package/dist/src/core/json-field.js +21 -0
  32. package/dist/src/core/json-field.js.map +1 -0
  33. package/dist/src/core/migrate.d.ts +22 -0
  34. package/dist/src/core/migrate.d.ts.map +1 -0
  35. package/dist/src/core/migrate.js +183 -0
  36. package/dist/src/core/migrate.js.map +1 -0
  37. package/dist/src/core/sync.d.ts +7 -0
  38. package/dist/src/core/sync.d.ts.map +1 -1
  39. package/dist/src/core/sync.js +423 -68
  40. package/dist/src/core/sync.js.map +1 -1
  41. package/dist/src/types.d.ts +62 -17
  42. package/dist/src/types.d.ts.map +1 -1
  43. package/dist/test/json-field.test.d.ts +5 -0
  44. package/dist/test/json-field.test.d.ts.map +1 -0
  45. package/dist/test/json-field.test.js +71 -0
  46. package/dist/test/json-field.test.js.map +1 -0
  47. package/dist/test/sync.test.d.ts +13 -0
  48. package/dist/test/sync.test.d.ts.map +1 -0
  49. package/dist/test/sync.test.js +477 -0
  50. package/dist/test/sync.test.js.map +1 -0
  51. package/package.json +2 -2
  52. package/skill/SKILL.md +52 -39
@@ -1,43 +1,68 @@
1
1
  {
2
- "_comment": "忘川配置示例 — 复制为 ~/.wangchuan/config.json 并修改",
3
- "repo": "git@github.com:SUpermin6u/wangchuan.git",
2
+ "_comment": "忘川配置示例 v2 — 复制为 ~/.wangchuan/config.json 并修改",
3
+ "repo": "git@github.com:you/your-brain.git",
4
4
  "branch": "main",
5
5
  "localRepoPath": "~/.wangchuan/repo",
6
6
  "keyPath": "~/.wangchuan/master.key",
7
7
  "hostname": "",
8
+ "version": 2,
8
9
  "profiles": {
9
10
  "default": {
10
11
  "openclaw": {
11
12
  "enabled": true,
12
13
  "workspacePath": "~/.openclaw/workspace",
13
14
  "syncFiles": [
14
- { "src": "MEMORY.md", "encrypt": true },
15
- { "src": "AGENTS.md", "encrypt": false },
16
- { "src": "SOUL.md", "encrypt": false },
17
- { "src": "USER.md", "encrypt": true },
18
- { "src": "TOOLS.md", "encrypt": false },
19
- { "src": "config/mcporter.json", "encrypt": true }
20
- ],
21
- "syncDirs": [
22
- { "src": "skills/", "encrypt": false }
15
+ { "src": "MEMORY.md", "encrypt": true },
16
+ { "src": "AGENTS.md", "encrypt": false },
17
+ { "src": "SOUL.md", "encrypt": false }
23
18
  ]
24
19
  },
25
20
  "claude": {
26
- "enabled": false,
27
- "workspacePath": "~/.claude",
21
+ "enabled": true,
22
+ "workspacePath": "~/.claude-internal",
28
23
  "syncFiles": [
29
- { "src": ".claude.json", "encrypt": true }
24
+ { "src": "CLAUDE.md", "encrypt": false },
25
+ { "src": "settings.json", "encrypt": true }
26
+ ],
27
+ "jsonFields": [
28
+ {
29
+ "src": ".claude.json",
30
+ "fields": ["mcpServers"],
31
+ "repoName": "mcpServers.json",
32
+ "encrypt": true
33
+ }
30
34
  ]
31
35
  },
32
36
  "gemini": {
33
- "enabled": false,
37
+ "enabled": true,
34
38
  "workspacePath": "~/.gemini",
35
- "syncFiles": [
36
- { "src": "settings.internal.json", "encrypt": true },
37
- { "src": "projects.json", "encrypt": false },
38
- { "src": "trustedFolders.json", "encrypt": false }
39
+ "syncFiles": [],
40
+ "jsonFields": [
41
+ {
42
+ "src": "settings.internal.json",
43
+ "fields": ["security", "model"],
44
+ "repoName": "settings-sync.json",
45
+ "encrypt": true
46
+ }
39
47
  ]
40
48
  }
41
49
  }
50
+ },
51
+ "shared": {
52
+ "skills": {
53
+ "sources": [
54
+ { "agent": "claude", "dir": "skills/" },
55
+ { "agent": "openclaw", "dir": "skills/" }
56
+ ]
57
+ },
58
+ "mcp": {
59
+ "sources": [
60
+ { "agent": "claude", "src": ".claude.json", "field": "mcpServers" },
61
+ { "agent": "openclaw", "src": "config/mcporter.json", "field": "mcpServers" }
62
+ ]
63
+ },
64
+ "syncFiles": [
65
+ { "src": "memory/SHARED.md", "workspacePath": "~/.openclaw/workspace", "encrypt": true }
66
+ ]
42
67
  }
43
68
  }
package/README.md CHANGED
@@ -2,77 +2,89 @@
2
2
 
3
3
  > 忘川是中国神话中冥界的遗忘之河,亡魂渡河饮水即忘前世一切记忆。
4
4
  > 而 **Wangchuan** 让你的 agent 记忆在环境切换时永不遗失。
5
+ >
6
+ > In Chinese mythology, Wangchuan (忘川) is the River of Oblivion in the underworld — souls crossing it forget all memories of past lives.
7
+ > **Wangchuan** ensures your AI agent memories are never lost across environments.
5
8
 
6
9
  AI 记忆同步系统,支持 OpenClaw / Claude / Gemini 多种智能体记忆的加密备份与跨环境迁移。
7
10
 
11
+ AI memory sync system — encrypted backup and cross-environment migration for OpenClaw / Claude / Gemini agents.
12
+
8
13
  ---
9
14
 
10
- ## 功能特性
15
+ ## 功能特性 / Features
11
16
 
12
- | 命令 | 描述 |
17
+ | 命令 / Command | 描述 / Description |
13
18
  |------|------|
14
- | `init` | 初始化系统、生成 AES-256-GCM 密钥、克隆私有仓库 |
15
- | `pull` | 从私有仓库拉取并解密配置,还原到本地工作区(支持冲突交互) |
16
- | `push` | 将本地配置加密推送到私有仓库 |
17
- | `status` | 查看仓库状态、工作区差异与文件清单 |
18
- | `diff` | 逐文件显示本地与仓库的行级差异(自动解密) |
19
- | `list` | 列出所有托管文件,显示本地/仓库存在状态 |
20
-
21
- - **AES-256-GCM** 加密:密钥本地存储,永不提交 Git
22
- - 全局 `--agent` 过滤:只操作指定智能体(`openclaw` / `claude` / `gemini`)
23
- - 推送前自动扫描明文 token/apiKey
24
- - 拉取冲突时交互式选择:覆盖 / 跳过 / 全部覆盖 / 全部跳过
25
- - 失败自动回滚,不污染仓库历史
26
- - 支持 OpenClaw Skill 封装,对话直接调用
19
+ | `init` | 初始化系统、生成 AES-256-GCM 密钥、克隆私有仓库 / Initialize system, generate AES-256-GCM key, clone private repo |
20
+ | `pull` | 从私有仓库拉取并解密配置,还原到本地工作区 / Pull and decrypt configs from repo, restore to local workspace |
21
+ | `push` | 将本地配置加密推送到私有仓库 / Encrypt and push local configs to repo |
22
+ | `status` | 查看仓库状态、工作区差异与文件清单 / Show repo status, workspace diff and file inventory |
23
+ | `diff` | 逐文件显示本地与仓库的行级差异(自动解密)/ Show line-level diff per file (auto-decrypt) |
24
+ | `list` | 列出所有托管文件,显示本地/仓库存在状态 / List all managed files with local/repo presence |
25
+ | `dump` | 生成明文快照到临时目录,方便检查同步内容 / Generate plaintext snapshot to temp dir for inspection |
26
+
27
+ - **AES-256-GCM** 加密:密钥本地存储,永不提交 Git / Encryption: keys stored locally, never committed to Git
28
+ - 全局 `--agent` 过滤:只操作指定智能体 / Global `--agent` filter: operate on a single agent only
29
+ - **细粒度同步 / Fine-grained sync**:JSON 字段级提取(如 `.claude.json` 只同步 `mcpServers`) / JSON field-level extraction (e.g. only sync `mcpServers` from `.claude.json`)
30
+ - **跨 agent 共享 / Cross-agent sharing**:Skills 和 MCP 配置自动在所有 agent 间分发 / Skills and MCP configs auto-distributed across all agents
31
+ - **删除传播 / Delete propagation**:所有 agent 都删除的 skill/MCP → 自动从 repo 清理 / Items deleted from all agents are pruned from repo
32
+ - **一键还原 / One-click restore**:新服务器 `init + pull` 即可完整恢复所有 agent 配置 / New server `init + pull` fully restores all agent configs
33
+ - 推送前自动扫描明文 token/apiKey / Auto-scan for plaintext tokens before push
34
+ - 拉取时检测本地独有文件,提示同步到云端 / Detect local-only files on pull, prompt to push
35
+ - 拉取冲突时交互式选择:覆盖 / 跳过 / 全部覆盖 / 全部跳过 / Interactive conflict resolution on pull
36
+ - 失败自动回滚,不污染仓库历史 / Auto-rollback on failure, no repo pollution
37
+ - v1→v2 自动迁移,备份 + 锁文件 + 回滚保护 / Auto v1→v2 migration with backup + lock + rollback
38
+ - 支持 OpenClaw Skill 封装,对话直接调用 / OpenClaw Skill wrapper for conversational invocation
27
39
 
28
40
  ---
29
41
 
30
- ## 安装
42
+ ## 安装 / Installation
31
43
 
32
44
  ```bash
33
45
  git clone https://github.com/SUpermin6u/wangchuan.git ~/wangchuan
34
46
  cd ~/wangchuan
35
47
  npm install
36
- npm run build # 编译 TypeScript
37
- npm link # 全局注册 wangchuan 命令(可选)
48
+ npm run build # 编译 TypeScript / Compile TypeScript
49
+ npm link # 全局注册 wangchuan 命令(可选)/ Register global command (optional)
38
50
  ```
39
51
 
40
52
  ---
41
53
 
42
- ## 快速开始
54
+ ## 快速开始 / Quick Start
43
55
 
44
- ### 1. 初始化
56
+ ### 1. 初始化 / Initialize
45
57
 
46
58
  ```bash
47
59
  wangchuan init --repo git@github.com:yourname/your-brain.git
48
60
  ```
49
61
 
50
- 执行后:
51
- - 生成 `~/.wangchuan/config.json`(系统配置)
52
- - 生成 `~/.wangchuan/master.key`(主密钥,**请妥善保管**)
53
- - 克隆仓库到 `~/.wangchuan/repo`
62
+ 执行后 / After running:
63
+ - 生成 `~/.wangchuan/config.json`(系统配置)/ Creates system config
64
+ - 生成 `~/.wangchuan/master.key`(主密钥,**请妥善保管**)/ Creates master key (**keep it safe**)
65
+ - 克隆仓库到 `~/.wangchuan/repo` / Clones repo
54
66
 
55
- ### 2. 推送本地配置
67
+ ### 2. 推送本地配置 / Push local configs
56
68
 
57
69
  ```bash
58
70
  wangchuan push --message "初始化配置"
59
71
  ```
60
72
 
61
- ### 3. 在新环境拉取记忆
73
+ ### 3. 在新环境拉取记忆 / Pull memories on a new machine
62
74
 
63
75
  ```bash
64
- # 用 --key 直接粘贴原环境的主密钥
65
- wangchuan init --repo git@github.com:yourname/your-brain.git --key <你的64位hex密钥>
76
+ # 用 --key 导入已有密钥 / Import existing key with --key
77
+ wangchuan init --repo git@github.com:yourname/your-brain.git --key /path/to/master.key
66
78
  wangchuan pull
67
79
  ```
68
80
 
69
- ### 4. 查看同步状态
81
+ ### 4. 查看同步状态 / Check sync status
70
82
 
71
83
  ```bash
72
84
  wangchuan status
73
85
  ```
74
86
 
75
- ### 5. 只操作指定智能体
87
+ ### 5. 只操作指定智能体 / Filter by agent
76
88
 
77
89
  ```bash
78
90
  wangchuan push --agent openclaw -m "更新 OpenClaw 记忆"
@@ -82,72 +94,107 @@ wangchuan diff --agent gemini
82
94
 
83
95
  ---
84
96
 
85
- ## 支持同步的配置
97
+ ## 支持同步的配置 / Sync Scope
86
98
 
87
99
  每个智能体的 `workspacePath` 均可在 `~/.wangchuan/config.json` 中自定义。
88
100
 
89
- ### OpenClaw(默认开启)
101
+ Each agent's `workspacePath` can be customized in `~/.wangchuan/config.json`.
90
102
 
91
- | 文件 | 加密 |
92
- |------|------|
93
- | `MEMORY.md` | ✔ 加密 |
94
- | `AGENTS.md` | 明文 |
95
- | `SOUL.md` | 明文 |
96
- | `USER.md` | ✔ 加密 |
97
- | `TOOLS.md` | 明文 |
98
- | `config/mcporter.json` | ✔ 加密 |
99
- | `skills/` (目录) | 明文 |
103
+ ### Repo 目录结构 / Repo Structure (v2)
100
104
 
101
- 默认路径:`~/.openclaw/workspace/`
105
+ ```
106
+ repo/
107
+ ├── shared/ 跨 agent 共享 / Cross-agent shared
108
+ │ ├── skills/ 所有 agent 的 skills 合并 / Merged skills from all agents
109
+ │ ├── mcp/ 各 agent 的 MCP 配置提取 / Extracted MCP configs
110
+ │ └── memory/SHARED.md.enc 跨 agent 共享记忆 / Shared memory
111
+ ├── agents/
112
+ │ ├── openclaw/
113
+ │ │ ├── MEMORY.md.enc 永久记忆(加密)/ Long-term memory (encrypted)
114
+ │ │ ├── AGENTS.md Agent 行为准则 / Agent behavior rules
115
+ │ │ └── SOUL.md Agent 人格设定 / Agent persona
116
+ │ ├── claude/
117
+ │ │ ├── CLAUDE.md 全局指令 / Global instructions
118
+ │ │ ├── settings.json.enc 权限/插件/模型(加密)/ Permissions/plugins/model (encrypted)
119
+ │ │ └── mcpServers.json.enc 从 .claude.json 提取的 mcpServers(加密)/ Extracted from .claude.json (encrypted)
120
+ │ └── gemini/
121
+ │ └── settings-sync.json 从 settings.internal.json 提取的 security+model / Extracted fields
122
+ ```
102
123
 
103
- ### Claude(可选,在配置中开启)
124
+ ### OpenClaw(默认开启 / enabled by default)
104
125
 
105
- | 文件 | 加密 |
106
- |------|------|
107
- | `.claude.json` | ✔ 加密 |
126
+ | 文件 / File | 加密 / Enc | 说明 / Description |
127
+ |------|------|------|
128
+ | `MEMORY.md` | ✔ | 永久记忆 / Long-term memory |
129
+ | `AGENTS.md` | ✗ | 行为准则 / Behavior rules |
130
+ | `SOUL.md` | ✗ | 人格设定 / Persona |
108
131
 
109
- 默认路径:`~/.claude/`
132
+ 默认路径 / Default path:`~/.openclaw/workspace/`
110
133
 
111
- ### Gemini(可选,在配置中开启)
134
+ ### Claude(默认开启 / enabled by default)
112
135
 
113
- | 文件 | 加密 |
114
- |------|------|
115
- | `settings.internal.json` | 加密 |
116
- | `projects.json` | 明文 |
117
- | `trustedFolders.json` | 明文 |
136
+ | 文件 / File | 加密 / Enc | 说明 / Description |
137
+ |------|------|------|
138
+ | `CLAUDE.md` | | 全局指令 / Global instructions |
139
+ | `settings.json` | | 权限、插件、模型配置 / Permissions, plugins, model |
140
+ | `.claude.json` → `mcpServers` | | JSON 字段级提取,仅同步 MCP 配置 / Field-level extraction, MCP config only |
141
+
142
+ 默认路径 / Default path:`~/.claude-internal/`
118
143
 
119
- 默认路径:`~/.gemini/`
144
+ ### Gemini(默认开启 / enabled by default)
145
+
146
+ | 文件 / File | 加密 / Enc | 说明 / Description |
147
+ |------|------|------|
148
+ | `settings.internal.json` → `security`, `model` | ✔ | JSON 字段级提取 / Field-level extraction |
149
+
150
+ 默认路径 / Default path:`~/.gemini/`
151
+
152
+ ### Shared 共享层 / Shared Tier
153
+
154
+ | 内容 / Content | 说明 / Description |
155
+ |------|------|
156
+ | `shared/skills/` | 从 Claude 和 OpenClaw 的 skills 目录汇聚,自动分发 / Merged from all agents, auto-distributed |
157
+ | `shared/mcp/` | 从各 agent 提取 MCP 配置,跨 agent 共享 / Extracted MCP configs, shared across agents |
158
+ | `shared/memory/SHARED.md` | 跨 agent 共享记忆(加密)/ Cross-agent shared memory (encrypted) |
120
159
 
121
160
  ---
122
161
 
123
- ## 配置文件
162
+ ## 配置文件 / Configuration
124
163
 
125
164
  配置位于 `~/.wangchuan/config.json`,示例见 [.wangchuan/config.example.json](.wangchuan/config.example.json)。
126
165
 
166
+ Config at `~/.wangchuan/config.json`, see [.wangchuan/config.example.json](.wangchuan/config.example.json) for example.
167
+
127
168
  ```jsonc
128
169
  {
129
170
  "repo": "git@github.com:yourname/your-brain.git",
130
171
  "branch": "main",
131
172
  "localRepoPath": "~/.wangchuan/repo",
132
173
  "keyPath": "~/.wangchuan/master.key",
174
+ "version": 2,
133
175
  "profiles": {
134
176
  "default": {
135
177
  "openclaw": { "enabled": true, "workspacePath": "~/.openclaw/workspace", ... },
136
- "claude": { "enabled": false, "workspacePath": "~/.claude", ... },
137
- "gemini": { "enabled": false, "workspacePath": "~/.gemini", ... }
178
+ "claude": { "enabled": true, "workspacePath": "~/.claude-internal", ... },
179
+ "gemini": { "enabled": true, "workspacePath": "~/.gemini", ... }
138
180
  }
181
+ },
182
+ "shared": {
183
+ "skills": { "sources": [{ "agent": "claude", "dir": "skills/" }, ...] },
184
+ "mcp": { "sources": [{ "agent": "claude", "src": ".claude.json", "field": "mcpServers" }, ...] },
185
+ "syncFiles": [...]
139
186
  }
140
187
  }
141
188
  ```
142
189
 
143
190
  ---
144
191
 
145
- ## 加密说明
192
+ ## 加密说明 / Encryption
146
193
 
147
- - 算法:**AES-256-GCM**(认证加密,防篡改)
148
- - 密钥:`~/.wangchuan/master.key`(32 字节,十六进制存储)
149
- - 密文格式:`IV(12B) + AuthTag(16B) + CipherText`,Base64 编码后存储为 `.enc` 文件
150
- - **⚠️ master.key 丢失将无法解密历史配置,请做好备份**
194
+ - 算法 / Algorithm:**AES-256-GCM**(认证加密,防篡改 / Authenticated encryption, tamper-proof)
195
+ - 密钥 / Key:`~/.wangchuan/master.key`(32 字节,十六进制存储 / 32 bytes, hex-encoded)
196
+ - 密文格式 / Ciphertext format:`IV(12B) + AuthTag(16B) + CipherText`,Base64 编码后存储为 `.enc` 文件 / Base64-encoded `.enc` files
197
+ - **⚠️ master.key 丢失将无法解密历史配置,请做好备份 / Losing master.key means losing access to all encrypted history — back it up!**
151
198
 
152
199
  ---
153
200
 
@@ -155,52 +202,59 @@ wangchuan diff --agent gemini
155
202
 
156
203
  将 `skill/` 目录注册为 OpenClaw Skill 后,即可在对话中直接说:
157
204
 
158
- > "帮我拉取最新的 AI 配置"
159
- > "把修改推送一下,备注:更新项目记忆"
160
- > "查看忘川状态"
161
- > "列出所有托管文件"
205
+ Register the `skill/` directory as an OpenClaw Skill, then invoke via conversation:
206
+
207
+ > "帮我拉取最新的 AI 配置" / "Pull the latest AI configs"
208
+ > "把修改推送一下,备注:更新项目记忆" / "Push changes with note: update project memory"
209
+ > "查看忘川状态" / "Check Wangchuan status"
210
+ > "列出所有托管文件" / "List all managed files"
162
211
 
163
212
  ---
164
213
 
165
- ## 安全规范
214
+ ## 安全规范 / Security
166
215
 
167
- 1. `master.key` 已加入 `.gitignore`,不会意外提交
168
- 2. 推送前自动扫描明文 token(`api_key`, `sk-xxx`, `password` 等)
169
- 3. 若需迁移密钥,用加密方式传输(不要通过明文邮件/IM
216
+ 1. `master.key` 已加入 `.gitignore`,不会意外提交 / Added to `.gitignore`, never accidentally committed
217
+ 2. 推送前自动扫描明文 token(`api_key`, `sk-xxx`, `password` 等)/ Auto-scan for plaintext tokens before push
218
+ 3. 若需迁移密钥,用加密方式传输(不要通过明文邮件/IM)/ Transfer keys via encrypted channels only (never plaintext email/IM)
170
219
 
171
220
  ---
172
221
 
173
- ## 目录结构
222
+ ## 目录结构 / Project Structure
174
223
 
175
224
  ```
176
225
  wangchuan/
177
- ├── bin/wangchuan.ts CLI 入口
226
+ ├── bin/wangchuan.ts CLI 入口 / CLI entry
178
227
  ├── src/
179
228
  │ ├── core/
180
- │ │ ├── sync.ts 同步引擎
181
- │ │ ├── crypto.ts AES-256-GCM 加解密
182
- │ │ ├── git.ts simple-git 封装
183
- │ │ └── config.ts 配置管理
229
+ │ │ ├── sync.ts 同步引擎 / Sync engine (distribute, prune, 3-way ops)
230
+ │ │ ├── json-field.ts JSON 字段级提取与合并 / JSON field extraction & merge
231
+ │ │ ├── crypto.ts AES-256-GCM 加解密 / AES-256-GCM encrypt/decrypt
232
+ │ │ ├── git.ts simple-git 封装 / simple-git wrapper
233
+ │ │ ├── config.ts 配置管理 / Config management (v2 profiles + shared)
234
+ │ │ └── migrate.ts v1→v2 迁移 / v1→v2 migration (backup + lock + rollback)
184
235
  │ ├── commands/
185
- │ │ ├── init.ts init 命令
186
- │ │ ├── pull.ts pull 命令
187
- │ │ ├── push.ts push 命令
188
- │ │ ├── status.ts status 命令
189
- │ │ ├── diff.ts diff 命令
190
- │ │ └── list.ts list 命令
236
+ │ │ ├── init.ts 初始化命令 / init command
237
+ │ │ ├── pull.ts 拉取命令 / pull command (with localOnly detection)
238
+ │ │ ├── push.ts 推送命令 / push command (with stale file cleanup)
239
+ │ │ ├── status.ts 状态命令 / status command
240
+ │ │ ├── diff.ts 差异命令 / diff command
241
+ │ │ ├── list.ts 清单命令 / list command (shared/agents grouping)
242
+ │ │ └── dump.ts 明文快照 / dump command (plaintext snapshot)
191
243
  │ ├── utils/
192
- │ │ ├── logger.ts 日志工具
193
- │ │ ├── validator.ts 参数校验
194
- │ │ ├── linediff.ts LCS 行级差异算法
195
- │ │ └── prompt.ts 交互式冲突提示
196
- │ └── types.ts 全局类型定义
244
+ │ │ ├── logger.ts 日志工具 / Logger
245
+ │ │ ├── validator.ts 参数校验 / Validator
246
+ │ │ ├── linediff.ts LCS 行级差异算法 / LCS line diff
247
+ │ │ └── prompt.ts 交互式冲突提示 / Interactive conflict prompt
248
+ │ └── types.ts 全局类型定义 / Global type definitions
197
249
  ├── skill/
198
- │ ├── SKILL.md OpenClaw Skill 说明
199
- │ └── wangchuan-skill.sh Skill 脚本
250
+ │ ├── SKILL.md OpenClaw Skill 说明 / OpenClaw Skill doc
251
+ │ └── wangchuan-skill.sh Skill 脚本 / Skill script
200
252
  ├── test/
201
- └── crypto.test.ts 加密模块测试
253
+ ├── crypto.test.ts 加密模块测试 / Crypto tests
254
+ │ ├── json-field.test.ts JSON 字段提取测试 / JSON field tests
255
+ │ └── sync.test.ts 同步引擎测试(42 用例)/ Sync engine tests (42 cases)
202
256
  └── .wangchuan/
203
- └── config.example.json 配置示例
257
+ └── config.example.json 配置示例(v2)/ Config example (v2)
204
258
  ```
205
259
 
206
260
  ---
@@ -12,6 +12,7 @@ import { cmdPush } from '../src/commands/push.js';
12
12
  import { cmdStatus } from '../src/commands/status.js';
13
13
  import { cmdDiff } from '../src/commands/diff.js';
14
14
  import { cmdList } from '../src/commands/list.js';
15
+ import { cmdDump } from '../src/commands/dump.js';
15
16
  import { logger } from '../src/utils/logger.js';
16
17
  const AGENT_CHOICES = ['openclaw', 'claude', 'gemini'];
17
18
  /** 校验 --agent 值合法性 */
@@ -77,6 +78,14 @@ program
77
78
  .action(async (opts) => {
78
79
  await run(() => cmdList(opts));
79
80
  });
81
+ // ── dump ────────────────────────────────────────────────────────
82
+ program
83
+ .command('dump')
84
+ .description('生成明文快照到临时目录,方便检查同步内容')
85
+ .option('-a, --agent <name>', '只导出指定智能体 (openclaw|claude|gemini)', parseAgent)
86
+ .action(async (opts) => {
87
+ await run(() => cmdDump(opts));
88
+ });
80
89
  // ── 错误兜底 ────────────────────────────────────────────────────
81
90
  async function run(fn) {
82
91
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"wangchuan.js","sourceRoot":"","sources":["../../bin/wangchuan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wangchuan.js","sourceRoot":"","sources":["../../bin/wangchuan.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/commands/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF/E"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/commands/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsF/E"}
@@ -7,6 +7,7 @@
7
7
  import fs from 'fs';
8
8
  import path from 'path';
9
9
  import { config } from '../core/config.js';
10
+ import { ensureMigrated } from '../core/migrate.js';
10
11
  import { syncEngine } from '../core/sync.js';
11
12
  import { cryptoEngine } from '../core/crypto.js';
12
13
  import { validator } from '../utils/validator.js';
@@ -15,8 +16,9 @@ import { diffText } from '../utils/linediff.js';
15
16
  import chalk from 'chalk';
16
17
  export async function cmdDiff({ agent } = {}) {
17
18
  logger.banner('忘川 · 文件差异');
18
- const cfg = config.load();
19
+ let cfg = config.load();
19
20
  validator.requireInit(cfg);
21
+ cfg = ensureMigrated(cfg);
20
22
  const repoPath = syncEngine.expandHome(cfg.localRepoPath);
21
23
  const keyPath = syncEngine.expandHome(cfg.keyPath);
22
24
  const entries = syncEngine.buildFileEntries(cfg, undefined, agent);
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/commands/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/commands/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * dump.ts — wangchuan dump 命令
3
+ *
4
+ * 在临时目录生成与 repo 完全同构的明文快照,
5
+ * 所有 .enc 加密文件自动解密,方便人工检查同步内容。
6
+ */
7
+ import type { AgentOptions } from '../types.js';
8
+ export declare function cmdDump({ agent }?: AgentOptions): Promise<void>;
9
+ //# sourceMappingURL=dump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../../src/commands/dump.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AAE3D,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDzE"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * dump.ts — wangchuan dump 命令
3
+ *
4
+ * 在临时目录生成与 repo 完全同构的明文快照,
5
+ * 所有 .enc 加密文件自动解密,方便人工检查同步内容。
6
+ */
7
+ import fs from 'fs';
8
+ import os from 'os';
9
+ import path from 'path';
10
+ import { config } from '../core/config.js';
11
+ import { ensureMigrated } from '../core/migrate.js';
12
+ import { expandHome, buildFileEntries } from '../core/sync.js';
13
+ import { jsonField } from '../core/json-field.js';
14
+ import { validator } from '../utils/validator.js';
15
+ import { logger } from '../utils/logger.js';
16
+ import chalk from 'chalk';
17
+ export async function cmdDump({ agent } = {}) {
18
+ logger.banner('忘川 · 明文快照');
19
+ let cfg = config.load();
20
+ validator.requireInit(cfg);
21
+ cfg = ensureMigrated(cfg);
22
+ const keyPath = expandHome(cfg.keyPath);
23
+ const entries = buildFileEntries(cfg, undefined, agent);
24
+ // 创建临时目录
25
+ const dumpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'wangchuan-dump-'));
26
+ let count = 0;
27
+ let skipped = 0;
28
+ for (const entry of entries) {
29
+ if (!fs.existsSync(entry.srcAbs)) {
30
+ skipped++;
31
+ continue;
32
+ }
33
+ // 输出路径:用 plainRel(不带 .enc 后缀)
34
+ const destPath = path.join(dumpDir, entry.plainRel);
35
+ fs.mkdirSync(path.dirname(destPath), { recursive: true });
36
+ if (entry.jsonExtract) {
37
+ // JSON 字段提取 → 写入提取后的 JSON
38
+ try {
39
+ const fullJson = JSON.parse(fs.readFileSync(entry.srcAbs, 'utf-8'));
40
+ const partial = jsonField.extractFields(fullJson, entry.jsonExtract.fields);
41
+ fs.writeFileSync(destPath, JSON.stringify(partial, null, 2), 'utf-8');
42
+ }
43
+ catch (err) {
44
+ logger.warn(`跳过 JSON 字段提取(解析失败): ${entry.srcAbs}`);
45
+ skipped++;
46
+ continue;
47
+ }
48
+ }
49
+ else {
50
+ // 整文件 → 直接复制明文
51
+ fs.copyFileSync(entry.srcAbs, destPath);
52
+ }
53
+ const labels = [];
54
+ if (entry.encrypt)
55
+ labels.push(chalk.gray('[原文件加密]'));
56
+ if (entry.jsonExtract)
57
+ labels.push(chalk.blue('[字段提取]'));
58
+ console.log(` ${chalk.green('✔')} ${entry.plainRel} ${labels.join('')}`);
59
+ count++;
60
+ }
61
+ console.log();
62
+ console.log(chalk.bold(` 输出目录:`) + chalk.cyan(dumpDir));
63
+ console.log(chalk.bold(` 文件数量:`) + `${count} 个文件` + (skipped > 0 ? chalk.gray(` (${skipped} 个跳过)`) : ''));
64
+ console.log();
65
+ console.log(chalk.gray(` 提示:该目录包含明文敏感信息,查看后请及时删除`));
66
+ console.log(chalk.gray(` rm -rf ${dumpDir}`));
67
+ }
68
+ //# sourceMappingURL=dump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../../src/commands/dump.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * list.ts — wangchuan list 命令
3
3
  *
4
4
  * 瞬间列出所有受管配置文件,不做任何 git/IO 操作。
5
- * 支持 --agent 过滤,按智能体分组展示。
5
+ * 支持 --agent 过滤,按智能体和共享层分组展示。
6
6
  */
7
7
  import type { ListOptions } from '../types.js';
8
8
  export declare function cmdList({ agent }?: ListOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAS1D,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCxE"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAUpE,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDxE"}