Riddle: reMarkable Paper ProをAI搭載の日記帳に変える

Riddle: reMarkable Paper ProをAI搭載の日記帳に変える

RiddleはreMarkable Paper ProをインタラクティブなAI日記に変身させる

Riddleは、reMarkable Paper Proをハリー・ポッターに登場する機能的な「トム・リドルの日記帳」へと変換するオープンソースアプリケーションです。このシステムでは、ユーザーがペンで画面に文字を書くと、そのインクが消え、ビジョン機能を持つ大規模言語モデル(LLM)が、流れるような手書きスタイルで返信をユーザーに書き込みます。

技術アーキテクチャとインク処理

このアプリケーションは、物理的な手書きからAI生成のレスポンスへの移行を処理するために、カスタムパイプラインを利用しています。プロセスは以下の特定のステップに従います:

  1. Input Capture: システムはevdevを介して、ハードウェアのイベントレートで4,096段階の筆圧を持つ生のペンストロークをキャプチャします。
  2. Commitment: 書き込みが2.8秒間停止すると、ページが確定され、PNG画像に変換されます。
  3. Oracle Processing: このPNGはビジョンLLM(「オラクル」)に送信され、テキストの返信が文ごとにストリーミングされます。
  4. Handwriting Synthesis: テキストの返信はDancing Scriptフォントを使用してレンダリングされ、Zhang-Suen thinningを用いて単一ピクセルのペンパスにスケルトン化され、その後、ディスプレイ上にアニメーションストロークとして再生されます。

Display Backends

Riddleは、レイテンシとシステム統合を管理するために、2つの異なるディスプレイモードをサポートしています:

  • Windowed (qtfb): xochitl (AppLoad)環境内でウィンドウアプリケーションとして実行されます。
  • Takeover (quill): ベンダーのUI (xochitl)を停止し、ベンダーのe-inkエンジン (libqsgepaper.so)を直接駆動する高パフォーマンスモードです。これにより、「瞬時のインク」を実現するための可能な限り低いレイテンシを提供します。

LLM統合とオラクル

日記帳の「精神」は、ビジョン機能を持つLLMによって駆動されます。ユーザーはバックエンドを2つの方法で設定できます:

OpenAI互換API

Riddleは、あらゆる/chat/completionsエンドポイントに直接接続できます。これにはOpenAI、OpenRouter、Groq、またはローカルサーバーが含まれます。設定はoracle.envファイルを通じて行われ、ユーザーはAPIキー、ベースURL、およびモデル(例:gpt-4o-mini)を定義します。Gemini 3.xやo-seriesのような思考モデルを使用する場合、プロジェクトは「最初のインク」までの時間を短縮するためにRIDDLE_OPENAI_REASONING=lowに設定することを推奨しています。

pi バックエンド

RIDDLE_OPENAI_KEYが設定されていない場合、システムは自動的に、常駐RPCプロセスとして実行されるpipi-mono経由)の使用を試みます。この方法は、Node.js環境とサブスクリプション認証を「ウォーム」な状態に保つことでレイテンシを低減します。

インストールと要件

警告: このソフトウェアはデバイスを改造し、root権限で実行されます。これはreMarkable Paper Pro (ferrari, aarch64, OS 3.26–3.27) 専用に設計されており、自己責任で使用してください。

前提条件

  • Developer Mode: デバイスは、ランチャーがインストールされたデベロッパーモードである必要があります。
  • remagic: デベロッパーモードの設定とアプリケーションのインストールを簡略化するために、remagicツールが推奨されます。

インストール方法

  • Via remagic: 最も簡単な方法は、remagic install riddleを実行し、次に設定のためにremagic config riddleを実行することです。
  • Prebuilt Bundle: ユーザーは.zipリリースをダウンロードし、そのフォルダをapploadディレクトリにSCPで転送し、oracle.envファイルをAPIキーで設定できます。
  • From Source: プロジェクトはx86_64からクロスコンパイル可能です。「Takeover」バージョンには、reMarkable SDKツールチェーンと、ユーザー自身のデバイスから抽出されたプロプライエタリなlibqsgepaper.soライブラリが必要です。

ユーザーインターフェースとジェスチャー

日記帳とのインタラクションは、従来のUIではなく、物理的なジェスチャーによって行われます:

  • Submit: 書き込みを行い、その後ペンを休ませます。

  • Erase: マーカーをひっくり返して消しゴムを使用します。

  • Help: 大きな疑問符 (?) を描いて、内蔵ガイドを呼び出します。

  • Exit: 5本の指で同時に画面をタップします。

  • Sleep/Wake: 電源ボタンを使用してデバイスをサスペンドします。ページには「The diary sleeps.」と表示され、復帰時にはユーザーが中断した場所から正確に再開されます。

Sources