隐私说明
最后更新:2026-09-01。本页描述的是仓库中当前已实现的行为,不是未来计划。
本网站
本站是一组静态页面,不设置任何 Cookie,不加载分析、埋点或第三方追踪脚本,也没有登录、表单或评论功能。页面上唯一的对外链接指向 GitHub。
静态托管服务商可能出于运维目的记录访问日志(IP、User-Agent、请求路径)。这部分数据由托管方处理,不在本项目掌握范围内;一旦确定托管方,本节会补上具体服务商名称。
桌面应用
Tidy 在你的 Mac 上本地运行。所有扫描、预览与删除都发生在本机,应用窗口的内容安全策略被限定为 default-src 'self',网页层没有任何对外网络权限。
应用会发送一份匿名使用统计,默认开启,可以随时关掉。下面「匿名使用统计」一节逐条列出了采集的全部字段。
保存在本机的数据
~/.config/mole:共享状态,包括语言偏好、白名单,以及settings(自动检查更新与使用统计的开关、随机安装标识)。~/Library/Logs/mole:操作历史operations.log与删除历史deletions.log。两者格式与 Mole 命令行逐字节兼容。
这些文件从不上传。删除它们即清除历史;应用会在下次操作时重新创建。
什么时候会联网
应用只在三种情况下发出网络请求:
- 你主动运行「检查软件更新」(检查你安装的其他应用有没有新版);
- 检查 Tidy 自身的更新:启动后拉取一次 GitHub Releases 上的
latest.json,每 24 小时最多一次。可在「设置 › 通用」关闭,关闭后一个请求都不会发; - 发送匿名使用统计:见下一节,可关闭。
检查其他应用更新时,请求目标限于:Apple 的 bundle ID 查询接口(确认 Mac App Store 商品页)、已安装应用自身声明的 Sparkle feed(HTTPS)、Electron 应用 app-update.yml 中声明的提供方与 GitHub release API。Homebrew 部分读取的是本机 brew 命令的输出,不产生额外的网络请求。请求内容仅包含判断版本所需的应用标识与版本号,不包含文件路径、文件内容、剪贴板或个人信息。一次扫描结果 15 分钟后过期。
匿名使用统计
目的只有一个:知道哪些功能真的有人用、哪个版本上出了什么错。默认开启,首次启动时会有一条明确告知,可在「设置 › 通用 › 匿名使用统计」随时关闭。
关掉之后立即停止上报,本机的待发队列与随机安装标识一并删除。重新打开会生成一个新的标识,在统计上等同于一个新用户。
随机安装标识:首次开启时生成一个随机 UUID,存在 ~/.config/mole/settings。它与硬件序列号、Apple ID、MAC 地址、IP 地址都无关,删除该文件即变成新用户。
采集的全部事件与字段(这是完整清单,不是举例):
| 事件 | 字段 |
|---|---|
app_launched | 是否首次启动 |
view_opened | 界面名(清理 / 软件 / 优化 / 分析 / 状态 / 设置) |
scan_completed | 扫描类型、耗时毫秒数 |
clean_executed | 删除模式(废纸篓 / 永久)、结果(成功 / 部分 / 失败 / 取消) |
app_uninstalled | 无字段 |
optimize_run | 优化任务的固定标识(如 flushDNS) |
updates_run | 更新来源(homebrew / app_store / sparkle / electron / website) |
self_update | 旧版本号、新版本号、结果 |
error_occurred | 预定义错误码、发生在哪个界面 |
每条事件另外带上:随机安装标识、Tidy 版本号、macOS 版本号、界面语言。
刻意不采集的:清理释放了多少空间、扫到多少项、卸载了几个应用、任何路径、任何文件名、任何应用名称、机器名、错误消息原文(原文里常常带绝对路径)。这些字段在代码里是**结构性**排除的——事件属性的类型只允许固定常量,不接受运行期字符串。
数据发往哪里:唯一的上报地址是 https://t.tandem-clip.com——这是我们自己的 Cloudflare Worker 代理(域名和 Tidy 不同名,因为它和作者的其他项目共用同一个 Cloudflare 账号;如果你在抓包里看到它,就是这个)。代理在转发前会删除请求中的客户端 IP 相关请求头,然后转发给 PostHog 做聚合分析。也就是说 PostHog 拿不到你的 IP,也无法据此定位。
事件先在本机排队,每 60 秒或退出时批量发送一次;发送失败会写入 ~/.config/mole/telemetry-queue.json,下次启动补发,队列最多保留 500 条。
不会发生的事
- 不会读取或上传你的文档内容。
- 不会把扫描出的路径、文件名、应用名或体积发送到任何服务器——包括使用统计在内。
- 不会在后台静默执行删除:任何删除都需要你在预览界面上勾选并确认。
权限
应用只在你选择的范围内访问文件系统。系统范围的操作需要尚未发布的特权助手,因此目前会直接以 requires_admin 拒绝,不会请求 shell 提权。
变更与联系
本说明随应用行为变更同步更新。有疑问或发现描述与代码不符,请在 GitHub Issues 提出。