1 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • riddle เป็นแอปบน reMarkable Paper Pro ที่เมื่อเขียนด้วยปากกาแล้ว ข้อความลายมือจะค่อย ๆ หายไปหลังจากครู่หนึ่ง และคำตอบจะถูกเขียนกลับมาใหม่เป็นลายมือทีละเส้นเหมือนสมุดบันทึกของ Tom Riddle ก่อนจะเลือนหายไป
  • ลำดับการทำงานคือรับอินพุตจากปากกา รอจนไม่มีการใช้งาน 2.8 วินาทีแล้วคอมมิตหน้าเป็น PNG จากนั้น vision LLM จะอ่านลายมือและสตรีมคำตอบเป็นรายประโยค
  • การติดตั้งที่ง่ายที่สุดคือผ่าน remagic และยังสามารถติดตั้งจากบันเดิลที่ build ไว้ล่วงหน้าหรือ build จากซอร์สได้ แต่ต้องใช้โหมดนักพัฒนาของ reMarkable Paper Pro และ launcher
  • แอปรันด้วยสิทธิ์ root และในโหมด takeover จะหยุด vendor UI แล้วขับเคลื่อน e-ink engine โดยตรง โดยขอบเขตการทดสอบจำกัดอยู่ที่ reMarkable Paper Pro ferrari, aarch64, OS 3.26–3.27
  • LLM backend สามารถใช้ OpenAI-compatible /chat/completions API หรือโปรเซส resident pi --mode rpc ได้ และการดัดแปลงอุปกรณ์กับการใช้ vendor library ผู้ใช้ต้องรับความเสี่ยงเอง

แอป reMarkable ที่ทำงานเหมือนสมุดบันทึกของ Tom Riddle

  • riddle เป็นแอปบน reMarkable Paper Pro ที่เมื่อใช้ปากกาเขียนลงบนหน้า กระดาษพักหนึ่งแล้ว ตัวหนังสือจะจางหายไปราวกับซึมลงในกระดาษ และคำตอบจะปรากฏขึ้นเป็นลายมือแบบไหลลื่นทีละเส้น
  • ตั้งเป้าไปที่ ประสบการณ์ที่หมึกปรากฏขึ้นบนกระดาษ โดยไม่มีแสงหน้าจอ คีย์บอร์ด หรือ UI แชต
  • เป็นแอปสมุดบันทึกที่ใช้ในเดโม และใช้งานด้วยการเขียนถึง “Tom”

วิธีติดตั้งและการทำงาน

  • หากใช้งานครั้งแรก ต้องตั้งค่า reMarkable Paper Pro ให้เป็นโหมดนักพัฒนาและติดตั้ง launcher ก่อน
  • remagic ช่วยแนะนำการเปิดใช้งานโหมดนักพัฒนาและตั้งค่าสภาพแวดล้อมด้วยคำสั่งเดียว
  • คำสั่งติดตั้ง remagic:
    • remagic install riddle: ดาวน์โหลดพร้อมตรวจสอบ checksum แล้วติดตั้งลง AppLoad
    • remagic config riddle: เปิดฟอร์มตั้งค่าในเบราว์เซอร์และมี QR สำหรับมือถือให้ด้วย
  • หากมี xovi และ AppLoad อยู่แล้ว สามารถติดตั้งได้ผ่าน remagic catalog, บันเดิลที่ build ไว้ล่วงหน้า หรือ build จากซอร์ส
  • หลังติดตั้ง ให้กด Reload ใน AppLoad แล้วเปิด The Diary จากนั้นเขียนและวางปากกาไว้เฉย ๆ ก็จะเริ่มทำงาน

การติดตั้งบันเดิลที่ build ไว้ล่วงหน้า

  • ดาวน์โหลด riddle-<version>.zip จากรีลีสล่าสุด แล้วแตกไฟล์เป็นโฟลเดอร์ riddle
  • คัดลอกโฟลเดอร์ไปที่ /home/root/xovi/exthome/appload/ บนแท็บเล็ต
  • คัดลอก oracle.env.example เป็น oracle.env แล้วใส่ OpenAI-compatible API key ลงใน RIDDLE_OPENAI_KEY
  • หากไม่ใส่ API key ก็สามารถใช้เส้นทาง pi ได้
  • กด Reload ใน AppLoad แล้วเปิด The Diary

การดัดแปลงอุปกรณ์และขอบเขตการรองรับ

  • riddle มีการดัดแปลงอุปกรณ์และรันด้วยสิทธิ์ root
  • ในโหมด takeover จะหยุด vendor UI และขับเคลื่อน e-ink engine โดยตรง
  • สภาพแวดล้อมที่ทดสอบแล้วมีเพียง reMarkable Paper Pro ferrari, aarch64, OS 3.26–3.27
  • อาจไม่ทำงานบนรุ่นอื่นหรือเวอร์ชัน OS อื่น
  • ไม่เกี่ยวข้องกับ reMarkable AS และก่อนติดตั้งควรยังเข้าถึง SSH ได้อย่างต่อเนื่องเพื่อให้มีเส้นทางกู้คืน

โครงสร้างการทำงานภายใน

  • รับอินพุตผ่าน raw evdev และใช้ แรงกด 4096 ระดับ พร้อมความเร็วของ hardware event
  • เมื่อผู้ใช้เขียนแล้วหยุด 2.8 วินาที ระบบจะคอมมิตหน้าและแปลงเป็น PNG
  • oracle ซึ่งเป็น resident LLM process จะอ่าน PNG และสตรีมคำตอบเป็นรายประโยค
  • คำตอบจะถูกแรสเตอร์จากฟอนต์ Dancing Script แล้วแปลงเป็นเส้นทางปากกาแบบพิกเซลเดี่ยวด้วย Zhang-Suen thinning จากนั้นติดตามเส้นและเล่นแอนิเมชัน
  • display backend มี 2 แบบ
    • qtfb: แอป AppLoad ที่รันในโหมดหน้าต่างภายใน xochitl
    • quill: โหมด full takeover ที่หยุด xochitl และขับเคลื่อน vendor e-ink engine โดยตรง

โครงสร้างรีโพซิทอรี

  • riddle/ คือแอป Rust ที่รวมอินพุตปากกา, ink surface, การสังเคราะห์ลายมือ, ตัวจัดการ oracle process และ display backend ทั้งสองแบบ
  • quill/ คือ takeover display host ที่เขียนด้วย C/C++
  • quill วาง epfb-re style QImage constructor interposition shim ไว้บน waveform engine ของ vendor libqsgepaper.so และให้ C ABI ของ quill_init, quill_buffer, quill_swap
  • ใน quill ยังมีเดโมทดสอบ latency ของ scribble รวมถึงตัวเรนเดอร์แผนที่, ภาพ และ GIF

ท่าทางควบคุม

  • เขียนแล้ววางปากกาไว้ สมุดบันทึกจะดูดซับหมึกและ Tom จะตอบกลับ
  • พลิกมาร์กเกอร์กลับด้านเพื่อใช้เป็นยางลบ
  • วาด ? ขนาดใหญ่เพื่อเรียกคู่มือในตัว
  • แตะพร้อมกันห้านิ้วเพื่อออกจากสมุดบันทึก
  • กดปุ่มเปิดปิดแล้วข้อความ “The diary sleeps.” จะปรากฏบนหน้า ก่อนที่แท็บเล็ตจะ suspend และเมื่อกดอีกครั้งจะตื่นกลับมาที่ตำแหน่งเดิม

LLM backend

  • คำตอบถูกสร้างโดย vision LLM ที่รับหน้าที่คอมมิตแล้วในรูป inline PNG เพื่ออ่านลายมือ
  • ตอนเริ่มต้นจะเลือกหนึ่งในสอง backend
  • OpenAI-compatible API

    • หากตั้งค่า RIDDLE_OPENAI_KEY ไว้ จะส่งคำขอไปยัง OpenAI-compatible /chat/completions endpoint โดยตรง
    • ใช้งานได้กับ 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
    • สำหรับโมเดล thinking อย่าง Gemini 3.x หรือ o-series สามารถตั้ง RIDDLE_OPENAI_REASONING=low เพื่อลดเวลาจนหมึกแรกปรากฏ
    • ผู้ให้บริการบางรายปฏิเสธฟิลด์ reasoning ในโมเดล non-thinking ดังนั้นกรณีนี้ไม่ควรตั้งค่า
    • hidden reasoning token ก็ถูกนับรวมใน RIDDLE_OPENAI_MAX_TOKENS ด้วย ดังนั้นถ้าจำกัดต่ำเกินไปอาจทำให้คำตอบที่มองเห็นได้สั้นเกินไป
    • ก่อนรันสามารถตรวจสอบการสตรีมคำตอบด้วย riddle --oracle-test path/to/handwriting.png
    • เวลาที่วัดได้บนอุปกรณ์จนหมึกแรกปรากฏอยู่ที่ประมาณ 0.9–1.1 วินาที และ HTTPS ถูกฝังอยู่ใน riddle แบบ pure-Rust
  • เส้นทาง pi

    • หากมี pi รันอยู่แล้ว riddle จะใช้โปรเซส resident pi --mode rpc ที่อุ่นค้างไว้
    • เส้นทางนี้โหลด Node และการยืนยันตัวตนแบบสมัครสมาชิกไว้ครั้งเดียว แล้วในแต่ละเทิร์นจะจ่ายเฉพาะ latency ของโมเดล
    • จะถูกใช้โดยอัตโนมัติเมื่อไม่ได้ตั้ง RIDDLE_OPENAI_KEY
    • ทั้งสอง backend สตรีมคำตอบเป็นรายประโยคเหมือนกัน ดังนั้น quill สามารถเริ่มเขียนได้ก่อนที่โมเดลจะตอบจบ
    • persona prompt อยู่ใน riddle/src/oracle.rs

การ build

  • cross-compile จาก x86_64
  • การ build แบบหน้าต่าง AppLoad/qtfb ต้องมี xovi + AppLoad บนอุปกรณ์
  • การ build แบบ takeover คือวิธีที่ใช้ในเดโม และต้องใช้ reMarkable SDK toolchain ~/rm-sdk-3.26 กับ proprietary libqsgepaper.so ที่ดึงมาจากอุปกรณ์ของผู้ใช้
  • บันเดิล takeover จะถูก staged เป็น dist/riddle/ แบบ self-contained ซึ่งมี binary, libquill.so, launch script และ manifest
  • เมื่อรันผ่าน AppLoad จะถูกแยกไปรันด้วย transient systemd unit จากนั้นหยุด xochitl แล้วเปิดสมุดบันทึก และเมื่อออกจะ กู้คืน xochitl เสมอ
  • วิธีออกคือปุ่มเปิดปิด, การแตะห้านิ้ว, หรือ SIGTERM
  • หากมีปัญหา สามารถใช้ SSH รัน systemctl start xochitl เพื่อเริ่ม xochitl ใหม่ได้

ฟอนต์และไลเซนส์

  • ลายมือของคำตอบใช้ Dancing Script ภายใต้ไลเซนส์ SIL OFL 1.1
  • โค้ดในรีโพซิทอรีอยู่ภายใต้ไลเซนส์ MIT
  • vendor libqsgepaper.so และไลบรารี Qt ที่เป็นเป้าหมายของ interpose ไม่ได้ถูกรวมมา ต้องดึงมาจากอุปกรณ์หรือ SDK ของผู้ใช้เอง

1 ความคิดเห็น

 
GN⁺ 4 시간 전
ความเห็นจาก Hacker News
  • น่าประชดดีที่ไดอารีของ Tom Riddle ที่ชักจูงเด็ก ๆ ให้ฆ่าตัวตายและยังบอก[1]วิธีทำ ดูจะเข้ากับคาแรกเตอร์มากกว่าเวอร์ชันในหนังสือเสียอีก
    [1] https://en.wikipedia.org/wiki/Deaths_linked_to_chatbots#Suic...

    • พรอมป์ต์แบบนั้น AI ทุกตัวน่าจะปฏิเสธอยู่แล้ว ตอนที่ผมค้นคว้าเรื่อง assisted dying ในกลุ่มประเทศนอร์ดิกแล้วถามว่ายาอะไรต้องใช้และปริมาณเท่าไร Claude ก็ปฏิเสธ แถมยังรายงานไปที่ Anthropic และไม่กี่วันต่อมาบัญชีก็โดนระงับ
      โชคดีที่แบบฟอร์มอุทธรณ์ใช้ได้ผล แต่ตอนนั้นผมก็ไปใช้บัญชี Claude อีกบัญชีอยู่แล้ว พร้อมภาวนาอย่าให้โดนแบนอีก
      ตอนนี้ก็มีโมเดลไร้การเซ็นเซอร์ที่รันโลคัลด้วย llama.cpp ได้ลอยไปลอยมาอยู่เหมือนกัน: https://www.reddit.com/r/LocalLLaMA/comments/1rq7jtm/qwen353...
      แต่ context window เต็มเร็ว เลยใช้งานน่ารำคาญ และก็ไม่เหมาะกับการ deploy แบบ production เลย พูดอีกอย่างคือไดอารีของ Tom Riddle แบบให้บริการเป็นเซอร์วิสคงเป็นไปไม่ได้
      ไม่ว่าจะดีหรือร้าย ตอนนี้เราอยู่ในยุคที่ความสนุกไม่ได้รับอนุญาตแล้ว และจังหวะนั้นก็ดันตรงกับตอนที่คำว่า “AI psychosis” เริ่มเกิดขึ้น
    • ไม่เคยรู้มาก่อนว่ามีผู้เสียชีวิตที่เกี่ยวข้องกับ ChatGPT อย่างเดียวมากขนาดนี้ นึกว่าจะมีสัก 2-3 กรณี แต่รายชื่อมันยาวกว่าที่คิดมาก
  • อย่าไว้ใจอะไรที่คิดได้ด้วยตัวเอง ถ้าคุณมองไม่เห็นว่าสมองของมันอยู่ที่ไหน

    • จริง ๆ แล้วนั่นแหละใกล้เคียงกับวิธีทำงานของไดอารีของ Tom Riddle มากกว่า
    • เพราะงั้นถ้าทำเป็นโมเดลโลคัลที่แยกขาดโดยสมบูรณ์แทนที่จะสื่อสารกับคลาวด์ ก็น่าจะน่าประทับใจกว่านี้
  • แม้จะออกนอกประเด็นไปหน่อย แต่การเอาสิ่งประดิษฐ์ไปเปรียบกับวัตถุต้องสาปที่ควบคุมจิตใจผู้ใช้จนหักหลังเพื่อนและส่งพวกเขาให้สิ่งชั่วร้ายอันทรงพลัง ฟังดูไม่ค่อยดีเท่าไร
    แต่พอมันขับเคลื่อนด้วย generative AI และ generative AI ก็เคยผลักคนให้ทำเรื่องแย่ ๆ มาแล้ว บางทีอาจเป็นการเปรียบเทียบที่เหมาะสมก็ได้

    • นักเขียน SF: ฉันสร้าง Torment Nexus ในหนังสือของฉันเพื่อเป็นอุปกรณ์เตือนภัย
      บริษัทเทคโนโลยี: ในที่สุดเราก็ได้สร้าง Torment Nexus จากนิยายวิทยาศาสตร์คลาสสิกเรื่อง 《อย่าสร้าง Torment Nexus》
    • ในที่สุดก็ได้สร้าง Torment Nexus จากนิยายวิทยาศาสตร์คลาสสิก “Don’t Create The Torment Nexus” แล้ว
      https://x.com/AlexBlechman/status/1457842724128833538?lang=e...
    • ถ้าเป็นการเปรียบเทียบที่แม่นยำ แล้วทำไมถึงเป็นการเปรียบเทียบที่ไม่ดีล่ะ?
      อีกอย่างก็มีคำพูดว่า “เทคโนโลยีที่ล้ำหน้ามากพอจะแยกไม่ออกจากเวทมนตร์” ทั้งสองอย่างใช้ทำเรื่องดีหรือเรื่องเลวก็ได้
    • ผมกลับคิดว่านี่เป็นส่วนหนึ่งของเสน่ห์โปรเจ็กต์นี้ มันมีความรู้สึกหลอน ๆ และประชดประชันอยู่
    • ผมต้องกลับไปดูอีกที นี่กำลังทำให้การเปรียบเทียบนี้ดูเป็นเรื่องดีอยู่เหรอ?!
      คิดอีกที LLM น่าจะเป็นคนสร้างอุปมานี้ขึ้นมาเอง... ซึ่งในบางแง่ก็ยิ่งแย่กว่าเดิม
  • นี่มัน sick ในความหมายแบบ Tony Hawk ยุค 90s
    ผมชอบที่ตอนนี้คนแค่ลงมือพิมพ์ ๆ ก็เสกบางอย่างให้มีตัวตนขึ้นมาได้
    เมื่อก่อนแค่จะเปลี่ยนสีปุ่มหนึ่งปุ่มยังต้องรอทีมวิศวกรรมตั้งแต่หนึ่งวันไปจนถึงหนึ่งสัปดาห์
    ตอนนี้เราไม่ได้อยู่ในยุคเชื่องช้าอีกต่อไปแล้ว

    • คุณคิดว่าคอขวดคือเทคโนโลยีเหรอ?
      ปุ่มนั้นไม่สำคัญ และไม่ควรใช้ทรัพยากรประเภทไหนเลยกับมัน โดยเฉพาะทรัพยากรวิศวกรรม การที่มันใช้เวลาหนึ่งสัปดาห์ไม่ใช่บั๊ก แต่เป็นฟีเจอร์ มันหมายความว่าทีมวิศวกรรมประเมินลำดับความสำคัญและความเร่งด่วนของงานได้ถูกต้องแล้ว
      เครื่องสล็อตเวทมนตร์ของคุณจะทำให้การผลิตขยะและการรับรู้ที่บิดเบี้ยวต่อความพยายามทางวิศวกรรมเกิดขึ้นได้ในสเกลมหาศาล และผลที่ตามมาจะมาแน่
    • ถ้าทีมใช้เวลาหนึ่งสัปดาห์เพื่อเปลี่ยนสีปุ่มเดียว นั่นไม่ใช่เพราะแก้โค้ดยากหรอก
      คุณเป็น PM ของโปรเจ็กต์นั้นหรือเปล่า?
    • ที่ตลกคือ งานสร้างกลไก input/output นั้นน่าประทับใจน้อยกว่ามาก และยิ่งมีประโยชน์น้อยกว่ามาก เมื่อเทียบกับเทคโนโลยี LLM แกนหลักที่ Hacker News ชอบดูแคลน
    • ต้องรอทีมวิศวกรรมตั้งแต่หนึ่งวันถึงหนึ่งสัปดาห์เพื่อเปลี่ยนสีปุ่มเดียวเหรอ?
      ล้อเล่นน่า
  • ไอเดียแบบนี้น่าจะดูดีขึ้นมากถ้าใส่ วิดีโอเดโม สั้น ๆ, GIF หรืออย่างน้อยสกรีนช็อตไว้ใน README โดยตรง
    ไม่อย่างนั้นชื่อเรื่องจะอ่านเหมือนมีม “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” จะตีความได้ยากมาก
  • ตลกดีที่ผมก็เคยทำอะไรคล้าย ๆ กันตอนปลายปีที่แล้ว เพียงแต่เป็นเวอร์ชันที่ให้วาดลงเบราว์เซอร์บนคอมพิวเตอร์ธรรมดาได้
    ผมใช้ pageflip [0] ในสไตล์ที่คล้ายไดอารีจริงของ Riddle และต่อเข้ากับโมเดลโลคัลขนาดเล็กสำหรับ roleplay ผ่าน ollama
    จำได้ว่าพอเขียนว่า “my name is Harry Potter, what is yours?” มันตอบกลับมาเป็น Snape, Malfoy หรือแม้แต่ Harry Potter เองในหลาย ๆ รอบ
    หลังจากจบการทดลอง ผมถึงรู้ว่าคนแรกที่คิดไอเดียนี้ไม่ใช่ผม และก็เจอ AI ไดอารีของ Riddle แบบคล้าย ๆ กันอีกหลายอัน
    เพิ่มเติมคือผมมี Remarkable 2 อยู่แล้ว และสุดสัปดาห์นี้ก็เพิ่งได้ m4 iPad Air มาด้วย เลยอาจจะลองทดสอบดูว่า environment สำหรับรันโมเดลบน iOS เป็นยังไง
    0) https://nodlik.github.io/react-pageflip/

  • ถ้า Fable สร้างฮอร์ครักซ์ได้แล้ว ตอนนี้กระทรวงพาณิชย์ก็ควรพิจารณา timeout อีกรอบอย่างจริงจัง

    • ใช่เลย เพื่อความปลอดภัยก็คงควรแบนโมเดลจีนที่ทำแบบเดียวกันได้ด้วยนะ
  • “ไม่มีแสงหน้าจอ ไม่มีคีย์บอร์ด และไม่มี chat UI”
    นี่มันก็แค่ chat UI ไม่ใช่เหรอ?

    • มันไม่ใช่แค่แชตอินเทอร์เฟซ แต่เป็นฟรอนต์เอนด์สำหรับสื่อสารผ่านการเขียน :sparkle:!
    • ฟอร์แมต “no x no y no z” นี่ต้องมีให้ได้สินะ
    • ใช่ คิดอีกมุมมันอาจจะแย่กว่าเดิมด้วยซ้ำ เพราะคุณหยุดมันเพื่อคิดไม่ได้
      ถึงอย่างนั้นมันก็ยังเจ๋งมากอยู่ดี
    • นี่คือ chat UI ชัด ๆ
    • คนจะพากันชื่นชมสิ่งนี้ แล้วก็ยังเรียก LLM ว่าขยะอยู่ดี
  • LLM โดยรวมให้อารมณ์แบบ A Young Lady's Illustrated Primer มาก มันคือกล่องดำมหัศจรรย์ที่ถามอะไรก็ได้
    โดยเฉพาะเมื่อมีตัวตนปลอม ๆ อย่าง openclaw/soul ติดมาด้วย ยิ่งให้ความรู้สึกแบบนั้น

  • เป็นโปรเจ็กต์ที่สนุกมาก ผมคงไม่ซื้อ Paper Pro มารันแอปนี้จริง ๆ หรอก แต่ชอบที่สิ่งแบบนี้มีอยู่ และคนก็ใช้มันกันอย่างสนุกสนาน