☰
青简的隐私与数据安全设计:无账号、不上传、崩溃不丢学习数据是怎么做到的
2026/10/5 15:22:31 网站建设 项目流程

青简的隐私与数据安全设计:无账号、不上传、崩溃不丢学习数据是怎么做到的

【免费下载链接】qingjian青简 Qingjian:用 Rust 写的拼音输入法,候选词旁多一条正在学的语言的译词项目地址: https://gitcode.com/gh_mirrors/qi/qingjian

青简是一款用 Rust 编写的拼音输入法,核心特点是候选词旁附带一条正在学习的语言的译词。它的隐私设计可以概括成三句话:不需要账号、不上传数据、崩溃也不丢你攒下的学习数据。这篇文章带你看看它是怎么做到的。

为什么输入法要先谈数据安全

输入法是所有输入工具里权限最"敏感"的一个——它看着你敲下的每一个键。很多输入法靠收集用户输入习惯来换"更准的预测",代价是你的打字内容离开了你的设备。

青简的选择恰好相反:拼音转换、词库查询、候选排序、输入习惯学习,全部在本机完成,没有账号、没有统计上报,也没有属于自己的服务器。

🔒 三个关键设计目标:

  • 无账号:装完即用,不注册、不登录;
  • 不上传:默认情况下唯一的联网行为是每天检查一次更新;
  • 崩溃不丢:你用了几个月攒下的词频、词转移习惯,不会因为进程崩溃而归零。

本机保存了什么:全是能直接打开的纯文本

青简的学习数据都以纯文本 TSV 文件保存在本机,随时可以打开查看:

  • macOS:~/Library/Application Support/Qingjian/
  • Windows:%APPDATA%\Qingjian
文件内容
user.tsv每个词被选择的次数
user-words.tsv自动造词与云端选中的用户词
user-ngram.tsv词与词之间的接续统计
user-typos.tsv被接受的输入错误纠正
user-vocab.tsv每条译词被看到 / 上屏的次数
usage.tsv按天的输入量,仅数字
input-log.jsonl输入日志(可关闭、可清空)

文件全部是明文,不加密、不混淆——因为没有任何理由对你藏东西。唯一特殊的是云服务密钥文件.env,落盘时会被设为仅当前账户可读(权限 0600)。

关于"哪些文件里含输入内容"的完整清单,见官方文档 数据与日志。

崩溃不丢学习数据:靠的是"原子写"

输入法进程随时可能被系统杀掉或自己崩溃。如果直接覆盖写文件,中途断电就留下半个文件,你攒的词频整个报废。青简用的是原子写方案,实现在 storage/mod.rs:

  1. 先把新内容完整写入同目录的临时文件,并强制刷盘(fsync);
  2. 然后用rename改名覆盖目标文件——同一文件系统上的改名是原子操作。

效果是:任何时刻磁盘上要么是完整的旧文件,要么是新文件,永远不会出现"写到一半"的状态。官方文档也确认:这些文件每次整体替换,即使输入法中途崩溃也不会留下半截文件(见 architecture.md「崩溃不丢」)。

除了原子写,还有两层保险:

  • 损坏容忍:学习数据按行解析,个别坏行跳过并记警告,而不是整个文件报废;真读不了(权限、坏盘)就退回只在内存里学习,输入法照常启动,不会拿空表覆盖你的文件。
  • 有界丢失:激活期间每 60 秒把内存中的学习数据落一次盘,被杀掉最多丢一分钟的学习记录。

也就是说,哪怕进程当场崩溃,最坏情况也只损失最近一分钟的选择习惯,历史数据毫发无损。

密码框里:系统级的"别记"开关

另一个容易忽略的场景:你在密码框、银行 App 的私密输入框里打字时,输入法该不该记录?

青简的答案是完全不记。各平台壳检测到焦点进入私密输入框后,调用 engine/privacy.rs 的set_private,引擎会一次性关掉所有写入通道:

  • 不学习:不记词频、不记词转移、不自动造词;
  • 不记输入日志:输入日志外面套了一层MutedLogger(input_log/muted.rs),私密期间条目直接丢弃;
  • 不发云端:联想、翻译、释义兜底请求一律不发;
  • 排序不受影响:已有的个人数据照常参与候选排序,你的输入体验不降级。

macOS 的 Secure Input 与 Windows 的密码类输入范围(IS_PRIVATE/ PIN)都会被识别,语义与系统一致。

云联想:唯一可选的联网功能,且默认关闭

青简有一个可选的云联想功能(详见 cloud/index.md),缺省关闭。它的隐私设计值得单独说明:

  • 开启后,发送的内容(当前拼音、光标前后几十个字的上下文、本机候选)直接发给你自己在设置里填写的 AI 服务商——数据不经过青简,因为青简根本没有自己的服务器;
  • 密码框与应用声明为私密的输入框中绝不发送;
  • 关闭开关后不再发送任何请求,密钥只存在本机。

除云联想外,唯一的联网行为是检查更新:每天向官网读取一次带数字签名的静态版本列表,请求不带账号、设备标识或任何输入内容,验证不通过的列表一律忽略,且可在设置里一键关闭。

把主动权交还给你

青简的所有数据能力都可以自主控制:

想做什么在哪里操作
停止学习输入习惯偏好设置 → 高级,取消勾选「学习输入习惯」
关闭 / 清空输入日志偏好设置 → 高级
关闭云联想偏好设置 → 云服务
关闭自动检查更新关于页

输入日志只保存在本机,用于离线回归评测与个人模型,不会自动发送给任何人;统计(usage.tsv)只存数字,与日志分开保存,关掉日志不影响统计。

总结:隐私不是功能,是架构约束

回头看,青简的做法可以归纳为四条:

  1. 结构上:核心引擎不依赖任何网络 crate,翻译查表在本地完成,从架构上保证"候选生成不联网";
  2. 存储上:全明文文件 + 原子写 + 损坏容忍,数据可见、可删、崩溃不丢;
  3. 场景上:私密输入框自动静音一切写入通道,且不影响输入体验;
  4. 可选网络上:唯一联网功能是用户主动开启、直连用户自选服务商的云联想。

如果你正在挑选一款"少管闲事"的拼音输入法,青简的这套隐私与数据安全设计,值得写进你的候选清单。

【免费下载链接】qingjian青简 Qingjian:用 Rust 写的拼音输入法,候选词旁多一条正在学的语言的译词项目地址: https://gitcode.com/gh_mirrors/qi/qingjian

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询