Tham khảo
Dữ liệu và quyền riêng tư
Các review nằm trong thư mục dự án của bạn. Cài đặt nằm trong ~/.ferret/, còn key và tài khoản nằm trong thư mục dữ liệu người dùng của hệ điều hành. Chỉ có báo cáo crash được gửi đến nhà phát triển, qua Sentry, và bạn có thể tắt chúng. Feedback mà bạn chọn gửi từ ứng dụng sẽ trở thành một issue GitHub công khai.
#Bên trong .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
Các review tạo trước khi đổi tên nằm trong .ade-movie/reviews/. Chúng vẫn được liệt kê và mở được, còn review mới được lưu vào .ferret/reviews/.
Khi bắt đầu ghi, .ferret/ được thêm vào .git/info/exclude. Worktree và submodule cũng được xử lý. .gitignore không bao giờ bị sửa. Một review bị gián đoạn có thể được khôi phục từ lịch sử nếu dữ liệu của nó còn lại. Khi đó ứng dụng sẽ cảnh báo rằng vài giây cuối có thể bị thiếu.
#Thời gian lưu giữ
Giữ bản ghi (mặc định 7 ngày, 30 ngày, hoặc Vĩnh viễn): khi khởi động, các review đã hoàn tất cũ hơn mức đó sẽ bị xóa recording.webm và work/. feedback.md và ảnh của các góp ý được giữ lại. Review chưa hoàn tất không bao giờ bị dọn. Việc dọn chạy khi khởi động, cho dự án được mở gần nhất.
#Dữ liệu nào rời khỏi máy của bạn
| Khi nào | Đích đến | Dữ liệu |
|---|---|---|
| Chuyển văn bản: Trên máy (miễn phí) | không có | — |
| Chuyển văn bản: OpenAI / tương thích | OpenAI hoặc Base URL của bạn | các đoạn âm thanh |
| Tải model | Hugging Face | yêu cầu tải tệp |
| Sắp xếp | Claude Code / Codex CLI của bạn, hoặc endpoint LLM bạn đặt trong organizer | chỉ văn bản và nhật ký thao tác (không có ảnh, âm thanh hay video) |
| Kiểm tra nghiệm thu (model quyết định, mặc định tắt) | agent của bạn, qua relay cục bộ, đến Ollama / Cloudflare / AI Gateway / TypeSafe / URL của bạn | những gì agent gửi: văn bản góp ý, "Done when", và ảnh chụp màn hình BEFORE/AFTER (chỉ với model đọc được ảnh) |
| Gửi cho Agent | agent trong terminal của bạn | một chỉ dẫn trỏ đến feedback.md |
| Gửi lên GitHub | GitHub qua gh | chỉ phần nội dung văn bản (không có ảnh) |
| Mức sử dụng ở footer (chỉ Claude Code và Codex) | Anthropic, ChatGPT | yêu cầu xem mức sử dụng bằng chính thông tin đăng nhập của bạn |
| Lời mời gắn sao GitHub | GitHub qua gh của bạn | kiểm tra xem bạn đã gắn sao repo chưa, và chỉ gắn sao khi bạn nhấn Gắn sao trên GitHub |
| Kiểm tra cập nhật (thủ công) | server tải xuống (Cloudflare R2) | yêu cầu tải latest.json |
| Gửi feedback từ ứng dụng (chỉ khi bạn gửi; sắp ra mắt) | relay feedback của nhà phát triển (một Cloudflare Worker), relay này mở một issue công khai trong JapanMarketing-Dev/ferret | văn bản của bạn, loại lỗi hay ý tưởng, phiên bản ứng dụng / hệ điều hành và CPU, cùng tối đa 3 ảnh chụp màn hình bạn đính kèm. Key, token, địa chỉ email và đường dẫn thư mục home được che đi. Relay không lưu địa chỉ IP của bạn (xem Feedback từ ứng dụng) |
| Khi có crash hoặc lỗi (Gửi báo cáo crash đang bật) | Sentry | stack trace và phiên bản hệ điều hành / CPU / ứng dụng (xem Báo cáo crash) |
- Ứng dụng không có analytics, không có performance tracing và không có session replay. Dữ liệu duy nhất được gửi mà bạn không yêu cầu là báo cáo crash: lỗi, một phiên cho mỗi lần khởi chạy, và cảnh báo khởi động chậm hoặc bị treo, tất cả đều được mô tả bên dưới và đều do Gửi báo cáo crash kiểm soát.
- Các giá trị trông giống bí mật trong URL (token, key) được che đi trước khi ghi vào
feedback.md. - Văn bản lấy từ trang được đánh dấu là dữ liệu trong
feedback.md, nên agent được dặn không làm theo các chỉ dẫn nằm trong đó. - Website này (không phải ứng dụng) đếm lượt xem trang bằng Cloudflare Web Analytics: không dùng cookie, không theo dõi chéo giữa các trang web và không thu thập dữ liệu cá nhân.
#Feedback từ ứng dụng
Sắp ra mắt
Biểu mẫu feedback trong ứng dụng và relay của nó chưa được phát hành. Phần này mô tả cách chúng sẽ hoạt động.
Bạn sẽ có thể gửi báo cáo lỗi hoặc ý tưởng ngay trong Ferret mà không cần tài khoản GitHub. Nội dung chỉ được gửi khi bạn gửi, và sẽ trở thành một issue công khai trong JapanMarketing-Dev/ferret (mở trong tab mới), gắn nhãn from-app. Đừng đưa vào bất cứ thứ gì bạn không muốn đăng công khai.
- Ứng dụng gửi nội dung từ máy tính của bạn đến một relay nhỏ (một Cloudflare Worker do nhà phát triển vận hành), relay này mở issue bằng GitHub token của chính nó. Relay này là server duy nhất của nhà phát triển nhận bất cứ thứ gì bạn viết.
- Được gửi: tiêu đề và nội dung của bạn, đó là lỗi hay ý tưởng, phiên bản ứng dụng, và tối đa 3 ảnh chụp màn hình PNG hoặc JPEG bạn đính kèm. Tên và phiên bản hệ điều hành, kiến trúc CPU và ID cài đặt ngẫu nhiên chỉ được gửi nếu bạn để chúng được đính kèm. Không được gửi: tên, email, tài khoản GitHub, tệp dự án, bản ghi hay góp ý của bạn.
- Trước khi tạo issue, relay che các đoạn văn bản trông giống key hoặc token, địa chỉ email, và tên người dùng trong đường dẫn thư mục home, đồng thời ngăn
@mentionsgửi thông báo cho bất kỳ ai. Relay cũng xóa vị trí và các metadata khác khỏi ảnh chụp màn hình. Dù vậy, hãy tự kiểm tra văn bản của bạn: việc che không thể bắt được mọi thứ. - Relay không lưu địa chỉ IP của bạn. Để giới hạn tần suất một người gửi có thể đăng (5 lần mỗi giờ, 20 lần mỗi ngày), relay đếm một hash có khóa của địa chỉ IP (và của ID cài đặt, nếu được gửi) trong tối đa 24 giờ, sau đó xóa đi. Cả hai đều không xuất hiện trong issue.
- Ảnh chụp màn hình được relay lưu trong Cloudflare R2 với tên không thể đoán được và hiển thị trong issue. Để yêu cầu xóa một issue hoặc ảnh chụp màn hình của nó, hãy comment trong issue đó hoặc mở một issue mới.
- Mã nguồn của relay nằm trong
workers/feedback-relaycủa repository.
#Báo cáo crash
Khi ứng dụng bị crash hoặc gặp lỗi không được xử lý, Ferret gửi báo cáo crash đến Sentry (mở trong tab mới) để lỗi có thể được sửa. Tính năng này mặc định bật. Tắt nó trong Cài đặt → Quyền riêng tư → Gửi báo cáo crash, hoặc bằng nút Tắt trên thông báo hiển thị ở lần khởi chạy đầu tiên. Tắt có hiệu lực ngay lập tức. Bật lại có hiệu lực từ lần khởi chạy tiếp theo. Bản build phát triển (pnpm dev) cũng gửi, kèm thẻ development, để nhà phát triển có thể sửa các crash gặp phải khi làm việc. Các lần chạy E2E và unit test không bao giờ gửi.
| Được gửi | Không được gửi |
|---|---|
|
|
Ứng dụng đã cài đặt gửi tối đa 10 báo cáo mỗi lần khởi chạy và chỉ một nửa số lỗi JavaScript (crash native luôn được gửi). Bản build phát triển gửi mọi lỗi, tối đa 50 lỗi mỗi lần khởi chạy. Cùng một lỗi chỉ được gửi một lần mỗi lần khởi chạy. Khởi động chậm (trên 5 giây) và ứng dụng bị treo lâu (trên 1 giây) được gửi dưới dạng cảnh báo, tối đa một lần mỗi 10 phút. Không dùng performance tracing hay session replay. Ứng dụng dùng gói miễn phí của Sentry. Nếu gói đầy, các báo cáo dư sẽ bị bỏ và không ai bị tính phí.
Tự build Ferret? Đặt FERRET_SENTRY_DSN (tên cũ MOVIE_ADE_SENTRY_DSN vẫn dùng được) thành Sentry DSN của riêng bạn, hoặc thành chuỗi rỗng để không gửi gì cả. Mã nguồn nằm trong src/main/telemetry.ts và src/shared/telemetry.ts.