11 điểm bởi GN⁺ 2024-04-22 | 1 bình luận | Chia sẻ qua WhatsApp
  • Windrecorder là một ứng dụng mã nguồn mở lưu lịch sử màn hình Windows cục bộ để sau này tua lại và tìm kiếm, một công cụ ghi nhớ cá nhân gần giống lựa chọn thay thế cho Rewind/Copilot Recall
  • Màn hình được lưu thành các tệp phân đoạn 15 phút bằng ffmpeg hoặc ảnh chụp màn hình theo khoảng thời gian liên tục, rồi được lập chỉ mục bằng API OCR cục bộ của Windows và embedding hình ảnh
  • Trong Web UI cục bộ, có thể tìm lại màn hình trong quá khứ bằng tiêu đề cửa sổ, từ khóa văn bản và mô tả hình ảnh; cũng có thể loại trừ một số chương trình hoặc vùng màn hình khỏi việc ghi lại
  • Việc xử lý dữ liệu chỉ diễn ra trên máy tính của người dùng, không qua đám mây; vì dựa trên Python nên dễ kiểm tra và chỉnh sửa cấu trúc, nhưng hiệu năng có thể chậm
  • Hiện kho dữ liệu có cấu trúc cục bộ không được mã hóa; chức năng LLM còn hạn chế, phạm vi sử dụng thực tế là tổng quan tiêu đề hằng ngày và tìm kiếm

Ghi màn hình và tìm kiếm bằng cách tua lại

  • Windrecorder là công cụ ghi nhớ màn hình cá nhân để tìm lại những thông tin người dùng từng xem nhưng sau này khó tìm, như trang web, video hoặc tin nhắn trò chuyện
  • Nguồn cảm hứng chính là ứng dụng Mac Rewind và tập “The Entire History of You” trong Black Mirror S1E3
  • Cách ghi màn hình khá đơn giản
    • Sử dụng ffmpeg hoặc ảnh chụp màn hình theo khoảng thời gian liên tục
    • Lưu màn hình thành các tệp phân đoạn 15 phút
    • Lập chỉ mục bản ghi bằng API OCR cục bộ của Windows và embedding hình ảnh
  • Người dùng có thể chỉ định chương trình hoặc vùng màn hình không muốn ghi lại
  • Trong Web UI cục bộ, có thể tua lại và tìm kiếm màn hình trong quá khứ bằng các manh mối sau
    • Tiêu đề cửa sổ
    • Từ khóa văn bản
    • Mô tả hình ảnh
  • Các tính năng bổ sung gồm thời gian sử dụng màn hình theo ngày/chu kỳ, tóm tắt theo nhịp sinh học hằng ngày và tạo lightbox hằng tháng

Thiết kế ưu tiên cục bộ và các giới hạn hiện tại

  • Mọi quá trình xử lý chỉ diễn ra trên máy tính của người dùng và không giả định có lưu trữ đám mây hay đăng ký thuê bao
  • Do có cấu trúc kết nối nhiều chức năng bằng Python, hoạt động bên trong minh bạch và người dùng dễ tự chỉnh sửa
    • Đổi lại, hiệu năng có thể chậm hơn
  • Nhà phát triển không phải lập trình viên chuyên nghiệp và đã tạo công cụ này vì mục đích sử dụng cũng như mối quan tâm cá nhân
    • Sau một thời gian sử dụng, nhà phát triển cho rằng nó đã đủ trưởng thành và vững chắc
    • Hoan nghênh báo lỗi, thảo luận và đóng góp
  • Các nhược điểm hiện tại cũng rất rõ ràng
    • Kho lưu trữ dữ liệu minh bạch và không được mã hóa
    • Người dùng có thể tự do tận dụng dữ liệu cục bộ có cấu trúc, nhưng cũng cần chú ý bảo vệ dữ liệu đó
  • Chức năng LLM chưa được đưa vào nhiều
    • Hiện chức năng LLM chủ yếu giới hạn ở việc phán đoán lệnh gọi API theo ý định người dùng và điều chỉnh kết quả tìm kiếm
    • Chưa đạt tới giai đoạn có thể trực tiếp hiểu, phân tích, hồi tưởng toàn bộ dữ liệu và hành động theo ý định người dùng
    • Tổng quan tiêu đề hằng ngày và chức năng tìm kiếm hiện được cung cấp là phạm vi khả thi trong Windrecorder

1 bình luận

 
GN⁺ 2024-04-22
Ý kiến trên Hacker News
  • Gần 20 năm trước đã có người làm một thứ tương tự, thậm chí còn có cả chức năng tua lại về một thời điểm cụ thể trong quá khứ rồi tiếp tục chạy từ đó
    http://www.cs.columbia.edu/~orenl/papers/sosp07-dejaview.pdf
    DejaView là một trình ghi máy tính ảo cá nhân có thể ghi lại toàn bộ trải nghiệm sử dụng desktop để phát lại, duyệt, tìm kiếm và khôi phục; nó lưu và lập chỉ mục đồng thời đầu ra màn hình, các checkpoint trạng thái ứng dụng/hệ thống tệp, cùng văn bản hiển thị có kèm ngữ cảnh
    Nó kết hợp ảo hóa hiển thị/hệ điều hành/hệ thống tệp mà không cần sửa ứng dụng, hệ thống cửa sổ hay kernel hệ điều hành, và cho ra kết quả rằng có thể ghi liên tục cũng như tìm kiếm/phát lại tương tác trên các ứng dụng desktop thực tế mà người dùng không cảm nhận thấy suy giảm hiệu năng

    • Không rõ họ thật sự đã làm ra chưa, hay chỉ viết bài báo. Cũng muốn biết có thể tải ở đâu
    • Không biết URL có đúng không. Mở ra thì báo không tìm thấy tệp
  • Cũng có một dự án mã nguồn mở tương tự cho macOS
    https://rem.ing
    https://github.com/jasonjmcghee/rem
    Nhà phát triển đã đăng lên HN 3 tháng trước, và cũng có một cuộc thảo luận khá hay
    https://news.ycombinator.com/item?id=38787892

    • Tôi là người tạo ra rem. Rất mong có người cùng tham gia phát triển
      Dự án dùng giấy phép MIT, và tôi cũng đã bắt đầu phiên bản đa nền tảng viết bằng Rust https://github.com/jasonjmcghee/xrem, nhưng vẫn còn ở giai đoạn đầu nên cần nhiều sự hỗ trợ hơn
    • Không biết có ai đã dùng thứ này lâu dài chưa. Muốn biết liệu nó có thực sự hữu ích không
    • Tôi từng tìm một thứ như thế này trên Mac khá lâu rồi bỏ cuộc, sau đó tự viết một script chụp screenshot mỗi 10 giây và một script khác ghép chúng thành video bằng ffmpeg
      Muốn đóng góp, nhưng hoàn toàn không biết Swift; những gì tôi làm đều là bash script chạy bằng launchd
    • Cũng có công ty làm việc tương tự là http://rewind.ai
  • Nếu làm một thứ như thế này thì có vẻ rất hay: Meta Smart Glasses chụp ảnh mỗi 2 giây, gửi ảnh lên server đám mây, chạy OCR và nhận diện/gắn nhãn đối tượng, rồi cung cấp một ứng dụng để tìm kiếm hoặc trò chuyện với quá khứ
    Khi đó có thể hỏi LLM những câu như “Mình để ví ở đâu?”, “Hôm qua ở nhà hàng sau khi thanh toán mình có nhận lại thẻ tín dụng không?”, “Hôm nay trên áo phông mới của con gái mình viết gì?”
    Nếu thêm cả ghi âm và chuyển giọng nói thành văn bản, có thể hỏi về deadline đã thống nhất trong cuộc họp, số điện thoại của người gặp ở công viên, hay tên nhà đầu tư gặp hôm nay; nếu truy cập được cả cuộc gọi điện thoại để chuyển lời nói của đối phương thành văn bản và lập chỉ mục thì còn tốt hơn
    Gợi nhớ đến tập “The Entire History of You” của Black Mirror: https://en.wikipedia.org/wiki/The_Entire_History_of_You

    • Thường thì các tập Black Mirror không được tạo ra như một viễn cảnh tương lai đáng để bắt chước
    • Nhà hàng tuyệt đối không nên mang thẻ tín dụng ra khỏi tầm mắt. Thực ra nhân viên cũng không cần chạm vào thẻ; đúng ra là khi ra về thì tự quẹt ở terminal thanh toán tại quầy
    • Frame của Brilliant Labs đang tiến gần hơn đến phần cứng có thể cung cấp loại dữ liệu này trong thực tế, theo cách thân thiện với người dùng và khá kín đáo
      Tôi đã đặt trước rồi
    • Đó chính là việc mà Humane AI Pin bị chỉ trích rất nhiều đang làm
  • Không biết có ai đã làm thứ này bằng accessibility API thay cho OCR, hoặc kết hợp với OCR chưa
    Có thể lấy văn bản trực tiếp từ accessibility API, nên OCR toàn bộ có vẻ lãng phí
    Đây cũng có thể là một cách tốt để kết nối LLM với UI, và cũng có thể là cách để các công cụ như vậy thu thập dữ liệu huấn luyện

    • Dragon NaturallySpeaking hỗ trợ các lệnh thoại như “nhấn OK” và thật sự phản hồi đúng theo đó
      Vấn đề Microsoft Office tự render widget riêng được giải quyết bằng cách đọc văn bản của widget và nút bằng OCR để nhận ra nhãn
      Cách này cần dùng thường xuyên hơn nhiều so với tưởng tượng. Các nhà phát triển thường làm người ta thất vọng và không dùng API được cung cấp
    • Khi làm một trình ghi màn hình kiểu Loom có thể tìm kiếm trong màn hình, tôi đã thử dùng cả hai một chút; nếu muốn làm độc lập với hệ điều hành thì sự khác biệt giữa accessibility API của Mac và Windows rất lớn, và ngay cả trên Windows mỗi ứng dụng triển khai một kiểu, nên khó xác định thực tế người dùng đã “nhìn thấy” gì
      Có ứng dụng bỏ sót dữ liệu cốt lõi hoặc triển khai sai. Tôi từng nghĩ accessibility sẽ dễ, nhưng thực tế nhiều khi OCR lại dễ hơn
    • Tôi từng làm một MVP trình ghi workflow có lịch sử màn hình
      Tôi nghĩ nếu cách tiếp cận này thực sự hiệu quả thì Microsoft hoặc Apple sẽ tích hợp mặc định vào hệ điều hành như một phần của Copilot, để ghi nhớ mọi thứ và hỗ trợ tri thức của người dùng
      Lịch sử màn hình tôi làm không cao cấp như ứng dụng được nêu ở đây, và chính tôi cũng không dùng nó
    • Sẽ tốt nếu có thể lưu kèm thông tin về ứng dụng đang ở foreground dưới dạng metadata
  • Trong Notion xuất hiện màn hình chặn “JavaScript must be enabled in order to use Notion” và “Please enable JavaScript to continue”; nếu dùng NoScript thì vì cách chặn này mà thực tế không thể bật JavaScript cho site được
    Ước gì họ đừng redirect sang một trang tĩnh. Trang đó không có JavaScript nào để cho phép theo từng trường hợp, và redirect quá nhanh nên cũng không có cơ hội bật JavaScript ở trang chính
    Chỉ cho phép riêng notion.so cũng không vượt qua được màn chặn này

    • Cái này thật sự tệ. Họ đã dùng một thứ vốn có thể hoạt động ổn theo cách tệ nhất
      Cũng khá bất ngờ là HTML cho phép redirect không cần JavaScript
  • Trên Windows cũng có TimeSnapper. Không phải mã nguồn mở, nhưng thỉnh thoảng nhà phát triển có mặt trên Hacker News
    https://timesnapper.com/

    • Để theo dõi thời gian dựa trên ảnh chụp màn hình, tiêu đề cửa sổ, và đôi khi là gắn thẻ nâng cao dựa trên tài liệu đang mở, cũng có ManicTime. Tuy nhiên có vẻ không có OCR
      https://www.manictime.com/
  • Tôi nhớ vài dự án kiểu này. Lần đầu tôi thấy là Savant Recall vào năm 2014; dự án không được chọn vào YC nên đã được phát hành mã nguồn mở
    Sau đó Ritter, đồng sáng lập Napster, đã tiếp quản, đổi tên thành Atlas Recall, gắn thêm UI mới và gọi được 20 triệu USD vốn đầu tư
    Nhưng một năm sau nó đột ngột đóng cửa, và trên LinkedIn ghi là “được Xinova mua lại”. Một cái khác tôi từng nghe nói đến là Apse năm 2019

  • Trông rất giống https://apse.io/. Bên đó cũng dùng OCR để biến mọi thứ từng thấy trên màn hình thành chỉ mục có thể tìm kiếm
    Tôi thích điểm windrecorder là mã nguồn mở

  • Theo README trên GitHub, video chỉ khoảng 100–200GB mỗi năm, nên cũng không tệ lắm

    • Tôi tò mò con số đó dựa trên trung bình bao nhiêu giờ mỗi ngày. Cũng tò mò liệu các cảnh không có văn bản như phim hay game có bị xóa không
  • Nếu bạn có ý tưởng kiểu “sao không có ứng dụng như thế này nhỉ?”, thì việc tự tay triển khai tốt như vậy sẽ truyền cảm hứng cho mọi người

    • Cách dễ nhất để tìm một ứng dụng làm X là tự tạo một cái mới rồi đăng lên HN và xem bình luận
    • rewind.ai cũng là một ví dụ như vậy; gần đây họ đã chuyển dữ liệu này sang kho lưu trữ chỉ trên cloud và đổi tên thành limitless.ai, nên thật vui khi thấy có mã nguồn mở kiểu này xuất hiện
      Vì không bị ép phải lưu trên cloud, điều đó thật tốt — tôi nói điều này với tư cách có lẽ sắp ngừng làm khách hàng trả phí