สิ่งที่น่าสนใจจากการแบ่งปันเรื่อง AI Agent for coding with Claude code

หลังจากที่มีโอกาสได้แบ่งปันความรู้เรื่อง AI Agent for coding with Claude code มานั้น
มีคำถามที่น่าสนใจเกี่ยวกับการควบคุมการทำงานของ AI Agent ให้เป็นไปตามที่ต้องการ
ยกตัวอย่างเช่น
- ในการพัฒนานั้นจะต้องเขียน spec ก่อนเสมอ ถ้าไม่เขียนก็สร้างขึ้นมาให้ หรือ ถ้ามี specification แล้วก็ให้ทำการตรวจสอบ
- สถาปัตยกรรมและโครงสร้างของระบบงานที่เป็นมิตรกับ AI และ คน (AI-friendly)
จึงทำการแบ่งปันในมุมมองที่ใช้งานดังนี้
โดยปกติมักจะทำการวางแผนและออกแบบเองก่อน
เพื่อช่วยให้เราเข้าใจภาพรวมของระบบงานก่อน
จากนั้นทำการแบ่งเป็นงานย่อย ๆ
ตั้งแต่ละ feature -> architecture (frontend/backend/database/service) -> user flow/story -> task
จากนั้นจึงทำการเขียน specification ตามกลุ่มงาน หรือ level ที่ต้องการ
มันคือ single source of truth ของระบบนั่นเอง
สิ่งที่ควรให้ความสนใจคือ รูปแบบของ specification ที่เป็นมาตรฐานของทีม
จากนั้นควรมีการตรวจสอบก่อนลงมือทำงานเสมอ
จากไม่ครบตามรูปแบบที่กำหนด ต้องหยุดทำงาน และอธิบายสิ่งที่ขาดหายไป
หรือทำการสร้าง specification จากความต้องการได้เลย และ คนทำการ review อีกครั้ง (AI draft, Human craft)
โดยเราสามารถจัดการได้หลายแบบ เช่น
- Agent skills ทำงานแบบ non-deterministic
- Hooks ทำงานแบบ deterministic
ตัวอย่างของ Specification template ประกอบไปด้วย
- ชื่อ และ เป้าหมาย
- Input และ output
- Acceptance criteria ต่าง ๆ
ตัวอย่างเช่น Hooks ขั้นตอน preToolUse
จะทำการ run script ภาษา Python เพื่อตรวจสอบรูปแบบของ specification
ตัวอย่างของ Agent skills เพื่อใช้อธิบายการตรวจสอบ specification
โดยก่อนที่จะทำการอ่านเขียนไฟล์ และ execute bash ต่าง ๆ
จะต้องทำการ run Pre-Tool Hook ก่อนเสมอ
ถ้าผลการทำงานไม่ถูกต้อง จะหยุดการทำงานทันที !!
ตัวอย่างของ response จากทาง AI Agent เมื่อพบว่า specification ไม่เป็นไปตามรูปแบบที่กำหนด
ต่อมาเรื่องของโครงสร้างของ code ในระบบงาน
มักจะแนะนำให้เริ่มจาก modular monolith ก่อน
นั่นคือแบ่งส่วนการทำงานเป็น module ให้ดีก่อน
แนะนำให้ใช้โครงสร้างแบบ Feature-based และ DDD (Domain-Driven-Design)
เพื่อจัดกลุ่มของ code ต่าง ๆ ไม่ให้กระจัดกระจาย
และง่ายต่อการเขียนเอกสาร ความสัมพันธ์ต่าง ๆ ให้ทั้งคนและ AI Agent เข้าใจ
แต่ถ้าไม่ได้จัดการแต่แรก และเอามาให้ AI Agent อ่านและทำความเข้าใจกับระบบงาน
ผลที่ตามมาคือ ทำได้ แต่เปลือง token มาก ๆ
จากนั้นเอาผลโครงสร้างของ code ในระบบมาแผนที่นำทางคน และ AI Agent ทำงานต่อไป
แต่จะดีกว่าไหมถ้าแบ่งให้ดี และ บันทึกไว้ตั้งแต่ต้น !!
หรือจะแยกไปเป็น service ใหม่ ๆ หรือ Microservices ก็ได้
แต่เรามีแผนที่นำทาง หรือ อธิบายความสัมพันธ์ของแต่ละ module และ service หรือไม่ ?
ถ้าไม่มี ก็ลงมือทำซะ !!
เช่นเดียวกันกับการตรวจสอบ specification ให้ทำการสร้าง Hooks
เพื่อบังคับให้อ่านจากเอกสาร หรือ แผนที่ของระบบที่สร้างไว้ก่อนเสมอ
ยังไม่เรื่องอื่น ๆ อีกที่น่าสนใจ
เช่นการตรวจสอบผลการทำงานว่าสิ่งที่ได้ตรงตามความต้องการหรือไม่ ?
Article by Somkiat Puisungnoen
To be Craftmanship