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 đếnDữ 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íchOpenAI hoặc Base URL của bạncác đoạn âm thanh
Tải modelHugging Faceyêu cầu tải tệp
Sắp xếpClaude Code / Codex CLI của bạn, hoặc endpoint LLM bạn đặt trong organizerchỉ 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ạnnhữ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 Agentagent trong terminal của bạnmột chỉ dẫn trỏ đến feedback.md
Gửi lên GitHubGitHub qua ghchỉ 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, ChatGPTyê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 GitHubGitHub qua gh của bạnkiể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/ferretvă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)Sentrystack 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 @mentions gử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-relay củ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ửiKhông được gửi
  • Loại lỗi và thông điệp lỗi, với đường dẫn thư mục home hiển thị là ~
  • Stack trace (vị trí trong mã của Ferret nơi lỗi xảy ra)
  • Với crash native: chỉ tiến trình nào bị crash, lý do thoát (ví dụ crashed hoặc oom), và phiên bản ứng dụng
  • Tên và phiên bản hệ điều hành, kiến trúc CPU, phiên bản Electron / Chrome / Node, phiên bản ứng dụng, kích thước màn hình, dung lượng bộ nhớ
  • Các sự kiện vòng đời ứng dụng ngay trước lỗi (ví dụ app.ready), và các lỗi khi khởi động
  • Phần nào của ứng dụng bị lỗi: một vùng màn hình không hiển thị được (và tên các React component của nó), một lệnh gọi IPC, một terminal không khởi động được, một tiến trình bị crash hoặc treo, hoặc một trang của ứng dụng không tải được
  • Bạn đang ở đâu trong ứng dụng: chế độ Editor hay Feedback, tab đang mở (Browser, Findings, Settings, hoặc chỉ file), và có đang ghi hay không
  • Một phiên cho mỗi lần khởi chạy (đã bắt đầu, kết thúc bình thường, hoặc bị crash), để đo tỷ lệ không crash của từng phiên bản
  • Một ID cài đặt ngẫu nhiên (tạo ở lần khởi chạy đầu tiên và lưu trong thư mục cài đặt của ứng dụng), để đếm số bản cài đặt bị ảnh hưởng. ID này không liên kết với tên, email hay thiết bị của bạn
  • Chỉ với crash JavaScript: 50 dòng log gần nhất của chính Ferret (như [startup] và [recording]), đã được rút gọn và loại bỏ đường dẫn, URL, email và key
  • Đường dẫn thư mục dự án và tên tệp của bạn (thay bằng <project>)
  • URL mở trong trình duyệt tích hợp, và mọi địa chỉ web khác (thay bằng <url>)
  • Output của terminal, bản chuyển văn bản, góp ý, văn bản trang, ảnh chụp màn hình
  • Địa chỉ email và API key hoặc token (được thay thế)
  • Tên của bạn, tên thiết bị, địa chỉ IP (không được lưu), cookie, biến cục bộ
  • Memory dump của crash native (minidump). Chúng có thể chứa bất cứ thứ gì có trong bộ nhớ, nên được giữ lại trên máy tính của bạn
  • Thao tác nhấp chuột, request mạng, và mọi dòng log không phải của chính Ferret

Ứ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.

Giúp dịch trang này trên GitHub (mở trong tab mới)