@mison/wecom-cleaner 1.2.1 → 1.3.2
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.
- package/README.md +68 -13
- package/docs/IMPLEMENTATION_PLAN.md +6 -6
- package/docs/NON_INTERACTIVE_SPEC.md +63 -0
- package/docs/TEST_MATRIX.md +14 -6
- package/docs/releases/v1.3.0.md +45 -0
- package/docs/releases/v1.3.1.md +31 -0
- package/docs/releases/v1.3.2.md +38 -0
- package/native/bin/darwin-arm64/wecom-cleaner-core +0 -0
- package/native/bin/darwin-x64/wecom-cleaner-core +0 -0
- package/native/manifest.json +5 -5
- package/native/zig/build.sh +3 -0
- package/native/zig/src/main.zig +2 -1
- package/native/zig/src/version.zig +1 -0
- package/package.json +1 -1
- package/skills/wecom-cleaner-agent/SKILL.md +14 -5
- package/skills/wecom-cleaner-agent/agents/openai.yaml +1 -1
- package/skills/wecom-cleaner-agent/references/commands.md +48 -9
- package/skills/wecom-cleaner-agent/scripts/check_update_report.sh +141 -0
- package/skills/wecom-cleaner-agent/scripts/cleanup_monthly_report.sh +37 -53
- package/skills/wecom-cleaner-agent/scripts/recycle_maintain_report.sh +39 -53
- package/skills/wecom-cleaner-agent/scripts/restore_batch_report.sh +34 -39
- package/skills/wecom-cleaner-agent/scripts/space_governance_report.sh +34 -49
- package/skills/wecom-cleaner-agent/scripts/upgrade_report.sh +240 -0
- package/src/cli.js +1274 -2
- package/src/config.js +65 -0
- package/src/constants.js +2 -0
- package/src/doctor.js +24 -0
- package/src/updater.js +503 -0
package/README.md
CHANGED
|
@@ -92,6 +92,15 @@
|
|
|
92
92
|
- `doctor` 模式为只读体检:不会自动创建状态目录/回收区,也不会触发 Zig 自动修复下载。
|
|
93
93
|
- 多实例并发默认加锁;检测到陈旧锁会优先自动恢复,异常场景可用 `--force` 兜底清理。
|
|
94
94
|
|
|
95
|
+
7. 自主升级体系
|
|
96
|
+
|
|
97
|
+
- 启动后按“早/午/晚”三时段检查更新(默认开启)。
|
|
98
|
+
- 版本源优先 npmjs,失败自动回退 GitHub Release。
|
|
99
|
+
- 交互模式发现新版本时可直接选择升级方式:
|
|
100
|
+
- npm 升级(默认)
|
|
101
|
+
- GitHub 脚本升级
|
|
102
|
+
- 无交互模式仅提示不阻断任务执行。
|
|
103
|
+
|
|
95
104
|
## 能力边界
|
|
96
105
|
|
|
97
106
|
企业微信会话数据库为私有/加密格式,当前无法稳定建立“会话名 -> 本地缓存目录”的强映射。
|
|
@@ -159,10 +168,10 @@ GitHub 备选方式(无 npm 包依赖):
|
|
|
159
168
|
curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash
|
|
160
169
|
```
|
|
161
170
|
|
|
162
|
-
若需安装指定版本标签(例如 `v1.2
|
|
171
|
+
若需安装指定版本标签(例如 `v1.3.2`):
|
|
163
172
|
|
|
164
173
|
```bash
|
|
165
|
-
curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash -s -- --ref v1.2
|
|
174
|
+
curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash -s -- --ref v1.3.2
|
|
166
175
|
```
|
|
167
176
|
|
|
168
177
|
Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`):
|
|
@@ -173,6 +182,8 @@ Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`
|
|
|
173
182
|
- `restore_batch_report.sh`:批次恢复任务卡片
|
|
174
183
|
- `recycle_maintain_report.sh`:回收区治理任务卡片
|
|
175
184
|
- `doctor_report.sh`:系统自检任务卡片
|
|
185
|
+
- `check_update_report.sh`:检查更新任务卡片
|
|
186
|
+
- `upgrade_report.sh`:程序升级任务卡片(默认预演)
|
|
176
187
|
|
|
177
188
|
## 常用参数
|
|
178
189
|
|
|
@@ -191,6 +202,8 @@ Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`
|
|
|
191
202
|
- `--restore-batch <batchId>`
|
|
192
203
|
- `--recycle-maintain`
|
|
193
204
|
- `--doctor`
|
|
205
|
+
- `--check-update`
|
|
206
|
+
- `--upgrade <npm|github-script>`
|
|
194
207
|
|
|
195
208
|
### 无交互安全规则
|
|
196
209
|
|
|
@@ -225,21 +238,38 @@ wecom-cleaner --space-governance \
|
|
|
225
238
|
# 回收区治理(按策略执行)
|
|
226
239
|
wecom-cleaner --recycle-maintain --dry-run false --yes
|
|
227
240
|
|
|
241
|
+
# 年月清理(三阶段协议:预演 -> 执行 -> 复核)
|
|
242
|
+
wecom-cleaner --cleanup-monthly --accounts all --cutoff-month 2024-04 --run-task preview-execute-verify --yes
|
|
243
|
+
|
|
228
244
|
# 批次恢复(冲突策略:重命名)
|
|
229
245
|
wecom-cleaner --restore-batch 20260226-105009-ffa098 --conflict rename
|
|
230
246
|
|
|
231
247
|
# 系统自检(默认 JSON 输出)
|
|
232
248
|
wecom-cleaner --doctor
|
|
249
|
+
|
|
250
|
+
# 检查更新(不执行升级)
|
|
251
|
+
wecom-cleaner --check-update --output text
|
|
252
|
+
|
|
253
|
+
# 执行升级(npm 默认方式)
|
|
254
|
+
wecom-cleaner --upgrade npm --upgrade-yes
|
|
255
|
+
|
|
256
|
+
# 执行升级(GitHub 托管脚本方式)
|
|
257
|
+
wecom-cleaner --upgrade github-script --upgrade-version 1.3.2 --upgrade-yes
|
|
233
258
|
```
|
|
234
259
|
|
|
235
260
|
### 输出与兼容参数
|
|
236
261
|
|
|
237
262
|
- `--output json|text`:无交互输出格式,默认 `json`。
|
|
238
263
|
- `--json`:兼容别名,等价于 `--output json`。
|
|
264
|
+
- `--run-task preview|execute|preview-execute-verify`:阶段任务协议(推荐给 Agent)。
|
|
265
|
+
- `--scan-debug off|summary|full`:扫描诊断信息输出等级。
|
|
239
266
|
- `--mode`:兼容参数,建议迁移到动作参数(如 `--cleanup-monthly`)。
|
|
240
267
|
- `--save-config`:将本次全局配置参数写回 `config.json`。
|
|
241
268
|
- `--help` / `-h`:输出命令帮助并退出。
|
|
242
269
|
- `--version` / `-v`:输出版本号并退出。
|
|
270
|
+
- `--upgrade-channel stable|pre`:升级检查通道(稳定版/预发布)。
|
|
271
|
+
- `--upgrade-version <x.y.z>`:指定升级目标版本。
|
|
272
|
+
- `--upgrade-yes`:确认执行升级动作(无此参数将拒绝执行升级)。
|
|
243
273
|
|
|
244
274
|
### 各动作关键统计字段(JSON)
|
|
245
275
|
|
|
@@ -255,6 +285,7 @@ wecom-cleaner --doctor
|
|
|
255
285
|
- `summary.rootPathCount`:涉及的清理根目录数量
|
|
256
286
|
- `summary.accountCount` / `monthCount` / `categoryCount` / `externalRootCount`
|
|
257
287
|
- `summary.cutoffMonth`:截止月份(当使用 `--cutoff-month` 时)
|
|
288
|
+
- `summary.runTaskMode` / `summary.taskDecision`:阶段协议模式与决策(仅 `--run-task`)
|
|
258
289
|
|
|
259
290
|
`cleanup-monthly` 还会在 `data.report` 中返回可展示明细:
|
|
260
291
|
|
|
@@ -263,6 +294,9 @@ wecom-cleaner --doctor
|
|
|
263
294
|
- `data.report.matched.rootStats`:按根目录统计(条目数、体积)
|
|
264
295
|
- `data.report.matched.topPaths`:按体积 Top 路径样例
|
|
265
296
|
- `data.report.executed.byCategory/byMonth/byRoot`:真实执行落地统计(成功/跳过/失败 + 体积)
|
|
297
|
+
- `data.taskPhases`:阶段执行明细(预演/执行/复核)
|
|
298
|
+
- `data.taskCard`:面向用户的任务卡片聚合结果
|
|
299
|
+
- `data.scanDebug`:扫描诊断(当 `--scan-debug summary|full`)
|
|
266
300
|
|
|
267
301
|
#### `analysis-only`
|
|
268
302
|
|
|
@@ -302,6 +336,23 @@ wecom-cleaner --doctor
|
|
|
302
336
|
- `data.metrics`:账号数、回收区占用、外部存储等关键指标
|
|
303
337
|
- `data.runtime`:运行时环境信息
|
|
304
338
|
|
|
339
|
+
#### `check-update`
|
|
340
|
+
|
|
341
|
+
- `summary.checked`:是否完成检查
|
|
342
|
+
- `summary.hasUpdate`:是否发现新版本
|
|
343
|
+
- `summary.currentVersion` / `latestVersion`
|
|
344
|
+
- `summary.source`:`npm` 或 `github`
|
|
345
|
+
- `summary.channel`:`stable` 或 `pre`
|
|
346
|
+
- `data.update`:检查详情(含 `errors`、`checkReason`、`checkedAt`)
|
|
347
|
+
|
|
348
|
+
#### `upgrade`
|
|
349
|
+
|
|
350
|
+
- `summary.executed`:是否执行了升级命令
|
|
351
|
+
- `summary.method`:`npm` 或 `github-script`
|
|
352
|
+
- `summary.targetVersion`:目标版本
|
|
353
|
+
- `summary.status`:升级命令退出码
|
|
354
|
+
- `data.upgrade.command`:实际执行命令
|
|
355
|
+
|
|
305
356
|
### 全局参数
|
|
306
357
|
|
|
307
358
|
- `--root <path>`:Profile 根目录
|
|
@@ -313,6 +364,8 @@ wecom-cleaner --doctor
|
|
|
313
364
|
- `--theme <auto|light|dark>`:Logo 主题
|
|
314
365
|
- `--interactive`:即使携带参数也进入交互流程(可配合 `--mode`)
|
|
315
366
|
- `--force`:锁异常场景下强制清理并继续(兜底参数,通常无需)
|
|
367
|
+
- `--run-task preview|execute|preview-execute-verify`:阶段任务协议(推荐无交互自动化调用)
|
|
368
|
+
- `--scan-debug off|summary|full`:附加扫描诊断信息
|
|
316
369
|
|
|
317
370
|
### `--theme` 可选值
|
|
318
371
|
|
|
@@ -327,6 +380,7 @@ wecom-cleaner --doctor
|
|
|
327
380
|
- `WECOM_CLEANER_NATIVE_DOWNLOAD_TIMEOUT_MS=<ms>`:下载超时(默认 `15000`)
|
|
328
381
|
- `WECOM_CLEANER_NATIVE_PROBE_TIMEOUT_MS=<ms>`:核心探针超时(默认 `3000`,最小 `500`)
|
|
329
382
|
- `WECOM_CLEANER_EXTERNAL_AUTO_DETECT=true|false`:外部存储自动探测总开关
|
|
383
|
+
- `WECOM_CLEANER_AUTO_UPDATE=true|false`:自主升级自动检查总开关(默认 `true`)
|
|
330
384
|
|
|
331
385
|
## 数据与审计文件
|
|
332
386
|
|
|
@@ -395,8 +449,8 @@ npm run pack:tgz:dry-run
|
|
|
395
449
|
|
|
396
450
|
当前基线(主分支):
|
|
397
451
|
|
|
398
|
-
- 单元测试:`
|
|
399
|
-
- 覆盖率:`statements
|
|
452
|
+
- 单元测试:`107/107` 通过。
|
|
453
|
+
- 覆盖率:`statements 87.66%`,`branches 74.38%`,`functions 92.47%`,`lines 87.66%`。
|
|
400
454
|
- 全菜单 smoke:通过(含恢复冲突分支与 doctor JSON 分支)。
|
|
401
455
|
|
|
402
456
|
## 测试矩阵
|
|
@@ -439,18 +493,19 @@ npm run pack:tgz
|
|
|
439
493
|
npm run pack:release-assets
|
|
440
494
|
|
|
441
495
|
# 2) 推送主分支与标签
|
|
496
|
+
VERSION="1.3.2"
|
|
442
497
|
git push origin main
|
|
443
|
-
git tag
|
|
444
|
-
git push origin
|
|
498
|
+
git tag "v${VERSION}"
|
|
499
|
+
git push origin "v${VERSION}"
|
|
445
500
|
|
|
446
501
|
# 3) 发布 GitHub Release(附 npm 包 + 双架构核心附件)
|
|
447
|
-
gh release create
|
|
448
|
-
--title "
|
|
449
|
-
--notes-file docs/releases/
|
|
450
|
-
wecom-cleaner
|
|
451
|
-
dist/release/wecom-cleaner-core-
|
|
452
|
-
dist/release/wecom-cleaner-core-
|
|
453
|
-
dist/release/wecom-cleaner-core-
|
|
502
|
+
gh release create "v${VERSION}" \
|
|
503
|
+
--title "v${VERSION}" \
|
|
504
|
+
--notes-file "docs/releases/v${VERSION}.md" \
|
|
505
|
+
"wecom-cleaner-${VERSION}.tgz" \
|
|
506
|
+
"dist/release/wecom-cleaner-core-v${VERSION}-darwin-x64" \
|
|
507
|
+
"dist/release/wecom-cleaner-core-v${VERSION}-darwin-arm64" \
|
|
508
|
+
"dist/release/wecom-cleaner-core-v${VERSION}-SHA256SUMS.txt"
|
|
454
509
|
|
|
455
510
|
# 4) 发布 npm
|
|
456
511
|
npm publish --access public
|
|
@@ -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.
|
|
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.
|
|
146
|
-
- `native/manifest.json`:版本与 `baseUrl`
|
|
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.
|
|
154
|
-
git push origin v1.
|
|
155
|
-
gh release create v1.
|
|
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 发布
|
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
- `--restore-batch <batchId>`
|
|
21
21
|
- `--recycle-maintain`
|
|
22
22
|
- `--doctor`
|
|
23
|
+
- `--check-update`
|
|
24
|
+
- `--upgrade <npm|github-script>`
|
|
23
25
|
|
|
24
26
|
若缺少动作或动作冲突,退出码为 `2`。
|
|
25
27
|
|
|
@@ -32,6 +34,10 @@
|
|
|
32
34
|
- 默认 `dry-run`(不执行真实删除/恢复)。
|
|
33
35
|
- 真实执行需显式传 `--yes`。
|
|
34
36
|
- 若传 `--dry-run false` 且未传 `--yes`,退出码为 `3`。
|
|
37
|
+
- 可通过 `--run-task` 启用阶段协议:
|
|
38
|
+
- `preview`:仅预演阶段。
|
|
39
|
+
- `execute`:仅真实执行阶段(破坏性动作需 `--yes`)。
|
|
40
|
+
- `preview-execute-verify`:预演 -> 真实执行 -> 同条件复核(预演命中 `0` 时自动跳过执行与复核)。
|
|
35
41
|
|
|
36
42
|
## 4. 输出协议
|
|
37
43
|
|
|
@@ -39,6 +45,8 @@
|
|
|
39
45
|
|
|
40
46
|
- `--output json|text`(默认 `json`)
|
|
41
47
|
- `--json` 为兼容别名(等价 `--output json`)
|
|
48
|
+
- `--run-task preview|execute|preview-execute-verify`(推荐破坏性动作使用)
|
|
49
|
+
- `--scan-debug off|summary|full`(默认 `off`)
|
|
42
50
|
|
|
43
51
|
JSON 顶层字段:
|
|
44
52
|
|
|
@@ -50,6 +58,10 @@ JSON 顶层字段:
|
|
|
50
58
|
- `errors`:错误数组(`code`、`message`、可选路径字段)
|
|
51
59
|
- `data`:动作明细数据
|
|
52
60
|
- `meta`:元信息(版本、耗时、引擎、时间戳等)
|
|
61
|
+
- `data.userFacingSummary`:统一的用户侧结果摘要(范围 + 结果 + 关键分布)
|
|
62
|
+
- `data.taskPhases`:阶段协议明细(仅在 `--run-task` 时返回)
|
|
63
|
+
- `data.taskCard`:阶段任务卡片(仅在 `--run-task` 时返回)
|
|
64
|
+
- `data.scanDebug`:扫描诊断信息(仅在 `--scan-debug summary|full` 时返回)
|
|
53
65
|
|
|
54
66
|
`cleanup_monthly` 常见 `summary` 字段:
|
|
55
67
|
|
|
@@ -164,6 +176,32 @@ JSON 顶层字段:
|
|
|
164
176
|
- `metrics`:关键计数与容量
|
|
165
177
|
- `runtime`:平台与运行时信息
|
|
166
178
|
|
|
179
|
+
`check_update` 常见 `summary` 字段:
|
|
180
|
+
|
|
181
|
+
- `checked`
|
|
182
|
+
- `hasUpdate`
|
|
183
|
+
- `currentVersion` / `latestVersion`
|
|
184
|
+
- `source`
|
|
185
|
+
- `channel`
|
|
186
|
+
- `skippedByUser`
|
|
187
|
+
|
|
188
|
+
`check_update` 的 `data`:
|
|
189
|
+
|
|
190
|
+
- `update`:更新检查详情(`checkedAt`、`checkReason`、`errors`、`upgradeMethods`)
|
|
191
|
+
|
|
192
|
+
`upgrade` 常见 `summary` 字段:
|
|
193
|
+
|
|
194
|
+
- `executed`
|
|
195
|
+
- `method`
|
|
196
|
+
- `targetVersion`
|
|
197
|
+
- `status`
|
|
198
|
+
- `command`
|
|
199
|
+
|
|
200
|
+
`upgrade` 的 `data`:
|
|
201
|
+
|
|
202
|
+
- `upgrade`:升级执行结果(stdout/stderr/exit status)
|
|
203
|
+
- `update`:升级前检查结果(若有)
|
|
204
|
+
|
|
167
205
|
## 5. 退出码
|
|
168
206
|
|
|
169
207
|
- `0`:执行成功(含 dry-run 成功)
|
|
@@ -183,6 +221,11 @@ JSON 顶层字段:
|
|
|
183
221
|
- `--interactive`:强制交互模式(与无交互动作参数互斥使用时,优先按交互模式执行)
|
|
184
222
|
- `--force`:锁异常场景下强制清理并继续(兜底参数)
|
|
185
223
|
- `--save-config`:把本次全局参数落盘到 `config.json`
|
|
224
|
+
- `--upgrade-channel <stable|pre>`:更新通道(稳定版/预发布)
|
|
225
|
+
- `--upgrade-version <x.y.z>`:升级到指定版本
|
|
226
|
+
- `--upgrade-yes`:确认执行升级(无此参数将拒绝执行升级)
|
|
227
|
+
- `--run-task preview|execute|preview-execute-verify`:无交互阶段协议
|
|
228
|
+
- `--scan-debug off|summary|full`:扫描诊断输出等级
|
|
186
229
|
|
|
187
230
|
## 7. 动作参数
|
|
188
231
|
|
|
@@ -234,6 +277,26 @@ JSON 顶层字段:
|
|
|
234
277
|
|
|
235
278
|
- 无动作专属参数;只读执行,返回健康报告。
|
|
236
279
|
|
|
280
|
+
### 7.7 `--check-update`
|
|
281
|
+
|
|
282
|
+
- `--upgrade-channel <stable|pre>`(可选,默认读取配置)
|
|
283
|
+
|
|
284
|
+
说明:
|
|
285
|
+
|
|
286
|
+
- 手动触发版本检查,不执行升级动作。
|
|
287
|
+
- 检测优先 npm,失败自动回退 GitHub。
|
|
288
|
+
|
|
289
|
+
### 7.8 `--upgrade <npm|github-script>`
|
|
290
|
+
|
|
291
|
+
- `--upgrade-version <x.y.z>`(可选;缺省时先检查更新并升级到最新)
|
|
292
|
+
- `--upgrade-channel <stable|pre>`(可选)
|
|
293
|
+
- `--upgrade-yes`(必填确认)
|
|
294
|
+
|
|
295
|
+
说明:
|
|
296
|
+
|
|
297
|
+
- `npm`:执行 `npm i -g @mison/wecom-cleaner@<version>`
|
|
298
|
+
- `github-script`:执行 GitHub 托管脚本 `scripts/upgrade.sh`
|
|
299
|
+
|
|
237
300
|
## 8. 兼容参数
|
|
238
301
|
|
|
239
302
|
- `--mode`:兼容旧调用,会映射到动作参数并附带 warning,建议迁移。
|
package/docs/TEST_MATRIX.md
CHANGED
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
- `restore`
|
|
25
25
|
- `recycle_maintain`
|
|
26
26
|
- `doctor`
|
|
27
|
+
- `check_update`
|
|
28
|
+
- `upgrade`
|
|
27
29
|
|
|
28
30
|
### 维度 C:范围组合
|
|
29
31
|
|
|
@@ -37,6 +39,8 @@
|
|
|
37
39
|
- dry-run(预演)
|
|
38
40
|
- 真实执行(`--dry-run false --yes`)
|
|
39
41
|
- 真实执行后复核(同条件二次运行)
|
|
42
|
+
- 阶段协议(`--run-task preview|execute|preview-execute-verify`)
|
|
43
|
+
- 扫描诊断(`--scan-debug summary|full`)
|
|
40
44
|
|
|
41
45
|
### 维度 E:异常与边界
|
|
42
46
|
|
|
@@ -90,17 +94,21 @@
|
|
|
90
94
|
|
|
91
95
|
1. `cleanup_monthly`:`--cutoff-month` + `--output json` + dry-run(有目标 / 无目标)
|
|
92
96
|
2. `cleanup_monthly`:真实执行 + 复核(复核命中应下降或归零)
|
|
93
|
-
3. `
|
|
94
|
-
4. `
|
|
95
|
-
5. `
|
|
96
|
-
6. `
|
|
97
|
-
7.
|
|
97
|
+
3. `cleanup_monthly`:`--run-task preview-execute-verify --yes`(阶段字段稳定)
|
|
98
|
+
4. `cleanup_monthly`:`--scan-debug summary/full`(诊断字段稳定)
|
|
99
|
+
5. `space_governance`:`suggested-only` 与 `allow-recent-active` 组合
|
|
100
|
+
6. `restore`:`skip/overwrite/rename` 三冲突策略
|
|
101
|
+
7. `recycle_maintain`:`disabled` / `no_candidate` / `partial_failed`
|
|
102
|
+
8. `doctor`:只读模式不创建状态目录
|
|
103
|
+
9. `check_update`:npm 正常 / npm 失败回退 GitHub / 全部失败
|
|
104
|
+
10. `upgrade`:未确认拒绝、已是最新不执行、执行失败可返回非 0
|
|
105
|
+
11. Agent 报告脚本:成功、无目标、失败三态退出码与卡片完整性
|
|
98
106
|
|
|
99
107
|
## 当前门禁(执行顺序)
|
|
100
108
|
|
|
101
109
|
1. `npm run check`
|
|
102
110
|
2. `npm run test:coverage:check`
|
|
103
|
-
3. `shellcheck skills/wecom-cleaner-agent/scripts/*.sh`
|
|
111
|
+
3. `shellcheck skills/wecom-cleaner-agent/scripts/*.sh scripts/upgrade.sh scripts/install-skill.sh scripts/release-gate.sh`
|
|
104
112
|
4. `npm run e2e:smoke`
|
|
105
113
|
|
|
106
114
|
说明:若新增动作/字段,需先补此文档矩阵与断言,再提交实现。
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# v1.3.0 发布说明
|
|
2
|
+
|
|
3
|
+
发布日期:2026-02-27
|
|
4
|
+
|
|
5
|
+
## 亮点
|
|
6
|
+
|
|
7
|
+
- 新增自主升级体系:支持检查更新、交互升级提示与双通道升级(npm / GitHub 脚本)。
|
|
8
|
+
- 升级检查默认按“早/午/晚”三时段执行,减少重复打扰并保持版本新鲜度。
|
|
9
|
+
- 无交互模式新增 `check_update` / `upgrade` 动作,适配 AI Agent 自动化流程。
|
|
10
|
+
|
|
11
|
+
## 主要变更
|
|
12
|
+
|
|
13
|
+
- 新增 `src/updater.js`:
|
|
14
|
+
- SemVer 比较与通道过滤(`stable` / `pre`)
|
|
15
|
+
- npm 优先、GitHub 回退的版本检查
|
|
16
|
+
- 升级命令执行与状态结构化
|
|
17
|
+
- `wecom-cleaner-agent` 技能适配升级能力:
|
|
18
|
+
- 新增 `check_update_report.sh`(更新检查任务卡片)
|
|
19
|
+
- 新增 `upgrade_report.sh`(升级预演/执行任务卡片)
|
|
20
|
+
- `src/cli.js` 接入升级全流程:
|
|
21
|
+
- 无交互:`--check-update`、`--upgrade`
|
|
22
|
+
- 交互:发现新版本后可选择升级方式、稍后提醒或跳过该版本
|
|
23
|
+
- `src/config.js`/`src/doctor.js` 增强:
|
|
24
|
+
- 持久化 `selfUpdate` 配置
|
|
25
|
+
- doctor 新增升级配置检查项
|
|
26
|
+
|
|
27
|
+
## 质量与修复
|
|
28
|
+
|
|
29
|
+
- 修复 `scripts/install-skill.sh` 的 shellcheck 告警(SC2088)。
|
|
30
|
+
- 修复 E2E start menu 用例与新增菜单项不一致的问题。
|
|
31
|
+
- 修复 Zig `--ping` 返回版本与应用版本不一致的问题。
|
|
32
|
+
- 发布门禁通过:`npm run release:gate`(含覆盖率门禁、shellcheck、e2e smoke、打包预演)。
|
|
33
|
+
|
|
34
|
+
## 资产
|
|
35
|
+
|
|
36
|
+
- npm 包:`wecom-cleaner-1.3.0.tgz`
|
|
37
|
+
- GitHub Release 附件:
|
|
38
|
+
- `wecom-cleaner-core-v1.3.0-darwin-x64`
|
|
39
|
+
- `wecom-cleaner-core-v1.3.0-darwin-arm64`
|
|
40
|
+
- `wecom-cleaner-core-v1.3.0-SHA256SUMS.txt`
|
|
41
|
+
|
|
42
|
+
SHA256:
|
|
43
|
+
|
|
44
|
+
- `1ea550528055b97e26a76de7d33ca7c445f7dcedf36b21c0cfe1ef7e0f9841bf` `wecom-cleaner-core-v1.3.0-darwin-x64`
|
|
45
|
+
- `2819be9b6108435d94f9a6f5cd0f4e219c335925239366f76fe8a22da023a736` `wecom-cleaner-core-v1.3.0-darwin-arm64`
|
|
@@ -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%`
|
|
Binary file
|
|
Binary file
|
package/native/manifest.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "1.2
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"targets": {
|
|
5
5
|
"darwin-x64": {
|
|
6
6
|
"binaryName": "wecom-cleaner-core",
|
|
7
|
-
"sha256": "
|
|
8
|
-
"url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.2
|
|
7
|
+
"sha256": "7cb303935b713397012e88431238fa3b44e416ba1ceb0b1a96f354f3c818108c",
|
|
8
|
+
"url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.2/wecom-cleaner-core-v1.3.2-darwin-x64"
|
|
9
9
|
},
|
|
10
10
|
"darwin-arm64": {
|
|
11
11
|
"binaryName": "wecom-cleaner-core",
|
|
12
|
-
"sha256": "
|
|
13
|
-
"url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.2
|
|
12
|
+
"sha256": "93a33ae854e2dc7778865e3d59c048ba8f3d3ff3e3f3d19ec0906c316c18e503",
|
|
13
|
+
"url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.2/wecom-cleaner-core-v1.3.2-darwin-arm64"
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
package/native/zig/build.sh
CHANGED
|
@@ -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)"
|
package/native/zig/src/main.zig
CHANGED
|
@@ -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.
|
|
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.2";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wecom-cleaner-agent
|
|
3
|
-
description: 用于执行和编排 wecom-cleaner 的无交互 Agent
|
|
3
|
+
description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当任务涉及企业微信缓存盘点、年月清理、全量空间治理、批次恢复、回收区治理、系统自检、检查更新或程序升级,并要求高效执行与结构化反馈时触发。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# wecom-cleaner-agent
|
|
@@ -16,9 +16,11 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
|
|
|
16
16
|
1. 全程只用无交互命令(禁止直接运行 `wecom-cleaner` 进入 TUI)。
|
|
17
17
|
2. 优先脚本入口,禁止手写三步命令流(除非脚本失败或缺失)。
|
|
18
18
|
3. 破坏性动作(清理/治理/恢复/回收区治理)默认预演;真实执行必须有明确授权。
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
19
|
+
4. 回退到 CLI 时,破坏性动作必须使用 `--run-task` 协议(`preview` 或 `preview-execute-verify`),禁止手工串联多次命令。
|
|
20
|
+
5. 升级动作默认只做检查或预演(`--execute false`);真实升级必须有明确授权。
|
|
21
|
+
6. 若预演命中为 `0`,必须结束并说明“无需执行”,不得继续真实执行。
|
|
22
|
+
7. 最终汇报必须是中文用户视角,先结论再细节,并解释关键指标含义。
|
|
23
|
+
8. 禁止在终端回显完整 JSON;只输出人类可读摘要。
|
|
22
24
|
|
|
23
25
|
## 动作到脚本映射(必须)
|
|
24
26
|
|
|
@@ -28,18 +30,25 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
|
|
|
28
30
|
- 恢复已删除批次:`scripts/restore_batch_report.sh`
|
|
29
31
|
- 回收区治理:`scripts/recycle_maintain_report.sh`
|
|
30
32
|
- 系统自检:`scripts/doctor_report.sh`
|
|
33
|
+
- 检查更新:`scripts/check_update_report.sh`
|
|
34
|
+
- 程序升级:`scripts/upgrade_report.sh`
|
|
31
35
|
|
|
32
36
|
调用顺序:
|
|
33
37
|
|
|
34
38
|
1. 先判断用户意图对应哪个动作。
|
|
35
39
|
2. 直接调用对应脚本。
|
|
36
40
|
3. 脚本失败时,才回退到 `wecom-cleaner --<action> --output json` 手工流程。
|
|
41
|
+
4. 回退流程里优先读取 `data.taskCard` 与 `data.taskPhases`,再读取 `summary/data.report` 细节。
|
|
37
42
|
|
|
38
43
|
## 脚本调用约定
|
|
39
44
|
|
|
40
|
-
- 默认 `--execute false
|
|
45
|
+
- 默认 `--execute false`(仅预演 / 不落地)。
|
|
41
46
|
- 用户明确“现在执行/开始清理/确认执行”时才传 `--execute true`。
|
|
42
47
|
- 破坏性动作脚本内部会做:预演 ->(可选)真实执行 ->(可选)复核。
|
|
48
|
+
- 升级脚本默认“检查 + 预演”;只有明确授权才执行真实升级。
|
|
49
|
+
- CLI 回退时:
|
|
50
|
+
- 仅预演:`--run-task preview`
|
|
51
|
+
- 已授权执行:`--run-task preview-execute-verify --yes`
|
|
43
52
|
|
|
44
53
|
推荐参数:
|
|
45
54
|
|
|
@@ -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),优先输出中文用户任务卡片;仅在脚本不可用时回退 wecom-cleaner --output json。'
|
|
4
|
+
default_prompt: '请使用 $wecom-cleaner-agent 执行任务:按用户意图自动选择 scripts/ 下对应报告脚本(cleanup/analysis/space/restore/recycle/doctor/check-update/upgrade),优先输出中文用户任务卡片;仅在脚本不可用时回退 wecom-cleaner --output json,并在破坏性动作中使用 --run-task(preview 或 preview-execute-verify)读取 data.taskCard/taskPhases。'
|
|
5
5
|
brand_color: '#0EA5E9'
|