跳转到内容

数据隐私与安全

隐私是 DevLingo 的核心价值。我们详细说明数据如何流动、存储在哪里、谁可以访问。

Step 1: 你在 Slack 中选中 "idempotent"
Step 2: 按下 ⌘⇧D
Step 3: Mac 应用检查本地库和缓存
Step 4: 若未命中,发送查询到 Cloudflare Workers(HTTPS 加密)
请求包含:
• 选中文本:"idempotent"
• 上下文(前后文本)
• 应用标识(Slack)
• 模式:Word
Step 5: Workers 调用 Claude API
Step 6: Claude 返回结构化 JSON 结果
Step 7: Mac 应用收到结果
Step 8: 除非用户点击"保存",否则结果不被存储
(浮窗关闭后数据消失)
Step 1-7: 同上
Step 8: 用户点击 "Save to Word Book"
Step 9: 数据被存储在本地 SwiftData
(完全在设备内,不上云)
Step 10: 生词本同步开关关闭 → 完毕(仅本地)
生词本同步开关开启 → Step 11
Step 11: 用户设备同步到 Cloudflare D1
(用户私人数据库,有身份验证)

重要:DevLingo 通过 Claude API 发送的任何文本都不会被用于训练 Claude 或任何其他模型。我们遵循 Anthropic 的默认政策。

✓ 你的文本是一次性使用
✓ Claude 处理后立即丢弃(不存储)
✓ 不用于任何形式的数据挖掘

:::note 验证方式 Anthropic Claude API 的所有请求都标记有 “user=“,表示”这是最终用户数据,不应用于训练”。 :::

生词本(Word Book)默认只保存在你的 Mac 上,使用 SwiftData:

~/Library/Containers/com.devglish.com/Data/
└── default.store/
└── word_entries.db (本地 SQLite)

这个数据库是设备私密的,只有 DevLingo 应用能访问。

如果你想在多台 Mac 上同步生词本,可以明确选择启用云同步:

Settings → iCloud Sync → Toggle ON

一旦启用,生词本会加密后上传到 Cloudflare D1:

加密:客户端加密(Curve25519)→ 服务器存储
认证:用户的 JWT token(安全令牌)
访问控制:每个用户只能访问自己的数据
隔离:数据库行级隔离,防止跨用户访问

:::caution 数据转移 启用云同步后,如果你取消订阅或删除账户,云端数据会在 30 天后自动删除。本地 SwiftData 不受影响,仍在你的设备上。 :::

DevLingo 严格遵循”最小化收集”原则:

✗ 代码内容(虽然你可能在 Xcode 中使用)
✗ 完整的浏览历史或应用使用历史
✗ 聊天日志或邮件内容
✗ 你的 Git 历史
✗ 设备上的其他私密文件
✓ 你选中查询的文本本身
✓ 前后 50 字的上下文(仅用于 AI 理解)
✓ 当前应用的 Bundle Identifier(帮助 AI 调整风格)
✓ 你的母语设置(用于 L1 干扰提示)
✓ 生词本内容(仅在明确启用云同步时)

DevLingo 后端(Cloudflare Workers)持有 Claude API 密钥。你的 Mac 应用无需直接暴露密钥,而是通过 Workers 代理所有 API 请求。

Mac App Workers (edge)
↓ (HTTPS) ↓
│── Bearer: user_jwt ────────→ │
│ │
│ (有效期 1 小时) │ (Claude API Key)
│ │
│← Structured Response ←────── Claude API

好处:

  • 密钥不在本地存储(不会泄露)
  • 所有 API 调用在受信任的 Cloudflare 边缘处理
  • 即使你的 Mac 被攻击,密钥也安全

用户登录时获得短期 JWT 令牌(1 小时有效期):

算法:HS256(HMAC SHA-256)
签名密钥:Cloudflare Secret(不在本地存储)
存储位置:macOS Keychain(系统加密)
刷新:令牌即将过期时自动刷新

Keychain 的安全级别:

🔒 与 Mac 的 iCloud 解锁密钥绑定
🔒 每次访问时,系统会提示用户确认
🔒 即使有人偷走你的硬盘,也无法读取

所有从 Mac 到 Cloudflare Workers 的通信都是 HTTPS 加密:

TLS 1.3(最新协议)
证书:LetsEncrypt(自动更新)
完全前向保密(Perfect Forward Secrecy)

DevLingo 的分层查询系统确保你可以离线使用:

在飞行模式中选中 "idempotent"
查询本地技术词汇库(85+ 词)→ 成功!
结果立即显示,无需网络

只有以下情况需要网络:

✓ 查询本地库未命中的新词汇
✓ 同步生词本到云端
✓ 获取最新 TTS 音频缓存

其他 95% 的查询可完全离线完成。

如果你决定删除 DevLingo 账户:

Step 1: 设置 → 账户 → Delete Account
Step 2: 系统会要求你再次确认
Step 3: Cloudflare 删除:
• 用户账户
• 云端生词本
• 登录历史
• API 使用日志
(30 天后完全删除)
Step 4: 本地数据不受影响
(仍在你的 Mac 上,由你自行删除)

:::caution 数据永久性 一旦账户删除,无法恢复云端数据。但你可以导出本地生词本为 CSV,永久保存。 :::

DevLingo 遵守以下规范:

地区规范状态
欧盟GDPR(通用数据保护规范)✓ 合规
美国CCPA / CPRA✓ 合规
中国数据本地化✓ 仅限本地存储;云同步使用 Cloudflare(可选)

:::note 数据保护官 如有隐私问题,可联系 [email protected]。我们在 24 小时内回应。 :::

DevLingo 工程团队定期进行:

• 代码安全审计(OWASP Top 10)
• 依赖扫描(npm audit, Xcode security)
• 渗透测试(第三方)
• 数据库访问审计(谁访问了什么)

审计报告每季度对用户透明发布。


总结:DevLingo 的隐私设计遵循”零信任”原则 — 假设网络被监听,假设设备被攻击,但通过加密、身份验证、最小化收集,确保你的数据始终在控制之下。