@mison/wecom-cleaner 1.2.1 → 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 +57 -13
- package/docs/NON_INTERACTIVE_SPEC.md +52 -0
- package/docs/TEST_MATRIX.md +6 -2
- 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 +1 -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/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/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.
|
|
171
|
+
若需安装指定版本标签(例如 `v1.3.0`):
|
|
163
172
|
|
|
164
173
|
```bash
|
|
165
|
-
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
|
|
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
|
|
|
@@ -230,6 +243,15 @@ wecom-cleaner --restore-batch 20260226-105009-ffa098 --conflict rename
|
|
|
230
243
|
|
|
231
244
|
# 系统自检(默认 JSON 输出)
|
|
232
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
|
|
233
255
|
```
|
|
234
256
|
|
|
235
257
|
### 输出与兼容参数
|
|
@@ -240,6 +262,9 @@ wecom-cleaner --doctor
|
|
|
240
262
|
- `--save-config`:将本次全局配置参数写回 `config.json`。
|
|
241
263
|
- `--help` / `-h`:输出命令帮助并退出。
|
|
242
264
|
- `--version` / `-v`:输出版本号并退出。
|
|
265
|
+
- `--upgrade-channel stable|pre`:升级检查通道(稳定版/预发布)。
|
|
266
|
+
- `--upgrade-version <x.y.z>`:指定升级目标版本。
|
|
267
|
+
- `--upgrade-yes`:确认执行升级动作(无此参数将拒绝执行升级)。
|
|
243
268
|
|
|
244
269
|
### 各动作关键统计字段(JSON)
|
|
245
270
|
|
|
@@ -302,6 +327,23 @@ wecom-cleaner --doctor
|
|
|
302
327
|
- `data.metrics`:账号数、回收区占用、外部存储等关键指标
|
|
303
328
|
- `data.runtime`:运行时环境信息
|
|
304
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
|
+
|
|
305
347
|
### 全局参数
|
|
306
348
|
|
|
307
349
|
- `--root <path>`:Profile 根目录
|
|
@@ -327,6 +369,7 @@ wecom-cleaner --doctor
|
|
|
327
369
|
- `WECOM_CLEANER_NATIVE_DOWNLOAD_TIMEOUT_MS=<ms>`:下载超时(默认 `15000`)
|
|
328
370
|
- `WECOM_CLEANER_NATIVE_PROBE_TIMEOUT_MS=<ms>`:核心探针超时(默认 `3000`,最小 `500`)
|
|
329
371
|
- `WECOM_CLEANER_EXTERNAL_AUTO_DETECT=true|false`:外部存储自动探测总开关
|
|
372
|
+
- `WECOM_CLEANER_AUTO_UPDATE=true|false`:自主升级自动检查总开关(默认 `true`)
|
|
330
373
|
|
|
331
374
|
## 数据与审计文件
|
|
332
375
|
|
|
@@ -395,8 +438,8 @@ npm run pack:tgz:dry-run
|
|
|
395
438
|
|
|
396
439
|
当前基线(主分支):
|
|
397
440
|
|
|
398
|
-
- 单元测试:`
|
|
399
|
-
- 覆盖率:`statements
|
|
441
|
+
- 单元测试:`100/100` 通过。
|
|
442
|
+
- 覆盖率:`statements 87.63%`,`branches 74.03%`,`functions 92.47%`,`lines 87.63%`。
|
|
400
443
|
- 全菜单 smoke:通过(含恢复冲突分支与 doctor JSON 分支)。
|
|
401
444
|
|
|
402
445
|
## 测试矩阵
|
|
@@ -439,18 +482,19 @@ npm run pack:tgz
|
|
|
439
482
|
npm run pack:release-assets
|
|
440
483
|
|
|
441
484
|
# 2) 推送主分支与标签
|
|
485
|
+
VERSION="1.3.0"
|
|
442
486
|
git push origin main
|
|
443
|
-
git tag
|
|
444
|
-
git push origin
|
|
487
|
+
git tag "v${VERSION}"
|
|
488
|
+
git push origin "v${VERSION}"
|
|
445
489
|
|
|
446
490
|
# 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-
|
|
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"
|
|
454
498
|
|
|
455
499
|
# 4) 发布 npm
|
|
456
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,建议迁移。
|
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
|
|
|
@@ -94,13 +96,15 @@
|
|
|
94
96
|
4. `restore`:`skip/overwrite/rename` 三冲突策略
|
|
95
97
|
5. `recycle_maintain`:`disabled` / `no_candidate` / `partial_failed`
|
|
96
98
|
6. `doctor`:只读模式不创建状态目录
|
|
97
|
-
7.
|
|
99
|
+
7. `check_update`:npm 正常 / npm 失败回退 GitHub / 全部失败
|
|
100
|
+
8. `upgrade`:未确认拒绝、已是最新不执行、执行失败可返回非 0
|
|
101
|
+
9. Agent 报告脚本:成功、无目标、失败三态退出码与卡片完整性
|
|
98
102
|
|
|
99
103
|
## 当前门禁(执行顺序)
|
|
100
104
|
|
|
101
105
|
1. `npm run check`
|
|
102
106
|
2. `npm run test:coverage:check`
|
|
103
|
-
3. `shellcheck skills/wecom-cleaner-agent/scripts/*.sh`
|
|
107
|
+
3. `shellcheck skills/wecom-cleaner-agent/scripts/*.sh scripts/upgrade.sh scripts/install-skill.sh scripts/release-gate.sh`
|
|
104
108
|
4. `npm run e2e:smoke`
|
|
105
109
|
|
|
106
110
|
说明:若新增动作/字段,需先补此文档矩阵与断言,再提交实现。
|
|
@@ -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: 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. 退出码约定
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
usage() {
|
|
5
|
+
cat <<'EOF'
|
|
6
|
+
用法:
|
|
7
|
+
check_update_report.sh [--channel stable|pre] [--root <path>] [--state-root <path>]
|
|
8
|
+
|
|
9
|
+
说明:
|
|
10
|
+
- 执行“检查更新(只读)”,不做任何安装动作。
|
|
11
|
+
- 输出用户可读任务卡片。
|
|
12
|
+
EOF
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if ! command -v jq >/dev/null 2>&1; then
|
|
16
|
+
echo "错误:缺少 jq,请先安装(brew install jq)。" >&2
|
|
17
|
+
exit 2
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
if ! command -v wecom-cleaner >/dev/null 2>&1; then
|
|
21
|
+
echo "错误:未找到 wecom-cleaner 命令,请先安装 @mison/wecom-cleaner。" >&2
|
|
22
|
+
exit 2
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
CHANNEL="stable"
|
|
26
|
+
ROOT=""
|
|
27
|
+
STATE_ROOT=""
|
|
28
|
+
|
|
29
|
+
while [[ $# -gt 0 ]]; do
|
|
30
|
+
case "$1" in
|
|
31
|
+
--channel | --upgrade-channel)
|
|
32
|
+
CHANNEL="${2:-stable}"
|
|
33
|
+
shift 2
|
|
34
|
+
;;
|
|
35
|
+
--root)
|
|
36
|
+
ROOT="${2:-}"
|
|
37
|
+
shift 2
|
|
38
|
+
;;
|
|
39
|
+
--state-root)
|
|
40
|
+
STATE_ROOT="${2:-}"
|
|
41
|
+
shift 2
|
|
42
|
+
;;
|
|
43
|
+
-h | --help)
|
|
44
|
+
usage
|
|
45
|
+
exit 0
|
|
46
|
+
;;
|
|
47
|
+
*)
|
|
48
|
+
echo "错误:未知参数 $1" >&2
|
|
49
|
+
usage
|
|
50
|
+
exit 2
|
|
51
|
+
;;
|
|
52
|
+
esac
|
|
53
|
+
done
|
|
54
|
+
|
|
55
|
+
case "$CHANNEL" in
|
|
56
|
+
stable | pre) ;;
|
|
57
|
+
*)
|
|
58
|
+
echo "错误:--channel 只能是 stable 或 pre" >&2
|
|
59
|
+
exit 2
|
|
60
|
+
;;
|
|
61
|
+
esac
|
|
62
|
+
|
|
63
|
+
REPORT_JSON="$(mktemp -t wecom-check-update.XXXX.json)"
|
|
64
|
+
REPORT_ERR="$(mktemp -t wecom-check-update.XXXX.err)"
|
|
65
|
+
trap 'rm -f "$REPORT_JSON" "$REPORT_ERR"' EXIT
|
|
66
|
+
|
|
67
|
+
cmd=(--check-update --output json --upgrade-channel "$CHANNEL")
|
|
68
|
+
if [[ -n "$ROOT" ]]; then
|
|
69
|
+
cmd+=(--root "$ROOT")
|
|
70
|
+
fi
|
|
71
|
+
if [[ -n "$STATE_ROOT" ]]; then
|
|
72
|
+
cmd+=(--state-root "$STATE_ROOT")
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
if ! wecom-cleaner "${cmd[@]}" >"$REPORT_JSON" 2>"$REPORT_ERR"; then
|
|
76
|
+
err_head="$(head -n 3 "$REPORT_ERR" 2>/dev/null || true)"
|
|
77
|
+
echo "执行失败:${err_head:-未知错误}" >&2
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
checked="$(jq -r '.summary.checked // false' "$REPORT_JSON")"
|
|
82
|
+
has_update="$(jq -r '.summary.hasUpdate // false' "$REPORT_JSON")"
|
|
83
|
+
current_version="$(jq -r '.summary.currentVersion // "-"' "$REPORT_JSON")"
|
|
84
|
+
latest_version="$(jq -r '.summary.latestVersion // "-"' "$REPORT_JSON")"
|
|
85
|
+
source_used="$(jq -r '.summary.source // "none"' "$REPORT_JSON")"
|
|
86
|
+
channel_used="$(jq -r '.summary.channel // "stable"' "$REPORT_JSON")"
|
|
87
|
+
skipped_by_user="$(jq -r '.summary.skippedByUser // false' "$REPORT_JSON")"
|
|
88
|
+
duration_ms="$(jq -r '.meta.durationMs // 0' "$REPORT_JSON")"
|
|
89
|
+
warnings_count="$(jq -r '(.warnings // []) | length' "$REPORT_JSON")"
|
|
90
|
+
errors_count="$(jq -r '(.errors // []) | length' "$REPORT_JSON")"
|
|
91
|
+
|
|
92
|
+
source_label="$source_used"
|
|
93
|
+
case "$source_used" in
|
|
94
|
+
npm) source_label="npmjs" ;;
|
|
95
|
+
github) source_label="GitHub Release" ;;
|
|
96
|
+
none) source_label="不可用" ;;
|
|
97
|
+
esac
|
|
98
|
+
|
|
99
|
+
channel_label="稳定版"
|
|
100
|
+
if [[ "$channel_used" == "pre" ]]; then
|
|
101
|
+
channel_label="预发布"
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
if [[ "$checked" != "true" ]]; then
|
|
105
|
+
conclusion="检查失败,请稍后重试。"
|
|
106
|
+
elif [[ "$has_update" == "true" ]]; then
|
|
107
|
+
if [[ "$skipped_by_user" == "true" ]]; then
|
|
108
|
+
conclusion="检测到新版本,但该版本已被设置为跳过提醒。"
|
|
109
|
+
else
|
|
110
|
+
conclusion="检测到新版本,可按你确认后升级。"
|
|
111
|
+
fi
|
|
112
|
+
else
|
|
113
|
+
conclusion="当前已是最新版本。"
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
printf '\n=== 更新检查结果(给用户)===\n'
|
|
117
|
+
printf -- '- 执行结论:%s\n' "$conclusion"
|
|
118
|
+
printf -- '- 本次只做版本检查,不会改动你的数据或本机安装。\n'
|
|
119
|
+
|
|
120
|
+
printf '\n版本信息\n'
|
|
121
|
+
printf -- '- 当前版本:%s\n' "$current_version"
|
|
122
|
+
printf -- '- 最新版本:%s\n' "$latest_version"
|
|
123
|
+
printf -- '- 检查通道:%s\n' "$channel_label"
|
|
124
|
+
printf -- '- 信息来源:%s(先 npm,失败再回退 GitHub)\n' "$source_label"
|
|
125
|
+
printf -- '- 用户跳过提醒:%s\n' "$( [[ "$skipped_by_user" == "true" ]] && printf '是' || printf '否' )"
|
|
126
|
+
|
|
127
|
+
if [[ "$has_update" == "true" && "$skipped_by_user" != "true" ]]; then
|
|
128
|
+
printf '\n建议下一步(需你确认后执行)\n'
|
|
129
|
+
printf -- '- 默认升级方式(npm):wecom-cleaner --upgrade npm --upgrade-version %s --upgrade-yes\n' "$latest_version"
|
|
130
|
+
printf -- '- 备选方式(GitHub 脚本):wecom-cleaner --upgrade github-script --upgrade-version %s --upgrade-yes\n' "$latest_version"
|
|
131
|
+
fi
|
|
132
|
+
|
|
133
|
+
printf '\n运行状态\n'
|
|
134
|
+
printf -- '- 耗时:%s ms\n' "$duration_ms"
|
|
135
|
+
printf -- '- 告警:%s\n' "$warnings_count"
|
|
136
|
+
printf -- '- 错误:%s\n' "$errors_count"
|
|
137
|
+
|
|
138
|
+
printf '\n指标释义\n'
|
|
139
|
+
printf -- '- 当前版本:你本机 wecom-cleaner 版本。\n'
|
|
140
|
+
printf -- '- 最新版本:按所选通道可获取的最新可用版本。\n'
|
|
141
|
+
printf -- '- 用户跳过提醒:表示该版本是否被标记为“暂不提醒”。\n'
|