你的书签数据到底去了哪里?Siftly本地优先架构与隐私安全全解析 你的书签数据到底去了哪里Siftly本地优先架构与隐私安全全解析【免费下载链接】SiftlyLocal Twitter/X bookmark organizer with AI categorization and mindmap visualization项目地址: https://gitcode.com/gh_mirrors/si/SiftlySiftly 是一个运行在你自己电脑上的本地优先 Twitter/X 书签管理工具导入书签后AI 自动分类打标并提供思维导图与语义搜索。它没有云端账户、没有订阅、没有遥测追踪——你的书签数据默认永远不会离开本机这是理解它隐私边界的关键。一、本地优先意味着什么本地优先Local-First不是营销口号而是指数据的默认存储位置和主权数据存在哪全部落在本机一个 SQLite 数据库文件里默认prisma/dev.db路径可在 lib/db.ts 中看到通过环境变量DATABASE_URL覆盖。数据归谁归你。删掉这个文件等于彻底删除所有书签反过来备份一个文件就完成全部迁移。谁在看没有遥测、没有追踪、没有账号体系——README 的 Privacy 章节 明确写道唯一的例外是你主动配置的 AI 接口。换句话说Siftly 的隐私模型可以用一句话概括数据留在本地AI 调用透明可控其他第三方服务器一概不碰。二、数据流全景从书签到 SQLite理解数据去了哪里先看数据怎么流动你的 X 书签页 │ ① 内置 Bookmarklet 自动滚动抓取 ▼ bookmarks.json下载到本地 │ ② 拖拽上传到 Import 页面 ▼ SQLite 数据库Bookmark / MediaItem / Category 等表 │ ③ AI 四级流水线实体提取 → 视觉分析 → 语义打标 → 分类 ▼ 带分类、标签、置信度的完整知识库导入入口app/api/import/ 目录下的路由负责接收 JSON 文件并自动去重表结构设计prisma/schema.prisma 定义了Bookmark、MediaItem、BookmarkCategory、Category、Setting、ImportJob六张表——你的推文原文、原始 JSON、AI 标签、分类置信度全部存在这些表里搜索加速SQLite 的 FTS5 全文索引在 lib/fts.ts 中于运行时维护让按语义搜索能在纯本地数据库上跑起来。整个过程不经过任何 Siftly 官方的服务器因为 Siftly 根本没有服务器——云端就是你的硬盘。三、唯一的例外AI 调用会发什么出去Siftly 的 AI 功能图像视觉分析、语义打标、智能搜索确实需要把数据发给大模型提供方这是本地优先架构中唯一的数据出口。它的设计是透明且可选的1. 发出什么推文文本与图片数据仅在你触发 AI 流水线时发送实体提取hashtags、URL、提及、100 已知工具名是纯本地完成的零 API 调用这部分源码在 lib/rawjson-extractor.ts。2. 发给谁你配置谁就发给谁。支持 Anthropic、OpenAI、MiniMax 三家切换逻辑见 lib/settings.ts。更妙的是支持ANTHROPIC_BASE_URL指向任意本地代理或本地模型——把接口指向 localhost数据就一步都不出机器。3. 用不用都行可以。不配置任何 AI 密钥时导入、浏览、筛选、导出、思维导图照常工作只有 AI 打标和语义搜索不可用。隐私与功能之间的权衡完全由你把控。四、密钥与凭证如何保管API 密钥本身也是敏感数据Siftly 的存储策略值得参考凭证类型存储位置说明API 密钥本地 SQLite 的Setting表存在你自己的数据库文件里不出本机Claude CLI 登录态系统钥匙串macOS/~/.claude/目录只读取你已登录的会话lib/claude-cli-auth.ts 展示了读取逻辑绝不回传任何地方Docker 环境变量docker/.env已 gitignoredocker/README.md 明确注明密钥只留在本地值得注意的是 lib/claude-cli-auth.ts 中的认证优先级请求覆盖键 → 数据库保存的密钥 → CLI 会话 → 环境变量 → 本地代理。整个解析链都在你本机进程内完成没有第三方中转。五、访问控制与供应链安全细节很多本地工具把安全止步于数据在本地Siftly 在细节上还做了两层防护1. 可选的 HTTP 基础认证middleware.ts 实现了全局 Basic Auth在.env中设置SIFTLY_USERNAME和SIFTLY_PASSWORD后局域网内访问 Siftly 需要登录。默认不启用纯本地使用零配置但暴露到内网时一开关即生效。2. 媒体代理白名单app/api/media/route.ts 中的媒体代理只允许转发pbs.twimg.com等 5 个固定域名且强制 HTTPS——这不是功能需求而是防止 SSRF服务器端请求伪造的典型防御你的本地服务绝不会被诱导去访问任意外部地址。3. 漏洞报告通道安全问题走私有渠道而非公开 Issue响应承诺 48 小时内确认详见 SECURITY.md。MIT 许可证源码开放所有安全承诺都可直接在代码中逐行验证——这是本地优先工具最独特的安全优势你审计不了大厂的黑盒但可以审计 Siftly 的每一行。六、Docker 部署下数据照样本地用 Docker 跑 Siftly 会引入一层容器隔离但数据主权不变SQLite 文件存放在命名卷siftly_data → /data/dev.dbdocker compose down重启不丢数据备份一条命令完成重置也是一条命令——见 docker/README.md 的 Data Persistence 章节密钥通过docker/.env注入该文件被 gitignore永不入库。本地开发 → prisma migrate dev 镜像构建 → prisma generate 容器启动 → prisma migrate deploy → next start数据始终绑定在本地卷上容器可随时销毁重建书签毫发无损。七、如何自己动手验证隐私承诺本地优先架构最大的好处是可验证。你可以亲手做三件事来确认抓包验证不配置 AI 密钥时运行 Siftly用任意抓包工具确认除 X 媒体 CDN 外没有任何出站请求翻数据库npx prisma studio打开数据库 GUI确认所有书签都在dev.db这一个文件里读源码全文检索项目中所有fetch(调用逐一核对目的地——你会看到媒体代理白名单和 AI 配置端点是仅有的两个出口。总结一条清晰的隐私边界数据类型去向是否可配置书签文本、图片、AI 标签仅本地 SQLite可改存储路径实体提取、搜索、分类浏览纯本地计算—AI 打标、语义搜索你指定的模型服务商可换供应商/本地代理/关闭API 密钥本地 SQLiteSetting表—遥测、账号、追踪无—Siftly 的本地优先不是把云端服务搬到家里而是从架构第一天就把数据主权交还给你一个文件即全部数据一个开关即数据边界。对于把书签当作个人知识库的 X 用户来说这套默认本地、例外透明的隐私模型值得作为自选部署self-hosted工具的参考范本。如需部署从 start.sh 一键启动脚本开始git clone https://gitcode.com/gh_mirrors/si/Siftly.git cd Siftly ./start.sh【免费下载链接】SiftlyLocal Twitter/X bookmark organizer with AI categorization and mindmap visualization项目地址: https://gitcode.com/gh_mirrors/si/Siftly创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考