1 điểm bởi GN⁺ 4 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • riddle là một ứng dụng trên reMarkable Paper Pro: chữ viết bằng bút sẽ biến mất sau một lúc, rồi câu trả lời được viết lại bằng các nét chữ tay như nhật ký của Tom Riddle trước khi biến mất
  • Luồng hoạt động là nhận đầu vào từ bút, sau 2,8 giây không hoạt động thì chốt trang thành PNG, rồi LLM thị giác đọc chữ viết tay và stream câu trả lời theo từng câu
  • Cách cài đặt dễ nhất là thông qua remagic; cũng có thể cài gói dựng sẵn hoặc build từ mã nguồn, nhưng cần chế độ nhà phát triển và launcher trên reMarkable Paper Pro
  • Ứng dụng chạy bằng root; ở chế độ takeover, ứng dụng dừng UI của vendor rồi điều khiển trực tiếp engine e-ink. Phạm vi thử nghiệm chỉ giới hạn ở reMarkable Paper Pro ferrari, aarch64, OS 3.26–3.27
  • Backend LLM có thể dùng API /chat/completions tương thích OpenAI hoặc tiến trình resident pi --mode rpc; người dùng tự chịu rủi ro khi chỉnh sửa thiết bị và sử dụng thư viện vendor

Ứng dụng reMarkable hoạt động như nhật ký Tom Riddle

  • riddle là ứng dụng trên reMarkable Paper Pro: khi bạn viết lên trang bằng bút, sau một lúc chữ sẽ biến mất như thấm vào giấy, rồi câu trả lời xuất hiện theo từng nét bằng chữ viết tay đang chảy
  • Mục tiêu là mang lại trải nghiệm mực xuất hiện trên giấy mà không cần ánh sáng màn hình, bàn phím hay UI chat
  • Đây là ứng dụng nhật ký xuất hiện trong bản demo, được dùng theo kiểu viết cho “Tom”

Cách cài đặt và chạy

  • Nếu dùng lần đầu, cần đặt reMarkable Paper Pro vào chế độ nhà phát triển và cài launcher
  • remagic hướng dẫn kích hoạt chế độ nhà phát triển và thiết lập môi trường chỉ bằng một lệnh
  • Lệnh cài remagic:
    • remagic install riddle: tải xuống có kiểm tra checksum rồi cài vào AppLoad
    • remagic config riddle: mở biểu mẫu cấu hình trong trình duyệt và cung cấp cả mã QR cho điện thoại
  • Nếu đã có xovi và AppLoad, có thể cài bằng một trong các cách: catalog remagic, gói dựng sẵn, hoặc build từ mã nguồn
  • Sau khi cài, nhấn Reload trong AppLoad, chạy The Diary, viết gì đó rồi để bút nghỉ là ứng dụng sẽ hoạt động

Cài gói dựng sẵn

  • Tải riddle-<version>.zip từ bản phát hành mới nhất và giải nén thành thư mục riddle
  • Sao chép thư mục vào /home/root/xovi/exthome/appload/ trên tablet
  • Sao chép oracle.env.example thành oracle.env và đưa khóa API tương thích OpenAI vào RIDDLE_OPENAI_KEY
  • Nếu không nhập khóa API, có thể dùng đường dẫn pi
  • Reload trong AppLoad rồi chạy The Diary

Chỉnh sửa thiết bị và phạm vi hỗ trợ

  • riddle chỉnh sửa thiết bị và chạy bằng root
  • Ở chế độ takeover, nó dừng UI của vendor và điều khiển trực tiếp engine e-ink
  • Môi trường đã được kiểm thử chỉ gồm reMarkable Paper Pro ferrari, aarch64, OS 3.26–3.27
  • Trên model hoặc phiên bản OS khác, ứng dụng có thể không hoạt động
  • Ứng dụng không liên quan đến reMarkable AS; trước khi cài đặt cần đảm bảo vẫn có thể truy cập SSH để có đường khôi phục

Cấu trúc hoạt động bên trong

  • Đầu vào được nhận qua raw evdev, sử dụng 4096 mức áp lực và tốc độ sự kiện phần cứng
  • Khi người dùng viết rồi dừng trong 2,8 giây, trang được commit và chuyển thành PNG
  • oracle, tiến trình LLM resident, đọc PNG và stream câu trả lời theo từng câu
  • Câu trả lời được raster hóa bằng phông Dancing Script, sau đó dùng Zhang-Suen thinning để tạo đường bút một pixel, rồi truy vết nét và phát animation
  • Có hai backend hiển thị
    • qtfb: ứng dụng AppLoad chạy ở chế độ cửa sổ bên trong xochitl
    • quill: chế độ full takeover, dừng xochitl và điều khiển trực tiếp engine e-ink của vendor

Cấu trúc kho mã

  • riddle/ là ứng dụng Rust, bao gồm đầu vào bút, bề mặt mực, tổng hợp chữ viết tay, trình quản lý tiến trình oracle và hai backend hiển thị
  • quill/ là takeover display host viết bằng C/C++
  • quill đặt một QImage constructor interposition shim kiểu epfb-re lên trên waveform engine libqsgepaper.so của vendor, đồng thời cung cấp C ABI quill_init, quill_buffer, quill_swap
  • quill cũng bao gồm bài test độ trễ scribble và các demo renderer bản đồ, hình ảnh, GIF

Cử chỉ

  • Khi viết rồi để bút nghỉ, nhật ký sẽ hấp thụ mực và Tom trả lời
  • Lật marker lại thì nó hoạt động như tẩy
  • Vẽ dấu ? lớn để gọi hướng dẫn tích hợp
  • Chạm đồng thời bằng năm ngón tay để thoát nhật ký
  • Nhấn nút nguồn sẽ hiển thị “The diary sleeps.” trên trang rồi tablet chuyển sang suspend; nhấn lại sẽ thức dậy tại cùng vị trí

Backend LLM

  • Câu trả lời được tạo bởi LLM thị giác, nhận trang đã commit dưới dạng PNG inline và đọc chữ viết tay
  • Khi khởi động, ứng dụng chọn một trong hai backend
  • API tương thích OpenAI

    • Nếu đặt RIDDLE_OPENAI_KEY, ứng dụng sẽ gửi yêu cầu trực tiếp tới endpoint /chat/completions tương thích OpenAI
    • Hoạt động với các đích hỗ trợ cùng định dạng như OpenAI, OpenRouter, Groq hoặc server cục bộ
    • Ví dụ cấu hình mặc định:
    • RIDDLE_OPENAI_KEY: bắt buộc
    • RIDDLE_OPENAI_BASE: tùy chọn, mặc định https://api.openai.com/v1
    • RIDDLE_OPENAI_MODEL: tùy chọn, mặc định gpt-4o-mini, phải có khả năng xem hình ảnh
    • RIDDLE_OPENAI_REASONING: dành cho model thinking
    • RIDDLE_OPENAI_MAX_TOKENS: runaway guard
    • Với các model thinking như Gemini 3.x hoặc o-series, có thể đặt RIDDLE_OPENAI_REASONING=low để giảm thời gian tới nét mực đầu tiên
    • Một số nhà cung cấp từ chối trường reasoning với model non-thinking, nên trong trường hợp này không nên đặt cấu hình đó
    • Hidden reasoning token cũng được tính vào RIDDLE_OPENAI_MAX_TOKENS, nên giới hạn quá thấp có thể khiến câu trả lời hiển thị bị thiếu
    • Trước khi chạy, có thể kiểm tra câu trả lời streaming bằng riddle --oracle-test path/to/handwriting.png
    • Thời gian đo trên thiết bị tới nét mực đầu tiên khoảng 0,9–1,1 giây, và HTTPS được tích hợp trong riddle bằng pure-Rust
  • Đường dẫn pi

    • Nếu pi đang chạy sẵn, riddle dùng tiến trình resident pi --mode rpc được giữ ấm
    • Đường dẫn này tải Node và xác thực thuê bao một lần, rồi mỗi lượt chỉ phải trả độ trễ của model
    • Được dùng tự động khi RIDDLE_OPENAI_KEY chưa được đặt
    • Cả hai backend đều stream câu trả lời theo từng câu, nên quill có thể bắt đầu viết trước khi model hoàn tất
    • Persona prompt nằm trong riddle/src/oracle.rs

Build

  • Cross-compile trên x86_64
  • Bản build AppLoad/qtfb ở chế độ cửa sổ cần xovi + AppLoad trên thiết bị
  • Bản build takeover là cách được dùng trong demo, cần toolchain reMarkable SDK ~/rm-sdk-3.26libqsgepaper.so proprietary lấy từ thiết bị của người dùng
  • Bundle takeover được staged thành dist/riddle/ self-contained, gồm binary, libquill.so, launch script và manifest
  • Khi chạy bằng AppLoad, ứng dụng được tách ra dưới dạng transient systemd unit, dừng xochitl rồi chạy nhật ký; khi thoát, luôn khôi phục xochitl
  • Cách thoát gồm nút nguồn, chạm năm ngón tay, hoặc SIGTERM
  • Nếu có sự cố, có thể khởi động lại xochitl qua SSH bằng systemctl start xochitl

Phông chữ và giấy phép

  • Chữ viết tay trong câu trả lời dùng Dancing Script, theo giấy phép SIL OFL 1.1
  • Mã trong kho dùng giấy phép MIT
  • libqsgepaper.so của vendor và thư viện Qt là đối tượng interpose, không được bao gồm; người dùng phải lấy từ thiết bị hoặc SDK của mình

1 bình luận

 
Ý kiến trên Hacker News
  • Trớ trêu là cuốn nhật ký của Tom Riddle xúi trẻ em tự sát và còn chỉ cả [1] cách làm trông lại đúng với nhân vật hơn phiên bản trong sách
    [1] https://en.wikipedia.org/wiki/Deaths_linked_to_chatbots#Suic...

    • Prompt kiểu đó thì AI nào cũng sẽ từ chối. Khi tìm hiểu về trợ tử ở Bắc Âu, tôi hỏi chính xác phải dùng thuốc gì và liều lượng bao nhiêu thì Claude đã từ chối và báo cho Anthropic, vài ngày sau tài khoản bị khóa
      May là mẫu kháng nghị có tác dụng, nhưng lúc đó tôi đã dùng một tài khoản Claude khác và cầu mong nó không bị khóa tiếp
      Cũng có những mô hình không kiểm duyệt có thể chạy cục bộ bằng llama.cpp đang được chia sẻ: https://www.reddit.com/r/LocalLLaMA/comments/1rq7jtm/qwen353...
      Chỉ là cửa sổ ngữ cảnh đầy rất nhanh nên dùng khá phiền, và hoàn toàn không phải để triển khai production. Nói cách khác, nhật ký Tom Riddle dạng dịch vụ là bất khả thi
      Dù tốt hay xấu, giờ đã là thời đại mà niềm vui không còn được cho phép, và thời điểm đó lại trùng với lúc thuật ngữ “AI psychosis” xuất hiện
    • Không ngờ chỉ riêng ChatGPT đã liên quan đến nhiều ca tử vong như vậy. Tôi tưởng chỉ khoảng 2–3 vụ, nhưng danh sách dài hơn nhiều so với tôi nghĩ
  • Đừng bao giờ tin thứ gì có thể tự suy nghĩ, nếu bạn không thấy được bộ não của nó nằm ở đâu

    • Ngược lại, đó mới gần với cách cuốn nhật ký của Tom Riddle hoạt động hơn
    • Vì vậy nếu làm nó thành một mô hình cục bộ hoàn toàn độc lập, thay vì giao tiếp với cloud, thì có lẽ sẽ ấn tượng hơn
  • Hơi lệch chủ đề một chút, nhưng việc ví một phát minh với cổ vật bị nguyền rủa thao túng tâm trí người dùng để phản bội bạn bè và giao họ cho một thực thể ác độc đầy quyền năng nghe không hay lắm
    Tuy nhiên, thứ này chạy bằng AI tạo sinh, mà AI tạo sinh cũng từng đẩy con người tới hành vi xấu, nên có lẽ phép so sánh cũng phù hợp

    • Nhà văn SF: Tôi đã sáng tạo ra Torment Nexus trong sách của mình như một thiết bị mang tính cảnh báo
      Công ty công nghệ: Cuối cùng chúng tôi đã tạo ra Torment Nexus trong tiểu thuyết SF kinh điển 《Đừng tạo ra Torment Nexus》
    • Cuối cùng cũng đã tạo ra Torment Nexus trong tiểu thuyết SF kinh điển “Don’t Create The Torment Nexus”
      https://x.com/AlexBlechman/status/1457842724128833538?lang=e...
    • Nếu phép so sánh chính xác thì tại sao lại là so sánh tệ?
      Và còn có câu “công nghệ đủ tiên tiến thì không thể phân biệt với ma thuật”. Cả hai đều có thể được tạo ra theo hướng thiện hoặc ác
    • Tôi nghĩ đây là một trong những điểm hấp dẫn của dự án này. Nó có cảm giác gì đó rờn rợn và mỉa mai
    • Tôi đã phải đọc lại. Họ đang đóng gói phép so sánh này như thể đó là một điều tích cực sao?!
      Nghĩ lại thì, có lẽ chính LLM đã tự nghĩ ra phép ví von này… theo nghĩa nào đó thì còn tệ hơn
  • Thứ này sick theo nghĩa Tony Hawk thập niên 90
    Tôi thích việc giờ đây mọi người có thể cứ gõ vài thứ là khiến nó tồn tại
    Ngày trước có khi phải chờ đội engineering từ một ngày đến một tuần chỉ để đổi một màu nút
    Giờ chúng ta không còn sống trong thời đại chậm chạp nữa

    • Bạn nghĩ công nghệ là nút thắt cổ chai à?
      Cái nút đó không quan trọng và không nên tiêu tốn bất kỳ loại tài nguyên nào, đặc biệt là tài nguyên engineering. Việc mất một tuần không phải bug mà là feature. Nó nghĩa là engineering đã đánh giá đúng mức độ ưu tiên và khẩn cấp của công việc
      Cỗ máy đánh bạc ma thuật của bạn sẽ cho phép sản xuất rác và nhận thức méo mó về nỗ lực engineering ở quy mô khổng lồ. Sẽ có hệ quả đi kèm
    • Nếu một đội mất một tuần chỉ để đổi màu một cái nút, thì không phải vì sửa code khó
      Bạn có phải PM của dự án đó không?
    • Điều buồn cười là việc tạo cơ chế nhập/xuất kém ấn tượng hơn rất nhiều, và đặc biệt là kém hữu ích hơn rất nhiều so với công nghệ LLM nền tảng mà Hacker News hay coi thường
    • Bạn phải chờ đội engineering từ một ngày đến một tuần để đổi một màu nút á?
      Đùa thôi chứ
  • Những ý tưởng thế này sẽ hay hơn nhiều nếu README nhúng trực tiếp một video demo ngắn, GIF, hoặc thậm chí một ảnh chụp màn hình
    Nếu không thì tiêu đề đọc giống meme “Curtains for Zoosha?” [0]
    [0]: https://www.reddit.com/r/BrandNewSentence/comments/15hcc4x/c...

  • Thú vị là cuối năm ngoái tôi cũng làm một thứ tương tự. Chỉ khác là nó cho vẽ trong trình duyệt trên một máy tính bình thường
    Tôi dùng pageflip [0] theo phong cách giống cuốn nhật ký thật của Riddle, rồi gắn một mô hình cục bộ nhỏ để nhập vai bằng ollama
    Tôi nhớ khi viết “my name is Harry Potter, what is yours?” thì qua nhiều lần thử nó trả lời là Snape, Malfoy, thậm chí cả Harry Potter
    Sau khi kết thúc thử nghiệm, tôi nhận ra mình không phải người đầu tiên nghĩ ra ý tưởng này, và cũng tìm thấy vài cuốn nhật ký Riddle AI tương tự
    Nhân tiện, tôi có Remarkable 2 và từ cuối tuần này sẽ có thêm m4 iPad Air, nên có lẽ tôi sẽ thử thứ này và xem môi trường chạy mô hình trên iOS ra sao
    0) https://nodlik.github.io/react-pageflip/

  • Nếu Fable giờ có thể tạo Trường Sinh Linh Giá, Bộ Thương mại nên nghiêm túc cân nhắc thêm một lần timeout nữa

    • Đúng. Để an toàn, tốt nhất cũng nên cấm cả mô hình Trung Quốc có thể làm điều tương tự
  • “Không ánh sáng màn hình, không bàn phím, không UI chat.”
    Cái này chẳng phải chỉ là UI chat sao?

    • Không chỉ là giao diện chat, mà là một frontend giao tiếp bằng chữ viết :sparkle:!
    • Bắt buộc phải có công thức “no x no y no z”
    • Đúng. Vì không thể dừng lại để suy nghĩ nên có thể xem là một dạng còn tệ hơn
      Dù vậy, sự thật là nó vẫn cực kỳ ngầu
    • Đây rõ ràng là UI chat
    • Người ta sẽ nhìn thứ này rồi trầm trồ, nhưng vẫn gọi LLM là rác
  • LLM nói chung mang cảm giác rất giống A Young Lady's Illustrated Primer. Một chiếc hộp đen ma thuật mà bạn có thể hỏi bất cứ điều gì
    Đặc biệt càng giống hơn nếu còn gắn thêm các danh tính giả như openclaw/soul

  • Một dự án thật sự thú vị. Tôi sẽ không mua Paper Pro chỉ để chạy app này, nhưng tôi thích việc những thứ như vậy tồn tại và có người đang vui vẻ sử dụng chúng