11 คะแนน โดย GN⁺ 2024-04-22 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Windrecorder เป็นแอปโอเพนซอร์สที่บันทึกหน้าจอ Windows ไว้ในเครื่อง เพื่อให้ย้อนดูและค้นหาได้ภายหลัง เป็นเครื่องมือความจำส่วนตัวที่ใกล้เคียงกับทางเลือกของ Rewind/Copilot Recall
  • หน้าจอจะถูกบันทึกเป็นไฟล์ชิ้นย่อยครั้งละ 15 นาทีด้วย ffmpeg หรือภาพหน้าจอที่ถ่ายต่อเนื่องตามช่วงเวลา และถูกทำดัชนีด้วย Windows Local OCR API กับ image embedding
  • ใน Web UI บนเครื่อง สามารถค้นหาหน้าจอในอดีตได้จากชื่อหน้าต่าง คีย์เวิร์ดข้อความ และคำอธิบายภาพ รวมถึงสามารถยกเว้นบางโปรแกรมหรือบางพื้นที่ของหน้าจอจากการบันทึกได้
  • การประมวลผลข้อมูลทั้งหมดทำเฉพาะบนคอมพิวเตอร์ของผู้ใช้โดยไม่ใช้คลาวด์ และเนื่องจากสร้างบน Python จึงตรวจสอบและแก้ไขโครงสร้างได้ง่าย แต่อาจทำงานได้ช้า
  • ปัจจุบันพื้นที่จัดเก็บเป็น โครงสร้างในเครื่องที่ไม่ได้เข้ารหัส ส่วนฟีเจอร์ LLM ยังมีจำกัด โดยขอบเขตการใช้งานจริงคือสรุปชื่อเรื่องรายวันและการค้นหา

การบันทึกหน้าจอและการค้นหาแบบย้อนดู

  • Windrecorder เป็น เครื่องมือความจำหน้าจอส่วนตัว สำหรับค้นหาข้อมูลที่ผู้ใช้เคยเห็นแต่ภายหลังหาเจอได้ยาก เช่น หน้าเว็บ วิดีโอ หรือข้อความแชต
  • แรงบันดาลใจหลักมาจากแอป Mac Rewind และ Black Mirror S1E3 “The Entire History of You”
  • วิธีบันทึกหน้าจอนั้นเรียบง่าย
    • ใช้ ffmpeg หรือภาพหน้าจอที่ถ่ายต่อเนื่องตามช่วงเวลา
    • บันทึกหน้าจอเป็น ไฟล์ชิ้นย่อยครั้งละ 15 นาที
    • ทำดัชนีบันทึกด้วย Windows Local OCR API และ image embedding
  • ผู้ใช้สามารถระบุโปรแกรมหรือขอบเขตหน้าจอที่ไม่ต้องการบันทึกได้
  • ใน Web UI บนเครื่อง ผู้ใช้สามารถย้อนดูและค้นหาหน้าจอในอดีตได้จากเบาะแสต่อไปนี้
    • ชื่อหน้าต่าง
    • คีย์เวิร์ดข้อความ
    • คำอธิบายภาพ
  • ฟีเจอร์เสริมประกอบด้วยเวลาการใช้งานหน้าจอรายวัน·ตามรอบเวลา สรุปจังหวะรายวัน และการสร้างไลต์บ็อกซ์รายเดือน

การออกแบบแบบ local-first และข้อจำกัดในปัจจุบัน

  • การประมวลผลทั้งหมดเกิดขึ้นเฉพาะบนคอมพิวเตอร์ของผู้ใช้ และไม่ได้ตั้งอยู่บนสมมติฐานของ การจัดเก็บบนคลาวด์หรือการสมัครสมาชิก
  • โครงสร้างถูกสร้างโดยเชื่อมต่อหลายฟีเจอร์ด้วย Python ทำให้การทำงานภายในโปร่งใสและผู้ใช้แก้ไขเองได้ง่าย
    • แต่แลกกับประสิทธิภาพที่อาจช้าลง
  • ผู้พัฒนาไม่ใช่นักพัฒนามืออาชีพ แต่สร้างเครื่องมือนี้ขึ้นจากความสนใจส่วนตัวและเพื่อใช้งานเอง
    • หลังจากใช้งานไประยะหนึ่ง จึงเห็นว่าเครื่องมือมีความสุกงอมและแข็งแรงเพียงพอ
    • ยินดีรับการแจ้ง issue การพูดคุย และการมีส่วนร่วม
  • ข้อเสียในปัจจุบันก็ชัดเจนเช่นกัน
    • พื้นที่จัดเก็บข้อมูลมีลักษณะ โปร่งใสและไม่ได้เข้ารหัส
    • ผู้ใช้สามารถนำข้อมูลในเครื่องที่มีโครงสร้างไปใช้ได้อย่างอิสระ แต่ก็ต้องระมัดระวังเรื่องการปกป้องข้อมูลด้วย
  • ฟีเจอร์ LLM ไม่ได้ถูกใส่เข้ามามากนัก
    • ปัจจุบันฟีเจอร์ LLM ส่วนใหญ่จำกัดอยู่ที่การตัดสินใจเรียก API ตามเจตนาของผู้ใช้ และการปรับแต่งผลลัพธ์การค้นหา
    • ยังไม่ถึงขั้นที่ระบบจะเข้าใจ·วิเคราะห์·รำลึกข้อมูลทั้งหมดโดยตรง และลงมือทำตามเจตนาของผู้ใช้ได้
    • ฟีเจอร์สรุปชื่อเรื่องรายวันและการค้นหาที่ให้บริการอยู่ในตอนนี้คือขอบเขตที่ Windrecorder ทำได้จริง

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

 
GN⁺ 2024-04-22
ความคิดเห็นจาก Hacker News
  • มีคนทำสิ่งที่คล้ายกันนี้ไปแล้วตั้งแต่เมื่อเกือบ 20 ปีก่อน และยังมีฟีเจอร์ย้อนกลับไปยังช่วงเวลาใดช่วงเวลาหนึ่งในอดีตแล้วรันต่อจากตรงนั้นได้ด้วย
    http://www.cs.columbia.edu/~orenl/papers/sosp07-dejaview.pdf
    DejaView เป็นเครื่องบันทึกคอมพิวเตอร์เสมือนส่วนบุคคลที่บันทึกประสบการณ์การใช้งานเดสก์ท็อปทั้งหมด เพื่อให้สามารถเล่นซ้ำ นำทาง ค้นหา และกู้คืนได้ โดยเก็บทั้งภาพที่แสดงบนหน้าจอ เช็กพอยต์สถานะของแอปพลิเคชัน/ไฟล์ซิสเต็ม/ระบบ และข้อความบนหน้าจอพร้อมบริบทเพื่อนำไปทำดัชนี
    มันผสาน การทำ virtualization ของหน้าจอ/ระบบปฏิบัติการ/ไฟล์ซิสเต็ม โดยไม่ต้องแก้ไขแอปพลิเคชัน ระบบหน้าต่าง หรือเคอร์เนลของระบบปฏิบัติการ และแสดงผลว่าทำการบันทึกต่อเนื่องพร้อมการค้นหา/เล่นซ้ำแบบโต้ตอบได้บนแอปเดสก์ท็อปจริงโดยแทบไม่มีผลต่อประสิทธิภาพที่ผู้ใช้รับรู้

    • สงสัยว่าทำของจริงขึ้นมาหรือแค่เขียนเป็นงานวิจัย อยากรู้ด้วยว่าจะดาวน์โหลดได้จากที่ไหน
    • ไม่แน่ใจว่า URL ถูกหรือเปล่า พอกดเปิดแล้วขึ้นว่าหาไฟล์ไม่เจอ
  • มีโปรเจกต์ โอเพนซอร์ส คล้ายกันสำหรับ macOS ด้วย
    https://rem.ing
    https://github.com/jasonjmcghee/rem
    ผู้พัฒนาเคยโพสต์บน HN เมื่อ 3 เดือนก่อน และมีการพูดคุยที่ค่อนข้างดีอยู่พอสมควร
    https://news.ycombinator.com/item?id=38787892

    • ผมคือคนที่ทำ rem ถ้ามาร่วมพัฒนาด้วยกันจะดีมาก
      เป็น MIT License และผมก็เริ่มทำเวอร์ชันข้ามแพลตฟอร์มที่เขียนด้วย Rust ชื่อ https://github.com/jasonjmcghee/xrem แล้ว แต่ยังอยู่ช่วงต้นมาก ๆ เลยต้องการความช่วยเหลือเพิ่ม
    • อยากรู้ว่ามีใครใช้สิ่งนี้มานานพอหรือยัง และมันช่วยได้จริงไหม
    • เคยหาของแบบนี้บน Mac อยู่นานมากก่อนจะยอมแพ้ แล้วก็เขียนสคริปต์ถ่าย สกรีนช็อตทุก 10 วินาที กับสคริปต์เอาไปรวมเป็นวิดีโอด้วย ffmpeg เอง
      อยากมีส่วนร่วมเหมือนกัน แต่ไม่รู้ Swift เลย สิ่งที่ผมทำทั้งหมดเป็น bash script ที่รันด้วย launchd
    • มีบริษัทที่ทำเรื่องเดียวกันคือ http://rewind.ai
  • ถ้าทำแบบนี้ได้ก็น่าจะเจ๋งมาก: ให้ Meta Smart Glasses ถ่ายรูปทุก 2 วินาที ส่งภาพขึ้นเซิร์ฟเวอร์คลาวด์ รัน OCR กับการตรวจจับ/ติดป้ายกำกับวัตถุ แล้วมีแอปให้ค้นหาอดีตหรือคุยกับมันได้
    แบบนี้ก็จะถาม LLM ได้ว่า “ฉันวางกระเป๋าสตางค์ไว้ที่ไหนนะ?”, “เมื่อวานตอนจ่ายเงินที่ร้านอาหาร ฉันได้บัตรเครดิตคืนมาหรือยัง?”, “วันนี้บนเสื้อยืดตัวใหม่ของลูกสาวเขียนว่าอะไรนะ?”
    ถ้ามีการอัดเสียงและถอดเสียงด้วย ก็จะถามได้อีกว่ากำหนดส่งที่ตกลงกันในประชุมคือเมื่อไร เบอร์โทรของคนที่เจอในสวนคืออะไร หรือนักลงทุนที่เจอวันนี้ชื่ออะไร และถ้าเข้าถึงการคุยโทรศัพท์แล้วถอดเสียง/ทำดัชนีคำพูดของอีกฝ่ายได้ด้วยก็คงยิ่งดี
    ทำให้นึกถึงตอน “The Entire History of You” ของ Black Mirror: https://en.wikipedia.org/wiki/The_Entire_History_of_You

    • ปกติแล้วตอนต่าง ๆ ของ Black Mirror ไม่ได้สร้างขึ้นมาเพื่อเป็นภาพอนาคตที่คนอยากทำตาม
    • ร้านอาหารไม่ควรเอาบัตรเครดิตของเราออกไปนอกสายตาเด็ดขาด จริง ๆ แล้วพนักงานก็ไม่จำเป็นต้องจับบัตรด้วยซ้ำ ควรให้ลูกค้ารูดเองที่เครื่องคิดเงินตอนออกจะถูกกว่า
    • Frame ของ Brilliant Labs กำลังเข้าใกล้การเป็นฮาร์ดแวร์ที่ให้ข้อมูลแบบนี้ได้จริง ในรูปแบบที่ใช้งานง่ายและสังเกตเห็นได้ไม่มาก
      ผมพรีออร์เดอร์ไปแล้ว
    • นั่นแหละคือสิ่งที่ Humane AI Pin ซึ่งโดนวิจารณ์อย่างหนักทำอยู่
  • สงสัยว่ามีใครเคยทำของแบบนี้ด้วย accessibility API แทน OCR หรือใช้ควบคู่กับ OCR บ้างไหม
    ใน accessibility API สามารถดึงข้อความออกมาได้ตรง ๆ ดังนั้นการทำ OCR ทั้งหมดดูเหมือนสิ้นเปลือง
    มันอาจเป็นวิธีที่ดีในการเชื่อม LLM เข้ากับ UI หรืออาจเป็นวิธีที่เครื่องมือแบบนี้ใช้เก็บข้อมูลฝึกก็ได้

    • Dragon NaturallySpeaking รองรับคำสั่งเสียงอย่าง “OK คลิก” และตอบสนองได้ตรงตามนั้นจริง
      ปัญหาที่ Microsoft Office เรนเดอร์วิดเจ็ตเองนั้นแก้ด้วยการอ่าน OCR จากข้อความบนวิดเจ็ตและปุ่มเพื่อหา label
      วิธีแบบนี้จำเป็นบ่อยกว่าที่คิดมาก นักพัฒนามักทำให้ผิดหวังและไม่ใช้ API ที่มีให้
    • ตอนทำเครื่องมืออัดหน้าจอแบบคล้าย Loom ที่ค้นหาหน้าจอได้ ผมลองใช้ทั้งสองแนวทางมานิดหน่อย แต่ถ้าจะทำให้ไม่ผูกกับระบบปฏิบัติการ ความแตกต่างของ accessibility API บน Mac กับ Windows นั้นใหญ่พอสมควร และแม้แต่บน Windows เองแต่ละแอปก็ทำไม่เหมือนกัน ทำให้ยากจะตัดสินว่าผู้ใช้ “เห็น” อะไรจริง ๆ
      บางแอปไม่ส่งข้อมูลสำคัญ หรือทำ implementation ผิด ตอนแรกคิดว่า accessibility จะง่าย แต่เอาเข้าจริง OCR กลับง่ายกว่าในหลายกรณี
    • ผมเคยทำ MVP เครื่องบันทึกเวิร์กโฟลว์ ที่มีประวัติหน้าจอไว้ด้วย
      ผมคิดว่าถ้าแนวทางนี้เวิร์กจริง Microsoft หรือ Apple ก็น่าจะฝังมันมาในระบบปฏิบัติการเป็นส่วนหนึ่งของ Copilot ที่จำทุกอย่างและช่วยเรื่องความรู้ของผู้ใช้
      ประวัติหน้าจอที่ผมทำไม่ได้ล้ำเท่าแอปที่พูดถึงที่นี่ และผมเองก็ไม่ได้ใช้มันจริง
    • น่าจะดีถ้าสามารถเก็บข้อมูล metadata ของแอปที่อยู่บน foreground ไปพร้อมกันได้
  • ใน Notion จะมีหน้าบล็อกอย่าง “JavaScript must be enabled in order to use Notion” กับ “Please enable JavaScript to continue” แต่ถ้าใช้ NoScript วิธีบล็อกแบบนี้กลับทำให้เปิด JavaScript ให้เว็บไซต์จริง ๆ ไม่ได้เลย
    อยากให้มันไม่ redirect ไปหน้าสแตติก เพราะในหน้านั้นไม่มี JavaScript ให้อนุญาตเป็นกรณี ๆ ไป และมัน redirect เร็วเกินกว่าจะมีโอกาสเปิด JavaScript จากหน้าหลักได้
    ต่อให้อนุญาตแค่ notion.so เองก็ยังข้ามการบล็อกนี้ไม่ได้

    • นี่แย่มาก ของที่ใช้งานได้ปกติกลับถูกเอาไปใช้ในวิธีที่แย่ที่สุด
      น่าแปลกเหมือนกันที่ HTML อนุญาตให้ redirect ได้โดยไม่ต้องใช้ JavaScript
  • บน Windows ก็มี TimeSnapper เช่นกัน ไม่ใช่โอเพนซอร์ส แต่บางครั้งผู้พัฒนาก็โผล่มาที่ Hacker News
    https://timesnapper.com/

    • ถ้าพูดถึงการติดตามเวลาด้วยภาพหน้าจอและการแท็กขั้นสูงจากชื่อหน้าต่าง หรือบางครั้งจากเอกสารที่เปิดอยู่ ก็มี ManicTime ด้วย แต่ดูเหมือนจะไม่มี OCR
      https://www.manictime.com/
  • จำได้ว่ามีโปรเจกต์ลักษณะนี้อยู่ไม่กี่ตัว ตัวแรกที่ผมเห็นคือ Savant Recall ในปี 2014 แต่ไม่ได้รับเลือกจาก YC เลยถูกปล่อยเป็นโอเพนซอร์ส
    หลังจากนั้น Ritter ผู้ร่วมก่อตั้ง Napster ก็นำไปต่อ เปลี่ยนชื่อเป็น Atlas Recall ใส่ UI ใหม่ และระดมทุนได้ 20 ล้านดอลลาร์
    แต่แล้วอีก 1 ปีต่อมาก็ปิดตัวลงแบบกะทันหัน และใน LinkedIn ระบุว่า “ถูก Xinova เข้าซื้อกิจการ” อีกตัวที่เคยได้ยินคือ Apse ในปี 2019

  • ดูคล้ายกับ https://apse.io/ มาก ฝั่งนี้ก็ใช้ OCR เพื่อสร้างดัชนีที่ค้นหาได้จากทุกอย่างที่เห็นบนหน้าจอ
    สิ่งที่ชอบใน windrecorder คือมันเป็น โอเพนซอร์ส

  • ตาม README บน GitHub วิดีโอมีขนาดราว 100~200GB ต่อปี ซึ่งก็ไม่ได้แย่นัก

    • สงสัยว่าอิงจากการใช้งานเฉลี่ยวันละกี่ชั่วโมง และสงสัยด้วยว่ามีการลบฉากที่ไม่มีข้อความ เช่น หนังหรือเกม ออกหรือเปล่า
  • ถ้ามีไอเดียแนว “ทำไมไม่มีแอปแบบนี้นะ?” การลงมือทำออกมาได้ดีแบบนี้ถือว่าเป็นแรงบันดาลใจให้ทุกคน

    • วิธีที่ง่ายที่สุดในการหาแอปที่ทำ X คือสร้างอันใหม่ขึ้นมา แล้วโพสต์บน HN จากนั้นก็ไปดูคอมเมนต์
    • rewind.ai ก็เป็นตัวอย่างแบบนี้ แต่พอเห็นว่าช่วงหลังย้ายข้อมูลนี้ไปไว้ใน พื้นที่เก็บข้อมูลบนคลาวด์เท่านั้น และเปลี่ยนชื่อเป็น limitless.ai ก็ยิ่งดีใจที่มีโอเพนซอร์สแบบนี้ออกมา
      เพราะจะได้ไม่ต้องถูกบังคับให้เก็บบนคลาวด์ และผมพูดแบบนี้ในฐานะคนที่น่าจะเลิกเป็นลูกค้าแบบเสียเงินในไม่ช้านี้