5 คะแนน โดย sleeplesshan 7 시간 전 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

สวัสดีครับ

สำหรับคนที่ปกติใช้ AI agent อย่าง Claude Code หรือ Codex เพื่อวิเคราะห์ล็อกขนาดใหญ่หรือแก้ไขโค้ด legacy แล้วต้องกังวลกับค่าโทเค็นและเวลาแฝงที่พุ่งขึ้นอย่างรวดเร็ว ผมขอมาแชร์สกิลที่ผมสร้างไว้ครับ

มันคือ token-router ซึ่งเป็น hybrid context router สำหรับจัดการไฟล์ขนาดใหญ่ด้วยแนวคิด "สำรวจบนเครื่องฟรี, ให้เหตุผลบนคลาวด์ด้วยประสิทธิภาพสูง"


🛑 มันแก้ปัญหาอะไร?

ถ้าเอาล็อกการ deploy infra ที่ยาวเกิน 2,000 บรรทัดหรือไฟล์ซอร์สโค้ดขนาดมหึมาใส่เข้า cloud LLM ทั้งก้อนไปเลย ก็จะสิ้นเปลือง input token อย่างมากและใช้เวลารอนานขึ้นด้วย

บางคนพยายามประหยัดด้วยการให้โมเดลขนาดเล็กสรุปโค้ดล่วงหน้า แต่แนวทางนี้มีความเสี่ยง เพราะทันทีที่มีบรรทัด error หรือจุดที่นิยามตัวแปรหายไป Cloud AI ก็จะสูญเสียบริบทและตอบผิดไปคนละทางได้

และในเวอร์ชันล่าสุด ยังได้ขยายขอบเขตการ routing ไปยังไฟล์คำสั่ง agent แบบคงที่ที่ถูกแนบซ้ำทุกเทิร์นอย่าง CLAUDE.md, AGENTS.md, .cursorrules ด้วย อย่างไรก็ตาม ไม่สามารถลดค่าโทเค็นของไฟล์ root ขนาดยาวที่ถูก inject อัตโนมัติไปแล้วในภายหลังได้ ดังนั้นจึงแนะนำให้คงไฟล์คำสั่ง root ให้สั้น และแยกกฎยาว ๆ ตามงานไปไว้ใน reference file แยกต่างหาก แล้วค่อย routing เฉพาะตอนที่จำเป็น


🧠 มันแก้อย่างไร? (วิธีทำงานจากมุมมองผู้ใช้)

เครื่องมือนี้ไม่สรุปข้อความ แต่ใช้วิธีตัดเอาต้นฉบับจริงออกมาเฉพาะส่วนที่จำเป็นเท่านั้นอย่างเคร่งครัด

  1. สำรวจในเครื่อง (Local Triage): รันบนคอมพิวเตอร์ของผมผ่าน Ollama โดยใช้โมเดล Gemma 4 2B ขนาดเบา โมเดลโลคัลนี้จะค้นหาเฉพาะหมายเลขบรรทัด (พิกัด) ที่ตรงกับคำถามของผู้ใช้ได้อย่างรวดเร็วและแม่นยำ
  2. ดึงต้นฉบับ (Raw Slicing): สคริปต์ Python จะใช้หมายเลขบรรทัดเหล่านั้นเพื่อตัดข้อความจากดิสก์ออกมาเป็นชิ้นข้อความสะอาด ๆ โดยคงต้นฉบับไว้ทุกประการ
  3. ให้เหตุผลบนคลาวด์ (Reasoning): โมเดลคลาวด์หลักจะรับเพียงชิ้นต้นฉบับความหนาแน่นสูงที่ตัดเสียงรบกวนออกแล้ว พร้อมแผนผังโครงสร้างไฟล์ เพื่อโฟกัสเฉพาะการดีบักและการเขียนโค้ด

เพราะส่งข้อมูลเป็นต้นฉบับที่ไม่ผ่านการแปลงใด ๆ จึงใช้ความสามารถในการให้เหตุผลของโมเดลคลาวด์ได้เต็ม 100% พร้อมลดค่าใช้จ่ายลงอย่างมาก

ตอนนี้รองรับ 3 โหมดคือ error_log, heavy_code, agent_context โดย agent_context เป็นโหมดที่ค้นหาเฉพาะบรรทัดต้นฉบับที่เกี่ยวข้องกับงานปัจจุบันจากเอกสารอ้างอิงคำสั่ง agent อย่าง CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules, agent-context/*.md


📊 ผลทดสอบจริงบนพีซีของผม

  • ล็อกอินฟราขนาดใหญ่ (2,000 บรรทัด): ลด input context จาก 41,711 โทเค็นเหลือ 131 โทเค็น (ประหยัด 99.69%, ใช้เวลา 5.37 วินาที)
  • ซอร์สโค้ดบั๊กแบบ legacy (2,155 บรรทัด): ส่งข้อมูลจากเดิม 7,520 โทเค็นโดย ย่อเหลือเพียง 70 โทเค็น (ประหยัด 99.06%, ใช้เวลา 4.46 วินาที)

🛠️ จุดที่ใช้งานจริงแล้วสะดวก

  • กันพีซีหน่วง: ถ้ากังวลว่าการใช้ AI บนเครื่องจะทำให้คอมช้า เครื่องมือนี้จะปล่อย local model ออกจากหน่วยความจำ VRAM ทันทีในจังหวะที่ดึงพิกัดสำหรับ routing เสร็จพอดี
  • ขยายบริบทแบบย้อนกลับอย่างฉลาด: ถ้าโค้ดที่ตัดมาแคบเกินไปจนดู dependency ก่อนหลังได้ยาก Cloud AI จะไม่เดาสุ่มตอบ แต่มี prompt safety guard ที่ฝังไว้ให้ส่งคำขอกลับไปยังสคริปต์ว่า "ให้ตัดช่วงที่กว้างขึ้นมาใหม่"
  • สตรีมไฟล์ขนาดใหญ่: แม้ไฟล์จะใหญ่เกินหน่วยความจำของ local model แต่ก็ยังปลอดภัย เพราะแบ็กเอนด์มี streaming logic ที่จะสแกนคีย์เวิร์ดและส่วนท้ายของไฟล์ก่อนโดยอัตโนมัติ
  • รองรับ Claude Code: เวอร์ชันล่าสุดยังมี compact CLAUDE.md bootstrap สำหรับ Claude Code มาด้วย โดยสามารถแยกคำสั่งยาวเฉพาะของ Claude ไปไว้ใน reference file แล้วเรียกผ่าน agent_context ได้

เปิดให้ใช้ฟรีทั้งหมดภายใต้ MIT license และสามารถนำไปลงทะเบียนใช้งานได้ทันทีทั้งในรูปแบบสคริปต์เดี่ยวหรือเป็นสกิลของ OpenAI Codex ส่วนใน Claude Code ก็สามารถอ้างอิง CLAUDE.md bootstrap เพื่อเรียกใช้สคริปต์เราเตอร์ตัวเดียวกันได้ หวังว่าจะช่วยเพิ่มประสิทธิภาพการพัฒนาให้กับคนที่ต้องดีบักล็อกขนาดใหญ่หรือจัดการโค้ดหนัก ๆ อยู่บ่อยครั้งครับ

หากมีฟีดแบ็กหรือความคิดเห็นเกี่ยวกับสถาปัตยกรรมหรือการปรับแต่งพรอมป์ต์ในมุมต่าง ๆ ผมยินดีมากครับ!

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

 
hshim 5 시간 전

เป็นสกิลที่ดีนะครับ ลองใช้แบบเบา ๆ ดูแล้ว
ตอนสร้าง JSON ที่จะส่งด้วย Python บางครั้งมีเคสที่ทำผิดไวยากรณ์ของ JSON จนเกิดข้อผิดพลาด พอลองเปลี่ยนไปใช้ 4b หรือ qwen2.5-coder:7b ก็พบว่าอัตราการเกิดข้อผิดพลาดลดลงอย่างชัดเจน

 
sleeplesshan 5 시간 전

โอ้ ขอบคุณมากจริง ๆ ครับที่ช่วยทดสอบให้ทันทีตั้งแต่เพิ่งโพสต์ และยังฝากฟีดแบ็กเปรียบเทียบตามขนาดโมเดลแบบละเอียดไว้ด้วย!
อย่างที่คุณบอกไว้ โมเดลขนาดเล็กมากระดับ 2B อาจมีข้อจำกัดตรงที่บางครั้งเมื่ออยู่ในสภาพแวดล้อมที่มีล็อกซับซ้อนหรือมีอักขระพิเศษปะปนกัน ก็อาจหลุดข้อจำกัดของ system prompt และส่งออก JSON ที่ผิดไวยากรณ์ได้ หากมีทรัพยากร VRAM เหลือเพียงพอ ก็ดูเหมือนว่า Qwen 2.5 Coder 7B หรือสาย Gemma 4B จะดึงพิกัดการ routing ออกมาได้เสถียรกว่ามากครับ
หากท่านอื่น ๆ ทดลองแล้วเจอข้อผิดพลาดไวยากรณ์ JSON เช่นกัน ลองตั้งค่าผ่าน environment variable แล้วเปลี่ยนไปรันด้วยโมเดลขนาดใหญ่ขึ้นตามด้านล่างนี้ น่าจะช่วยให้นำไปใช้งานได้สะดวกมากขึ้นครับ
OLLAMA_MODEL=qwen2.5-coder:7b python3 scripts/router.py ...
ขอบคุณมากครับที่แชร์ความเห็นจากการ benchmark ใช้งานจริงอันมีค่านี้