提示:AI 结果必须带引用;若证据不足会提示“未找到可靠证据”。

    下载 Markdown

    mac-tools — PRD & Tech Spec(可直接开工版)v0.3

    版本:v0.3
    日期:2026-03-01
    适用仓库:/Users/Zhuanz/work-space/mac-tools

    0. 基本信息

    • 产品名:mac-tools
    • 平台:macOS 13+
    • 形态:主窗口 App(Dashboard),菜单栏小组件放入 v1.1
    • 默认语言:中文(后续可扩展 i18n)
    • 数据策略:本地存储,不上传(除非用户主动开启匿名统计)
    • 设计原则:可解释、可控、可回滚、默认保守

    1. 版本规划

    1.1 v1.0(MVP)

    • Monitoring
      • CPU / Memory / Disk / Network / Battery(笔记本)
      • Top Processes(CPU/内存前 N)
      • Dashboard + Detail
      • 30 分钟内存级历史(滑动窗口)
    • Cleaner
      • 扫描:用户级缓存/日志/下载大文件/废纸篓统计
      • 执行:默认隔离区(可回滚)
      • 报告:明细/失败原因/一键撤销
    • Uninstaller
      • App 列表 + 拖入卸载
      • 残留扫描(bundleId + 常见目录规则)
      • 默认仅勾选低风险残留
      • 执行 + 报告 + 回滚
    • Settings
      • 刷新频率/告警开关/白名单/删除策略

    1.2 v1.1(增强)

    • 历史持久化(24h/7d)
    • 菜单栏小组件
    • 定时清理(安全项)
    • 温度/风扇/功耗(受权限与机型限制)

    2. 成功指标(验收 KPI)

    • 监控刷新 1s:App 自身 CPU 开销目标 < 2%(空闲时)
    • 大目录扫描:10 万文件级别可扫描,不阻塞 UI,必须可取消
    • 清理/卸载:
      • 100% 生成报告
      • 默认策略不误删(高风险默认不勾)
      • 隔离区模式支持一键撤销

    3. 信息架构(IA)

    • Dashboard
    • Monitoring
      • CPU
      • Memory
      • Disk
      • Network
      • Battery(仅笔记本显示)
      • Processes
    • Cleaner
      • Scan Results
      • Quarantine
    • Uninstaller
      • Apps
      • Uninstall History
    • Settings
    • About

    4. 模块 A:Monitoring

    4.1 指标(v1.0 必做)

    • CPU
      • 总使用率
      • Load Average(1/5/15)
      • 分核心(可选)
      • Top CPU Processes
    • Memory
      • 总/已用/可用
      • Memory Pressure(绿/黄/红)
      • Swap
      • Top Memory Processes
    • Disk
      • 总容量/可用空间
      • 读写速率(MB/s)
      • Top Directories(用户目录)
    • Network
      • 上/下行实时速率
      • 会话累计流量
    • Battery(笔记本)
      • 电量
      • 充电状态
      • 健康/循环(可取则展示)

    4.2 采样策略

    • 默认刷新:1s(可选 0.5/1/2/5)
    • 历史缓存:30 分钟滑动窗口
    • 进程榜采样:默认 2s(减少自身干扰)
    • 告警:
      • CPU > 90% 持续 60s
      • Memory Pressure 红
      • Disk 可用 < 10%

    4.3 告警冷却与恢复阈值(v0.3 新增)

    • CPU 恢复:< 70% 持续 30s
    • Disk 恢复:> 15%
    • 同类告警冷却:5 分钟
    • 告警行为:toast + 可跳转目标页面

    4.4 UI 组件

    • MetricCard
    • LineChart
    • SegmentedControl
    • ProcessTable
    • DetailHeader
    • HistoryRange(1/5/15/30 分钟,前端筛选)

    5. 模块 B:Cleaner

    5.1 分类(v1.0)

    1. User Caches(低)~/Library/Caches/**
    2. User Logs(低)~/Library/Logs/**
    3. Saved Application State(中)~/Library/Saved Application State/**
    4. Downloads Large Files(中)~/Downloads,默认阈值 > 200MB
    5. Trash(提示)仅统计,引导清空

    v1.0 不做系统级默认删除,系统级仅展示或需显式开关。

    5.2 状态机

    • S0 Idle
    • S1 Scanning(可取消)
    • S2 Results
    • S3 Confirm(中高风险二次确认)
    • S4 Executing
    • S5 Report

    5.3 删除策略(强制)

    • 默认:Quarantine
      • 目录:~/Library/Application Support/mac-tools/Quarantine/<batchId>/...
      • 同卷优先 move;跨卷 copy+delete
      • 保留原路径映射
    • 可选:Trash
      • deletionMode = quarantine | trash
      • 默认 quarantine

    5.4 白名单(必须)

    • 规则类型:exactprefix
    • 匹配时机:扫描前过滤(减少无意义 I/O)
    • 存储:SQLite

    6. 模块 C:Uninstaller

    6.1 App 发现

    • 扫描:/Applications~/Applications
    • 字段:icon/name/version/bundleId/appSize(lastUsed 可选)
    • 能力:搜索、排序、拖入 .app

    6.2 残留扫描规则

    • 用户级规则
      • Preferences(低)
      • Application Support(中)
      • Caches(低)
      • Logs(低)
      • Saved State(中)
      • Containers(中)
      • Group Containers(高,默认不勾)
    • 系统级规则(高)
      • /Library/** 仅展示,默认不删

    6.3 匹配置信度(v0.3 新增)

    • exact:bundleId 精确命中
    • strong:AppName + 目录结构双命中
    • fuzzy:弱关联/模糊匹配

    默认勾选矩阵:

    风险 exact strong fuzzy
    low 勾选 勾选 不勾
    medium 勾选 配置可控(默认勾) 不勾
    high 不勾 不勾 不勾

    6.4 卸载状态机

    • U0 Select App
    • U1 Scan Residues
    • U2 Review
    • U3 Confirm(高风险二次确认)
    • U4 Execute(先本体后残留)
    • U5 Report(支持回滚)

    7. Settings

    • Monitoring
      • refreshInterval:0.5/1/2/5
      • enableAlerts:on/off
      • historyWindow:30min
    • Cleaner
      • deletionMode:quarantine(default)/ trash
      • downloadsThresholdMB:默认 200
      • whitelist 管理
    • Uninstaller
      • defaultSelectPolicy(低/中/高风险)
      • showSystemLevelResidues:默认 off
    • Privacy
      • analytics:默认 off
      • 清除本地数据(仅历史与报告)

    8. 数据模型

    8.1 MonitoringSample

    • ts: Int64
    • cpuUsage: Double
    • load1/load5/load15: Double
    • memUsed/memFree/memPressure: Double/enum
    • diskFree/diskReadMBps/diskWriteMBps: Double
    • netUpKBps/netDownKBps: Double
    • batteryPct/isCharging: optional

    8.2 FileItem

    • id: UUID
    • category: enum
    • path: String
    • sizeBytes: Int64
    • risk: enum(low/medium/high)
    • reason: String
    • selected: Bool
    • lastModified: optional

    8.3 OperationReport

    • id: UUID
    • type: enum(clean/uninstall)
    • startedAt/endedAt
    • totalSelectedBytes/totalFreedBytes
    • itemsSucceeded
    • itemsFailed
    • rollbackAvailable
    • quarantineBatchId

    8.4 WhitelistRule

    • id: UUID
    • type: enum(exact/prefix)
    • value: String
    • note: optional
    • createdAt

    8.5 v0.3 新增模型

    • ScanSession
    • ResidueMatch(含 confidence)
    • QuarantineManifest
    • OperationItemResult
    • SchemaVersion

    9. 权限与系统限制

    • Full Disk Access:深目录扫描时检测并引导
    • 管理员权限:系统级删除前检测
    • SIP 受限目录:提示不可写
    • 降级策略:无权限时仍可使用可访问能力,并明确“受限扫描”

    10. 错误处理规范

    • E_PERMISSION
    • E_IN_USE
    • E_NOT_FOUND
    • E_IO
    • E_UNKNOWN

    UI:简短原因 + 展开详情 + 复制失败列表(路径+错误)

    11. QA 验收用例(v1.0)

    Monitoring

    1. 打开应用 3 秒内渲染 Dashboard。
    2. 1s 刷新运行 30 分钟无明显内存增长。
    3. 与活动监视器趋势一致。
    4. Top Processes 排序正确。

    Cleaner

    1. ~/Library/Caches 扫描结果与总大小合理。
    2. 清理后报告完整,失败项有原因。
    3. 隔离区回滚可恢复原路径,冲突可处理。

    Uninstaller

    1. /Applications App 可卸载到隔离区/废纸篓。
    2. 残留扫描至少覆盖 Preferences/Caches/Application Support。
    3. Group Containers 默认不勾,且二次确认生效。
    4. 卸载报告可回滚(本体 + 低风险残留)。

    v0.3 补充

    1. 扫描取消后状态正确,不进入执行。
    2. 执行取消后报告含已成功/未执行/失败。
    3. 同卷 move 与跨卷 copy+delete 都可回滚。
    4. fuzzy 命中默认不勾且 reason 清晰。
    5. 告警冷却期内不重复弹窗。
    6. 权限受限时展示受限扫描且功能不崩溃。

    12. 决策冻结(v1.0)

    1. 技术栈:SwiftUI + AppKit bridge + Swift Concurrency + SQLite。
    2. 发布形态:DMG(Developer ID 签名 + Notarization),默认非沙盒。
    3. 默认删除策略:quarantine。
    4. 系统级目录:v1.0 仅扫描展示,默认不执行删除。

    13. 架构基线

    • MonitoringEngine
    • ScanEngine
    • RuleEngine
    • ExecutionEngine
    • ReportStore
    • PermissionCenter
    • SettingsStore

    14. 扫描边界(强约束)

    1. 默认不跟随符号链接。
    2. 默认不递归 .app 包内部。
    3. 用户目录内隐藏项可扫描,但结果需标注。
    4. 并发上限固定(建议 4),UI 结果批量节流刷新(建议 200ms)。
    5. 大扫描必须流式产出且可取消。

    15. 执行事务模型

    1. 预校验 -> 本体 -> 残留 -> 报告落盘。
    2. 扫描取消:cancelled,不进入执行。
    3. 执行取消:仅停止未开始项,已执行项可回滚。
    4. 回滚按清单逆序;冲突支持 skip/overwrite/rename
    5. 同一批次回滚具备幂等性。

    16. 性能预算

    • 空闲监控 1s 刷新:CPU < 2%
    • 30 分钟历史缓存:固定容量环形缓冲
    • 扫描 10 万文件:主线程不阻塞,可取消响应 < 500ms
    • 报告落盘:中等规模 < 1s

    17. 输出物(v1.0 必须可见)

    1. 扫描结果页:每项必填 reason
    2. 操作报告:成功/失败/错误码/建议动作可追溯。
    3. 隔离区页面:按 batch 展示、支持回滚。

    18. 开工前 Checklist

    1. 数据库 schema 冻结并建迁移策略。
    2. 状态机(scan/execute/rollback)流程图冻结。
    3. 错误码与系统错误映射表冻结。
    4. 权限引导文案冻结。
    5. 基准性能脚本与数据样本准备完成。