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

แอป 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, bundle ที่ build ไว้ล่วงหน้า หรือ build จากซอร์สก็ได้
  • หลังติดตั้ง ให้กด Reload ใน AppLoad แล้วเปิด The Diary จากนั้นเขียนและพักปากกาไว้ แอปก็จะเริ่มทำงาน

การติดตั้งด้วย bundle ที่ 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 โดยตรง
  • สภาพแวดล้อมที่ทดสอบมีเพียง reMarkable Paper Pro ferrari, aarch64, OS 3.26–3.27
  • อาจไม่ทำงานบนรุ่นหรือเวอร์ชัน OS อื่น
  • ไม่มีความเกี่ยวข้องกับ reMarkable AS และก่อนติดตั้งควรแน่ใจว่ายังเข้าถึง SSH ได้ตลอดเพื่อให้มีช่องทางกู้คืน

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

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

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

  • riddle/ เป็นแอป Rust ที่รวมอินพุตจากปากกา, พื้นผิวหมึก, การสังเคราะห์ลายมือ, ตัวจัดการโปรเซส oracle และ 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 ยังมีเดโม scribble สำหรับทดสอบ latency รวมถึงตัวเรนเดอร์แผนที่, รูปภาพ และ GIF

Gesture

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

LLM backend

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

    • หากตั้งค่า RIDDLE_OPENAI_KEY ระบบจะส่งคำขอโดยตรงไปยัง OpenAI-compatible /chat/completions endpoint
    • ใช้งานได้กับ OpenAI, OpenRouter, Groq และเซิร์ฟเวอร์ local ที่รองรับรูปแบบเดียวกัน
    • ตัวอย่างค่าตั้งต้น:
    • 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 เพื่อลดเวลาจนถึงหมึกแรกได้
    • ผู้ให้บริการบางรายปฏิเสธฟิลด์ 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 ที่ดึงมาจากอุปกรณ์ของผู้ใช้
  • bundle สำหรับ takeover ถูกจัดวางเป็น 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 มารันแอปนี้จริง ๆ หรอก แต่ชอบที่สิ่งแบบนี้มีอยู่ และคนก็ใช้มันกันอย่างสนุกสนาน