@mison/wecom-cleaner 1.2.0 → 1.3.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.
- package/README.md +67 -15
- package/docs/NON_INTERACTIVE_SPEC.md +52 -0
- package/docs/TEST_MATRIX.md +110 -0
- package/docs/releases/v1.2.1.md +33 -0
- package/docs/releases/v1.3.0.md +45 -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/src/main.zig +1 -1
- package/package.json +2 -1
- package/skills/wecom-cleaner-agent/SKILL.md +9 -5
- package/skills/wecom-cleaner-agent/agents/openai.yaml +1 -1
- package/skills/wecom-cleaner-agent/references/commands.md +24 -0
- package/skills/wecom-cleaner-agent/scripts/check_update_report.sh +141 -0
- package/skills/wecom-cleaner-agent/scripts/cleanup_monthly_report.sh +11 -1
- package/skills/wecom-cleaner-agent/scripts/recycle_maintain_report.sh +1 -1
- package/skills/wecom-cleaner-agent/scripts/restore_batch_report.sh +1 -1
- package/skills/wecom-cleaner-agent/scripts/space_governance_report.sh +3 -1
- package/skills/wecom-cleaner-agent/scripts/upgrade_report.sh +240 -0
- package/src/cli.js +709 -2
- package/src/config.js +51 -0
- package/src/constants.js +2 -0
- package/src/doctor.js +24 -0
- package/src/recycle-maintenance.js +44 -3
- package/src/updater.js +503 -0
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
- [常用参数](#常用参数)
|
|
28
28
|
- [数据与审计文件](#数据与审计文件)
|
|
29
29
|
- [开发与质量门禁](#开发与质量门禁)
|
|
30
|
+
- [测试矩阵](#测试矩阵)
|
|
30
31
|
- [发布与打包](#发布与打包)
|
|
31
32
|
- [FAQ](#faq)
|
|
32
33
|
|
|
@@ -91,6 +92,15 @@
|
|
|
91
92
|
- `doctor` 模式为只读体检:不会自动创建状态目录/回收区,也不会触发 Zig 自动修复下载。
|
|
92
93
|
- 多实例并发默认加锁;检测到陈旧锁会优先自动恢复,异常场景可用 `--force` 兜底清理。
|
|
93
94
|
|
|
95
|
+
7. 自主升级体系
|
|
96
|
+
|
|
97
|
+
- 启动后按“早/午/晚”三时段检查更新(默认开启)。
|
|
98
|
+
- 版本源优先 npmjs,失败自动回退 GitHub Release。
|
|
99
|
+
- 交互模式发现新版本时可直接选择升级方式:
|
|
100
|
+
- npm 升级(默认)
|
|
101
|
+
- GitHub 脚本升级
|
|
102
|
+
- 无交互模式仅提示不阻断任务执行。
|
|
103
|
+
|
|
94
104
|
## 能力边界
|
|
95
105
|
|
|
96
106
|
企业微信会话数据库为私有/加密格式,当前无法稳定建立“会话名 -> 本地缓存目录”的强映射。
|
|
@@ -158,10 +168,10 @@ GitHub 备选方式(无 npm 包依赖):
|
|
|
158
168
|
curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash
|
|
159
169
|
```
|
|
160
170
|
|
|
161
|
-
若需安装指定版本标签(例如 `v1.
|
|
171
|
+
若需安装指定版本标签(例如 `v1.3.0`):
|
|
162
172
|
|
|
163
173
|
```bash
|
|
164
|
-
curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash -s -- --ref v1.
|
|
174
|
+
curl -fsSL https://raw.githubusercontent.com/MisonL/wecom-cleaner/main/scripts/install-skill.sh | bash -s -- --ref v1.3.0
|
|
165
175
|
```
|
|
166
176
|
|
|
167
177
|
Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`):
|
|
@@ -172,6 +182,8 @@ Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`
|
|
|
172
182
|
- `restore_batch_report.sh`:批次恢复任务卡片
|
|
173
183
|
- `recycle_maintain_report.sh`:回收区治理任务卡片
|
|
174
184
|
- `doctor_report.sh`:系统自检任务卡片
|
|
185
|
+
- `check_update_report.sh`:检查更新任务卡片
|
|
186
|
+
- `upgrade_report.sh`:程序升级任务卡片(默认预演)
|
|
175
187
|
|
|
176
188
|
## 常用参数
|
|
177
189
|
|
|
@@ -190,6 +202,8 @@ Agent 侧统一任务入口脚本(位于 `skills/wecom-cleaner-agent/scripts/`
|
|
|
190
202
|
- `--restore-batch <batchId>`
|
|
191
203
|
- `--recycle-maintain`
|
|
192
204
|
- `--doctor`
|
|
205
|
+
- `--check-update`
|
|
206
|
+
- `--upgrade <npm|github-script>`
|
|
193
207
|
|
|
194
208
|
### 无交互安全规则
|
|
195
209
|
|
|
@@ -229,6 +243,15 @@ wecom-cleaner --restore-batch 20260226-105009-ffa098 --conflict rename
|
|
|
229
243
|
|
|
230
244
|
# 系统自检(默认 JSON 输出)
|
|
231
245
|
wecom-cleaner --doctor
|
|
246
|
+
|
|
247
|
+
# 检查更新(不执行升级)
|
|
248
|
+
wecom-cleaner --check-update --output text
|
|
249
|
+
|
|
250
|
+
# 执行升级(npm 默认方式)
|
|
251
|
+
wecom-cleaner --upgrade npm --upgrade-yes
|
|
252
|
+
|
|
253
|
+
# 执行升级(GitHub 托管脚本方式)
|
|
254
|
+
wecom-cleaner --upgrade github-script --upgrade-version 1.3.1 --upgrade-yes
|
|
232
255
|
```
|
|
233
256
|
|
|
234
257
|
### 输出与兼容参数
|
|
@@ -239,6 +262,9 @@ wecom-cleaner --doctor
|
|
|
239
262
|
- `--save-config`:将本次全局配置参数写回 `config.json`。
|
|
240
263
|
- `--help` / `-h`:输出命令帮助并退出。
|
|
241
264
|
- `--version` / `-v`:输出版本号并退出。
|
|
265
|
+
- `--upgrade-channel stable|pre`:升级检查通道(稳定版/预发布)。
|
|
266
|
+
- `--upgrade-version <x.y.z>`:指定升级目标版本。
|
|
267
|
+
- `--upgrade-yes`:确认执行升级动作(无此参数将拒绝执行升级)。
|
|
242
268
|
|
|
243
269
|
### 各动作关键统计字段(JSON)
|
|
244
270
|
|
|
@@ -301,6 +327,23 @@ wecom-cleaner --doctor
|
|
|
301
327
|
- `data.metrics`:账号数、回收区占用、外部存储等关键指标
|
|
302
328
|
- `data.runtime`:运行时环境信息
|
|
303
329
|
|
|
330
|
+
#### `check-update`
|
|
331
|
+
|
|
332
|
+
- `summary.checked`:是否完成检查
|
|
333
|
+
- `summary.hasUpdate`:是否发现新版本
|
|
334
|
+
- `summary.currentVersion` / `latestVersion`
|
|
335
|
+
- `summary.source`:`npm` 或 `github`
|
|
336
|
+
- `summary.channel`:`stable` 或 `pre`
|
|
337
|
+
- `data.update`:检查详情(含 `errors`、`checkReason`、`checkedAt`)
|
|
338
|
+
|
|
339
|
+
#### `upgrade`
|
|
340
|
+
|
|
341
|
+
- `summary.executed`:是否执行了升级命令
|
|
342
|
+
- `summary.method`:`npm` 或 `github-script`
|
|
343
|
+
- `summary.targetVersion`:目标版本
|
|
344
|
+
- `summary.status`:升级命令退出码
|
|
345
|
+
- `data.upgrade.command`:实际执行命令
|
|
346
|
+
|
|
304
347
|
### 全局参数
|
|
305
348
|
|
|
306
349
|
- `--root <path>`:Profile 根目录
|
|
@@ -326,6 +369,7 @@ wecom-cleaner --doctor
|
|
|
326
369
|
- `WECOM_CLEANER_NATIVE_DOWNLOAD_TIMEOUT_MS=<ms>`:下载超时(默认 `15000`)
|
|
327
370
|
- `WECOM_CLEANER_NATIVE_PROBE_TIMEOUT_MS=<ms>`:核心探针超时(默认 `3000`,最小 `500`)
|
|
328
371
|
- `WECOM_CLEANER_EXTERNAL_AUTO_DETECT=true|false`:外部存储自动探测总开关
|
|
372
|
+
- `WECOM_CLEANER_AUTO_UPDATE=true|false`:自主升级自动检查总开关(默认 `true`)
|
|
329
373
|
|
|
330
374
|
## 数据与审计文件
|
|
331
375
|
|
|
@@ -384,19 +428,25 @@ npm run format:check
|
|
|
384
428
|
发布前推荐全量门禁:
|
|
385
429
|
|
|
386
430
|
```bash
|
|
431
|
+
npm run format:check
|
|
387
432
|
npm run check
|
|
388
433
|
npm run test:coverage:check
|
|
389
|
-
npm run
|
|
434
|
+
npm run release:gate
|
|
390
435
|
npm run e2e:smoke -- --keep
|
|
391
436
|
npm run pack:tgz:dry-run
|
|
392
437
|
```
|
|
393
438
|
|
|
394
439
|
当前基线(主分支):
|
|
395
440
|
|
|
396
|
-
- 单元测试:`
|
|
397
|
-
- 覆盖率:`statements
|
|
441
|
+
- 单元测试:`100/100` 通过。
|
|
442
|
+
- 覆盖率:`statements 87.63%`,`branches 74.03%`,`functions 92.47%`,`lines 87.63%`。
|
|
398
443
|
- 全菜单 smoke:通过(含恢复冲突分支与 doctor JSON 分支)。
|
|
399
444
|
|
|
445
|
+
## 测试矩阵
|
|
446
|
+
|
|
447
|
+
- 场景矩阵与断言模板见:[`docs/TEST_MATRIX.md`](./docs/TEST_MATRIX.md)
|
|
448
|
+
- 新增动作或输出字段时,需同步更新矩阵并补对应测试。
|
|
449
|
+
|
|
400
450
|
## 发布与打包
|
|
401
451
|
|
|
402
452
|
`prepack` 会自动执行:
|
|
@@ -423,26 +473,28 @@ npm run pack:tgz
|
|
|
423
473
|
|
|
424
474
|
```bash
|
|
425
475
|
# 1) 发布前检查
|
|
476
|
+
npm run format:check
|
|
426
477
|
npm run check
|
|
427
478
|
npm run test:coverage:check
|
|
428
|
-
npm run
|
|
479
|
+
npm run release:gate
|
|
429
480
|
npm run e2e:smoke
|
|
430
481
|
npm run pack:tgz
|
|
431
482
|
npm run pack:release-assets
|
|
432
483
|
|
|
433
484
|
# 2) 推送主分支与标签
|
|
485
|
+
VERSION="1.3.0"
|
|
434
486
|
git push origin main
|
|
435
|
-
git tag
|
|
436
|
-
git push origin
|
|
487
|
+
git tag "v${VERSION}"
|
|
488
|
+
git push origin "v${VERSION}"
|
|
437
489
|
|
|
438
490
|
# 3) 发布 GitHub Release(附 npm 包 + 双架构核心附件)
|
|
439
|
-
gh release create
|
|
440
|
-
--title "
|
|
441
|
-
--notes-file docs/releases/
|
|
442
|
-
wecom-cleaner
|
|
443
|
-
dist/release/wecom-cleaner-core-
|
|
444
|
-
dist/release/wecom-cleaner-core-
|
|
445
|
-
dist/release/wecom-cleaner-core-
|
|
491
|
+
gh release create "v${VERSION}" \
|
|
492
|
+
--title "v${VERSION}" \
|
|
493
|
+
--notes-file "docs/releases/v${VERSION}.md" \
|
|
494
|
+
"wecom-cleaner-${VERSION}.tgz" \
|
|
495
|
+
"dist/release/wecom-cleaner-core-v${VERSION}-darwin-x64" \
|
|
496
|
+
"dist/release/wecom-cleaner-core-v${VERSION}-darwin-arm64" \
|
|
497
|
+
"dist/release/wecom-cleaner-core-v${VERSION}-SHA256SUMS.txt"
|
|
446
498
|
|
|
447
499
|
# 4) 发布 npm
|
|
448
500
|
npm publish --access public
|
|
@@ -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
|
|
|
@@ -50,6 +52,7 @@ JSON 顶层字段:
|
|
|
50
52
|
- `errors`:错误数组(`code`、`message`、可选路径字段)
|
|
51
53
|
- `data`:动作明细数据
|
|
52
54
|
- `meta`:元信息(版本、耗时、引擎、时间戳等)
|
|
55
|
+
- `data.userFacingSummary`:统一的用户侧结果摘要(范围 + 结果 + 关键分布)
|
|
53
56
|
|
|
54
57
|
`cleanup_monthly` 常见 `summary` 字段:
|
|
55
58
|
|
|
@@ -164,6 +167,32 @@ JSON 顶层字段:
|
|
|
164
167
|
- `metrics`:关键计数与容量
|
|
165
168
|
- `runtime`:平台与运行时信息
|
|
166
169
|
|
|
170
|
+
`check_update` 常见 `summary` 字段:
|
|
171
|
+
|
|
172
|
+
- `checked`
|
|
173
|
+
- `hasUpdate`
|
|
174
|
+
- `currentVersion` / `latestVersion`
|
|
175
|
+
- `source`
|
|
176
|
+
- `channel`
|
|
177
|
+
- `skippedByUser`
|
|
178
|
+
|
|
179
|
+
`check_update` 的 `data`:
|
|
180
|
+
|
|
181
|
+
- `update`:更新检查详情(`checkedAt`、`checkReason`、`errors`、`upgradeMethods`)
|
|
182
|
+
|
|
183
|
+
`upgrade` 常见 `summary` 字段:
|
|
184
|
+
|
|
185
|
+
- `executed`
|
|
186
|
+
- `method`
|
|
187
|
+
- `targetVersion`
|
|
188
|
+
- `status`
|
|
189
|
+
- `command`
|
|
190
|
+
|
|
191
|
+
`upgrade` 的 `data`:
|
|
192
|
+
|
|
193
|
+
- `upgrade`:升级执行结果(stdout/stderr/exit status)
|
|
194
|
+
- `update`:升级前检查结果(若有)
|
|
195
|
+
|
|
167
196
|
## 5. 退出码
|
|
168
197
|
|
|
169
198
|
- `0`:执行成功(含 dry-run 成功)
|
|
@@ -183,6 +212,9 @@ JSON 顶层字段:
|
|
|
183
212
|
- `--interactive`:强制交互模式(与无交互动作参数互斥使用时,优先按交互模式执行)
|
|
184
213
|
- `--force`:锁异常场景下强制清理并继续(兜底参数)
|
|
185
214
|
- `--save-config`:把本次全局参数落盘到 `config.json`
|
|
215
|
+
- `--upgrade-channel <stable|pre>`:更新通道(稳定版/预发布)
|
|
216
|
+
- `--upgrade-version <x.y.z>`:升级到指定版本
|
|
217
|
+
- `--upgrade-yes`:确认执行升级(无此参数将拒绝执行升级)
|
|
186
218
|
|
|
187
219
|
## 7. 动作参数
|
|
188
220
|
|
|
@@ -234,6 +266,26 @@ JSON 顶层字段:
|
|
|
234
266
|
|
|
235
267
|
- 无动作专属参数;只读执行,返回健康报告。
|
|
236
268
|
|
|
269
|
+
### 7.7 `--check-update`
|
|
270
|
+
|
|
271
|
+
- `--upgrade-channel <stable|pre>`(可选,默认读取配置)
|
|
272
|
+
|
|
273
|
+
说明:
|
|
274
|
+
|
|
275
|
+
- 手动触发版本检查,不执行升级动作。
|
|
276
|
+
- 检测优先 npm,失败自动回退 GitHub。
|
|
277
|
+
|
|
278
|
+
### 7.8 `--upgrade <npm|github-script>`
|
|
279
|
+
|
|
280
|
+
- `--upgrade-version <x.y.z>`(可选;缺省时先检查更新并升级到最新)
|
|
281
|
+
- `--upgrade-channel <stable|pre>`(可选)
|
|
282
|
+
- `--upgrade-yes`(必填确认)
|
|
283
|
+
|
|
284
|
+
说明:
|
|
285
|
+
|
|
286
|
+
- `npm`:执行 `npm i -g @mison/wecom-cleaner@<version>`
|
|
287
|
+
- `github-script`:执行 GitHub 托管脚本 `scripts/upgrade.sh`
|
|
288
|
+
|
|
237
289
|
## 8. 兼容参数
|
|
238
290
|
|
|
239
291
|
- `--mode`:兼容旧调用,会映射到动作参数并附带 warning,建议迁移。
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# 测试矩阵(稳定性与极端场景)
|
|
2
|
+
|
|
3
|
+
本文用于约束 `wecom-cleaner` 在复杂组合场景与极端输入下的行为一致性,避免“看似成功但语义错误”。
|
|
4
|
+
|
|
5
|
+
## 目标
|
|
6
|
+
|
|
7
|
+
- 覆盖高风险动作:年月清理、全量空间治理、恢复、回收区治理。
|
|
8
|
+
- 锁定无交互契约:JSON 字段兼容、退出码语义稳定、text 卡片结论可读。
|
|
9
|
+
- 验证边界安全:路径越界、符号链接逃逸、索引异常、权限失败、并发竞争。
|
|
10
|
+
|
|
11
|
+
## 维度定义
|
|
12
|
+
|
|
13
|
+
### 维度 A:入口
|
|
14
|
+
|
|
15
|
+
- 交互模式(TUI)
|
|
16
|
+
- 无交互 CLI(`--output json|text`)
|
|
17
|
+
- Agent 脚本(`skills/wecom-cleaner-agent/scripts/*.sh`)
|
|
18
|
+
|
|
19
|
+
### 维度 B:动作
|
|
20
|
+
|
|
21
|
+
- `cleanup_monthly`
|
|
22
|
+
- `analysis_only`
|
|
23
|
+
- `space_governance`
|
|
24
|
+
- `restore`
|
|
25
|
+
- `recycle_maintain`
|
|
26
|
+
- `doctor`
|
|
27
|
+
- `check_update`
|
|
28
|
+
- `upgrade`
|
|
29
|
+
|
|
30
|
+
### 维度 C:范围组合
|
|
31
|
+
|
|
32
|
+
- 账号:`current` / `all` / 指定 ID 集合
|
|
33
|
+
- 月份:显式 `--months` / `--cutoff-month` / 自动窗口
|
|
34
|
+
- 类别:默认 / 指定列表 / `all`
|
|
35
|
+
- 文件存储目录来源:`preset` / `configured` / `auto` / `all`
|
|
36
|
+
|
|
37
|
+
### 维度 D:执行模式
|
|
38
|
+
|
|
39
|
+
- dry-run(预演)
|
|
40
|
+
- 真实执行(`--dry-run false --yes`)
|
|
41
|
+
- 真实执行后复核(同条件二次运行)
|
|
42
|
+
|
|
43
|
+
### 维度 E:异常与边界
|
|
44
|
+
|
|
45
|
+
- 路径越界(`../`、绝对路径、非法根目录)
|
|
46
|
+
- 符号链接逃逸(raw 路径在根内,realpath 在根外)
|
|
47
|
+
- 索引异常(损坏行、批次根不一致、异常 `batchId`)
|
|
48
|
+
- 系统失败(`EACCES`、`ENOENT`、`ENOSPC`)
|
|
49
|
+
- 并发锁冲突与陈旧锁恢复
|
|
50
|
+
|
|
51
|
+
### 维度 F:规模
|
|
52
|
+
|
|
53
|
+
- 小样本(< 50 目录)
|
|
54
|
+
- 中样本(50~500 目录)
|
|
55
|
+
- 大样本(> 500 目录,强调耗时与稳定性)
|
|
56
|
+
|
|
57
|
+
## 关键断言模板(每个场景最少验证)
|
|
58
|
+
|
|
59
|
+
### 1) 退出码
|
|
60
|
+
|
|
61
|
+
- `0`:动作完成(可含业务失败明细)
|
|
62
|
+
- `2`:参数/用法错误
|
|
63
|
+
- `3`:真实执行缺少 `--yes`
|
|
64
|
+
|
|
65
|
+
### 2) JSON 契约(无交互)
|
|
66
|
+
|
|
67
|
+
必须存在且类型稳定:
|
|
68
|
+
|
|
69
|
+
- `ok: boolean`
|
|
70
|
+
- `action: string`
|
|
71
|
+
- `dryRun: boolean | null`
|
|
72
|
+
- `summary: object`
|
|
73
|
+
- `warnings: array`
|
|
74
|
+
- `errors: array`
|
|
75
|
+
- `meta.durationMs: number`
|
|
76
|
+
- `meta.engine: string`
|
|
77
|
+
|
|
78
|
+
### 3) 业务语义
|
|
79
|
+
|
|
80
|
+
- dry-run 不修改源目录
|
|
81
|
+
- 真实执行删除采用“移动到回收区”,可按批次恢复
|
|
82
|
+
- 无目标场景不得生成真实批次(或写入误导性“成功删除”)
|
|
83
|
+
- 部分失败时必须可见失败统计与错误明细
|
|
84
|
+
|
|
85
|
+
### 4) 审计一致性
|
|
86
|
+
|
|
87
|
+
- `index.jsonl` 记录动作、状态、路径、错误类型
|
|
88
|
+
- 越界/异常路径必须落审计(`error_type=PATH_VALIDATION_FAILED`)
|
|
89
|
+
- 回收区治理异常批次不得触发越界删除
|
|
90
|
+
|
|
91
|
+
## 最小必跑清单(回归基线)
|
|
92
|
+
|
|
93
|
+
1. `cleanup_monthly`:`--cutoff-month` + `--output json` + dry-run(有目标 / 无目标)
|
|
94
|
+
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 报告脚本:成功、无目标、失败三态退出码与卡片完整性
|
|
102
|
+
|
|
103
|
+
## 当前门禁(执行顺序)
|
|
104
|
+
|
|
105
|
+
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`
|
|
109
|
+
|
|
110
|
+
说明:若新增动作/字段,需先补此文档矩阵与断言,再提交实现。
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# v1.2.1 发布说明
|
|
2
|
+
|
|
3
|
+
发布日期:2026-02-26
|
|
4
|
+
|
|
5
|
+
## 亮点
|
|
6
|
+
|
|
7
|
+
- 发布流程新增一键门禁:`npm run release:gate`,统一覆盖格式检查、语法检查、覆盖率门禁、Shell 脚本静态检查、E2E smoke 与打包预演。
|
|
8
|
+
- 回收区治理安全性进一步增强:新增 `realpath` 级边界校验,拦截符号链接越界路径。
|
|
9
|
+
- Agent 无交互脚本失败语义加固:失败时稳定返回非 0 退出码并输出可读错误原因,避免自动化误判成功。
|
|
10
|
+
|
|
11
|
+
## 重要修复
|
|
12
|
+
|
|
13
|
+
- 修复回收区治理的符号链接逃逸风险(`recycle_path_symlink_escape` / `batch_root_symlink_escape` 等)。
|
|
14
|
+
- 修复 `recycle_maintain` 业务失败场景下无交互契约测试断言,确保“退出码 + JSON 输出”语义一致。
|
|
15
|
+
- 修复报告脚本在 `set -u` 下错误分支变量展开异常,避免失败被错误吞掉。
|
|
16
|
+
|
|
17
|
+
## 质量状态
|
|
18
|
+
|
|
19
|
+
- 发布门禁:全部通过。
|
|
20
|
+
- 单元测试:`91/91` 通过。
|
|
21
|
+
- 覆盖率(门禁):
|
|
22
|
+
- statements:`88.49%`
|
|
23
|
+
- branches:`75.01%`
|
|
24
|
+
- functions:`95.02%`
|
|
25
|
+
- lines:`88.49%`
|
|
26
|
+
|
|
27
|
+
## 资产
|
|
28
|
+
|
|
29
|
+
- npm 包:`wecom-cleaner-1.2.1.tgz`
|
|
30
|
+
- GitHub Release 附件:
|
|
31
|
+
- `wecom-cleaner-core-v1.2.1-darwin-x64`
|
|
32
|
+
- `wecom-cleaner-core-v1.2.1-darwin-arm64`
|
|
33
|
+
- `wecom-cleaner-core-v1.2.1-SHA256SUMS.txt`
|
|
@@ -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`
|
|
Binary file
|
|
Binary file
|
package/native/manifest.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
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.
|
|
7
|
+
"sha256": "1ea550528055b97e26a76de7d33ca7c445f7dcedf36b21c0cfe1ef7e0f9841bf",
|
|
8
|
+
"url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.0/wecom-cleaner-core-v1.3.0-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.
|
|
12
|
+
"sha256": "2819be9b6108435d94f9a6f5cd0f4e219c335925239366f76fe8a22da023a736",
|
|
13
|
+
"url": "https://github.com/MisonL/wecom-cleaner/releases/download/v1.3.0/wecom-cleaner-core-v1.3.0-darwin-arm64"
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
package/native/zig/src/main.zig
CHANGED
|
@@ -57,7 +57,7 @@ fn dirTreeSize(dir: *std.fs.Dir) !u64 {
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
fn printPing(writer: *std.Io.Writer) !void {
|
|
60
|
-
try writer.writeAll("{\"ok\":true,\"engine\":\"zig\",\"version\":\"1.
|
|
60
|
+
try writer.writeAll("{\"ok\":true,\"engine\":\"zig\",\"version\":\"1.3.0\"}\n");
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
fn runDu(args: []const []const u8, writer: *std.Io.Writer) !void {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mison/wecom-cleaner",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "企业微信本地聊天缓存清理工具(交互式 CLI/TUI)",
|
|
5
5
|
"author": "MisonL",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"format:check": "prettier --check .",
|
|
44
44
|
"check": "node --check src/*.js",
|
|
45
45
|
"e2e:smoke": "bash scripts/e2e-smoke.sh",
|
|
46
|
+
"release:gate": "bash scripts/release-gate.sh",
|
|
46
47
|
"prepack": "npm run build:native:release && npm run check",
|
|
47
48
|
"pack:tgz": "node scripts/pack-tgz.js",
|
|
48
49
|
"pack:tgz:dry-run": "node scripts/pack-tgz.js --dry-run",
|
|
@@ -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,10 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
|
|
|
16
16
|
1. 全程只用无交互命令(禁止直接运行 `wecom-cleaner` 进入 TUI)。
|
|
17
17
|
2. 优先脚本入口,禁止手写三步命令流(除非脚本失败或缺失)。
|
|
18
18
|
3. 破坏性动作(清理/治理/恢复/回收区治理)默认预演;真实执行必须有明确授权。
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
19
|
+
4. 升级动作默认只做检查或预演(`--execute false`);真实升级必须有明确授权。
|
|
20
|
+
5. 若预演命中为 `0`,必须结束并说明“无需执行”,不得继续真实执行。
|
|
21
|
+
6. 最终汇报必须是中文用户视角,先结论再细节,并解释关键指标含义。
|
|
22
|
+
7. 禁止在终端回显完整 JSON;只输出人类可读摘要。
|
|
22
23
|
|
|
23
24
|
## 动作到脚本映射(必须)
|
|
24
25
|
|
|
@@ -28,6 +29,8 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
|
|
|
28
29
|
- 恢复已删除批次:`scripts/restore_batch_report.sh`
|
|
29
30
|
- 回收区治理:`scripts/recycle_maintain_report.sh`
|
|
30
31
|
- 系统自检:`scripts/doctor_report.sh`
|
|
32
|
+
- 检查更新:`scripts/check_update_report.sh`
|
|
33
|
+
- 程序升级:`scripts/upgrade_report.sh`
|
|
31
34
|
|
|
32
35
|
调用顺序:
|
|
33
36
|
|
|
@@ -37,9 +40,10 @@ description: 用于执行和编排 wecom-cleaner 的无交互 Agent 技能。当
|
|
|
37
40
|
|
|
38
41
|
## 脚本调用约定
|
|
39
42
|
|
|
40
|
-
- 默认 `--execute false
|
|
43
|
+
- 默认 `--execute false`(仅预演 / 不落地)。
|
|
41
44
|
- 用户明确“现在执行/开始清理/确认执行”时才传 `--execute true`。
|
|
42
45
|
- 破坏性动作脚本内部会做:预演 ->(可选)真实执行 ->(可选)复核。
|
|
46
|
+
- 升级脚本默认“检查 + 预演”;只有明确授权才执行真实升级。
|
|
43
47
|
|
|
44
48
|
推荐参数:
|
|
45
49
|
|
|
@@ -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。'
|
|
5
5
|
brand_color: '#0EA5E9'
|
|
@@ -44,6 +44,23 @@ bash scripts/recycle_maintain_report.sh --execute true
|
|
|
44
44
|
bash scripts/doctor_report.sh
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
+
### 1.7 检查更新(只读)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
bash scripts/check_update_report.sh --channel stable
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 1.8 程序升级
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# 默认仅预演(不执行真实升级)
|
|
57
|
+
bash scripts/upgrade_report.sh --method npm --execute false
|
|
58
|
+
|
|
59
|
+
# 明确授权后执行真实升级
|
|
60
|
+
bash scripts/upgrade_report.sh --method npm --execute true
|
|
61
|
+
bash scripts/upgrade_report.sh --method github-script --version 1.3.0 --execute true
|
|
62
|
+
```
|
|
63
|
+
|
|
47
64
|
## 2. 常用全局参数
|
|
48
65
|
|
|
49
66
|
以上脚本都支持透传关键参数(按动作有所不同):
|
|
@@ -80,6 +97,13 @@ wecom-cleaner --recycle-maintain --output json
|
|
|
80
97
|
|
|
81
98
|
# 系统自检
|
|
82
99
|
wecom-cleaner --doctor --output json
|
|
100
|
+
|
|
101
|
+
# 检查更新
|
|
102
|
+
wecom-cleaner --check-update --output json
|
|
103
|
+
|
|
104
|
+
# 程序升级(必须带 --upgrade-yes)
|
|
105
|
+
wecom-cleaner --upgrade npm --upgrade-yes --output json
|
|
106
|
+
wecom-cleaner --upgrade github-script --upgrade-version 1.3.0 --upgrade-yes --output json
|
|
83
107
|
```
|
|
84
108
|
|
|
85
109
|
## 4. 退出码约定
|