14 คะแนน โดย GN⁺ 2025-07-02 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • Spegel เป็นเบราว์เซอร์ที่ แปลงหน้าเว็บ HTML ให้เป็นพรอมป์ต์สำหรับ LLM แล้วแสดงผลเป็น Markdown ในเทอร์มินัล
  • สามารถ แปลงหน้าแบบปรับแต่งได้แบบเรียลไทม์ ตาม พรอมป์ต์ของผู้ใช้ ทำให้ตั้งค่าให้แสดงเฉพาะข้อมูลสำคัญอย่างกระชับได้
  • วิธีการทำงานหลักคือ ดึง HTML → ประมวลผลพรอมป์ต์ด้วย LLM → แปลงและแสดงผลเป็น Markdown
  • มี TUI ที่สร้างบน Textual ให้ UI บนเทอร์มินัลที่ใช้งานง่ายและเบา และสามารถจัดการหรือเปลี่ยนวิวกับพรอมป์ต์ได้แบบเรียลไทม์ผ่านไฟล์ตั้งค่า
  • ต่างจากเบราว์เซอร์เทอร์มินัลแบบเดิมอย่าง Lynx, Links2, Browsh ตรงที่ ออกแบบมาเฉพาะเพื่อเพิ่มประสิทธิภาพคอนเทนต์ตามผู้ใช้ด้วย LLM
  • ติดตั้งได้ง่ายด้วย pip install spegel และเป็นโอเพนซอร์ส จึงเหมาะกับการทดลองและต่อยอดได้หลากหลาย

ภาพรวมโครงการและคุณสมบัติ

  • Spegel เป็น เว็บเบราว์เซอร์ชนิดหนึ่งที่ทำงานในเทอร์มินัล โดยส่ง HTML ไปให้ LLM เพื่อ จัดโครงสร้างหน้าใหม่ด้วยพรอมป์ต์ที่ผู้ใช้กำหนดเอง
  • เอาต์พุตจะถูกแปลงเป็น Markdown และ แสดงอย่างเข้าใจง่ายใน UI เทอร์มินัลที่สร้างด้วย Textual
  • เป็นดีไซน์แบบมินิมัลที่ไม่รองรับ JS และรองรับเฉพาะคำขอแบบ GET
  • รองรับวิวการแปลงได้หลากหลายผ่านการปรับแต่งพรอมป์ต์ LLM (เช่น สรุปสูตรอาหาร, เน้นแอ็กชันสำคัญ เป็นต้น)

ตัวอย่างการทำให้เป็นส่วนตัวและการใช้งาน

  • ผู้ใช้สามารถจัดการพรอมป์ต์และวิวได้อย่างอิสระผ่านการตั้งค่า (~/.spegel.toml)
  • ตัวอย่าง:
    • ดึงเฉพาะวัตถุดิบและขั้นตอนสำคัญจากสูตรอาหาร
    • แปลงคำอธิบายที่ซับซ้อนให้เรียบง่ายในสไตล์ ELI5
    • หากต้องการ สามารถลงทะเบียนหลายวิวพร้อมกันเพื่อสลับใช้งานได้อย่างรวดเร็ว

วิธีการทำงาน

  • Spegel จะ ดึง HTML มาแล้วส่งให้ LLM พร้อมพรอมป์ต์จากไฟล์ตั้งค่า
  • แปลงผลลัพธ์จาก LLM เป็น Markdown แล้วเรนเดอร์ในเทอร์มินัลผ่าน Textual
  • สามารถปรับพรอมป์ต์และวิวได้แบบเรียลไทม์แม้ระหว่างการท่องเว็บ
  • สตรีมผลลัพธ์เป็นรายบรรทัด และมีการจัดการบัฟเฟอร์เพื่อป้องกันข้อผิดพลาดของฟอร์แมต Markdown

ความแตกต่างจากเบราว์เซอร์เทอร์มินัลแบบเดิม

  • Lynx, Links2, Browsh และตัวอื่น ๆ จะแสดงเพียงโครงสร้าง HTML เองในเทอร์มินัล
  • Spegel โดดเด่นด้านการแปลงด้วย LLM เพื่อเอาข้อมูลที่ไม่จำเป็นออกและสร้างวิวที่เหมาะสมที่สุด
  • เว็บไซต์สมัยใหม่พึ่งพา CSS และ JS สูง ทำให้ใช้งานในสภาพแวดล้อมเทอร์มินัลได้ยุ่งยาก ขณะที่ Spegel ดึงเฉพาะคอนเทนต์หลักออกมา ช่วยเพิ่มสมาธิและการเข้าถึง

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

  • ติดตั้งง่ายด้วย pip:
    pip install spegel
  • รัน:
    spegel <URL>
  • ต้องปรับแต่งไฟล์ตั้งค่า (~/.spegel.toml) โดยสามารถดูตัวอย่างได้จาก GitHub
  • ซอร์สโค้ดและการมีส่วนร่วม: https://github.com/simedw/spegel

หมายเหตุ

  • ยังอยู่ในขั้น Proof-of-Concept จึงยังมีบางฟีเจอร์ที่ไม่สมบูรณ์และบางส่วนที่ยังหยาบอยู่
  • ยังไม่รองรับคำขอแบบ POST และกำลังพิจารณาแนวคิดสำหรับการขยายในอนาคต เช่น การกรอกฟอร์ม
  • มากกว่าจะเป็นตัวแทนเบราว์เซอร์เทอร์มินัลเดิม มันมีลักษณะเป็น งานทดลองเพื่อสำรวจการทำให้คอนเทนต์เป็นส่วนตัวบนฐาน LLM+TUI อย่างชัดเจน

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

 
GN⁺ 2025-07-02
ความคิดเห็นใน Hacker News
  • คิดว่าเทคโนโลยีนี้เป็นไอเดียที่น่าสนใจมาก แม้จะไม่ได้มาแทนเบราว์เซอร์ทั้งหมด แต่ดูเหมือนว่าสามารถผสานการค้นหาแบบกำหนดชัดเจนเข้ากับพรอมป์ต์ เพื่อสร้างวิธีการท่องเว็บที่แตกต่างไปโดยสิ้นเชิงได้ และรู้สึกว่าถ้านำเสนอในรูปแบบเครื่องมือบรรทัดคำสั่งก็น่าจะเข้ากันได้ดียิ่งกว่า

    • ขั้นต่อไปที่นึกภาพออกคือความสามารถในการจัดการหลาย "แท็บ" พร้อมกัน เช่น แท็บ 1 เป็นรายงานข่าว A แท็บ 2 เป็นข่าว B แท็บ 3 เป็น Wikipedia แล้วนำแหล่งข้อมูลเหล่านี้มาสรุปพร้อมสร้างลิงก์อ้างอิง แต่ก็สงสัยว่ามีโมเดลที่เสถียรพอจะรองรับเวิร์กโฟลว์แบบนี้จริงหรือไม่ เพราะแม้แต่โมเดล SOTA รุ่นล่าสุดก็ยังให้ความรู้สึกว่ามีข้อจำกัดอยู่

    • ฟังก์ชันแบบข้างต้นที่ให้ดูรายงานจากหลายสื่อพร้อมสรุปและให้แหล่งอ้างอิงในมุมเดียวกันนั้น โดยพื้นฐานแล้วก็เหมือนกับสิ่งที่ Ground News ทำอยู่ ฉันไม่ได้เกี่ยวข้องอะไรกับพวกเขา แค่เคยเห็นถูกพูดถึงเป็นสปอนเซอร์ในวิดีโอของ Kurzgesagt เท่านั้น แน่นอนว่า UI อาจแตกต่างกันชัดเจน

    • ต่อให้แสดงหลายแท็บ/หลายมุมมองพร้อมกัน ฉันก็คิดว่าจะจำกัดให้อยู่ภายใน source เดียวกันเท่านั้น เช่น แท็บหนึ่งเป็นการแสดงต้นฉบับที่เหมาะกับ CLI อีกแท็บเน้นเฉพาะการ fact-checking (ค้นหาหลักฐานด้วย Google, Brave) คิดว่าการทดลองแบบนี้น่าจะสนุกมาก

    • ถ้ามองอีกแบบก็คือเป็นโครงสร้างที่ใช้พลังทั้งหมดสร้าง SEO spam ด้วย LLM แล้วก็ให้ LLM อีกตัวมาสรุปแบบลวกๆ แล้วคายออกมาอีกที ช่างเป็นอนาคตที่ยิ่งใหญ่จริงๆ

  • รู้สึกว่าการที่ตัวอย่างแรกเป็นการดึงเฉพาะสูตรอาหารออกจากเว็บสูตรอาหารชื่อดังนั้นเป็นฉากคลาสสิกมาก สำหรับฉันแล้วเห็นแบบนี้ก็อยากกดแนะนำโปรเจกต์นี้ทันทีเลย ให้ความรู้สึกว่าเป็นโปรเจกต์ที่หัวไวมาก

    • มองว่านี่ก็เป็นอีกตัวอย่างของกระแส LLM ที่เอาสิ่งซึ่งมีอยู่แล้วมาตีความใหม่ให้แย่ลงและไม่เป็น deterministic ทั้งที่โครงสร้างมาตรฐานอย่าง schema.org/Recipe ก็มีอยู่ก่อนแล้ว

    • สิ่งที่น่าสนใจคือในกระบวนการดึงสูตรอาหารนั้น เนื้อหา วัตถุดิบ หรือปริมาณอาจถูกเปลี่ยนแบบสุ่มได้ คิดว่าคุณลักษณะของ LLM แสดงออกได้ชัดมากในไมโครคอสม์เล็กๆ แบบนี้ เพียงแต่ต่างจากสิ่งที่คอมเมนต์ส่วนใหญ่คาดหวังโดยสิ้นเชิง

    • มีส่วนขยายที่ดึงเฉพาะสูตรอาหารแบบ deterministic ได้อยู่แล้วโดยไม่ต้องใช้ LLM เช่นส่วนขยาย Recipe Filter ของ Chrome ที่จะแสดงสูตรในป๊อปอัปเมื่อรู้จำสูตรอาหารในหน้าได้

  • ชอบตรงที่ LLM เข้ามาเป็นตัวกลางเพื่อเลี่ยงทั้งเทรนด์การเขียนที่ปรับแต่ง SEO ของ Google ในช่วงหลังและตัวโครงสร้าง SEO เอง การตัดทุกอย่างที่ไม่จำเป็นออกแล้วคงไว้เฉพาะสูตรอาหารเป็นกรณีที่เหมาะกับ LLM มาก คาดว่าต่อไปจะมีกรณีการใช้ LLM เป็นฟิลเตอร์อย่างจริงจังมากขึ้น แน่นอนว่าถ้าดึงเฉพาะสูตรจาก HTML ได้โดยตรงก็คงดี แต่สงคราม SEO มันรุนแรงเกินไปจนในทางปฏิบัติแทบเป็นไปไม่ได้แล้ว

    • ถ้า LLM ถูกใช้เพื่อลบองค์ประกอบที่ไม่จำเป็นทั้งหมด ก็ควรคิดด้วยว่า LLM อาจเปลี่ยนสูตรอาหารอย่างคาดเดาไม่ได้เช่นกัน ไม่เข้าใจว่าทำไมถึงจะเชื่อถือซอฟต์แวร์เชิงความน่าจะเป็นแบบนี้ในสภาพแวดล้อมที่ยอมรับความผิดพลาดไม่ได้

    • คาดการณ์อนาคตแบบนี้มาตั้งแต่หลายปีก่อนแล้ว ทุกวันนี้มีเครื่องมือ LLM ที่ฝังการค้นหาไว้แล้ว และความสามารถในการเชื่อมหลายการค้นหาเข้าด้วยกันนั้นทรงพลังมาก แต่ Spegel ใช้วิธีที่ต่างออกไปโดยสิ้นเชิง คิดว่าตัวบล็อกโฆษณาแห่งอนาคตจะเป็น local LLM ขนาดเล็กและมีประสิทธิภาพ เช่น จัดเรียงไทม์ไลน์ตามเวลา เปลี่ยน UI แสดงเฉพาะบางรายการ หรือซ่อนคอมเมนต์คุณภาพต่ำอัตโนมัติ ทุกอย่างนี้ทำได้เมื่อ LLM ทำงานเป็นพร็อกซีหรือเอเจนต์อยู่ตรงกลาง และคาดว่าแนวโน้มนี้จะทำให้ผู้ลงโฆษณารู้สึกไม่สบายใจพอสมควร

    • ควรคิดด้วยว่าในกระบวนการท่องเว็บ LLM อาจต้องประมวลผลหลายล้านโทเคนต่อนาที ซึ่งหมายถึงต้นทุนการคำนวณที่สูงมาก

    • LLM สร้างส่วนที่ไม่จำเป็นขึ้นมา แล้ว LLM ก็กลับมาลบสิ่งที่ไม่จำเป็นนั้นอีกที รู้สึกเหมือนเป็นวงจรที่ไหลไปโดยไม่มีการเข้าใจผิดระหว่างกัน

  • คิดว่าถ้าใช้โมเดลที่ซับซ้อนน้อยกว่า (ถึงขั้น LSTM ก็อาจพอได้) มาสแกน DOM แล้วคัดเฉพาะส่วนที่ต้องการไปเก็บเป็นโครงสร้างข้อมูลสำหรับแสดงผลในเบราว์เซอร์โดยตรง ก็น่าจะมีความเป็นไปได้อยู่ และรู้สึกว่ายังสามารถใช้ toolchain ที่อาศัย LLM ของผู้เขียนมาช่วยสร้างข้อมูลฝึกได้ง่ายด้วย

    • แต่บนเว็บสมัยใหม่ที่คอนเทนต์ถูกเรนเดอร์ช้าด้วย JS การไล่ดูแค่ DOM ก็มีข้อจำกัด ต้องรอให้ JS โหลดครบและคำขอทั้งหมดเสร็จสิ้นก่อนถึงจะได้ข้อมูลที่ต้องการ ซึ่งในกรณีนั้นก็แทบไม่ต่างจากการรันตัวเรนเดอร์ของเบราว์เซอร์อยู่ดี
  • ดูเหมือนหลายคนจะมองข้ามไปว่า html เป็นแค่จุดเริ่มต้นเท่านั้น ถ้าสามารถแปลงเว็บเพจให้เป็นมุมมองอื่นได้ ก็เท่ากับแปลงอินพุตทุกชนิดที่โมเดลรับเข้าไปได้เช่นกัน ไม่ว่าจะเป็น PDF, zip ที่บรรจุรูปภาพ, หรือ json ขนาดใหญ่ อะไรก็ทำเป็น view ได้หมด สุดท้ายสิ่งสำคัญไม่ใช่อินพุต html แต่คือ view ของผลลัพธ์ที่ได้

  • ขอเสนอให้เพิ่มออปชัน -p ใน spegel

    spegel -p "extract only the product reviews" > REVIEWS.md
    

    เป็นฟังก์ชันที่ดึงเฉพาะข้อมูลที่ต้องการด้วยพรอมป์ต์

  • คิดว่าถ้าไม่ต้อง rewrite ใหม่ทุกครั้งในแต่ละหน้า แต่แค่แปลงเป็น Markdown ครั้งเดียวตอนเข้าชม แล้วแชร์เวอร์ชันที่สะอาดต่อกัน ก็น่าจะลดการคำนวณซ้ำได้

    • เพราะผู้ใช้แต่ละคนมีความต้องการและความรู้พื้นฐานต่างกัน ต่อให้ทำข้อมูลสาธารณะที่สะอาดแค่ไหน สุดท้ายก็คงยังต้องมีขั้นตอนปรับแต่งเฉพาะบุคคลอยู่ดี แต่ global dedup cache อย่าง P2P cache (เช่น IPFS) อาจช่วยเรื่องการเก็บรักษาข้อมูล ความพร้อมใช้งาน และการประหยัดทรัพยากรได้

    • cache header มีไว้เพื่อให้เซิร์ฟเวอร์บอกไคลเอนต์ว่าสามารถแคชข้อมูลได้นานแค่ไหน คิดว่าถ้าเพิ่มชั้นแคชฝั่งไคลเอนต์ที่เคารพ header เหล่านี้ด้วยก็น่าจะดี

    • ถ้าเป้าหมายคือเลย์เอาต์ที่สม่ำเสมอ ก็อาจใช้วิธีส่งผลลัพธ์ Markdown ของหน้าล่าสุดไปพร้อมกับโมเดลเป็นตัวอย่างด้วย (one-shot example) ได้เช่นกัน

    • โปรเจกต์นี้มีเป้าหมายเป็น "มุมมองที่ขับเคลื่อนด้วยพรอมป์ต์และปรับตามบุคคล" ดังนั้นอย่างน้อยผลลัพธ์จากพรอมป์ต์ค่าเริ่มต้นก็น่าจะแคชไว้ใช้ได้

  • รู้สึกว่าเป็น POC ที่ยอดเยี่ยมจริงๆ และมีหลายส่วนที่คล้ายกับส่วนขยาย Chrome ที่ฉันใช้ประจำอย่าง "reader view" มาก
    ลิงก์ส่วนขยาย reader view

  • ไอเดียนี้เท่มากและคิดว่ามีศักยภาพสูงในแง่การเข้าถึงด้วย

    • แต่ปัญหาก็คือ LLM ไม่เป็น deterministic ดังนั้นเรื่องการเข้าถึงซึ่งเป็นด้านที่ความน่าเชื่อถือและความคาดเดาได้สำคัญที่สุดจึงยังน่ากังวล
  • มีวิดีโอเก่าที่สาธิต AI agent ที่ฉันปลดระวางไปแล้ว ซึ่งแปลงเว็บเพจแบบเรียลไทม์ได้
    เดโมแปลง HN เป็น My Little Pony (วิดีโอ)
    ดูผลลัพธ์ได้ตั้งแต่ประมาณวินาทีที่ 37
    และฉันก็เคยทำส่วนขยาย Chrome แบบโอเพนซอร์สไว้ด้วย ถ้าสนใจก็ดู ChromeGPT ได้

 
laeyoung 2025-07-04

spegel -p "extract only the product reviews" > REVIEWS.md

ถ้ามีแค่ตัวเลือกนี้ก็น่าจะเอาไปประยุกต์ใช้ได้หลายอย่างเลย แต่ดูเหมือนว่าตอนนี้ยังไม่มีนะ