WordSnap 不包含账号系统、云同步、广告或分析 SDK。应用仍需将选中文本发送至用户配置的翻译接口,因此,本地运行并不表示所有数据均只在本机处理。
| 数据 | 处理位置 | 处理目的 |
|---|---|---|
| 选中文本 | 本机内存、用户配置的 OpenAI 兼容接口 | 生成翻译结果 |
| API Key、Base URL、模型和目标语言 | 本机应用数据目录中的 settings.json |
保存用户配置 |
| 单个英文单词、译文、查询次数和时间 | 本机 wordsnap.sqlite3 |
展示本地词表 |
| 短语、句子和中文输入 | 不写入词表数据库 | 仅用于当前翻译请求 |
| 剪贴板内容 | 在本机临时读取并尝试恢复 | 通过模拟复制获取当前选区 |
| 鼠标按下事件 | 仅在本机判断点击位置是否位于翻译卡片外 | 翻译完成后自动隐藏卡片,不记录点击位置或目标内容 |
| 运行诊断元数据 | 项目根目录 logs/ 中的会话日志文件 |
排查启动、快捷键、剪贴板、网络、数据库和窗口故障 |
当前代码不包含遥测或使用情况分析。网络翻译请求由用户选择的 API 服务提供方处理。使用前应查阅该提供方的隐私政策、日志处理方式和数据保留规则。
WordSnap 使用 Tauri 为当前操作系统分配的应用数据目录,并在项目根目录中使用 logs/ 日志目录:
settings.json以明文形式保存设置和 API Key,不使用 macOS Keychain、Windows Credential Manager 或其他系统密钥库。wordsnap.sqlite3保存词表。重复查询同一单词时,会更新译文、查询次数和最近使用时间。logs/YYYY-MM-DD_HH-mm-ss.SSS_pid-<进程ID>.log保存一次应用运行中的DEBUG、INFO和ERROR日志。每次启动创建一个独立文件,直至该次运行结束。日志包含事件名称、处理结果、耗时、文本字符数量、HTTP 状态码等诊断元数据,不包含 API Key、选中文本、译文、剪贴板内容、完整服务响应或用户配置的接口地址。- Unix 平台会尝试将
settings.json的权限设置为0600。该权限不能阻止以当前用户身份运行的其他进程读取文件。 - Unix 平台也会尝试将日志文件权限设置为
0600。日志不会自动上传,但会保留在项目的logs/目录中,直至用户删除相应文件。
不应在共享计算机或不受信任的用户账户中保存高权限 API Key。建议使用额度受限、可以轮换的独立 API Key。
远程翻译接口应使用 https://。WordSnap 允许使用 http://,主要用于本机开发服务。对远程主机使用 HTTP 会使 API Key 和选中文本面临明文传输风险。
应用会规范化 Base URL,并在必要时自动追加 /chat/completions。请求通过 Bearer Token 传递 API Key。
快捷键触发后,WordSnap 会暂存剪贴板、模拟 Cmd+C 或 Ctrl+C、读取选区,并尝试恢复原内容。macOS 与其他平台支持的剪贴板格式不同。在非 macOS 平台上,复杂富文本、图片或自定义剪贴板格式可能无法完整恢复。因此,不应将剪贴板作为重要内容的唯一副本。
在 macOS 上,WordSnap 会在应用运行期间监听鼠标按下事件,用于判断翻译完成后用户是否点击了卡片外部。应用不读取点击目标的内容,不保存或发送点击坐标,也不会在翻译仍处于加载状态时隐藏卡片。
- 可以在词表窗口中逐条删除已保存的单词。
- 如需删除全部本地数据和已保存的 API Key,应先退出 WordSnap,再删除操作系统应用数据目录中与
com.yuntsy.wordsnap对应的目录。 - 如需删除运行日志,应先退出 WordSnap,再删除项目根目录
logs/中的相应.log文件。 - 如需使旧 API Key 立即失效,还应在 API 服务提供方的控制台中撤销或轮换该密钥。
报告问题或分享截图前,必须移除 API Key、私人文本、数据库内容和包含凭据的接口地址。安全问题应按照安全策略提交私密报告。