AGENTS.md@apps/desktop/src/main/app-monitor · git:20260818.4f19511 · 2026-08-18 · sha256 422c03a229e234b8

AGENTS.md@apps/desktop/src/main/app-monitor git:20260818.4f19511A

Immutable. This exact content never changes and is served at /api/v1/blob/422c03a229e234b8.

# App Monitor Rules

> 本目录规则适用于应用监控实现。监控不是日志记录,也不是业务流程的一部分。

## Core Principle

应用监控必须是旁路能力:可失败、可延迟、可丢失,不能影响、阻塞或改变原有业务流程。

## Implementation Rules

- 监控记录不得成为业务成功条件。业务操作成功与否只能由原业务逻辑决定。
- 监控失败必须被吞掉或降级为 warn,不得向调用方抛出并中断业务流程。
- 不要在 IPC handler、加工轮、会话执行、文件维护等关键路径里 `await` 纯监控 IO。
- 需要扫描磁盘、读取大文件、统计快照、写持久化文件时,应使用后台调度、合并去重或周期 flush。
- 高频事件只能做轻量内存计数;持久化走既有周期落盘机制。
- 监控数据只能保存聚合指标和当前快照,不保存事件流水、用户内容、文件内容或可还原隐私的数据。
- 修改 `AppMonitorData` 的持久化结构时,必须先评估兼容方式:纯新增聚合字段且可由 normalize 补默认值时,不必提高 `APP_MONITOR_SCHEMA_VERSION`;需要显式转换旧数据语义时,才提高版本并补齐连续 migration。
- 监控逻辑不得引入业务锁、扩大现有锁范围,或改变原有互斥/并发语义。
- 监控订阅必须可释放,不能因为监控导致 session、timer、listener 泄漏。

## Acceptable Patterns

- 业务完成后同步增加内存计数。
- 业务完成后触发 `void` 后台任务记录快照。
- 多次快照请求合并为一轮后台扫描,扫描期间只记录 pending 标记。
- 后台监控任务内部 catch 错误并记录 warn。

## Forbidden Patterns

- 为了监控在业务路径中新增必经 IO。
- 因监控写入失败让 IPC 请求失败。
- 因监控扫描耗时延迟用户操作返回。
- 为了监控重新读取或重算已经不需要的业务数据,并在主流程中等待结果。
- 把监控实现成详细日志、审计流水或事件明细存储。