Riddle: 將 reMarkable Paper Pro 變成 AI 驅動的日記

Riddle: 將 reMarkable Paper Pro 變成 AI 驅動的日記

Riddle 將 reMarkable Paper Pro 轉化為互動式 AI 日記

Riddle 是一個開源應用程式,可將 reMarkable Paper Pro 轉換為《哈利波特》中功能齊全的「湯姆·瑞斗的日記」。該系統允許使用者透過筆寫在螢幕上,隨後墨水會淡去,並由具備視覺能力的語言模型 (LLM) 以流暢的手寫風格寫回回應給使用者。

技術架構與墨水處理

該應用程式利用自定義管線來處理從實體手寫到 AI 生成回應的轉換。處理流程遵循以下特定步驟:

  1. 輸入擷取:系統透過 evdev 以硬體事件速率擷取具有 4,096 級壓感的原始筆觸。
  2. 提交:在停止書寫 2.8 秒後,頁面會被提交並轉換為 PNG 圖片。
  3. Oracle 處理:此 PNG 會被傳送到具備視覺能力的 LLM(即「oracle」),該模型會逐句串流傳回文字回應。
  4. 手寫合成:文字回應會使用 Dancing Script 字體進行渲染,透過 Zhang-Suen thinning 演算法進行單像素筆觸骨架化,然後作為動畫筆觸在顯示器上重播。

顯示後端

Riddle 支援兩種不同的顯示模式來管理延遲與系統整合:

  • Windowed (qtfb):在 xochitl (AppLoad) 環境中作為視窗化應用程式執行。
  • Takeover (quill):一種高效能模式,會停止廠商提供的 UI (xochitl) 並直接驅動廠商的 e-ink 引擎 (libqsgepaper.so)。這能為「即時墨水」提供最低可能的延遲。

LLM 整合與 Oracle

日記的「靈魂」是由具備視覺能力的 LLM 所驅動。使用者可以透過兩種方式配置後端:

OpenAI 相容 API

Riddle 可以直接連接到任何 /chat/completions 端點。這包括 OpenAI, OpenRouter, Groq 或本地伺服器。配置透過 oracle.env 檔案進行處理,使用者可以在其中定義 API key、base URL 以及模型(例如 gpt-4o-mini)。對於像 Gemini 3.x 或 o-series 的思考型模型,專案建議設定 RIDDLE_OPENAI_REASONING=low 以減少首次墨水出現的時間。

pi 後端

如果未設定 RIDDLE_OPENAI_KEY,系統會自動嘗試使用 pi(透過 pi-mono),該程序作為常駐 RPC 程序執行。此方法透過保持 Node.js 環境與訂閱驗證處於熱啟動狀態來降低延遲。

安裝與需求

警告:此軟體會修改裝置並以 root 權限執行。它是專門為 reMarkable Paper Pro (ferrari, aarch64, OS 3.26–3.27) 設計的,使用風險自負。

前置需求

  • 開發者模式:裝置必須處於開發者模式並已安裝啟動器 (launcher)。
  • remagic:建議使用 remagic 工具來簡化開發者模式的設定與應用程式安裝。

安裝方法

  • 透過 remagic:最簡單的方法,使用 remagic install riddle 接著使用 remagic config riddle 進行設定。
  • 預建套件 (Prebuilt Bundle):使用者可以下載 .zip 版本,將資料夾透過 SCP 傳送到平板電腦的 appload 目錄,並使用 API key 配置 oracle.env 檔案。
  • 從原始碼安裝:專案可以從 x86_64 進行交叉編譯。 「Takeover」版本需要 reMarkable SDK 工具鏈以及從使用者自有裝置中提取的專有 libqsgepaper.so 函式庫。

使用者介面與手勢

與日記的互動是透過實體手勢而非傳統 UI 進行處理:

  • 提交:書寫後停筆。

  • Erase:將筆翻轉過來使用橡皮擦。

  • Help:畫一個大的問號 (?) 以召喚內建指南。

  • Exit:同時用五根手指輕觸螢幕。

  • Sleep/Wake:使用電源鍵使裝置進入休眠;頁面會顯示「The diary sleeps.」並在喚醒時準確地從使用者離開的地方恢復。

Sources