OpenLess 中文文档 下载 App

凭证存储方式——Keychain / Windows 凭证管理器,绝不落明文

凭证安全的核心原则

OpenLess 在设计上遵循一个原则:任何 API Key、AccessToken、Secret 等敏感信息,绝不以明文形式写到磁盘。

为什么这很重要?因为很多应用会把凭据存到 .env 文件或 config.json 里,文件一旦被读走、被意外上传到 Git、或被恶意软件扫描到,凭据就泄露了。操作系统级的安全存储(Keychain / Credential Manager / keyring)是加密的、独立存储、受系统权限保护的——比文件存储安全得多。

各平台的存储位置

平台存储后端Service/Label
macOS系统 Keychaincom.openless.app
WindowsWindows 凭证管理器(Generic Credentials)按凭据类型分条目
Linux系统 keyring(如 libsecret)按凭据类型分条目

你可以在各自平台的工具里手动查看这些凭据是否存在(但不要手动删除):

写入流程

当你在 OpenLess 设置界面里首次填入某个凭据时:

  1. OpenLess 把凭据内容传给 Core 层的凭据管理模块
  2. Core 层调用 Host(Tauri / egui)提供的系统级安全存储 API
  3. API 把凭据加密写入系统安全存储
  4. Core 层拿到写入成功的确认后,丢弃内存中的凭据明文
  5. 不会生成任何 JSON 或其他明文配置文件

读取流程

每次 OpenLess 需要调用 ASR 或 LLM API 时:

  1. Core 层调用系统安全存储 API 按 service/label 查找并解密凭据
  2. 凭据明文被加载到内存中,用于组装请求
  3. 请求完成后内存中的凭据被丢弃
  4. 凭据明文在任何时候都不会写到磁盘

旧版本明文 JSON 的迁移

OpenLess v1.x 的早期版本曾经用明文 JSON 存储凭据(~/.openless/credentials.json macOS/Linux、%APPDATA%\OpenLess\credentials.json Windows)。v1.3 之后全面迁移到系统安全存储。

迁移行为是自动的:

  1. 新版本首次启动时,Core 层会检查旧的明文 JSON 是否存在
  2. 如果存在,读取 JSON 内容 → 写入系统安全存储 → 删除旧 JSON 文件
  3. 后续写入/读取全部走系统安全存储

迁移后你可以手动确认旧 JSON 文件已经被删除。如果旧 JSON 还在,说明迁移过程没完成——OpenLess 只会在成功写入系统安全存储后才删除旧文件。

Linux keyring 的前提条件

Linux 上 OpenLess 用系统 keyring。不同发行版配置不同:

发行版keyring 实现说明
GNOME(Ubuntu / Fedora Workstation)libsecret + gnome-keyring默认装好了,开箱能用
KDE PlasmaKWallet需要确保 OpenLess 可以访问 KWallet(通常第一次使用时 KDE 会弹窗问你)
纯命令行 / 无桌面建议用 secret-tool 或安装轻量 keyring

如果 Linux keyring 不可用,OpenLess 会提示你——不会静默降级到明文存储。这是硬保护:没有安全存储就不存凭据。

凭证存储的日志隔离

OpenLess 的日志里永远不会包含凭据明文——哪怕配置了 debug 日志级别。日志里只会显示:

不会泄露任何 API Key 的前缀、哈希、或中间字符。