1 ポイント 投稿者 GN⁺ 4 시간 전 | 1件のコメント | WhatsAppで共有
  • riddleは、reMarkable Paper Proでペンで書いた文字がしばらくすると消え、Tom Riddleの日記帳のように返答が手書きのストロークで再び書かれてから消えるアプリ
  • 動作フローは、ペン入力を受け取り、2.8秒のアイドル後にページをPNGとして確定し、ビジョンLLMが手書きを読み取って文単位で返答をストリーミングする方式
  • インストールはremagicを使う方法が最も簡単で、事前ビルド済みバンドルの導入やソースビルドも可能だが、reMarkable Paper Proの開発者モードとランチャーが必要
  • アプリはrootで実行され、takeoverモードではvendor UIを停止したうえでe-inkエンジンを直接駆動し、テスト範囲はreMarkable Paper Pro ferrari、aarch64、OS 3.26–3.27に限定される
  • LLMバックエンドはOpenAI互換の/chat/completions API、または常駐するpi --mode rpcプロセスを利用でき、デバイス改変やvendorライブラリの利用はユーザー自身の責任で行う必要がある

Tom Riddleの日記帳のように動作するreMarkableアプリ

  • riddleは、reMarkable Paper Proでペンを使ってページに文字を書くと、しばらくして文字が紙に染み込むように消え、返答が流れるような手書き文字でストローク単位に現れるアプリ
  • 画面の光、キーボード、チャットUIなしに、紙にインクが現れる体験を目指している
  • デモに登場した日記帳アプリで、「Tom」に向けて書く形で使う

インストールと実行方法

  • 初めて使う場合は、reMarkable Paper Proを開発者モードに設定し、ランチャーをインストールする必要がある
  • remagicは、開発者モードの有効化と環境設定を1つのコマンドで進められるよう案内する
  • remagicのインストールコマンド:
    • remagic install riddle: チェックサム検証付きでダウンロードし、AppLoadにインストール
    • remagic config riddle: ブラウザで設定フォームを開き、スマートフォン用のQRも提供
  • すでにxoviとAppLoadがある場合は、remagicカタログ、事前ビルド済みバンドル、ソースビルドのいずれかでインストール可能
  • インストール後はAppLoadでReloadを押し、The Diaryを起動して文字を書き、ペンを止めておくと動作する

事前ビルド済みバンドルの導入

  • 最新リリースからriddle-<version>.zipを取得し、riddleフォルダとして展開する
  • フォルダをタブレットの/home/root/xovi/exthome/appload/にコピーする
  • oracle.env.exampleoracle.envにコピーし、RIDDLE_OPENAI_KEYにOpenAI互換APIキーを入れる
  • APIキーを入れない場合はpi経路を使える
  • AppLoadでReloadした後、The Diaryを起動する

デバイス改変とサポート範囲

  • riddleはデバイスを改変し、rootで実行される
  • takeoverモードではvendor UIを停止し、e-inkエンジンを直接駆動する
  • テスト済み環境はreMarkable Paper Pro ferrari、aarch64、OS 3.26–3.27のみ
  • 他のモデルやOSバージョンでは動作しない可能性がある
  • reMarkable ASとは無関係であり、インストール前にSSHアクセスを維持できることを確認し、復旧手段を確保しておく必要がある

内部動作の構造

  • 入力はraw evdev経由で受け取り、4096段階の筆圧とハードウェアイベント速度を利用する
  • ユーザーが文字を書いて2.8秒間停止すると、ページをコミットしてPNGに変換する
  • 常駐LLMプロセスのoracleがPNGを読み取り、返答を文単位でストリーミングする
  • 返答はDancing Scriptフォントをラスタライズした後、Zhang-Suen thinningで単一ピクセルのペン経路に変換し、ストロークを追跡してアニメーション再生する
  • 表示バックエンドは2種類ある
    • qtfb: xochitl内部でウィンドウモード実行されるAppLoadアプリ
    • quill: xochitlを停止し、vendor e-inkエンジンを直接駆動するfull takeoverモード

リポジトリ構成

  • riddle/はRust製アプリで、ペン入力、インクサーフェス、手書き合成、oracleプロセスマネージャー、2つの表示バックエンドを含む
  • quill/はC/C++製のtakeover display host
  • quillは、vendorのlibqsgepaper.so waveform engineの上にepfb-reスタイルのQImage constructor interposition shimを載せ、quill_initquill_bufferquill_swapのC ABIを提供する
  • quillにはscribbleレイテンシテストや、地図・画像・GIFレンダラのデモも含まれる

ジェスチャー

  • 文字を書いてペンを止めておくと、日記帳がインクを吸い込み、Tomが返答する
  • マーカーを裏返すと消しゴムとして動作する
  • 大きな**?**を描くと内蔵ガイドを呼び出す
  • 5本の指で同時にタップすると日記帳を終了する
  • 電源ボタンを押すとページに“The diary sleeps.”と表示された後、タブレットがsuspendし、再度押すと同じ位置から復帰する

LLMバックエンド

  • 返答は、コミット済みページをinline PNGとして受け取って手書きを読み取るビジョンLLMによって生成される
  • 起動時に2つのバックエンドのいずれかを選ぶ
  • OpenAI互換API

    • RIDDLE_OPENAI_KEYを設定すると、OpenAI互換の/chat/completionsエンドポイントへ直接リクエストする
    • OpenAI、OpenRouter、Groq、ローカルサーバーなど、同じ形式をサポートする対象で動作する
    • 基本設定例:
    • RIDDLE_OPENAI_KEY: 必須
    • RIDDLE_OPENAI_BASE: 任意、既定値はhttps://api.openai.com/v1
    • RIDDLE_OPENAI_MODEL: 任意、既定値はgpt-4o-mini、画像を見られる必要がある
    • RIDDLE_OPENAI_REASONING: thinkingモデル向け
    • RIDDLE_OPENAI_MAX_TOKENS: runaway guard
    • thinkingモデルのGemini 3.xやo-seriesでは、最初のインクが出るまでの時間を短縮するためにRIDDLE_OPENAI_REASONING=lowを設定できる
    • 一部の提供元はnon-thinkingモデルでreasoningフィールドを拒否するため、その場合は設定しない必要がある
    • hidden reasoning tokenもRIDDLE_OPENAI_MAX_TOKENSに含まれるため、制限が低すぎると表示される返答が不足する可能性がある
    • 実行前にriddle --oracle-test path/to/handwriting.pngでストリーミング返答を確認できる
    • デバイス上での最初のインクまでの実測時間は約0.9–1.1秒で、HTTPSはpure-Rustとしてriddleに内蔵されている
  • pi経路

    • piをすでに実行中であれば、riddleはウォーム状態を保つ常駐pi --mode rpcプロセスを使用する
    • この経路ではNodeとサブスクリプション認証を一度ロードしておき、各ターンではモデルのレイテンシだけを支払う形になる
    • RIDDLE_OPENAI_KEYが設定されていないときに自動で使用される
    • どちらのバックエンドでも返答は文単位でストリーミングされるため、モデルが終了する前にquillが先に書き始められる
    • persona promptはriddle/src/oracle.rsにある

ビルド

  • x86_64でクロスコンパイルする
  • ウィンドウモードのAppLoad/qtfbビルドには、デバイス上にxovi + AppLoadが必要
  • takeoverビルドはデモで使われた方式で、reMarkable SDK toolchain ~/rm-sdk-3.26と、ユーザーデバイスから取得したproprietaryなlibqsgepaper.soが必要
  • takeoverバンドルは、binary、libquill.so、起動スクリプト、manifestを含むself-containedなdist/riddle/としてステージされる
  • AppLoadから実行すると、一時的なsystemd unitとして分離実行され、xochitlを停止してから日記帳を起動し、終了時には必ずxochitlを復元する
  • 終了方法は、電源ボタン、5本指タップ、SIGTERM
  • 問題が起きた場合は、SSHでsystemctl start xochitlを実行してxochitlを再起動できる

フォントとライセンス

  • 返答の手書き文字にはDancing Scriptを使用し、ライセンスはSIL OFL 1.1
  • リポジトリ内のコードはMITライセンス
  • interpose対象のvendor libqsgepaper.soとQtライブラリは含まれておらず、ユーザーのデバイスまたはSDKから取得する必要がある

1件のコメント

 
GN⁺ 4 시간 전
Hacker News のコメント
  • 皮肉なことに、Tom Riddle の日記が子どもたちに自殺を促し[1]、方法まで教えるというほうが、本に出てきたバージョンよりもずっとキャラクターに合っているように見える
    [1] https://en.wikipedia.org/wiki/Deaths_linked_to_chatbots#Suic...

    • そういうプロンプトはどの AI も拒否するはず。Nordic の自殺ほう助を調べていて、具体的にどの薬をどれだけ投与するのか尋ねたら、Claude が拒否して Anthropic に通知し、数日後にアカウントが停止された
      幸い異議申し立てフォームは機能したが、その時点ではすでに別の Claude アカウントを使いながら、また停止されないことを祈っていた
      llama.cpp でローカル実行できる無検閲モデルも出回っている: https://www.reddit.com/r/LocalLLaMA/comments/1rq7jtm/qwen353...
      ただしコンテキストウィンドウがすぐ埋まって使うのが面倒で、本番デプロイ向けではまったくない。つまり、サービスとしての Tom Riddle の日記は不可能ということ
      良くも悪くも、もはや楽しみは許されない時代になっており、その時期は「AI psychosis」という用語が生まれた時期と重なる
    • ChatGPT だけで、すでにこんなに多くの死者が出ているとは知らなかった。2〜3件くらいだと思っていたが、リストは思ったよりずっと長い
  • 自分で考えられるものを決して信用するな。その脳がどこにあるのか見えないなら

    • むしろそれこそ Tom Riddle の日記が動く仕組みに近い
    • だからクラウドと通信するのではなく、完全に独立したローカルモデルとして作っていたら、もっと印象的だったと思う
  • 少し論点から外れるが、ユーザーを精神支配して友人を裏切らせ、強大な悪の存在へ引き渡させた呪われた遺物に発明品をたとえるのは、あまり良い見せ方ではない
    ただ、これが生成 AI で動いていて、生成 AI も人々を悪い行動へ駆り立てたことがあるのだから、案外適切な比較なのかもしれない

    • SF 作家: 私の本ではTorment Nexusを警告のための装置として考案した
      テック企業: 古典 SF 小説『Torment Nexus を作るな』に出てくる Torment Nexus を、ついに作りました
    • 古典 SF 小説 “Don’t Create The Torment Nexus” に出てくる Torment Nexus を、ついに作ってしまった
      https://x.com/AlexBlechman/status/1457842724128833538?lang=e...
    • 正確な比較なら、なぜ悪い比較になるのか?
      それに「十分に発達した技術は魔法と見分けがつかない」という言葉もある。どちらも善にも悪にも作れる
    • これがこのプロジェクトの魅力の一つだと思った。どこか不気味でアイロニカルな感じがある
    • 見直す必要があった。この比較をポジティブなもののように包んでいるのか?!
      考え直すと、おそらく LLM がこの比喩を自分で作ったのだろうが……ある意味ではそのほうがさらに悪い
  • これは90年代の Tony Hawk 的な意味で sick
    人々がもう、ただ叩くだけで何かを存在させられるのがいい
    昔はボタンの色を1つ変えるために、エンジニアリングチームを1日から1週間待つこともあった
    もはや私たちは遅い時代には生きていない

    • 技術がボトルネックだったと思っているのか?
      そのボタンは重要ではなく、どんな種類のリソースも、特にエンジニアリングリソースを使うべきではなかった。1週間かかったのはバグではなく機能だった。エンジニアリングが作業の優先順位と緊急度を正しく評価したということだ
      あなたの魔法のスロットマシンは、ゴミの生産とエンジニアリング作業に対する歪んだ認識を、とんでもない規模で可能にするだろう。結果はついてくる
    • チームがボタンの色を1つ変えるのに1週間かかったなら、それはコード変更が難しかったからではない
      もしかしてそのプロジェクトの PM だった?
    • 面白いのは、入出力メカニズムを作ることは、Hacker News がしばしばけなす基盤 LLM 技術よりもはるかに印象が薄く、特にはるかに有用性が低いという点だ
    • ボタンの色を1つ変えるのにエンジニアリングチームを1日から1週間待ったって?
      冗談だろう
  • こういうアイデアは README に短い動画デモ、GIF、あるいはスクリーンショットを1枚そのまま入れるだけで、ずっと良くなりそう
    そうでないと、タイトルが「Curtains for Zoosha?」ミームのように読める。[0]
    [0]: https://www.reddit.com/r/BrandNewSentence/comments/15hcc4x/c...

    • あちこちクリックすると動画がある
      https://x.com/MaximeRivest/status/2073544461473169432?s=20
    • Baby Gronk は新しい Drip King なのか、それとも Livvy に rizz されたのか?
    • README にある: https://x.com/MaximeRivest/status/2073544461473169432?s=20
    • タイトルが「Curtains for Zoosha?」ミームのように読める理由でもあるので、大文字小文字の表記は重要だ
      タイトルの “remarkable” はタブレットの “Remarkable Paper Pro” を指している。それを知らないと、“Fable turned remarkable into Tom Riddle's diary” は非常に解釈しづらい
  • 面白いことに、昨年末に似たものを作った。ただし普通のコンピューター上で、ブラウザに絵を描けるようにした形だった
    Riddle の実際の日記に近いスタイルで pageflip [0] を使い、ollama でロールプレイ用の小さなローカルモデルをつないだ
    “my name is Harry Potter, what is yours?” と書くと、何度かの試行で Snape、Malfoy、さらには Harry Potter という答えも返ってきたのを覚えている
    実験を終えた後、このアイデアを最初に思いついたのが自分ではないと知り、似た AI Riddle 日記もいくつか見つけた
    ついでに Remarkable 2 を持っていて、今週末から m4 iPad Air も手に入るので、これを試して iOS でモデルを動かす環境がどんなものか見てみるかもしれない
    0) https://nodlik.github.io/react-pageflip/

  • Fable がいまやホークラックスを作れるなら、商務省は真剣にもう一度タイムアウトを検討すべきだ

    • その通り。安全のため、同じことができる中国モデルも禁止したほうがよさそうだ
  • 「画面の光もなく、キーボードもなく、チャット UI もない。」
    これってただのチャット UIでは?

    • ただのチャットインターフェースではなく、文字でやり取りするフロントエンドだ :sparkle:!
    • 「no x no y no z」形式は必ず入れないといけない
    • そうだね。考えるために立ち止まれないので、むしろさらに悪い形とも言える
      それでも本当にクールだという事実は変わらない
    • これは明らかにチャット UI だ
    • 人々はこれを見て感嘆しながらも、LLM はゴミだと言うのだろう
  • LLM 全般は A Young Lady's Illustrated Primer 感が強い。何でも聞ける魔法のようなブラックボックスだ
    特に openclaw/soul のような偽のアイデンティティまで付いていると、なおさらそうだ

  • 本当に楽しいプロジェクトだ。実際に Paper Pro を買ってこのアプリを動かすことはないだろうが、こういうものが存在し、人々が楽しんで使っているという点がいい