@mison/wecom-cleaner 1.3.0 → 1.3.3

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 (32) hide show
  1. package/README.md +45 -7
  2. package/docs/IMPLEMENTATION_PLAN.md +6 -6
  3. package/docs/NON_INTERACTIVE_SPEC.md +59 -0
  4. package/docs/TEST_MATRIX.md +17 -10
  5. package/docs/releases/v1.3.1.md +31 -0
  6. package/docs/releases/v1.3.2.md +38 -0
  7. package/docs/releases/v1.3.3.md +32 -0
  8. package/native/bin/darwin-arm64/wecom-cleaner-core +0 -0
  9. package/native/bin/darwin-x64/wecom-cleaner-core +0 -0
  10. package/native/manifest.json +5 -5
  11. package/native/zig/build.sh +3 -0
  12. package/native/zig/src/main.zig +2 -1
  13. package/native/zig/src/version.zig +1 -0
  14. package/package.json +2 -1
  15. package/skills/wecom-cleaner-agent/SKILL.md +10 -4
  16. package/skills/wecom-cleaner-agent/agents/openai.yaml +1 -1
  17. package/skills/wecom-cleaner-agent/references/commands.md +47 -11
  18. package/skills/wecom-cleaner-agent/scripts/check_update_report.sh +15 -0
  19. package/skills/wecom-cleaner-agent/scripts/cleanup_monthly_report.sh +37 -53
  20. package/skills/wecom-cleaner-agent/scripts/doctor_report.sh +3 -0
  21. package/skills/wecom-cleaner-agent/scripts/recycle_maintain_report.sh +39 -53
  22. package/skills/wecom-cleaner-agent/scripts/restore_batch_report.sh +34 -39
  23. package/skills/wecom-cleaner-agent/scripts/space_governance_report.sh +34 -49
  24. package/skills/wecom-cleaner-agent/scripts/upgrade_report.sh +15 -0
  25. package/skills/wecom-cleaner-agent/version.json +6 -0
  26. package/src/cli.js +1395 -28
  27. package/src/config.js +35 -0
  28. package/src/constants.js +1 -0
  29. package/src/doctor.js +41 -0
  30. package/src/skill-cli.js +111 -4
  31. package/src/skill-installer.js +204 -1
  32. package/src/updater.js +106 -3
package/README.md CHANGED
@@ -96,10 +96,12 @@
96
96
 
97
97
  - 启动后按“早/午/晚”三时段检查更新(默认开启)。
98
98
  - 版本源优先 npmjs,失败自动回退 GitHub Release。
99
+ - 检查更新会同时校验 Agent skills 是否与主程序版本匹配。
99
100
  - 交互模式发现新版本时可直接选择升级方式:
100
101
  - npm 升级(默认)
101
102
  - GitHub 脚本升级
102
- - 无交互模式仅提示不阻断任务执行。
103
+ - 程序升级完成后默认联动同步 skills,避免“程序已升级但 skills 仍旧版”。
104
+ - 无交互模式可用 `--sync-skills` 单独修复 skills 版本绑定。
103
105
 
104
106
  ## 能力边界
105
107
 
@@ -154,12 +156,16 @@ npx --yes --package=@mison/wecom-cleaner wecom-cleaner-skill install
154
156
  - `--target <dir>`:自定义安装目录(默认 `$CODEX_HOME/skills` 或 `~/.codex/skills`)
155
157
  - `--force`:覆盖已存在技能目录
156
158
  - `--dry-run`:仅预演,不落盘
159
+ - `status` 子命令:检查 skills 与主程序版本是否匹配
160
+ - `sync` 子命令:等价 `install --force`,用于升级 skills
157
161
 
158
162
  示例:
159
163
 
160
164
  ```bash
161
165
  npx --yes --package=@mison/wecom-cleaner wecom-cleaner-skill install --force
162
166
  npx --yes --package=@mison/wecom-cleaner wecom-cleaner-skill install --target ~/.codex/skills
167
+ npx --yes --package=@mison/wecom-cleaner wecom-cleaner-skill status --json
168
+ npx --yes --package=@mison/wecom-cleaner wecom-cleaner-skill sync
163
169
  ```
164
170
 
165
171
  GitHub 备选方式(无 npm 包依赖):
@@ -168,10 +174,10 @@ GitHub 备选方式(无 npm 包依赖):
168
174
  curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash
169
175
  ```
170
176
 
171
- 若需安装指定版本标签(例如 `v1.3.0`):
177
+ 若需安装指定版本标签(例如 `v1.3.3`):
172
178
 
173
179
  ```bash
174
- curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash -s -- --ref v1.3.0
180
+ curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash -s -- --ref v1.3.3
175
181
  ```
176
182
 
177
183
  Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`):
@@ -204,6 +210,7 @@ Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`
204
210
  - `--doctor`
205
211
  - `--check-update`
206
212
  - `--upgrade <npm|github-script>`
213
+ - `--sync-skills`
207
214
 
208
215
  ### 无交互安全规则
209
216
 
@@ -238,6 +245,9 @@ wecom-cleaner --space-governance \
238
245
  # 回收区治理(按策略执行)
239
246
  wecom-cleaner --recycle-maintain --dry-run false --yes
240
247
 
248
+ # 年月清理(三阶段协议:预演 -> 执行 -> 复核)
249
+ wecom-cleaner --cleanup-monthly --accounts all --cutoff-month 2024-04 --run-task preview-execute-verify --yes
250
+
241
251
  # 批次恢复(冲突策略:重命名)
242
252
  wecom-cleaner --restore-batch 20260226-105009-ffa098 --conflict rename
243
253
 
@@ -251,13 +261,18 @@ wecom-cleaner --check-update --output text
251
261
  wecom-cleaner --upgrade npm --upgrade-yes
252
262
 
253
263
  # 执行升级(GitHub 托管脚本方式)
254
- wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
264
+ wecom-cleaner --upgrade github-script --upgrade-version 1.3.3 --upgrade-yes
265
+
266
+ # 单独同步 skills(修复版本不匹配)
267
+ wecom-cleaner --sync-skills --skill-sync-method npm --dry-run false
255
268
  ```
256
269
 
257
270
  ### 输出与兼容参数
258
271
 
259
272
  - `--output json|text`:无交互输出格式,默认 `json`。
260
273
  - `--json`:兼容别名,等价于 `--output json`。
274
+ - `--run-task preview|execute|preview-execute-verify`:阶段任务协议(推荐给 Agent)。
275
+ - `--scan-debug off|summary|full`:扫描诊断信息输出等级。
261
276
  - `--mode`:兼容参数,建议迁移到动作参数(如 `--cleanup-monthly`)。
262
277
  - `--save-config`:将本次全局配置参数写回 `config.json`。
263
278
  - `--help` / `-h`:输出命令帮助并退出。
@@ -265,6 +280,9 @@ wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
265
280
  - `--upgrade-channel stable|pre`:升级检查通道(稳定版/预发布)。
266
281
  - `--upgrade-version <x.y.z>`:指定升级目标版本。
267
282
  - `--upgrade-yes`:确认执行升级动作(无此参数将拒绝执行升级)。
283
+ - `--upgrade-sync-skills true|false`:升级后是否联动同步 skills(默认 `true`)。
284
+ - `--skill-sync-method npm|github-script`:skills 同步方式(默认 `npm`)。
285
+ - `--skill-sync-ref <x.y.z>`:skills 同步版本标签(通常与程序版本一致)。
268
286
 
269
287
  ### 各动作关键统计字段(JSON)
270
288
 
@@ -280,6 +298,7 @@ wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
280
298
  - `summary.rootPathCount`:涉及的清理根目录数量
281
299
  - `summary.accountCount` / `monthCount` / `categoryCount` / `externalRootCount`
282
300
  - `summary.cutoffMonth`:截止月份(当使用 `--cutoff-month` 时)
301
+ - `summary.runTaskMode` / `summary.taskDecision`:阶段协议模式与决策(仅 `--run-task`)
283
302
 
284
303
  `cleanup-monthly` 还会在 `data.report` 中返回可展示明细:
285
304
 
@@ -288,6 +307,9 @@ wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
288
307
  - `data.report.matched.rootStats`:按根目录统计(条目数、体积)
289
308
  - `data.report.matched.topPaths`:按体积 Top 路径样例
290
309
  - `data.report.executed.byCategory/byMonth/byRoot`:真实执行落地统计(成功/跳过/失败 + 体积)
310
+ - `data.taskPhases`:阶段执行明细(预演/执行/复核)
311
+ - `data.taskCard`:面向用户的任务卡片聚合结果
312
+ - `data.scanDebug`:扫描诊断(当 `--scan-debug summary|full`)
291
313
 
292
314
  #### `analysis-only`
293
315
 
@@ -334,7 +356,10 @@ wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
334
356
  - `summary.currentVersion` / `latestVersion`
335
357
  - `summary.source`:`npm` 或 `github`
336
358
  - `summary.channel`:`stable` 或 `pre`
359
+ - `summary.skillsStatus` / `summary.skillsMatched`
360
+ - `summary.skillsInstalledVersion` / `summary.skillsBoundAppVersion`
337
361
  - `data.update`:检查详情(含 `errors`、`checkReason`、`checkedAt`)
362
+ - `data.skills`:skills 绑定详情(状态、目录、建议)
338
363
 
339
364
  #### `upgrade`
340
365
 
@@ -343,6 +368,17 @@ wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
343
368
  - `summary.targetVersion`:目标版本
344
369
  - `summary.status`:升级命令退出码
345
370
  - `data.upgrade.command`:实际执行命令
371
+ - `summary.skillSyncStatus` / `summary.skillSyncMethod` / `summary.skillSyncTargetVersion`
372
+ - `summary.skillsStatusBefore` / `summary.skillsStatusAfter`
373
+ - `data.skillSync`:skills 同步命令结果
374
+
375
+ #### `sync-skills`
376
+
377
+ - `summary.method`:skills 同步方式(`npm` / `github-script`)
378
+ - `summary.status`:`dry_run` / `synced` / `failed` / `mismatch_after_sync`
379
+ - `summary.skillsStatusBefore` / `summary.skillsStatusAfter`
380
+ - `data.before` / `data.after`:同步前后 skills 绑定详情
381
+ - `data.skillSync`:执行命令与退出码
346
382
 
347
383
  ### 全局参数
348
384
 
@@ -355,6 +391,8 @@ wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
355
391
  - `--theme <auto|light|dark>`:Logo 主题
356
392
  - `--interactive`:即使携带参数也进入交互流程(可配合 `--mode`)
357
393
  - `--force`:锁异常场景下强制清理并继续(兜底参数,通常无需)
394
+ - `--run-task preview|execute|preview-execute-verify`:阶段任务协议(推荐无交互自动化调用)
395
+ - `--scan-debug off|summary|full`:附加扫描诊断信息
358
396
 
359
397
  ### `--theme` 可选值
360
398
 
@@ -438,8 +476,8 @@ npm run pack:tgz:dry-run
438
476
 
439
477
  当前基线(主分支):
440
478
 
441
- - 单元测试:`100/100` 通过。
442
- - 覆盖率:`statements 87.63%`,`branches 74.03%`,`functions 92.47%`,`lines 87.63%`。
479
+ - 单元测试:`107/107` 通过。
480
+ - 覆盖率:`statements 87.66%`,`branches 74.38%`,`functions 92.47%`,`lines 87.66%`。
443
481
  - 全菜单 smoke:通过(含恢复冲突分支与 doctor JSON 分支)。
444
482
 
445
483
  ## 测试矩阵
@@ -482,7 +520,7 @@ npm run pack:tgz
482
520
  npm run pack:release-assets
483
521
 
484
522
  # 2) 推送主分支与标签
485
- VERSION="1.3.0"
523
+ VERSION="1.3.3"
486
524
  git push origin main
487
525
  git tag "v${VERSION}"
488
526
  git push origin "v${VERSION}"
@@ -122,7 +122,7 @@
122
122
  - 使用 `c8` 输出覆盖率报告。
123
123
  - 门禁阈值:`lines/statements >= 75%`,`functions >= 80%`,`branches >= 60%`。
124
124
  - 命令:`npm run test:coverage` / `npm run test:coverage:check`。
125
- - `v1.1.0` 基线:`statements 86.57%`,`branches 73.96%`,`functions 93.25%`,`lines 86.57%`。
125
+ - `v1.3.2` 基线:`statements 87.66%`,`branches 74.38%`,`functions 92.47%`,`lines 87.66%`。
126
126
 
127
127
  4. 端到端回归
128
128
 
@@ -142,17 +142,17 @@ npm run pack:tgz:dry-run
142
142
 
143
143
  1. 版本与产物
144
144
 
145
- - `package.json` / `package-lock.json`:`1.1.0`
146
- - `native/manifest.json`:版本与 `baseUrl` 对齐 `v1.1.0`
145
+ - `package.json` / `package-lock.json`:`1.3.2`
146
+ - `native/manifest.json`:版本与 `baseUrl` 对齐当前发布标签
147
147
  - 默认打包双架构核心:`darwin-x64` + `darwin-arm64`
148
148
 
149
149
  2. GitHub Release
150
150
 
151
151
  ```bash
152
152
  git push origin main
153
- git tag v1.1.0
154
- git push origin v1.1.0
155
- gh release create v1.1.0 --title "v1.1.0" --notes-file docs/releases/v1.1.0.md wecom-cleaner-1.1.0.tgz
153
+ git tag v1.3.2
154
+ git push origin v1.3.2
155
+ gh release create v1.3.2 --title "v1.3.2" --notes-file docs/releases/v1.3.2.md wecom-cleaner-1.3.2.tgz
156
156
  ```
157
157
 
158
158
  3. npm 发布
@@ -22,6 +22,7 @@
22
22
  - `--doctor`
23
23
  - `--check-update`
24
24
  - `--upgrade <npm|github-script>`
25
+ - `--sync-skills`
25
26
 
26
27
  若缺少动作或动作冲突,退出码为 `2`。
27
28
 
@@ -34,6 +35,10 @@
34
35
  - 默认 `dry-run`(不执行真实删除/恢复)。
35
36
  - 真实执行需显式传 `--yes`。
36
37
  - 若传 `--dry-run false` 且未传 `--yes`,退出码为 `3`。
38
+ - 可通过 `--run-task` 启用阶段协议:
39
+ - `preview`:仅预演阶段。
40
+ - `execute`:仅真实执行阶段(破坏性动作需 `--yes`)。
41
+ - `preview-execute-verify`:预演 -> 真实执行 -> 同条件复核(预演命中 `0` 时自动跳过执行与复核)。
37
42
 
38
43
  ## 4. 输出协议
39
44
 
@@ -41,6 +46,8 @@
41
46
 
42
47
  - `--output json|text`(默认 `json`)
43
48
  - `--json` 为兼容别名(等价 `--output json`)
49
+ - `--run-task preview|execute|preview-execute-verify`(推荐破坏性动作使用)
50
+ - `--scan-debug off|summary|full`(默认 `off`)
44
51
 
45
52
  JSON 顶层字段:
46
53
 
@@ -53,6 +60,10 @@ JSON 顶层字段:
53
60
  - `data`:动作明细数据
54
61
  - `meta`:元信息(版本、耗时、引擎、时间戳等)
55
62
  - `data.userFacingSummary`:统一的用户侧结果摘要(范围 + 结果 + 关键分布)
63
+ - `scopeNotes`:扫描边界说明(例如是否纳入“文件存储位置”目录、是否因命中为 0 跳过执行)
64
+ - `data.taskPhases`:阶段协议明细(仅在 `--run-task` 时返回)
65
+ - `data.taskCard`:阶段任务卡片(仅在 `--run-task` 时返回)
66
+ - `data.scanDebug`:扫描诊断信息(仅在 `--scan-debug summary|full` 时返回)
56
67
 
57
68
  `cleanup_monthly` 常见 `summary` 字段:
58
69
 
@@ -173,12 +184,23 @@ JSON 顶层字段:
173
184
  - `hasUpdate`
174
185
  - `currentVersion` / `latestVersion`
175
186
  - `source`
187
+ - `sourceChain`(来源链路说明:先 npm,必要时自动回退 GitHub)
176
188
  - `channel`
177
189
  - `skippedByUser`
190
+ - `skillsStatus` / `skillsMatched`
191
+ - `skillsInstalledVersion` / `skillsBoundAppVersion`
178
192
 
179
193
  `check_update` 的 `data`:
180
194
 
181
195
  - `update`:更新检查详情(`checkedAt`、`checkReason`、`errors`、`upgradeMethods`)
196
+ - `skills`:skills 版本绑定详情(状态、目录、建议)
197
+
198
+ 说明:
199
+
200
+ - 当 npm 失败但 GitHub 回退成功时,动作整体仍为成功:
201
+ - `summary.source=github`
202
+ - `summary.sourceChain` 会说明“npm 失败后回退”
203
+ - 失败细节进入 `warnings`,不计入 `errors`
182
204
 
183
205
  `upgrade` 常见 `summary` 字段:
184
206
 
@@ -187,11 +209,31 @@ JSON 顶层字段:
187
209
  - `targetVersion`
188
210
  - `status`
189
211
  - `command`
212
+ - `skillSyncEnabled`
213
+ - `skillSyncMethod`
214
+ - `skillSyncStatus`
215
+ - `skillSyncTargetVersion`
216
+ - `skillsStatusBefore` / `skillsStatusAfter`
190
217
 
191
218
  `upgrade` 的 `data`:
192
219
 
193
220
  - `upgrade`:升级执行结果(stdout/stderr/exit status)
194
221
  - `update`:升级前检查结果(若有)
222
+ - `skills`:升级前后 skills 绑定状态
223
+ - `skillSync`:skills 同步执行结果
224
+
225
+ `sync_skills` 常见 `summary` 字段:
226
+
227
+ - `method`:同步方式(`npm` / `github-script`)
228
+ - `dryRun`:是否预演
229
+ - `status`:`dry_run` / `synced` / `failed` / `mismatch_after_sync`
230
+ - `skillsStatusBefore` / `skillsStatusAfter`
231
+ - `skillsMatchedAfter`
232
+
233
+ `sync_skills` 的 `data`:
234
+
235
+ - `before` / `after`:同步前后 skills 绑定详情
236
+ - `skillSync`:执行命令与退出码
195
237
 
196
238
  ## 5. 退出码
197
239
 
@@ -215,6 +257,11 @@ JSON 顶层字段:
215
257
  - `--upgrade-channel <stable|pre>`:更新通道(稳定版/预发布)
216
258
  - `--upgrade-version <x.y.z>`:升级到指定版本
217
259
  - `--upgrade-yes`:确认执行升级(无此参数将拒绝执行升级)
260
+ - `--upgrade-sync-skills <true|false>`:升级后是否联动同步 skills(默认 `true`)
261
+ - `--skill-sync-method <npm|github-script>`:skills 同步方式
262
+ - `--skill-sync-ref <x.y.z>`:skills 同步版本标签
263
+ - `--run-task preview|execute|preview-execute-verify`:无交互阶段协议
264
+ - `--scan-debug off|summary|full`:扫描诊断输出等级
218
265
 
219
266
  ## 7. 动作参数
220
267
 
@@ -285,6 +332,18 @@ JSON 顶层字段:
285
332
 
286
333
  - `npm`:执行 `npm i -g @mison/wecom-cleaner@<version>`
287
334
  - `github-script`:执行 GitHub 托管脚本 `scripts/upgrade.sh`
335
+ - 默认会联动同步 skills,可通过 `--upgrade-sync-skills false` 关闭。
336
+
337
+ ### 7.9 `--sync-skills`
338
+
339
+ - `--skill-sync-method <npm|github-script>`(可选,默认 `npm`)
340
+ - `--skill-sync-ref <x.y.z>`(可选)
341
+ - `--dry-run <true|false>`(可选,默认 `false`)
342
+
343
+ 说明:
344
+
345
+ - 用于单独修复/升级 Agent skills 版本绑定。
346
+ - `npm` 方式优先使用本地随包 skills;`github-script` 方式按指定版本标签下载。
288
347
 
289
348
  ## 8. 兼容参数
290
349
 
@@ -26,6 +26,7 @@
26
26
  - `doctor`
27
27
  - `check_update`
28
28
  - `upgrade`
29
+ - `sync_skills`
29
30
 
30
31
  ### 维度 C:范围组合
31
32
 
@@ -39,6 +40,8 @@
39
40
  - dry-run(预演)
40
41
  - 真实执行(`--dry-run false --yes`)
41
42
  - 真实执行后复核(同条件二次运行)
43
+ - 阶段协议(`--run-task preview|execute|preview-execute-verify`)
44
+ - 扫描诊断(`--scan-debug summary|full`)
42
45
 
43
46
  ### 维度 E:异常与边界
44
47
 
@@ -92,19 +95,23 @@
92
95
 
93
96
  1. `cleanup_monthly`:`--cutoff-month` + `--output json` + dry-run(有目标 / 无目标)
94
97
  2. `cleanup_monthly`:真实执行 + 复核(复核命中应下降或归零)
95
- 3. `space_governance`:`suggested-only` 与 `allow-recent-active` 组合
96
- 4. `restore`:`skip/overwrite/rename` 三冲突策略
97
- 5. `recycle_maintain`:`disabled` / `no_candidate` / `partial_failed`
98
- 6. `doctor`:只读模式不创建状态目录
99
- 7. `check_update`:npm 正常 / npm 失败回退 GitHub / 全部失败
100
- 8. `upgrade`:未确认拒绝、已是最新不执行、执行失败可返回非 0
101
- 9. Agent 报告脚本:成功、无目标、失败三态退出码与卡片完整性
98
+ 3. `cleanup_monthly`:`--run-task preview-execute-verify --yes`(阶段字段稳定)
99
+ 4. `cleanup_monthly`:`--scan-debug summary/full`(诊断字段稳定)
100
+ 5. `space_governance`:`suggested-only` `allow-recent-active` 组合
101
+ 6. `restore`:`skip/overwrite/rename` 三冲突策略
102
+ 7. `recycle_maintain`:`disabled` / `no_candidate` / `partial_failed`
103
+ 8. `doctor`:只读模式不创建状态目录
104
+ 9. `check_update`:npm 正常 / npm 失败回退 GitHub / 全部失败
105
+ 10. `upgrade`:未确认拒绝、已是最新不执行、执行失败可返回非 0
106
+ 11. `sync_skills`:预演/真实同步、版本匹配状态收敛
107
+ 12. Agent 报告脚本:成功、无目标、失败三态退出码与卡片完整性
102
108
 
103
109
  ## 当前门禁(执行顺序)
104
110
 
105
111
  1. `npm run check`
106
- 2. `npm run test:coverage:check`
107
- 3. `shellcheck skills/wecom-cleaner-agent/scripts/*.sh scripts/upgrade.sh scripts/install-skill.sh scripts/release-gate.sh`
108
- 4. `npm run e2e:smoke`
112
+ 2. `npm run check:skills-version`
113
+ 3. `npm run test:coverage:check`
114
+ 4. `shellcheck skills/wecom-cleaner-agent/scripts/*.sh scripts/upgrade.sh scripts/install-skill.sh scripts/release-gate.sh`
115
+ 5. `npm run e2e:smoke`
109
116
 
110
117
  说明:若新增动作/字段,需先补此文档矩阵与断言,再提交实现。
@@ -0,0 +1,31 @@
1
+ # v1.3.1
2
+
3
+ 发布日期:2026-02-27
4
+
5
+ ## 重点更新
6
+
7
+ - 新增无交互阶段协议 `--run-task`:
8
+ - `preview`:仅预演
9
+ - `execute`:仅执行
10
+ - `preview-execute-verify`:预演 -> 执行 -> 复核
11
+ - 无交互 JSON 新增阶段产物:
12
+ - `data.taskPhases`:阶段明细(状态、耗时、命中/成功/失败统计)
13
+ - `data.taskCard`:用户视角任务卡片(范围、结论、分布)
14
+ - 新增扫描诊断参数 `--scan-debug off|summary|full`:用于定位“扫描命中与预期不一致”问题。
15
+
16
+ ## CLI 与 Agent 协同
17
+
18
+ - `--help` 已补充 `--run-task` 与 `--scan-debug`。
19
+ - skills 文档与命令参考已同步:CLI 回退场景优先使用 `--run-task`,并读取 `taskCard/taskPhases`。
20
+
21
+ ## 测试与质量
22
+
23
+ - 新增/更新:
24
+ - `test/config.test.js`:新增 `--run-task` / `--scan-debug` 参数解析覆盖。
25
+ - `test/cli-non-interactive.test.js`:新增阶段协议与扫描诊断覆盖。
26
+ - 全量测试通过:`npm test`(107/107)。
27
+
28
+ ## 兼容性说明
29
+
30
+ - 旧的无交互调用方式保持兼容(不传 `--run-task` 时行为不变)。
31
+ - 文本输出保持原有动作卡片,新增阶段流程区块仅在 `--run-task` 时显示。
@@ -0,0 +1,38 @@
1
+ # v1.3.2
2
+
3
+ 发布日期:2026-02-27
4
+
5
+ ## 重点更新
6
+
7
+ - 4 个破坏性 Agent 报告脚本统一改为 `--run-task` 单入口(预演 / 执行 / 复核一致语义):
8
+ - `cleanup_monthly_report.sh`
9
+ - `space_governance_report.sh`
10
+ - `restore_batch_report.sh`
11
+ - `recycle_maintain_report.sh`
12
+ - Zig 核心版本号改为构建期自动注入,不再手工写死。
13
+ - `native/manifest.json` 升级到 `v1.3.2`,并同步 `darwin-x64`/`darwin-arm64` 双架构 SHA256。
14
+
15
+ ## 稳定性修复
16
+
17
+ - 修复 4 个报告脚本在错误分支下的变量展开风险:失败场景稳定返回非 0,避免自动化流程误判成功。
18
+ - 修复 Zig 核心 `--ping` 版本与包版本可能不一致的问题。
19
+
20
+ ## 文档同步
21
+
22
+ - README、实施计划、技能命令参考、升级脚本示例统一更新到 `v1.3.2`。
23
+
24
+ ## 验证结果
25
+
26
+ - 发布门禁全通过:`npm run release:gate`
27
+ - `format:check`
28
+ - `check`
29
+ - `test:coverage:check`
30
+ - `shellcheck(skills)`
31
+ - `e2e:smoke`
32
+ - `pack:tgz:dry-run`
33
+ - `pack:release-assets:dry-run`
34
+ - 覆盖率基线(`test:coverage:check`):
35
+ - `statements 87.66%`
36
+ - `branches 74.38%`
37
+ - `functions 92.47%`
38
+ - `lines 87.66%`
@@ -0,0 +1,32 @@
1
+ # v1.3.3
2
+
3
+ 发布日期:2026-02-27
4
+
5
+ ## 重点更新
6
+
7
+ - 新增 skills 版本绑定元数据:`skills/wecom-cleaner-agent/version.json`,将 skills 版本与主程序版本显式绑定。
8
+ - 新增无交互动作 `--sync-skills`,支持独立同步 Agent skills(`npm` / `github-script`)。
9
+ - 新增 `wecom-cleaner-skill status` / `wecom-cleaner-skill sync`,用于检测和修复版本不匹配。
10
+ - 新增 skills 版本门禁:`scripts/check-skills-version.js`,并接入 `npm run check:skills-version` 与 `release:gate`。
11
+
12
+ ## 升级链路改进
13
+
14
+ - `--check-update` 输出新增 skills 匹配状态与版本字段(`skillsStatus`、`skillsMatched` 等)。
15
+ - `--upgrade` 默认联动同步 skills,并返回同步状态、同步方式与前后匹配状态。
16
+ - 交互模式“检查更新与升级”支持直接触发 skills 同步;头部增加 skills 状态徽章。
17
+ - `scripts/upgrade.sh` 默认升级后同步 skills,可通过 `--sync-skills false` 关闭。
18
+
19
+ ## 发布与资产
20
+
21
+ - release 资产打包新增 skills 独立附件:`wecom-cleaner-skill-vX.Y.Z.tar.gz`。
22
+ - SHA256 清单命名统一为:`wecom-cleaner-vX.Y.Z-SHA256SUMS.txt`。
23
+ - `scripts/install-skill.sh` 安装完成后输出 skills 版本与绑定版本,便于核验。
24
+
25
+ ## Agent 技能适配
26
+
27
+ - `wecom-cleaner-agent` 的 `check_update_report` / `upgrade_report` / `doctor_report` 已适配 skills 版本状态与同步反馈。
28
+ - `SKILL.md` 与命令参考文档已同步更新。
29
+
30
+ ## 稳定性结论
31
+
32
+ - 已通过:`npm run format:check`、`npm run check`、`npm run check:skills-version`、`npm test`(116/116)。
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "1.3.0",
3
+ "version": "1.3.3",
4
4
  "targets": {
5
5
  "darwin-x64": {
6
6
  "binaryName": "wecom-cleaner-core",
7
- "sha256": "1ea550528055b97e26a76de7d33ca7c445f7dcedf36b21c0cfe1ef7e0f9841bf",
8
- "url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.0/wecom-cleaner-core-v1.3.0-darwin-x64"
7
+ "sha256": "e803a1d480895f3edc2350151611a20390ae01401c179aa3f58b5773fed011a8",
8
+ "url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.3/wecom-cleaner-core-v1.3.3-darwin-x64"
9
9
  },
10
10
  "darwin-arm64": {
11
11
  "binaryName": "wecom-cleaner-core",
12
- "sha256": "2819be9b6108435d94f9a6f5cd0f4e219c335925239366f76fe8a22da023a736",
13
- "url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.0/wecom-cleaner-core-v1.3.0-darwin-arm64"
12
+ "sha256": "0bee4994c39ec66690a1effa2acc4178a581567750577c5caa9ba4e495dd3b1d",
13
+ "url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.3/wecom-cleaner-core-v1.3.3-darwin-arm64"
14
14
  }
15
15
  }
16
16
  }
@@ -2,6 +2,9 @@
2
2
  set -euo pipefail
3
3
 
4
4
  ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
5
+ PACKAGE_VERSION="$(node -p "JSON.parse(require('fs').readFileSync('${ROOT_DIR}/package.json', 'utf8')).version")"
6
+ VERSION_ZIG_PATH="${ROOT_DIR}/native/zig/src/version.zig"
7
+ printf 'pub const APP_VERSION = "%s";\n' "${PACKAGE_VERSION}" > "${VERSION_ZIG_PATH}"
5
8
 
6
9
  HOST_OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
7
10
  HOST_ARCH="$(uname -m)"
@@ -1,4 +1,5 @@
1
1
  const std = @import("std");
2
+ const version_meta = @import("version.zig");
2
3
 
3
4
  fn isAbsPath(path: []const u8) bool {
4
5
  return std.fs.path.isAbsolute(path);
@@ -57,7 +58,7 @@ fn dirTreeSize(dir: *std.fs.Dir) !u64 {
57
58
  }
58
59
 
59
60
  fn printPing(writer: *std.Io.Writer) !void {
60
- try writer.writeAll("{\"ok\":true,\"engine\":\"zig\",\"version\":\"1.3.0\"}\n");
61
+ try writer.print("{{\"ok\":true,\"engine\":\"zig\",\"version\":\"{s}\"}}\n", .{version_meta.APP_VERSION});
61
62
  }
62
63
 
63
64
  fn runDu(args: []const []const u8, writer: *std.Io.Writer) !void {
@@ -0,0 +1 @@
1
+ pub const APP_VERSION = "1.3.3";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mison/wecom-cleaner",
3
- "version": "1.3.0",
3
+ "version": "1.3.3",
4
4
  "description": "企业微信本地聊天缓存清理工具(交互式 CLI/TUI)",
5
5
  "author": "MisonL",
6
6
  "license": "MIT",
@@ -42,6 +42,7 @@
42
42
  "format": "prettier --write .",
43
43
  "format:check": "prettier --check .",
44
44
  "check": "node --check src/*.js",
45
+ "check:skills-version": "node scripts/check-skills-version.js",
45
46
  "e2e:smoke": "bash scripts/e2e-smoke.sh",
46
47
  "release:gate": "bash scripts/release-gate.sh",
47
48
  "prepack": "npm run build:native:release && npm run check",
@@ -16,10 +16,11 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
16
16
  1. 全程只用无交互命令(禁止直接运行 `wecom-cleaner` 进入 TUI)。
17
17
  2. 优先脚本入口,禁止手写三步命令流(除非脚本失败或缺失)。
18
18
  3. 破坏性动作(清理/治理/恢复/回收区治理)默认预演;真实执行必须有明确授权。
19
- 4. 升级动作默认只做检查或预演(`--execute false`);真实升级必须有明确授权。
20
- 5. 若预演命中为 `0`,必须结束并说明“无需执行”,不得继续真实执行。
21
- 6. 最终汇报必须是中文用户视角,先结论再细节,并解释关键指标含义。
22
- 7. 禁止在终端回显完整 JSON;只输出人类可读摘要。
19
+ 4. 回退到 CLI 时,破坏性动作必须使用 `--run-task` 协议(`preview` 或 `preview-execute-verify`),禁止手工串联多次命令。
20
+ 5. 升级动作默认只做检查或预演(`--execute false`);真实升级必须有明确授权。
21
+ 6. 若预演命中为 `0`,必须结束并说明“无需执行”,不得继续真实执行。
22
+ 7. 最终汇报必须是中文用户视角,先结论再细节,并解释关键指标含义。
23
+ 8. 禁止在终端回显完整 JSON;只输出人类可读摘要。
23
24
 
24
25
  ## 动作到脚本映射(必须)
25
26
 
@@ -31,12 +32,14 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
31
32
  - 系统自检:`scripts/doctor_report.sh`
32
33
  - 检查更新:`scripts/check_update_report.sh`
33
34
  - 程序升级:`scripts/upgrade_report.sh`
35
+ - skills 同步:回退到 `wecom-cleaner --sync-skills --output json`
34
36
 
35
37
  调用顺序:
36
38
 
37
39
  1. 先判断用户意图对应哪个动作。
38
40
  2. 直接调用对应脚本。
39
41
  3. 脚本失败时,才回退到 `wecom-cleaner --<action> --output json` 手工流程。
42
+ 4. 回退流程里优先读取 `data.taskCard` 与 `data.taskPhases`,再读取 `summary/data.report` 细节。
40
43
 
41
44
  ## 脚本调用约定
42
45
 
@@ -44,6 +47,9 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
44
47
  - 用户明确“现在执行/开始清理/确认执行”时才传 `--execute true`。
45
48
  - 破坏性动作脚本内部会做:预演 ->(可选)真实执行 ->(可选)复核。
46
49
  - 升级脚本默认“检查 + 预演”;只有明确授权才执行真实升级。
50
+ - CLI 回退时:
51
+ - 仅预演:`--run-task preview`
52
+ - 已授权执行:`--run-task preview-execute-verify --yes`
47
53
 
48
54
  推荐参数:
49
55
 
@@ -1,5 +1,5 @@
1
1
  interface:
2
2
  display_name: 'WeCom Cleaner Agent'
3
3
  short_description: '面向AI Agent的企业微信缓存清理与恢复无交互执行技能'
4
- default_prompt: '请使用 $wecom-cleaner-agent 执行任务:按用户意图自动选择 scripts/ 下对应报告脚本(cleanup/analysis/space/restore/recycle/doctor/check-update/upgrade),优先输出中文用户任务卡片;仅在脚本不可用时回退 wecom-cleaner --output json。'
4
+ default_prompt: '请使用 $wecom-cleaner-agent 执行任务:按用户意图自动选择 scripts/ 下对应报告脚本(cleanup/analysis/space/restore/recycle/doctor/check-update/upgrade),需要 skills 同步时回退 wecom-cleaner --sync-skills --output json;优先输出中文用户任务卡片;仅在脚本不可用时回退 wecom-cleaner --output json,并在破坏性动作中使用 --run-task(preview 或 preview-execute-verify)读取 data.taskCard/taskPhases。'
5
5
  brand_color: '#0EA5E9'