现状
ForeshadowingStore::initialize() 创建了 foreshadowings_by_status 和 foreshadowings_by_tag 索引。
但 list(), stats(), relevant_for_scene(), final_act_reminders() 全部走 directory_iterator 扫描 JSON 文件。SQLite 表只写不读。
当前取舍
- 单一世界伏笔量预期不超过数百条,文件系统扫描性能充足
- 索引开销接近零(写入时多维护一个 B-tree)
- 作为未来平滑切换到 SQL 查询的预留
升级触发条件
当某个世界有上万条伏笔时,改查询方法用 SELECT id FROM foreshadowings WHERE world_id=? AND status='open' 过滤,无需改 API。
现状
ForeshadowingStore::initialize()创建了foreshadowings_by_status和foreshadowings_by_tag索引。但
list(),stats(),relevant_for_scene(),final_act_reminders()全部走directory_iterator扫描 JSON 文件。SQLite 表只写不读。当前取舍
升级触发条件
当某个世界有上万条伏笔时,改查询方法用
SELECT id FROM foreshadowings WHERE world_id=? AND status='open'过滤,无需改 API。