Threadlens - เครื่องมือโอเพนซอร์สสำหรับค้นหา วิเคราะห์ สำรองข้อมูล และจัดระเบียบเซสชัน AI บนเครื่อง
(github.com/hanityx)สวัสดีครับ ผมกำลังสร้างเครื่องมือโอเพนซอร์สชื่อ 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 แบบอื่นอยู่ก็ช่วยบอกกันได้ น่าจะมีประโยชน์ต่อการจัดลำดับความสำคัญ:)
5 ความคิดเห็น
ยอดเยี่ยมมาก! นี่คือสิ่งที่ผมต้องการอยู่พอดีจริง ๆ!!
ถึงขั้นคอมเมนต์เลย.. ผมต่างหากที่ต้องขอบคุณมาก! ใน UI ก็รองรับภาษาไทยด้วย เป็นระบบหลายภาษาที่อิง i18n ต่อจากนี้จะตั้งใจขัดเกลาให้ดียิ่งขึ้นครับ!
@hanityx พอจะช่วยทำไกด์สำหรับเพิ่ม provider อื่นได้ไหมครับ? (อยากลองเพิ่ม opencode หรืออย่างอื่นดู) ข้อมูลใน
docs/PROVIDER_SUPPORT.mdคุณรวบรวมเองโดยตรงหรือเปล่าครับ? แล้วในapps/api-ts/src/domains/providers/matrix.tsจำเป็นต้องเพิ่มเองโดยตรงไหมครับ? ถ้าแยก interface ออกมาได้ น่าจะใช้งานสะดวกขึ้นอีกหน่อยครับโครงสร้างไม่ได้เป็นแบบที่แค่เพิ่ม
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 ผมจะติดตามดูต่อให้นะครับ!
ถ้าแยกให้แล้ว ผมจะลองอัปโหลด opencode ตาม
CONTRIBUTING.mdและคู่มือให้ครับ