SuperAPI AI 工具集

files-as-database

数据与分析

查看项目

更新于 10-15 20:09

技能介绍

用途:帮助在开发应用、添加数据模型或决定数据存放位置时,在文件与 SQLite 之间做出选择。

主要能力:明确两类数据层的分工。文件(JSON、markdown、图片)存放在 data/ 下,适合内容(文档、草稿、文章、幻灯片)、设置与配置、application-state/ 中的临时 UI 状态、媒体资源,以及需要智能体直接编辑的数据;文件是 AI 智能体与 UI 之间的共享接口,智能体直接读写文件,UI 通过 API 路由读取,变更经 SSE 实时推回。SQLite(data/app.db,Drizzle ORM + @libsql/client)适合结构化记录(表单、预订、提交)、需要查询过滤排序聚合联接的数据、大量记录、关系数据以及需要事务的数据。

使用方式:文件用 fs.readFile 在 server/routes/ 中读取,createFileWatcher("./data") 监听变化,客户端 useFileWatcher() 使 React Query 缓存失效;单文件与按项拆分的判断依据是条目是否可独立寻址、数量是否超过 50、是否需要独立 URL、是否独立变更。SQLite 在 server/db/schema.ts 定义 schema,用 getDb() 取实例,查询均为异步;智能体通过 pnpm script db-schema、db-query、db-exec 或应用脚本读写;设置 DATABASE_URL 可切换到 Turso 云数据库,并配 DATABASE_AUTH_TOKEN,无需改代码。

限制与注意事项:需要查询时不要把结构化数据存成零散 JSON;不要把应用状态放在 localStorage、sessionStorage、cookie、内存或 Redis;构造文件路径前必须清洗请求参数中的 ID(如 id.replace(/[^a-zA-Z0-9_-]/g, "") 或 isValidPath()),写入前校验数据形状,SQL 使用 Drizzle 查询构建器而非字符串拼接;默认采用 SSR 外壳加客户端 React Query 模式,仅公开页面在需要 SEO 或 og 标签时使用服务端 loader。