
by safishamsi

ตัวนี้คือ graphify เครื่องมือที่เอาไว้พิมพ์ /graphify ใน AI coding assistant แล้วมันจะสแกน codebase ทั้งโปรเจกต์แล้วแปลงออกมาเป็น knowledge graph ให้เห็นภาพรวมได้ทันที แทนที่จะต้องไล่อ่านไฟล์ทีละไฟล์ มันจะดึงความสัมพันธ์ระหว่าง module, function, class และ file ออกมาให้หมด แล้วนำเสนอในรูปแบบที่ AI assistant อ่านเข้าใจได้ง่าย เรียกง่ายๆ ว่ามันทำให้ AI รู้จักโปรเจกต์เราเร็วขึ้นมากโดยไม่ต้องอธิบายให้มันฟังเอง
จุดเด่นหลักคือมันทำงานแค่คำสั่งเดียว ไม่ต้องเซ็ตค่าอะไรเยอะ พิมพ์ /graphify ปุ๊บได้ผลเลย นอกจากนั้นมันยังแมป dependency ระหว่างไฟล์ได้ด้วยว่าใครเรียกใคร ใครขึ้นอยู่กับอะไร รองรับหลายภาษาโปรแกรมมิ่ง ไม่ได้จำกัดอยู่แค่ภาษาใดภาษาหนึ่ง ตัว graph ที่ได้ออกมาก็ถูก structure มาให้เหมาะกับการ inject เข้าไปใน context ของ AI โดยตรง ทำให้ AI เข้าใจ architecture ทั้งหมดได้ในครั้งเดียว
ความสามารถเพิ่มเติมที่น่าสนใจคือมันสามารถ highlight ได้ว่า node ไหนใน graph คือจุดที่ถูกเรียกใช้มากที่สุด หรือ node ไหนที่เป็น bottleneck ของระบบ บางเวอร์ชันยังรองรับการ filter ได้ว่าอยากดูเฉพาะส่วนไหนของโปรเจกต์ เช่น เฉพาะ API layer หรือเฉพาะ database layer ทำให้ไม่ต้อง load graph ทั้งหมดเข้า context เมื่อต้องการดูแค่บางส่วน และยังช่วยตรวจจับ circular dependency ได้ด้วยในตัว
ด้านเทคโนโลยี ตัว parser ที่ใช้สแกน source code นั้นอิงกับ AST (Abstract Syntax Tree) เพื่อให้อ่านโครงสร้างโค้ดได้แม่นยำกว่าการ grep ธรรมดา ตัว graph structure ข้างในเป็น directed graph ที่เก็บ node เป็น entity ต่างๆ และ edge เป็น relationship ระหว่างกัน output ที่ได้ถูก serialize ออกมาในรูปแบบที่อ่านง่าย อาจเป็น JSON หรือ Markdown ขึ้นอยู่กับ target assistant ที่ใช้งาน ทั้งหมดนี้ถูก package เป็น plugin ที่ติดตั้งได้ตรงๆ ใน AI coding assistant ที่รองรับ slash command
เหมาะมากสำหรับนักพัฒนาที่ต้องเข้าไปแก้ codebase เก่าที่ไม่เคยรู้จักมาก่อน เพราะแทนที่จะต้องใช้เวลาเป็นชั่วโมงไล่ทำความเข้าใจว่าโปรเจกต์มี structure แบบไหน กด /graphify เดียวก็เห็นภาพรวมได้เลย ทีมที่ onboard developer ใหม่ก็ได้ประโยชน์มาก เพราะ junior dev สามารถใช้ AI + graph เพื่อถามคำถามเกี่ยวกับโค้ดได้อย่างมีบริบท ใช้ดีในสถานการณ์ที่ต้อง refactor โค้ดขนาดใหญ่ด้วย เพราะมองเห็นได้ว่าถ้าแก้จุดนี้จะกระทบอะไรบ้าง นักพัฒนา solo ที่กลับมาแก้โปรเจกต์เก่าหลังจากทิ้งไปนานก็ใช้ดีมากเช่นกัน
ข้อดีเมื่อเทียบกับวิธีเก่าๆ อย่าง manual documentation หรือ diagram tool อย่าง draw.io คือ graphify generate ให้อัตโนมัติและ always up-to-date ไม่ต้องมาคอย update diagram ทุกครั้งที่โค้ดเปลี่ยน เทียบกับการ paste โค้ดทีละไฟล์ให้ AI ดูก็ชนะขาด เพราะมัน capture relationship ระหว่างไฟล์ได้ด้วย ต่างจาก tool อย่าง ctags หรือ code indexer อื่นๆ ตรงที่มันออกแบบมาให้ AI อ่านโดยเฉพาะ ไม่ใช่ให้คนอ่าน
ข้อจำกัดที่ควรรู้คือ project ขนาดใหญ่มากๆ อาจทำให้ graph มี node เยอะจนล้น context window ของ AI ได้ถ้าไม่ใช้ filter ช่วย ความแม่นยำของ graph ขึ้นอยู่กับ parser ที่รองรับภาษานั้นๆ ด้วย บางภาษาที่ dynamic มากอย่าง Python อาจ trace dependency บางอย่างได้ไม่ครบ และเนื่องจากเป็น tool ที่ค่อนข้างใหม่ ecosystem รอบๆ ยังไม่ mature เท่าไหร่ อาจเจอ edge case บ้างใน project ที่มี structure แปลกๆ
สรุปแล้ว ลองใช้ดูเลยถ้าคุณต้องทำงานกับ codebase ที่ไม่คุ้นเคยบ่อยๆ หรือทำงานกับ AI coding assistant เป็นหลักอยู่แล้ว เพราะมันช่วยประหยัดเวลา onboard ได้จริง ถ้าเคยรู้สึกหงุดหน่ายที่ต้องอธิบาย context ซ้ำๆ ให้ AI ทุกครั้ง นี่แหละคือ tool ที่ตอบโจทย์นั้นโดยตรง เอาไปลองกับ project เก่าสักอันที่รู้สึกว่า "ไม่กล้าแตะเพราะไม่รู้ว่ามันทำงานยังไง" แล้วจะเห็นเลยว่ามัน useful แค่ไหน