@yoooclaw/phone-notifications 1.12.0 → 1.12.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.
Files changed (78) hide show
  1. package/README.md +212 -29
  2. package/dist/bin/ntf.cjs +918 -113
  3. package/dist/bin/ntf.cjs.map +15 -10
  4. package/dist/cli/helpers.d.ts +27 -0
  5. package/dist/cli/helpers.d.ts.map +1 -1
  6. package/dist/cli/image-list.d.ts +3 -0
  7. package/dist/cli/image-list.d.ts.map +1 -0
  8. package/dist/cli/image-path.d.ts +3 -0
  9. package/dist/cli/image-path.d.ts.map +1 -0
  10. package/dist/cli/image-status.d.ts +3 -0
  11. package/dist/cli/image-status.d.ts.map +1 -0
  12. package/dist/cli/image-storage-path.d.ts +3 -0
  13. package/dist/cli/image-storage-path.d.ts.map +1 -0
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/ntf-query.d.ts +11 -0
  16. package/dist/cli/ntf-query.d.ts.map +1 -1
  17. package/dist/cli/ntf-summary-job.d.ts +3 -0
  18. package/dist/cli/ntf-summary-job.d.ts.map +1 -0
  19. package/dist/cli/ntf-summary.d.ts.map +1 -1
  20. package/dist/cli/ntf-sync.d.ts.map +1 -1
  21. package/dist/env.d.ts +3 -0
  22. package/dist/env.d.ts.map +1 -1
  23. package/dist/image/handler.d.ts +19 -0
  24. package/dist/image/handler.d.ts.map +1 -0
  25. package/dist/image/index.d.ts +3 -0
  26. package/dist/image/index.d.ts.map +1 -0
  27. package/dist/image/store.d.ts +76 -0
  28. package/dist/image/store.d.ts.map +1 -0
  29. package/dist/index.cjs +9089 -7137
  30. package/dist/index.cjs.map +40 -35
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/light-rules/client.d.ts +58 -0
  33. package/dist/light-rules/client.d.ts.map +1 -0
  34. package/dist/light-rules/gateway.d.ts.map +1 -1
  35. package/dist/light-rules/types.d.ts +13 -8
  36. package/dist/light-rules/types.d.ts.map +1 -1
  37. package/dist/notification/storage.d.ts +1 -0
  38. package/dist/notification/storage.d.ts.map +1 -1
  39. package/dist/notification/summary.d.ts +144 -0
  40. package/dist/notification/summary.d.ts.map +1 -0
  41. package/dist/plugin/images.d.ts +16 -0
  42. package/dist/plugin/images.d.ts.map +1 -0
  43. package/dist/plugin/lifecycle.d.ts +2 -0
  44. package/dist/plugin/lifecycle.d.ts.map +1 -1
  45. package/dist/plugin/light-rules-tools.d.ts +2 -2
  46. package/dist/plugin/light-rules-tools.d.ts.map +1 -1
  47. package/dist/plugin/notifications.d.ts +5 -3
  48. package/dist/plugin/notifications.d.ts.map +1 -1
  49. package/dist/plugin/recordings.d.ts.map +1 -1
  50. package/dist/recording/handler.d.ts +1 -0
  51. package/dist/recording/handler.d.ts.map +1 -1
  52. package/dist/recording/index.d.ts +1 -0
  53. package/dist/recording/index.d.ts.map +1 -1
  54. package/dist/recording/result-writer.d.ts +9 -0
  55. package/dist/recording/result-writer.d.ts.map +1 -0
  56. package/dist/recording/storage.d.ts +2 -0
  57. package/dist/recording/storage.d.ts.map +1 -1
  58. package/dist/recording/transcript-document.d.ts +1 -0
  59. package/dist/recording/transcript-document.d.ts.map +1 -1
  60. package/dist/tunnel/frame-slimmer.d.ts +37 -0
  61. package/dist/tunnel/frame-slimmer.d.ts.map +1 -0
  62. package/dist/tunnel/proxy.d.ts.map +1 -1
  63. package/dist/types.d.ts +120 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/update/checker.d.ts +2 -1
  66. package/dist/update/checker.d.ts.map +1 -1
  67. package/dist/update/index.d.ts.map +1 -1
  68. package/openclaw.plugin.json +13 -1
  69. package/package.json +3 -2
  70. package/skills/notification-monitor/SKILL.md +14 -13
  71. package/skills/notification-query/SKILL.md +101 -7
  72. package/skills/notification-to-memory/SKILL.md +57 -22
  73. package/skills/notification-to-memory/references/step-0-preflight.md +0 -40
  74. package/skills/notification-to-memory/references/step-1-scan-pending.md +0 -137
  75. package/skills/notification-to-memory/references/step-2-process-dates.md +0 -98
  76. package/skills/notification-to-memory/references/step-3-check-cron-status.md +0 -38
  77. package/skills/notification-to-memory/references/step-4-final-reporting.md +0 -57
  78. package/skills/notification-to-memory/scripts/select-memory-prompt.sh +0 -18
package/dist/types.d.ts CHANGED
@@ -9,12 +9,19 @@ export interface PluginConfig {
9
9
  asr?: AsrConfig;
10
10
  /** 自动更新配置 */
11
11
  autoUpdate?: AutoUpdateConfig;
12
+ /** 图片同步配置 */
13
+ image?: ImageConfig;
12
14
  /**
13
15
  * jvsclaw 宿主在实例启动时写入的密文;插件用它向 claw-manager/instance/ready 换取 apiKey。
14
16
  * openclaw.json 路径:plugins.entries.phone-notifications.config.link_secret。
15
17
  */
16
18
  link_secret?: string;
17
19
  }
20
+ /** 图片同步配置 */
21
+ export interface ImageConfig {
22
+ /** 单张图片下载大小上限(字节);缺省/<=0 时默认 20MB */
23
+ maxBytes?: number;
24
+ }
18
25
  export interface RawNotification {
19
26
  id: string;
20
27
  app: string;
@@ -178,6 +185,42 @@ export interface RecordingTranscriptItem {
178
185
  startTime?: number;
179
186
  endTime?: number;
180
187
  }
188
+ export interface RecordingResultSourceInfo {
189
+ provider?: string;
190
+ taskId?: string;
191
+ requestId?: string;
192
+ status?: string;
193
+ }
194
+ export interface RecordingResultTranscriptSegment {
195
+ text: string;
196
+ startMs?: number;
197
+ endMs?: number;
198
+ speakerId?: number;
199
+ }
200
+ export interface RecordingResultTranscript {
201
+ generatedAt?: string;
202
+ source?: RecordingResultSourceInfo;
203
+ title?: string;
204
+ category?: string;
205
+ brief?: string;
206
+ text?: string;
207
+ segments?: RecordingResultTranscriptSegment[];
208
+ markdown?: string;
209
+ }
210
+ export interface RecordingResultSummary {
211
+ generatedAt?: string;
212
+ format?: "markdown" | string;
213
+ markdown?: string;
214
+ structured?: unknown;
215
+ }
216
+ /** Gateway Native 模式:recordings.result.write 方法的参数 */
217
+ export interface RecordingResultWriteParams {
218
+ recordingId: string;
219
+ /** 可选:App 侧最终音频 OSS 地址;传入时按 recordings.sync 的下载逻辑后台下载,覆盖本地已有音频 */
220
+ ossUrl?: string;
221
+ transcript?: RecordingResultTranscript;
222
+ summary?: RecordingResultSummary;
223
+ }
181
224
  /** recordings.rename 参数 */
182
225
  export interface RecordingRenameParams {
183
226
  recordingId: string;
@@ -240,6 +283,18 @@ export interface RecordingSyncResult {
240
283
  /** 错误信息 */
241
284
  error?: string;
242
285
  }
286
+ /** recordings.result.write 处理结果 */
287
+ export interface RecordingResultWriteResult {
288
+ ok: boolean;
289
+ recordingId: string;
290
+ transfer_status: RecordingTransferStatus;
291
+ stored: {
292
+ transcriptDataFile?: string;
293
+ transcriptFile?: string;
294
+ summaryFile?: string;
295
+ };
296
+ error?: string;
297
+ }
243
298
  /** ASR 服务配置(§6.2 两层结构:mode 分层 + 各模式独立配置) */
244
299
  export interface AsrConfig {
245
300
  /** 接入方式(§6.2):api = 云端 model-proxy 长录音 ASR,local = 本地 Whisper 转写,yoooclaw = YoooClaw 托管(P2 预留) */
@@ -334,4 +389,69 @@ export interface RecordingAsrInitResult {
334
389
  };
335
390
  error?: string;
336
391
  }
392
+ /** 图片同步状态 */
393
+ export type ImageTransferStatus = "syncing" | "synced" | "sync_failed";
394
+ /** 图片元数据(snake_case,与 CLI image.Metadata 对齐) */
395
+ export interface ImageMetadata {
396
+ /** OSS 图片文件 URL */
397
+ oss_image_url: string;
398
+ /** 图片创建时间 ISO 8601 */
399
+ created_at: string;
400
+ /** MIME 类型,如 "image/png" */
401
+ mime_type?: string;
402
+ /** 宽(像素) */
403
+ width?: number;
404
+ /** 高(像素) */
405
+ height?: number;
406
+ /** 文件大小(字节) */
407
+ size_bytes?: number;
408
+ /** 来源应用 */
409
+ source_app?: string;
410
+ /** 图片说明 */
411
+ caption?: string;
412
+ }
413
+ /** Gateway Native 模式:images.sync 方法的参数(与 CLI SyncPayload 对齐) */
414
+ export interface ImageSyncParams {
415
+ imageId: string;
416
+ image: ImageMetadata;
417
+ }
418
+ /** HTTP 备选模式:POST /images 的请求体 */
419
+ export interface HttpImageBody {
420
+ imageId: string;
421
+ image: ImageMetadata;
422
+ }
423
+ /** images.sync 处理结果(与 CLI IngestResult 对齐) */
424
+ export interface ImageSyncResult {
425
+ ok: boolean;
426
+ imageId: string;
427
+ status: ImageTransferStatus;
428
+ /** 命中去重(同 id+url 已 synced)时为 true */
429
+ deduped?: boolean;
430
+ error?: string;
431
+ }
432
+ /** 图片列表项 */
433
+ export interface ImageListItem {
434
+ imageId: string;
435
+ status: ImageTransferStatus;
436
+ source_app?: string;
437
+ caption?: string;
438
+ mime_type?: string;
439
+ size_bytes?: number;
440
+ created_at: string;
441
+ has_file: boolean;
442
+ localFile?: string;
443
+ syncedAt?: string;
444
+ error?: string;
445
+ }
446
+ /** 单张图片详情 */
447
+ export interface ImageDetail {
448
+ imageId: string;
449
+ clientLabel?: string;
450
+ status: ImageTransferStatus;
451
+ metadata: ImageMetadata;
452
+ localFile?: string;
453
+ thumbnail?: string;
454
+ syncedAt?: string;
455
+ error?: string;
456
+ }
337
457
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,11 @@ export declare class UpdateChecker {
6
6
  private readonly intervalMs;
7
7
  private readonly channel;
8
8
  private readonly baseUrl;
9
+ private readonly getCurrentVersion;
9
10
  private timer;
10
11
  private notifiedVersion;
11
12
  private inflightCheck;
12
- constructor(logger: Logger, onUpdateFound: (info: UpdateInfo) => void, intervalMs: number, channel: "latest" | "beta", baseUrl?: string);
13
+ constructor(logger: Logger, onUpdateFound: (info: UpdateInfo) => void, intervalMs: number, channel: "latest" | "beta", baseUrl?: string, getCurrentVersion?: () => string);
13
14
  start(): void;
14
15
  stop(): void;
15
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/update/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAA2C;gBAG7C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,EACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,GAAG,MAAM,EAC1B,OAAO,GAAE,MAAmC;IAG/D,KAAK,IAAI,IAAI;IAQb,IAAI,IAAI,IAAI;IAOZ;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAQ3B,QAAQ;YAmBR,kBAAkB;YAiBlB,eAAe;CAkC9B"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/update/checker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAVpC,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAA2C;gBAG7C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,EACzC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,GAAG,MAAM,EAC1B,OAAO,GAAE,MAAmC,EAC5C,iBAAiB,GAAE,MAAM,MAA6B;IAGzE,KAAK,IAAI,IAAI;IAQb,IAAI,IAAI,IAAI;IAOZ;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAQ3B,QAAQ;YAoBR,kBAAkB;YAiBlB,eAAe;CAkC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/update/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AA0MpB;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,MAAM,WAAW,GAAG,IAAI,EACtC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,GAAG,SAAS,KAAK,IAAI,EAChE,sBAAsB,CAAC,EAAE,sBAAsB,GAC9C;IACD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC,CA0TA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/update/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAK3C,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AA6OpB;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,MAAM,WAAW,GAAG,IAAI,EACtC,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,GAAG,SAAS,KAAK,IAAI,EAChE,sBAAsB,CAAC,EAAE,sBAAsB,GAC9C;IACD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC,CAuUA"}
@@ -5,7 +5,7 @@
5
5
  "skills": ["./skills"],
6
6
  "contracts": {
7
7
  "tools": [
8
- "light_control",
8
+ "notifications_summary",
9
9
  "lightrules_list",
10
10
  "lightrules_create",
11
11
  "lightrules_update",
@@ -75,6 +75,18 @@
75
75
  "writeOnly": true,
76
76
  "description": "JvsClaw 宿主自动写入的实例密文,用于向 claw-manager/instance/ready 置换 apiKey;通常不需要手动配置"
77
77
  },
78
+ "image": {
79
+ "type": "object",
80
+ "additionalProperties": false,
81
+ "description": "图片同步配置",
82
+ "properties": {
83
+ "maxBytes": {
84
+ "type": "number",
85
+ "description": "单张图片下载大小上限(字节);缺省/<=0 时默认 20MB",
86
+ "default": 20971520
87
+ }
88
+ }
89
+ },
78
90
  "asr": {
79
91
  "type": "object",
80
92
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yoooclaw/phone-notifications",
3
- "version": "1.12.0",
3
+ "version": "1.12.2",
4
4
  "type": "module",
5
5
  "description": "后台同步手机通知数据到本地存储,供 Agent 查询消费",
6
6
  "main": "dist/index.cjs",
@@ -41,7 +41,8 @@
41
41
  "postversion": "git push --follow-tags",
42
42
  "upload": "bun scripts/upload-oss.mjs",
43
43
  "upload:install": "bun scripts/upload-oss.mjs --only install",
44
- "upload:pack": "bun scripts/upload-oss.mjs --only pack"
44
+ "upload:pack": "bun scripts/upload-oss.mjs --only pack",
45
+ "rollback": "bun scripts/rollback-oss.mjs"
45
46
  },
46
47
  "keywords": [
47
48
  "openclaw",
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  name: notification-monitor
3
3
  description: |
4
- 管理基于本地手机通知 JSON 的两类任务:
5
- 1. **灯效规则**(type=light-rule):当收到某类通知时亮灯/闪灯,由插件内事件驱动评估触发。
4
+ 管理两类通知相关任务:
5
+ 1. **灯效规则**:当收到某类通知时亮灯/闪灯,由云端 Notification Intelligence Service 创建、评估和触发。
6
6
  2. **普通通知监控**(type=monitor):按 cron 周期拉取新通知并汇报给用户。
7
7
  当用户说“当老板给我发消息亮红灯”“当有飞书消息时亮蓝灯”“帮我监控某类通知”“新增/修改通知监控任务”“调整通知监控规则或频率”“这个通知监控怎么工作”时激活。
8
8
  通知已经由独立服务写入本地 `notifications/`,不要直接访问微信、支付宝等 App。
@@ -20,7 +20,7 @@ metadata:
20
20
  ## Scope
21
21
 
22
22
  - 这个 skill 用来创建和调整两类任务:**灯效规则** 和 **普通通知监控**。
23
- - 每个需求对应一个独立任务目录。
23
+ - 灯效规则是云端数据;只有普通通知监控需要本地独立任务目录。
24
24
  - 手机通知已经落盘到本地 JSON,**不要**尝试直接访问原始 App。
25
25
  - 与通知无关的一次性灯效要求或长期偏好,不属于本 skill 的处理范围。
26
26
  - Exec 调用规则:等待 `ntf` 命令输出时使用 `yieldMs: 60000`;不要用 `timeout` 作为等待时间。`timeout` 是按秒计算的杀进程上限,默认 1800 秒,除非明确需要终止长时间运行的命令,否则不要写。
@@ -34,26 +34,27 @@ metadata:
34
34
  - **非通知请求**:退出本 skill,按正常方式继续执行用户当前请求。
35
35
  - **模糊需求**(如“有重要消息亮红灯”“监控紧急消息”):先追问判断标准,不要直接替用户定义“重要”“紧急”。判断标准不清楚前,不要创建长期生效的任务。
36
36
 
37
- ## Light Rules (type=light-rule)
37
+ ## Light Rules
38
38
 
39
- 灯效规则由插件**事件驱动**评估:通知落盘后,插件内的 inline evaluator 会调 pi-ai 一次,判断是否命中任一启用的规则,命中则直接触发 `light_control`。**不需要 fetch.py、不需要 cron、不需要 isolated agent session。**
39
+ 灯效规则由云端 Notification Intelligence Service 管理:创建和修改规则时,插件把用户自然语言规则提交给云端独立 Agent;通知到达后的 evaluate、灯效编码、推送和亮灯原因也由云端服务处理。插件侧只调用 `/api/plugin/notification-intelligence/light-rules` 这组 `X-Api-Key-Id` 鉴权的 CRUD API,不调用 App 端 JWT 接口,也不调用 preview / evaluate / import。**不需要 fetch.py、不需要 cron、不需要 isolated agent session。**
40
40
 
41
41
  ### 创建 / 修改 / 删除
42
42
 
43
- **必须通过灯效规则工具完成**,插件会帮你写入 `meta.json`:
43
+ **必须通过灯效规则工具完成**,插件会调用云端 API,不再写本地 `meta.json`:
44
44
 
45
- - 创建:`lightrules_create`(必填 `name`、`description`、`segments`;可选 `repeat_times`)
46
- - 修改 / 启用 / 禁用:`lightrules_update`
45
+ - 创建:`lightrules_create`(必填 `ruleText`,例如“老板发微信时红灯快闪”)
46
+ - 修改 / 启用 / 禁用:`lightrules_update`(优先传 `id`;传 `ruleText` 表示让云端 Agent 重编译,传 `title/enabled/description/segments/repeat_times` 表示普通字段局部更新)
47
47
  - 删除:`lightrules_delete`
48
48
  - 列出:`lightrules_list`
49
49
 
50
50
  **不要**用 `write` / `edit` 直接改 `tasks/*/meta.json`。**不要**为灯效规则创建 fetch.py、README.md 或 cron job。
51
51
 
52
- ### `description` 字段写作要点
52
+ ### `ruleText` / `description` 写作要点
53
53
 
54
- - 这是 evaluator 判断是否命中的唯一依据,用自然语言写清楚“何时触发”。
54
+ - 创建时使用 `ruleText` 承载用户原始自然语言诉求,写清楚“什么通知触发什么灯效”。
55
+ - 普通字段更新里的 `description` 是 evaluator 判断是否命中的依据,用自然语言写清楚“何时触发”。
55
56
  - 写出核心意图与边界(“什么情况算命中、什么情况不算命中”),不要退化成关键词列表。
56
- - 示例:`当微信收到来自老板/领导的消息时触发;普通同事或广告消息不算命中`
57
+ - 示例:`当微信收到来自老板/领导的消息时红灯快闪;普通同事或广告消息不算命中`
57
58
 
58
59
  ### `segments` 与 `repeat_times`
59
60
 
@@ -159,9 +160,9 @@ yieldMs: 60000
159
160
  结束前做一次快速自检:
160
161
 
161
162
  **Light rule 任务**:
162
- - 是否全程通过 `lightrules.*` 工具完成,没有手写 `meta.json`
163
+ - 是否全程通过 `lightrules_*` 工具完成,没有手写 `meta.json`
163
164
  - 没有为灯效规则创建 fetch.py / README.md / cron job
164
- - `description` 清楚地描述了命中边界,不是简单关键词列表
165
+ - `ruleText` 或 `description` 清楚地描述了命中边界,不是简单关键词列表
165
166
 
166
167
  **Monitor 任务**:
167
168
  - fetch 脚本是否仍然保持“增量拉新通知”的简单职责
@@ -1,10 +1,85 @@
1
1
  ---
2
2
  name: notification-query
3
- description: 直接查询手机通知原始数据避免从记忆中检索(即使刚刚更新了记忆)。通知数据会持续更新,因此当用户说“帮我总结下最近的通知”、"查看我的通知"、"最近收到什么消息"、"谁找过我"、"某某给我发过什么"、"昨天有什么通知"、"总结一下我的通知"、"帮我总结最近的通知,约 {数量} 条。(上次总结时间: {YYYY年M月D日 HH:mm})"、或任何通知查询、筛选、汇总、总结相关表达时,都必须重新激活并完整执行本 Skill 的全流程,基于当前最新数据重新查询,不能依赖先前轮次的查询结果或上下文,以避免上下文干扰。
3
+ description: |
4
+ 查询、汇总、总结手机通知/消息。处理一切“通知 / 消息”的查看、筛选、汇总、总结请求,这是唯一对口的 Skill。
5
+ 最高频触发语(必须命中,不能漏):
6
+ - “帮我总结最近的通知,约 {数量} 条。(上次总结时间: {YYYY年M月D日 HH:mm})”
7
+ - “帮我总结最近的通知”“总结下最近的通知”“总结一下我的通知”“总结最近收到的消息”
8
+ 其它触发语:“查看我的通知”“最近收到什么消息”“最近有什么通知”“谁找过我”“某某给我发过什么”“昨天/今天有什么通知”“看看我的微信消息”。
9
+ 简单判定规则:用户话里出现“通知”或“消息”,且想看 / 查 / 筛 / 总结 / 汇总 / 概览其中之一,就立即激活本 Skill。
10
+ 通知数据持续更新:每次都必须重新激活并从头完整执行本 Skill 流程,基于最新数据重新查询,禁止复用上一轮结果、禁止从记忆中检索(即使刚更新过记忆)。
4
11
  ---
5
12
 
6
13
  # 通知查询与总结 Skill
7
14
 
15
+ ## 最常见请求:一步到位(先看这里)
16
+
17
+ 用户说「帮我总结最近的通知,约 X 条」(可能带「上次总结时间」)时,按下面流程做,不要跳过:
18
+
19
+ 1. 取通知数量 X(用户说「约 X 条 / 最近 X 条」就用 X;没说就用 700)。实际命令使用 N:当 X ≤ 3000 时 N=X;当 X > 3000 时 N=3000,本轮最多按最近 3000 条做粗摘要,并在回复中说明覆盖范围。
20
+ 2. 如果用户说「未读通知」,当前通知数据没有独立的已读/未读字段,按「最近通知」处理;不要因为没有未读字段就自行扩大 N。
21
+ 3. 如果 agent tool 列表里有 `notifications_summary`,优先调用这个工具,不要改用 `exec ntf summary`。该工具会在执行过程中向 App 广播 `notification.summary.status` 进度事件,避免用户端看起来卡住;完成后还会广播 `notification.summary.result`,携带可直接展示的完整总结内容。
22
+
23
+ 调用参数:
24
+
25
+ ```json
26
+ {
27
+ "limit": N,
28
+ "chunkSize": 150
29
+ }
30
+ ```
31
+
32
+ 如果用户请求中带「上次总结时间: YYYY年M月D日 HH:mm」,把该时间转成 ISO 8601,加到 `from` 字段:
33
+
34
+ ```json
35
+ {
36
+ "from": "<ISO_TIME>",
37
+ "limit": N,
38
+ "chunkSize": 150
39
+ }
40
+ ```
41
+
42
+ 工具返回 Markdown 摘要输入;基于它输出精简中文总结。
43
+ 4. 如果 `notifications_summary` 工具不可用,再按数量分流使用 CLI:
44
+
45
+ - N ≤ 700:直接执行轻量摘要命令(**不要**用 `ntf search` 把上百条通知全文拉进上下文,会导致回复超时卡死):
46
+
47
+ ```text
48
+ Use exec with:
49
+ command: ntf summary --limit N --sample 12 --top 8 --max-content 60
50
+ yieldMs: 60000
51
+ ```
52
+
53
+ 如果用户请求中带「上次总结时间: YYYY年M月D日 HH:mm」,把该时间转成 ISO 8601,仍然只执行一次摘要命令:
54
+
55
+ ```text
56
+ Use exec with:
57
+ command: ntf summary --from <ISO_TIME> --limit N --sample 12 --top 8 --max-content 60
58
+ yieldMs: 60000
59
+ ```
60
+
61
+ - N > 700:创建分片总结任务并运行自动 runner。不要把分片通知粘贴进回复。
62
+
63
+ ```text
64
+ Use exec with:
65
+ command: ntf summary-job create --limit N --chunk-size 150 --max-content 120
66
+ yieldMs: 60000
67
+ ```
68
+
69
+ 如果带「上次总结时间」,create 命令加 `--from <ISO_TIME>`。创建成功后,取返回的 `id`,执行:
70
+
71
+ ```text
72
+ Use exec with:
73
+ command: ntf summary-job run <id> --max-chunks 30 --include-result
74
+ yieldMs: 60000
75
+ ```
76
+
77
+ 5. 基于工具或命令结果输出精简中文总结:工具路径基于 `notifications_summary` 返回的 Markdown;小批量 CLI 路径基于 `ntf summary` 的聚合统计 / 最近样例 / 主要发送人样例;大批量 CLI 路径基于 `summary-job run` 返回的 `markdown` 或 `resultFile`。先一段整体概览,再按 App 或发送人分组,每组最多 3-5 条要点,不逐条罗列、不粘贴原始数组。
78
+
79
+ 同一次小批量请求只执行一次 `ntf summary`;同一次大批量请求最多执行一次 `summary-job create` 和一次 `summary-job run`。只有用户追问某个具体细节时,再用 `ntf search --sender "某某" --limit 20` 小范围补查。其它类型的通知请求(查某人、查某 App、查某天等)继续看下文完整流程。
80
+
81
+ ---
82
+
8
83
  Exec 调用规则:等待 `ntf` 命令输出时使用 `yieldMs: 60000`;不要用 `timeout` 作为等待时间。`timeout` 是按秒计算的杀进程上限,默认 1800 秒,除非明确需要终止长时间运行的命令,否则不要写。
9
84
 
10
85
  ## 数据存储说明
@@ -95,23 +170,41 @@ yieldMs: 60000
95
170
 
96
171
  ### 大批量总结快速路径(硬性规则)
97
172
 
98
- 当用户要求“总结 / 汇总 / 概览 / 最近通知主要是什么”,且数量达到 **50 条及以上**,或用户未指定数量但上下文提示通知很多时,**必须**使用轻量摘要命令,**禁止**改用 `ntf search --limit X` 把上百条通知全文拉进上下文做总结(这会让单次回复因输入过大而生成超时、在用户端表现为卡死):
173
+ 当用户要求“总结 / 汇总 / 概览 / 最近通知主要是什么”,且数量达到 **50 条及以上**,或用户未指定数量但上下文提示通知很多时,**必须**使用摘要命令或分片总结任务,**禁止**改用 `ntf search --limit X` 把上百条通知全文拉进上下文做总结(这会让单次回复因输入过大而生成超时、在用户端表现为卡死)。
174
+
175
+ 如果 `notifications_summary` 工具可用,优先调用该工具。它会在扫描、创建快照、分片整理、合并、完成/失败阶段广播 `notification.summary.status`,App 可以据此展示进度;完成后广播 `notification.summary.result`,App 可直接展示其中的 `markdown`。只有工具不可用时,才使用下面的 CLI fallback。
176
+
177
+ N ≤ 700 时使用轻量摘要命令:
99
178
 
100
179
  ```text
101
180
  Use exec with:
102
- command: ntf summary --limit 700
181
+ command: ntf summary --limit 700 --sample 12 --top 8 --max-content 60
182
+ yieldMs: 60000
183
+ ```
184
+
185
+ N > 700 时使用分片总结任务:
186
+
187
+ ```text
188
+ Use exec with:
189
+ command: ntf summary-job create --limit N --chunk-size 150 --max-content 120
190
+ yieldMs: 60000
191
+
192
+ Use exec with:
193
+ command: ntf summary-job run <id> --max-chunks 30 --include-result
103
194
  yieldMs: 60000
104
195
  ```
105
196
 
106
- 若用户给出“约 X 条 / 最近 X 条”,把 X 同步传给 `--limit`。这个命令会返回聚合统计、最近样例和主要发送人的内容样例(正文已在 CLI 侧截断),直接基于这些字段输出中文总结。
197
+ 若用户给出“约 X 条 / 最近 X 条”,先把 X 转成 N;若 X > 3000,使用 N=3000 并说明这是最近 3000 条的粗摘要。`ntf summary` 会返回聚合统计、最近样例、主要发送人的内容样例和扫描指标(正文已在 CLI 侧截断);`summary-job run` 会按分片自动生成并合并摘要。
107
198
 
108
199
  **输出长度上限(防止生成超时)**:
109
200
  - 总结控制在精简范围内:先给一段整体概览,再按 App / 主要发送人分组,每组最多列 3-5 条要点,不要逐条罗列全部通知。
110
201
  - 不要在回复里粘贴完整的原始通知数组;只提炼关键信息。
111
202
 
112
203
  重要约束:
113
- - 同一次总结请求只执行一次 `ntf summary`,不要反复执行 `ntf summary` 或 `ntf search --limit X`
204
+ - 小批量总结请求只执行一次 `ntf summary`,不要反复执行 `ntf summary` 或 `ntf search --limit X`
205
+ - 大批量总结请求不要调用 `ntf search`;使用 `summary-job create` 后只运行一次 `summary-job run`
114
206
  - 不要用多条 shell 管道反复 grep 完整通知结果
207
+ - 不要把 `ntf summary` 返回的 `latest` / `samplesBySender` 当成完整消息列表逐条复述;它们只是代表性样例
115
208
  - 若摘要结果不足以回答某个具体细节,再针对小范围补充查询,例如 `ntf search --sender "张三" --limit 20`
116
209
 
117
210
  ### CLI 命令
@@ -174,11 +267,12 @@ yieldMs: 60000
174
267
  - "查查微信消息" → `--app "微信"`;应用过滤支持包名、显示名与常见别名,不要把应用名改写成不确定的包名
175
268
  - "最近 20 条" → 直接使用 `ntf search --limit 20`,无需补时间范围
176
269
  - "总结下最近的通知,约 30 条" / "帮我看最近大概 50 条通知" → 直接使用对应的 `--limit 30` / `--limit 50`;只要用户提到了期望条数,就必须把该数字传给 `--limit`
177
- - 示例格式:`帮我总结最近的通知,约 {数量} 条。(上次总结时间: {YYYY年M月D日 HH:mm})`。此类请求必须触发本 Skill;将 `{数量}` 传给 `--limit`,并将 `{YYYY年M月D日 HH:mm}` 转成 ISO 8601 后作为 `--from` 的优先参考,除非用户另有明确时间范围。
270
+ - "总结最近未读通知,约 5 条" 当前无未读字段,按最近通知处理,但仍必须使用 `limit: 5`,不要放大到 50 700
271
+ - 示例格式:`帮我总结最近的通知,约 {数量} 条。(上次总结时间: {YYYY年M月D日 HH:mm})`。此类请求必须触发本 Skill;按上方规则把 `{数量}` 转成 N,并将 `{YYYY年M月D日 HH:mm}` 转成 ISO 8601 后作为 `--from`。N ≤ 700 时执行一次 `ntf summary --from <ISO_TIME> --limit N --sample 12 --top 8 --max-content 60`;N > 700 时执行一次 `ntf summary-job create --from <ISO_TIME> --limit N --chunk-size 150 --max-content 120`,再执行一次 `ntf summary-job run <id> --max-chunks 30 --include-result`。
178
272
 
179
273
  #### Step 2: 执行 CLI 命令
180
274
 
181
- 先确认 `ntf storage-path` 可返回目录,再根据用户意图组合参数调用 `ntf search`。若使用 `--from` / `--to`,必须传 ISO 8601 时间;若用户提到了数量,必须同步传入 `--limit`。CLI 会自动处理路径解析、时间过滤、按时间倒序排序和 `limit` 截断。
275
+ 常见总结请求直接调用 `ntf summary`,无需先调用 `ntf storage-path`。其它查询先确认 `ntf storage-path` 可返回目录,再根据用户意图组合参数调用 `ntf search`。若使用 `--from` / `--to`,必须传 ISO 8601 时间;若用户提到了数量,必须同步传入 `--limit`。CLI 会自动处理路径解析、时间过滤、按时间倒序排序和 `limit` 截断。
182
276
 
183
277
  #### Step 3: 展示结果
184
278
 
@@ -6,39 +6,74 @@ description: |
6
6
  提取关键信息后更新到长期记忆系统。
7
7
  ---
8
8
 
9
- ## 功能:同步通知到记忆
9
+ # 同步通知到记忆
10
10
 
11
- **默认行为**:只同步**本次用户明确要求的日期或日期范围**。若用户没有说明范围,默认只处理当天通知;只有用户明确说“上次同步后”“全部未处理”“补全历史”“所有日期”等表达时,才同步 checkpoint 之后的全部未处理通知。
11
+ 核心循环只有三步:`ntf sync next` 取一批 → 按提示词写记忆 → 执行返回的 commit 命令。范围过滤、日期计算、批次切分、checkpoint 推进全部由 CLI 完成,不要自行推算。
12
12
 
13
- **强制执行规则**:
14
- - 不得省略任何步骤;必须严格按 Step 0 -> Step 1 -> Step 2 -> Step 3 -> Step 4 的顺序执行
15
- - Step 0 必须先识别并记录本次处理范围;后续 Step 1/Step 2 不得把“今天”或指定日期范围扩大成“全部未处理”
16
- - `ntf sync scan` 默认只扫描本地当天;只有本次范围明确是“上次同步后/全部未处理/补全历史/所有日期”时才允许使用 `ntf sync scan --all`
17
- - Step 2 中已选中的日期必须逐个串行处理,不要并行处理多个日期
18
- - **全流程禁止向用户二次确认**:不论待处理通知数量多大、预计耗时多长、是否需要启动后台子任务、是否需要写入记忆,都不得在 Step 0/1/2/3/4 任一阶段向用户发问或请求确认;按 Step 0 规则自动决定执行路径(后台子任务或当前对话),直接执行并在完成后汇报
19
- - 不要因为待处理数据量大、日期很多或单日通知很多,就跳过步骤、合并步骤或减少检查
20
- - `references/` 下各 step 对应的文件是该 step 的详细步骤说明,必须读取,不是可选参考
13
+ ## 硬性规则
21
14
 
22
- ### Step 0: 前置处理(必做)
15
+ - **禁止向用户二次确认**:不论待处理数量多大、预计耗时多长,都不得发问或请求确认(不得出现"是否继续 / 需要我 / 要不要"等),直接执行并在完成后汇报。
16
+ - **读文档不算进度**:读取本文件后必须在同一回合内继续工具调用。在执行第一条 `ntf` 命令或成功调用 `sessions_spawn` 之前结束回合,一律视为执行失败。
17
+ - **即时反馈**:进入 Skill 后先输出一行简短状态(如"🔄 正在同步通知到记忆…"),且这行必须与下一个工具调用在同一条回复里;禁止单独发一行状态就结束回合。
18
+ - exec 等待 `ntf` / `openclaw` 命令输出时使用 `yieldMs: 60000`;不要设置 `timeout`(它是按秒计算的杀进程上限,默认 1800 秒)。
23
19
 
24
- 在执行任何扫描前,必须读取 [references/step-0-preflight.md](references/step-0-preflight.md),并严格按其中详细步骤完成前置处理。
20
+ ## 1. 确定范围,选定 CLI 参数
25
21
 
26
- ### Step 1: 扫描未处理通知
22
+ | 用户表达 | `ntf sync next` 参数 |
23
+ |---|---|
24
+ | "今天",或未说明范围 | 不带范围参数(CLI 默认本地当天) |
25
+ | 明确某一天 | `--date YYYY-MM-DD` |
26
+ | 明确日期范围 / "最近 N 天" | `--from-date ... --to-date ...`(最近 N 天 = 本地今天往前 N-1 天,今天可用 `date +%F` 获取) |
27
+ | "上次同步后 / 全部未处理 / 补全历史 / 所有日期" | `--all` |
27
28
 
28
- 必须读取 [references/step-1-scan-pending.md](references/step-1-scan-pending.md),并严格按其中详细步骤完成待处理通知扫描。
29
+ - 明确日期优先于上下文元信息:"今天的通知数据(上次同步时间: xxx)"的范围仍是今天,括号内容只是背景。
30
+ - 范围一旦确定,整个循环沿用同一组参数,不得中途扩大成 `--all`。
29
31
 
30
- ### Step 2: 逐日期逐批次处理
32
+ ## 2. 选择执行路径
31
33
 
32
- 必须读取 [references/step-2-process-dates.md](references/step-2-process-dates.md),并严格按其中详细步骤完成逐日期逐批次处理。
34
+ - 触发来源是定时任务、后台任务或子任务(提示词声明了后台上下文,或 session 标识含 `subagent` / `cron`):直接在当前上下文进入步骤 3,不要再启动新的子任务。
35
+ - 主对话且 `sessions_spawn` 工具可用:在同一条回复中输出状态行并**实际调用** `sessions_spawn`。子任务提示必须包含:"首先读取 skills/notification-to-memory/SKILL.md 全文并按其中步骤执行;本次范围:〈范围及对应参数〉;你已在后台上下文,直接执行同步循环"。只有调用成功返回运行 id 才算已启动;仅口头声称"已开始后台同步"而没有真实工具调用,视为执行失败。启动成功后主对话回复"已开始在后台同步,完成后会通知你"即可结束。
36
+ - `sessions_spawn` 不可用、调用失败、或无法确定是否支持:一律直接在当前对话进入步骤 3,不要因犹豫而停顿。
33
37
 
34
- ### Step 3: 检查 cron 定时任务(必做)
38
+ ## 3. 同步循环
35
39
 
36
- 在最终汇报前,**必须**读取 [references/step-3-check-cron-status.md](references/step-3-check-cron-status.md),并严格按其中详细步骤完成 cron 检查;未检查不得结束。
40
+ 每一轮按顺序执行:
37
41
 
38
- ### Step 4: 完成汇报
42
+ 1. 执行 `ntf sync next 〈范围参数〉`。
43
+ 2. 若返回 `done: true`:跳到步骤 4。
44
+ 3. 读取返回的 `memoryPromptFile` 指向的文件,逐条阅读 `notifications`,按该提示词的要求提炼并写入记忆文件。必须由模型逐批阅读、理解、总结后写入;禁止编写脚本代替这一步。
45
+ 4. 原样执行返回的 `commitCommand`,不要改动参数。
46
+ 5. 重新读取 skills/notification-to-memory/SKILL.md(防遗忘,不可跳过),回到 1。
39
47
 
40
- 本次范围内所有日期处理完成且 cron 检查完成后,必须读取 [references/step-4-final-reporting.md](references/step-4-final-reporting.md),并严格按其中详细步骤完成最终汇报。
48
+ 约束:
41
49
 
42
- ---
50
+ - 严格串行:一次只执行一轮,不要并行取多批,必须先完成本批写入与 commit 才能开始下一批。
51
+ - **单回合最多 3 轮**(每轮 ≤100 条)。达到上限立即停止循环:checkpoint 已随 commit 提交,直接进入步骤 4,汇报"本回合已处理 N 条,剩余 M 条由定时任务或下次触发续传"。不要为了一次跑完而突破上限。
52
+ - 每轮 commit 后可输出一句简短进度,不等待用户回复。
53
+ - 运行中新追加的通知留给下次同步;`next` 和 `commitCommand` 已处理好快照边界,不要手工调整 index。
54
+
55
+ ## 4. cron 检查(必做)
56
+
57
+ 汇报前执行 `openclaw cron list`,检查是否已存在"根据通知更新记忆"的定时任务。只统计消息内容确实是通知同步的任务;天气播报、日历提醒、录音整理等不算,名字带 sync/memory 但内容无关的也不算。记录状态:已配置 / 未配置 / 检查失败(原因)。检查过程中不要输出建议话术,统一留到最终汇报。
58
+
59
+ ## 5. 最终汇报
60
+
61
+ 执行环境判断:主对话直接输出汇报;子任务/独立环境且有明确会话目标(sessionKey、chat_id 等)时用 `message` 工具发送;没有明确目标或鉴权不可用时直接输出。禁止调用不带 target 的 `message` 自动推断会话;发送失败不要重试等待,改为直接输出。
62
+
63
+ 本次范围全部处理完时:
64
+
65
+ ```text
66
+ 📋 通知同步完成
67
+
68
+ 共处理了 X 个日期的 Y 条通知:
69
+ - 2026-03-02: 2 条
70
+
71
+ CRON: 已检查(已配置 / 未配置 / 检查失败)
72
+ ```
73
+
74
+ 因单回合上限停止、仍有剩余时,改用"📋 通知同步进行中",写明本回合已处理条数、剩余条数,并说明剩余部分由定时任务自动继续,也可以再说一次"继续同步通知"立即接着处理;不得表述为全部完成。
75
+
76
+ `next` 返回的 `outsideScopePending > 0` 时,在汇报中补一句"其他日期还有 M 条未处理"即可,不得为此扩大本次范围。
43
77
 
44
- **注意**:本 Skill 只负责通知同步与 cron 检查/建议,实际 cron 配置由用户指令触发执行。
78
+ 仅当 CRON 为"未配置"或"检查失败"时,追加:
79
+ - 💡 建议:设置定时任务。目前每次都需要你手动触发同步,添加定时任务后我会定时把通知沉淀到长期记忆。你可以这样说:"每天凌晨3点帮我根据通知更新记忆"
@@ -1,40 +0,0 @@
1
- # Step 0:前置处理
2
-
3
- **绝对禁止交互(最高优先级,先于一切判断)**:
4
- - 不论待处理通知预估数量多大(包括"今天 700+"、"上千条"等场景)、预计耗时多长、是否需要启动后台子任务、是否需要写入记忆,**一律不得向用户发问或请求确认**。
5
- - 禁止输出包含"是否启动"、"是否继续"、"需要我"、"要不要"、"可能会花费较多时间,是否…"等任何征询语气的句子。
6
- - 用户已经发起请求即视为已授权;本 Skill 的职责是直接执行并在完成后汇报,而不是评估用户是否愿意付出成本。
7
- - 如果选择启动后台子任务,只能输出一句简短状态(如"已开始在后台同步本次范围的通知,完成后会通知你"),不得带任何疑问句或选项。
8
-
9
- 在执行任何扫描前,先确定本次处理范围,并在后续步骤中沿用该范围:
10
-
11
- - 用户明确说“今天”:范围为当前本地日期;当前本地日期必须在 Step 1 过滤前通过本机命令 `date +%F` 获取,不要依赖模型内部日期
12
- - 用户明确给出某一天或日期范围:范围为用户指定日期或范围
13
- - 用户明确说“最近 N 天”“近 N 天”:范围为当前本地日期往前 N-1 天到当前本地日期;当前本地日期必须在 Step 1 过滤前通过本机命令 `date +%F` 获取
14
- - 用户明确说“上次同步后”“全部未处理”“补全历史”“所有日期”:范围为 checkpoint 之后的全部未处理通知
15
- - 用户没有说明范围:范围默认为当前本地日期;当前本地日期必须在 Step 1 过滤前通过本机命令 `date +%F` 获取
16
-
17
- 范围优先级:
18
- - 明确日期或相对日期优先于上下文里的元信息。例如“今天的通知数据(上次同步时间:xxx)”的范围仍然是今天,括号中的“上次同步时间”只能作为背景信息,不等于“同步上次同步后全部通知”。
19
- - 只有用户直接表达“从上次同步后开始”“上次同步后全部”“补全历史”时,才使用全部未处理范围。
20
-
21
- 禁止交互:
22
- - 不要询问用户是否继续。
23
- - 不要询问用户是否启动后台子任务。
24
- - 不要因为通知数量大、预计耗时长或需要写入记忆而追加确认。
25
-
26
- **即时反馈(强制,最高优先级)**:
27
- - 进入本 Skill 后,无论数据量大小,第一件事就是先向用户输出一行简短状态(例如“🔄 正在同步通知到记忆…”),保证用户在 5-10 秒内看到反馈,绝不能先静默执行一长串扫描/处理再发声。
28
- - 这一行只是状态提示,不是疑问句,不得包含任何征询确认的措辞。
29
-
30
- 执行模式:
31
- - 若本次触发来源为后台任务或定时任务,说明当前已在后台执行上下文中:直接按顺序进入 Step 1,无需询问,也不要再启动新的后台子任务。
32
- - 若当前处于主对话且运行环境支持后台子任务:先输出上面那行即时反馈,然后**自动启动后台子任务**,不要询问用户。子任务提示必须包含“首先读取主SKILL全文(skills/notification-to-memory/SKILL.md),然后执行后续步骤”,并写明本次处理范围;若范围是“今天”或指定日期,不得改写成“上次同步后”或“全部未处理”。启动后,当前主对话只需简短提示“已开始在后台同步本次范围的通知,完成后会通知你”,不要继续执行 Step 1。
33
- - 若当前处于主对话但运行环境不支持后台子任务:先输出即时反馈,再直接在当前对话继续执行 Step 1,不要询问用户;执行过程中按 Step 2 的“单回合批次上限”分批处理,每批完成都输出一句简短进度,不等待用户回复。
34
-
35
- **单回合工作量上限(防止卡死/超时)**:
36
- - 单次 Agent 执行(无论前台还是后台子任务)最多处理 **3 个批次**(每批 ≤100 条,详见 Step 2)。
37
- - 达到上限后必须提交 checkpoint 并汇报进度后**停止本回合**,剩余未处理通知留待定时任务或用户下次触发继续;由于 checkpoint 已记录进度,续传不会重复处理。
38
- - 这样可确保任何一次回复都远在超时窗口内完成,用户端不会出现“卡死”。
39
-
40
- 完成 Step 0 后,只有后台子任务或当前对话执行路径中的一个继续进入 Step 1,避免同一批通知被两个执行上下文同时处理。