API 密钥管理与本地存储安全
本地优先的含义
ReadAny 把"本地优先"作为核心设计原则,这意味着:
- 书籍文件:默认存储在本地书库目录
- 标注、笔记、阅读进度:存在本地 SQLite 数据库
- 向量索引(语义搜索):存在本地 SQLite 数据库
- 阅读统计:存在本地 SQLite 数据库
- 对话历史:会话内存在内存中,关闭会话后清除
除非你主动开启同步,否则以上数据永远不会离开你的设备。
API 密钥安全存储
API 密钥是你访问 OpenAI / Claude / Ollama 等 AI 服务的凭证。ReadAny 的处理方式:
- 桌面端:密钥存储在系统的安全存储区(Windows Credential Manager、macOS Keychain、Linux Secret Service),不是明文写在配置文件里
- 移动端:密钥存储在 iOS Keychain / Android Keystore,同样不是明文
- 应用数据目录:配置文件里只会出现一个加密后的 token 或引用,不会暴露完整密钥
密钥泄露的风险
虽然 ReadAny 尽力保护你的 API 密钥,但以下情况仍可能泄露:
- 你把整个 ReadAny 数据目录同步到了不受信任的云存储
- 恶意软件读取了你的系统安全存储
- 你截图/录屏时不小心包含了密钥设置界面
安全建议
- 用 Ollama 本地模型就完全不需要密钥
- 如果用云端 API,使用权限受限的 API Key(只开模型访问权限、设置月度消费上限)
- 不要把 ReadAny 的数据目录放进公共云同步文件夹
数据目录位置
各平台的用户数据存储位置:
| 平台 | 路径 |
|---|---|
| Windows | %APPDATA%\ReadAny\ |
| macOS | ~/Library/Application Support/ReadAny/ |
| Linux | ~/.local/share/ReadAny/ |
| Android | /data/data/com.readany.app/ |
| iOS | 通过 iTunes / Finder 访问应用文档 |
数据库文件是 library.db(SQLite 格式),可以用任何 SQLite 工具打开查看(但修改需要谨慎)。
如何做备份
方式一:直接复制数据目录
最简单的备份方式——把整个用户数据目录复制到你信任的位置。恢复时覆盖回去即可。
方式二:通过同步功能
如果你已经配置了 WebDAV / S3 同步,其实已经有了一份云端备份。但建议定期做一次完整的本地备份作为双重保险。
备份内容
建议备份:
library.db(所有书库信息、标注、笔记、进度、统计)- 书籍文件(EPUB/PDF 等,如果你想换设备继续读)
- AI 提供商配置(API 密钥存储在系统安全存储中,备份后恢复可能需要重新填入)
不需要备份:向量索引(可以随时重新向量化)、搜索历史(可以重新生成)
清除数据
如果你想彻底清除 ReadAny 的所有数据:
- 关闭 ReadAny
- 删除上述用户数据目录
- 重新打开 ReadAny,它会从零开始
书籍文件(EPUB/PDF 等)在书库目录,默认就是用户数据目录内的子文件夹。如果你设置了自定义书库路径,记得一起删除。
隐私政策
ReadAny 的开发者公开声明:
ReadAny 不收集任何用户行为数据,不做统计埋点,不发送崩溃报告(除非你主动开启)。所有 AI 调用都经过你的 API 密钥或本地 Ollama,除了 AI 服务提供商之外没有第三方能看到你的对话内容。
这是开源项目相对闭源商业产品的一大优势——源代码可审计,你可以自己验证有没有偷偷外传数据。