XSkill 盘与库
改读数据相关代码,或审查业务请求是否又在扫盘时,先看本 skill。
各库职责与每张表的 schema 见 databases.md。
架构
整体分三层。
文件系统存内容真相,例如 skill 目录里的文件。这些内容不会在每次面板请求时被重新扫描聚合。
有 worker 定期把文件系统上需要给业务侧查询的信息同步进 SQLite。同步可以按文件是否变化做增量。新的「盘到库」需求应并进已有扫描过程,而不是再开一轮同等规模的全量遍历。
面板、对外 API、推荐与其它业务读请求,一律通过数据库访问投影后的数据。业务侧不自己搭扫盘逻辑去凑结果。
内核里的 agent loop 在跑管线时可以直接读写文件系统,这是写真相的一侧,与业务读路径分开。
规则
业务面新增或修改请求时,所需数据从对应数据库取。不允许在业务请求路径里私自增加扫盘、全目录遍历、按请求反复读盘聚合。
若发现库与盘不一致,应修同步入口,而不是在查询里临时扫盘兜底。
若有新的文件系统到数据库的同步需求,去改现有的扫描同步 worker,把新投影挂进同一次遍历。不要为每个新需求再加一轮 N 加一的全量扫盘,以保持 IO 可控。
新建业务库前先查 databases.md。已有库能覆盖的,不要平行再造一套真相。
多实例或独立 home 访问库时,路径要显式,避免误连全局默认库。
检查
- 这次读的数据属于哪一个库?见 databases.md。
- 改的是业务读路径,还是内核写盘 / worker 同步?三者不要混用扫盘策略。
- 若要加盘到库同步,是否已并进现有 worker 的同一轮扫描?
- PR 是否在面板或 API 热路径新增了扫盘?有则打回。