11 คะแนน โดย hanityx 26 일 전 | 5 ความคิดเห็น | แชร์ทาง WhatsApp

สวัสดีครับ ผมกำลังสร้างเครื่องมือโอเพนซอร์สชื่อ ThreadLens เพื่อแก้ปัญหาความไม่สะดวกที่เจอเวลาต้องใช้เครื่องมือ AI หลายตัวร่วมกัน

จุดเริ่มต้นแรกคือการจัดการเธรดของ Codex ครับ ใน UI ทำได้แค่ archive แต่ถ้าจะลบจริง ๆ ต้องไปหาไฟล์บนเครื่องเองโดยตรง ต่อมาผมก็พบว่าใน openai/codex ก็มีคำขอคล้ายกันว่า "ต้องการ delete ไม่ใช่แค่ archive" เลยคิดว่าน่าจะไม่ได้เป็นปัญหาที่ผมเจอคนเดียว

หลังจากนั้นพอเริ่มสลับใช้ AI หลายตัวอย่าง Codex กับ Claude ก็เกิดอีกปัญหาหนึ่งขึ้นมา คือมักจะต้องมานั่งคิดว่า "บทสนทนาที่คุยกับ AI ตอนนั้นอยู่ที่ไหนนะ?" แล้วก็ต้องคุ้ยหาโฟลเดอร์ซ่อนของแต่ละเครื่องมือ หรือใช้ rg หา transcript อยู่บ่อย ๆ อีกทั้งล็อกเซสชันบนเครื่องก็สะสมเพิ่มขึ้นเรื่อย ๆ ทำให้ทั้งการจัดการพื้นที่และการสำรองลงอุปกรณ์ภายนอกต้องคอยทำเองทุกครั้ง ซึ่งค่อนข้างยุ่งยาก

ผมเลยตั้งใจทำให้เวิร์กโฟลว์พวกนี้จัดการได้จากที่เดียว

  • ค้นหาโลคัลเซสชันของ Codex, Claude, Gemini, Copilot ได้จากที่เดียว
  • ดู transcript, เส้นทางงาน, ขนาดไฟล์, เวลาที่แก้ไข ของแต่ละเซสชันได้ในหน้าจอเดียว
  • จัดระเบียบผ่าน การสำรองแบบเป็นชุดและการวิเคราะห์ผลกระทบ (ตอนนี้การวิเคราะห์ผลกระทบยังเน้น Codex เป็นหลัก)
  • ตรวจสอบว่าโครงสร้างเซสชันของแต่ละ provider ถูกอ่านจากที่ไหนและอย่างไรผ่าน routing/parser

เป็นแบบ Local-First จึงไม่มีการอัปโหลดไปยังบัญชีหรือคลาวด์ โครงสร้างนี้จะอ่านไฟล์เซสชันที่มีอยู่แล้วในคอมพิวเตอร์ของคุณ แล้วแสดงผลผ่าน local API, เว็บ UI, เดสก์ท็อปแอป และ TUI

พอทำไปสักพัก ผมรู้สึกว่าถ้ามีแค่ "ปุ่มลบ" อย่างเดียวมันยังไม่ค่อยพอ โดยเฉพาะเธรดของ Codex ผมอยากเห็นก่อนว่า "ถ้าลบอันนี้ไปจะโอเคไหม?" ดังนั้นในการวิเคราะห์ผลกระทบ ผมจึงดึงสัญญาณที่อ้างอิงได้จากเอกสารฝั่ง OpenAI/Claude และจาก issue จริง ๆ มาใช้ ส่วนค่าน้ำหนักของคะแนนก็ตั้งไว้ค่อนข้างอนุรักษ์นิยมภายในตัวผลิตภัณฑ์

ระบบจะดูทั้ง context ที่ยาว, history ที่ใช้เครื่องมือหนัก, การมีหรือไม่มี cwd, ความเก่าของเซสชัน รวมถึงตรวจด้วยว่ามีเซสชันอื่นอ้างอิงเธรดนี้โดยตรงในความสัมพันธ์แบบ parent/child/fork หรือมีการกล่าวถึงในล็อกหรือไม่ ทำให้ก่อนลบสามารถเช็กได้ก่อนว่า เป็นตัวเลือกที่อาจกลายเป็น orphan หรือไม่, ยังเชื่อมโยงกับเซสชันอื่นอยู่หรือไม่, และดูเหมือนจะลบได้อย่างปลอดภัยหรือไม่

ตอนนี้มี macOS DMG, Windows exe, Linux AppImage ให้ดาวน์โหลดแล้ว และสามารถรันจากซอร์สได้เช่นกัน
บิลด์เดสก์ท็อปตอนนี้ยัง unsigned อยู่ จึงอาจมีคำเตือนจากระบบปฏิบัติการ และตรรกะการสำรวจของแต่ละ provider รวมถึง UX โดยรวมก็ยังปรับปรุงต่อเนื่องอยู่

ยินดีมากกับทั้งฟีดแบ็กและการช่วยสนับสนุนการมีส่วนร่วมครับ!! ถ้าคุณใช้ฟอร์แมตโลคัลเซสชัน AI แบบอื่นอยู่ก็ช่วยบอกกันได้ น่าจะมีประโยชน์ต่อการจัดลำดับความสำคัญ:)

GitHub: https://github.com/hanityx/threadlens

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

 
minhoryang 26 일 전

ยอดเยี่ยมมาก! นี่คือสิ่งที่ผมต้องการอยู่พอดีจริง ๆ!!

 
hanityx 25 일 전

ถึงขั้นคอมเมนต์เลย.. ผมต่างหากที่ต้องขอบคุณมาก! ใน UI ก็รองรับภาษาไทยด้วย เป็นระบบหลายภาษาที่อิง i18n ต่อจากนี้จะตั้งใจขัดเกลาให้ดียิ่งขึ้นครับ!

 
minhoryang 25 일 전

@hanityx พอจะช่วยทำไกด์สำหรับเพิ่ม provider อื่นได้ไหมครับ? (อยากลองเพิ่ม opencode หรืออย่างอื่นดู) ข้อมูลใน docs/PROVIDER_SUPPORT.md คุณรวบรวมเองโดยตรงหรือเปล่าครับ? แล้วใน apps/api-ts/src/domains/providers/matrix.ts จำเป็นต้องเพิ่มเองโดยตรงไหมครับ? ถ้าแยก interface ออกมาได้ น่าจะใช้งานสะดวกขึ้นอีกหน่อยครับ

 
hanityx 24 일 전

โครงสร้างไม่ได้เป็นแบบที่แค่เพิ่ม matrix.ts ก็จะต่อ provider ใหม่ได้เลย แต่ต้องปรับให้สอดคล้องกันทั้งรายการ provider, ความปลอดภัยของพาธ, การค้นหาเซสชัน, การจัดการ transcript/search, actions, health, การทดสอบ และการสร้างเอกสาร

docs/PROVIDER_SUPPORT.md ไม่ใช่เอกสารที่แก้โดยตรง แต่จะถูกสร้างอัตโนมัติโดยอ้างอิงจาก provider registry ของ shared contracts และสคริปต์สร้างเอกสาร จุดประสงค์คือเพื่อไม่ให้ขอบเขตการรองรับของแต่ละ provider คลาดเคลื่อนจากตรรกะการทำงานจริง

เดิมทีฝั่ง API เองก็มีตรรกะ search/transcript ที่ค่อนข้างใหญ่จนกำลังดูงานแยก/จัดระเบียบอยู่พอดี รอบนี้ผมจะจัดระเบียบ internal adapter และไกด์ให้เพิ่ม provider ได้ง่ายขึ้นไปพร้อมกัน และจะลองพิจารณา OpenCode โดยเริ่มจากรองรับแบบ read-only อย่างปลอดภัยก่อนด้วยครับ ถ้าฝากพาธของ local session รวมถึงตัวอย่างและข้อมูลที่เกี่ยวข้องไว้ใน issue ผมจะติดตามดูต่อให้นะครับ!

 
minhoryang 24 일 전

ถ้าแยกให้แล้ว ผมจะลองอัปโหลด opencode ตาม CONTRIBUTING.md และคู่มือให้ครับ