Riddle: reMarkable Paper ProをAI搭載の日記帳に変える
Riddle: reMarkable Paper ProをAI搭載の日記帳に変える
RiddleはreMarkable Paper ProをインタラクティブなAI日記に変身させる
Riddleは、reMarkable Paper Proをハリー・ポッターに登場する機能的な「トム・リドルの日記帳」へと変換するオープンソースアプリケーションです。このシステムでは、ユーザーがペンで画面に文字を書くと、そのインクが消え、ビジョン機能を持つ大規模言語モデル(LLM)が、流れるような手書きスタイルで返信をユーザーに書き込みます。
技術アーキテクチャとインク処理
このアプリケーションは、物理的な手書きからAI生成のレスポンスへの移行を処理するために、カスタムパイプラインを利用しています。プロセスは以下の特定のステップに従います:
- Input Capture: システムは
evdevを介して、ハードウェアのイベントレートで4,096段階の筆圧を持つ生のペンストロークをキャプチャします。 - Commitment: 書き込みが2.8秒間停止すると、ページが確定され、PNG画像に変換されます。
- Oracle Processing: このPNGはビジョンLLM(「オラクル」)に送信され、テキストの返信が文ごとにストリーミングされます。
- 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プロセスとして実行されるpi(pi-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.」と表示され、復帰時にはユーザーが中断した場所から正確に再開されます。