参考
数据与隐私
审查保存在你的项目文件夹中。设置保存在 ~/.ferret/ 中,密钥和账户保存在操作系统的用户数据文件夹中。只有崩溃报告会通过 Sentry 发送给开发者,并且你可以关闭它。你选择从应用中发送的反馈会成为一个公开的 GitHub issue。
#.ferret/reviews/ 中的内容
<project>/.ferret/reviews/20261003-104500/
├── feedback.md # what the agent reads
├── 01.png, 02.png… # one or more images per finding
├── session.json # review state and edit history
├── events.jsonl # action log (built-in browser only)
├── recording.webm # the video
└── work/ # intermediate audio and frames
改名之前创建的审查保存在 .ade-movie/reviews/ 中。它们仍会被列出并可以打开,新的审查则保存到 .ferret/reviews/。
开始录制时,.ferret/ 会被追加到 .git/info/exclude 中。worktree 和子模块也会被正确处理。.gitignore 永远不会被修改。中断的审查只要其记录得以保留,就可以从历史中恢复。此时应用会提示最后几秒可能缺失。
#保留期限
保留录制内容(默认 7 天,可选 30 天或 永久):启动时,超过该期限的已完成审查会删除 recording.webm 和 work/。feedback.md 和反馈图片会保留。未完成的审查永远不会被清理。清理在启动时针对上次打开的项目执行。
#哪些数据会离开你的电脑
| 时机 | 目的地 | 数据 |
|---|---|---|
| 转写:本机(免费) | 无 | — |
| 转写:OpenAI / 兼容 OpenAI | OpenAI 或你的 Base URL | 音频片段 |
| 模型下载 | Hugging Face | 文件请求 |
| 整理 | 你的 Claude Code / Codex CLI,或你在 organizer 中设置的 LLM 端点 | 仅文本和操作日志(不含图片、音频或视频) |
| 验收检查(判定模型,默认关闭) | 你的 Agent,经由本地中继,发送到 Ollama / Cloudflare / AI Gateway / TypeSafe / 你的 URL | Agent 发送的内容:反馈文本、“完成条件”以及 BEFORE/AFTER 截图(仅限图像模型) |
| 发送给 Agent | 你终端中的 Agent | 一条指向 feedback.md 的指令 |
| 发送到 GitHub | 通过 gh 发送到 GitHub | 仅正文文本(不含图片) |
| 底部栏用量显示(仅 Claude Code 和 Codex) | Anthropic、ChatGPT | 使用你自己的登录发出的用量请求 |
| GitHub 点星提示 | 通过你的 gh 发送到 GitHub | 检查你是否已为仓库点星,只有在你点击 在 GitHub 上点星 时才会点星 |
| 检查更新(手动) | 下载服务器(Cloudflare R2) | 对 latest.json 的请求 |
| 从应用发送反馈(仅在你发送时;即将推出) | 开发者的反馈中继(一个 Cloudflare Worker),它会在 JapanMarketing-Dev/ferret 中创建一个公开 issue | 你的文字、问题或想法、应用 / 操作系统版本和 CPU,以及你附加的最多 3 张截图。密钥、令牌、电子邮件地址和主文件夹路径会被遮盖。中继不会保存你的 IP 地址(参见从应用发送反馈) |
| 崩溃或错误(发送崩溃报告 开启时) | Sentry | 堆栈跟踪以及操作系统 / CPU / 应用版本(参见崩溃报告) |
- 应用没有分析统计、没有性能追踪,也没有会话回放。它在你未要求的情况下发送的唯一数据是崩溃报告:错误、每次启动一个会话,以及启动缓慢和卡顿警告。这些都在下文说明,并且全部由 发送崩溃报告 控制。
- URL 中看起来像机密的值(令牌、密钥)会在写入
feedback.md之前被抹去。 - 从页面采集的文本在
feedback.md中会被标记为数据,因此 Agent 会被告知不要执行其中的指令。 - 本网站(而非应用)使用 Cloudflare Web Analytics 统计页面浏览量:不使用 Cookie,没有跨站追踪,也不收集个人数据。
#从应用发送反馈
即将推出
应用内的反馈表单及其中继尚未发布。本节说明它们将如何工作。
你将可以在 Ferret 内发送问题报告或想法,无需 GitHub 账户。只有在你发送时才会发出,并且它会成为 JapanMarketing-Dev/ferret (在新标签页中打开) 中带有 from-app 标签的公开 issue。请不要包含任何你不愿公开发布的内容。
- 应用从你的电脑将其发送到一个小型中继(由开发者运行的 Cloudflare Worker),中继使用自己的 GitHub 令牌创建 issue。在开发者的服务器中,只有这个中继会接收你写的内容。
- 会发送:你的标题和正文、它是问题还是想法、应用版本,以及你附加的最多 3 张 PNG 或 JPEG 截图。操作系统名称和版本、CPU 架构以及随机的安装 ID 只有在你保留勾选时才会发送。不会发送:你的姓名、电子邮件、GitHub 账户、项目文件、录制内容或反馈。
- 在创建 issue 之前,中继会遮盖看起来像密钥或令牌的文本、电子邮件地址以及主文件夹路径中的用户名,并阻止
@mentions通知任何人。它还会移除截图中的位置信息和其他元数据。即便如此,也请检查你的文字:遮盖无法覆盖所有情况。 - 中继不会保存你的 IP 地址。为了限制同一发送者的发送频率(每小时 5 次、每天 20 次),它会对 IP 地址(以及安装 ID,如果已发送)的带密钥哈希计数,最多保留 24 小时后删除。两者都不会出现在 issue 中。
- 截图由中继以无法猜测的名称保存在 Cloudflare R2 中,并显示在 issue 里。如需删除某个 issue 或其截图,请在该 issue 下评论或新建一个 issue。
- 中继的代码位于仓库的
workers/feedback-relay中。
#崩溃报告
当应用崩溃或遇到未处理的错误时,Ferret 会向 Sentry (在新标签页中打开) 发送崩溃报告,以便修复问题。此功能默认开启。可以在 设置 → 隐私 → 发送崩溃报告 中关闭,或在首次启动时显示的通知上点击 关闭。关闭会立即生效,重新开启则在下次启动时生效。开发构建(pnpm dev)也会发送,并带有 development 标签,以便开发者修复他们在开发中遇到的崩溃。E2E 运行和单元测试永远不会发送。
| 会发送 | 不会发送 |
|---|---|
|
|
已安装的应用每次启动最多发送 10 份报告,并且只发送一半的 JavaScript 错误(原生崩溃总会发送)。开发构建会发送所有错误,每次启动最多 50 个。同一错误每次启动只发送一次。启动缓慢(超过 5 秒)和应用长时间卡顿(超过 1 秒)会作为警告发送,最多每 10 分钟一次。不使用性能追踪或会话回放。应用使用的是 Sentry 的免费套餐。如果额度用完,多出的报告会被丢弃,不会向任何人收费。
自己构建 Ferret?请将 FERRET_SENTRY_DSN(旧名称 MOVIE_ADE_SENTRY_DSN 也可用)设置为你自己的 Sentry DSN,或设为空字符串以不发送任何内容。相关代码位于 src/main/telemetry.ts 和 src/shared/telemetry.ts。