# 本地数据存储策略 万能导采用“按数据性质选择存储”的方式,而不是为所有功能统一引入数据库。 | 数据 | 存储方式 | 原因 | | --- | --- | --- | | 导入/导出 checkpoint、资源状态、失败项与恢复游标 | SQLite(`checkpoint.sqlite`) | 需要事务、按任务查询和崩溃后精确恢复。 | | 插件已安装版本、启用状态和签名收据 | 原子 JSON 文件 | 数据量很小,需要可审计、易迁移且 Tauri 2 Rust 宿主可直接读取。 | | 最近 80 条任务历史 | 加密参数 + 有界 JSON | 只做最近记录展示,不是分析型数据;SQLite 不能改善体验,反而增加桌面端数据库依赖与迁移成本。 | | 在线插件目录 | 已签名 registry + 5 分钟内存缓存 | 插件中心搜索在加载后的目录上即时完成;数百个插件仍适合本地过滤。 | ## 何时再扩展数据库 满足以下任一条件时,再为桌面端引入专门的数据层:任务历史需要保存数千条并按时间/平台全文检索;插件目录达到数千项且需要离线索引、分页或复杂筛选;或需要跨任务统计、配额与可视化报表。 届时应使用单独的应用数据库和显式迁移,而不能复用某次导出目录中的 `checkpoint.sqlite`。checkpoint 属于单次任务,混入插件目录或用户界面状态会导致数据清理、权限和恢复边界不清晰。