Sverklo ซึ่งเป็นเซิร์ฟเวอร์ค้นหาโค้ดแบบโฮสต์ในเครื่อง (locally hosted) ช่วยให้นักพัฒนาสามารถตรวจสอบทุกขั้นตอนของการสืบค้น (query) ได้ ตั้งแต่การค้นหาไฟล์ไปจนถึงการใช้เหตุผลผ่าน symbol-graph ก่อนที่เอเจนต์ AI จะดำเนินการตามผลลัพธ์นั้น
ทำไมเอเจนต์เขียนโค้ดที่มีอยู่ในปัจจุบันถึงทำงานผิดพลาด
เครื่องมือสร้างโค้ดส่วนใหญ่มอง repository เหมือนเป็นกองข้อความขนาดใหญ่ พวกเขาทำการฝัง (embed) ชิ้นส่วนโค้ด รันการค้นหาความคล้ายคลึง (similarity search) และส่งคืนชิ้นส่วนที่มีคะแนนสูงสุด เมื่อชิ้นส่วนนั้นล้าสมัย (stale) อยู่นอกขอบเขต หรือเป็นเพียงแค่ชื่อไฟล์ เอเจนต์จะไม่สามารถระบุแหล่งที่มาได้ รูปแบบความล้มเหลวนี้ไม่ใช่การขาดคำศัพท์ แต่เป็นการขาดเลเยอร์ของบริบท (context layer) ที่จะบอกมนุษย์ว่าข้อเท็จจริงนั้นมาจาก ที่ไหน และมันยังคง ใช้งานได้อยู่หรือไม่
โมเดลการตรวจสอบสี่เลเยอร์ของ Sverklo
Sverklo วางตำแหน่งตัวเองเป็นเซิร์ฟเวอร์แบบ "สมมติฐานทางวิศวกรรม" (engineering hypothesis) ที่ผสานการค้นหาแบบดั้งเดิมเข้ากับการวิเคราะห์เชิงโครงสร้าง:
- File Discovery (การค้นหาไฟล์) – ดัชนี (index) จะอ่านไฟล์
.gitignoreและไฟล์ ignore อื่นๆ ก่อนที่จะเชื่อถือผลลัพธ์ คุณสามารถสอบถามดัชนีเพื่อดูว่าเส้นทาง (paths) ใดที่ถูกสแกนจริง - Code Structure (โครงสร้างโค้ด) – สัญลักษณ์ (Symbols) จะอยู่ในกราฟที่บันทึกการนิยาม (definitions), การนำเข้า (imports) และความสัมพันธ์ในการเรียกใช้งาน (call relationships) การค้นหาจะคืนค่าเป็น symbol object ไม่ใช่แค่พาธของไฟล์ เพื่อให้คุณยืนยันได้ว่ามีการอ้างอิงถึง API surface ที่ถูกต้อง
- Context Delivery (การส่งมอบบริบท) – เมื่อคุณกำหนดงบประมาณโทเคน (token budget) Sverklo จะคืนค่าแผนผังของชิ้นส่วนโค้ด (snippets) ที่มีส่วนช่วยในการตอบคำถาม แผนผังนี้จะมีฟิลด์
found_byที่บอกคุณว่าการจับคู่นั้นมาจาก BM25 keyword matching, ONNX-generated embeddings หรือ symbol graph ที่จัดลำดับด้วย PageRank - Memory Ledger (บัญชีความจำ) – เซิร์ฟเวอร์จะบันทึก (log) ทุกการตัดสินใจ หากไฟล์มีการเปลี่ยนแปลง บัญชีความจำจะทำเครื่องหมายรายการความจำที่เกี่ยวข้องว่าล้าสมัย (stale) เพื่อแสดงว่าคำตอบที่เก็บไว้ในแคชยังคงใช้งานได้หรือไม่
สแต็กการดึงข้อมูล (retrieval stack) ทำงานอย่างไร
Sverklo ไม่ได้พึ่งพาเพียงแค่ embeddings เท่านั้น แต่มันรันเอนจินคำสำคัญแบบ BM25 ดั้งเดิมเพื่อการจับคู่คำที่แม่นยำ เสริมผลลัพธ์เหล่านั้นด้วย vector embeddings ที่ใช้ ONNX เพื่อความคล้ายคลึงทางความหมาย (semantic similarity) จากนั้นจึงใช้ อัลกอริทึม PageRank บน symbol graph เพื่อดึงการนิยามที่มีผลกระทบสูงออกมา การเปิดเผยวิธีการที่สร้างผลลัพธ์แต่ละรายการช่วยให้นักพัฒนาสามารถตรวจพบความไม่สอดคล้องกันได้ เช่น ผลลัพธ์จาก BM25 ที่โมเดล embedding มองว่าไม่เกี่ยวข้อง และสามารถเลือกได้ว่าจะเชื่อสัญญาณใด
การใช้งานจริง
- การสำรวจ codebase ที่ไม่คุ้นเคย – ข้ามจากชื่อฟังก์ชันไปยังผู้เรียกใช้งาน (callers) ทั้งหมดได้ทันทีโดยไม่ต้องใช้คำสั่ง grep ด้วยตนเอง
- การสร้างแผนผังความสัมพันธ์ (dependency graphs) – แสดงลำดับการนำเข้า (import chains) ที่ครอบคลุมหลายแพ็กเกจในรูปแบบภาพ
- การประเมินผลกระทบจากการ refactor – ดูว่าสัญลักษณ์ใดจะเสียหายหากไฟล์ที่กำหนดมีการเปลี่ยนแปลง
- การตอบคำถามเชิงความหมาย – ถามว่า “helper นี้ทำหน้าที่อะไร?” และรับข้อความตัดตอนที่กระชับและมีแหล่งที่มาอ้างอิง
ข้อควรระวัง
- ความสดใหม่ (Freshness) – การทำ reindex อาจเสร็จสิ้นในขณะที่ timestamp ของดัชนียังคงเป็นค่าเก่า ควรสอบถามที่ endpoint
index-statusเสมอ แทนที่จะทึกทักเอาเองว่าการรันครั้งล่าสุดเป็นปัจจุบันแล้ว - การลงทะเบียนโปรเจกต์ (Project registration) – เมื่อยกเลิกการลงทะเบียนโปรเจกต์ ให้ใช้ชื่อโปรเจกต์ภายในที่จัดหาโดย Sverklo ไม่ใช่พาธไฟล์แบบสมบูรณ์ (absolute filesystem path) มิฉะนั้นการดำเนินการจะล้มเหลวโดยไม่แจ้งเตือน
- ความแปลกประหลาดในการตั้งชื่อเครื่องมือ – โฮสต์ MCP บางครั้งจะเติมชื่อโปรเจกต์ซ้ำสองครั้ง ทำให้ได้ identifier เช่น
sverklo_sverklo_impactควรตรวจสอบชื่อให้ดีก่อนเรียกใช้เครื่องมือ
สิ่งที่ควรลองทำต่อไป
- Clone repository สำหรับทดสอบและรัน Sverklo ในเครื่องของคุณ
- ลองรันการค้นหาสัญลักษณ์แบบง่ายๆ และตรวจสอบฟิลด์
found_by - แก้ไขไฟล์ต้นฉบับและรันการค้นหาอีกครั้ง สังเกตว่า memory ledger ทำเครื่องหมายรายการที่ล้าสมัยอย่างไร
- รวมการตรวจสอบ
index-statusเข้ากับ build script ของคุณเพื่อตรวจจับดัชนีที่ล้าสมัยโดยอัตโนมัติ
บทสรุป
Sverklo เปลี่ยนเอนจินค้นหาโค้ดให้กลายเป็นสายโซ่หลักฐานที่ตรวจสอบได้ (auditable evidence chain) ด้วยการบังคับให้นักพัฒนาต้องตรวจสอบความครอบคลุมของไฟล์, ความถูกต้องของสัญลักษณ์, วิธีการดึงข้อมูล และความสดใหม่ของความจำ ช่วยให้พวกเขาสามารถตัดสินใจได้ว่าคำแนะนำที่ขับเคลื่อนด้วย AI นั้นน่าเชื่อถือหรือไม่ ก่อนที่จะนำไปใช้ในระบบจริง (production)
