CCA · Foundations

เลือก built-in tool: Grep, Glob, Read, Write, Edit

แนวคิด

built-in tool ชุดหลักที่ agent ใช้ทำงานกับโค้ดเบสมี Read, Write, Edit, Bash, Grep, และ Glob แต่ละตัวมีงานที่ถนัดต่างกัน การเลือกตัวให้ตรงงานคือทักษะพื้นฐานที่ exam guide ทดสอบ

Grep ใช้ค้น "เนื้อหา" ในไฟล์ เช่น ชื่อฟังก์ชัน ข้อความ error หรือ import statement เมื่อเราต้องหาว่าอะไรอยู่ในไฟล์ Glob ใช้ค้น "ชื่อไฟล์" ตามแพตเทิร์น เช่น หาไฟล์ทั้งหมดที่ลงท้ายด้วยนามสกุลหนึ่ง อย่าง **/*.test.tsx แยกกันชัด Grep หาในเนื้อ Glob หาตามชื่อ Read กับ Write ใช้กับไฟล์ทั้งไฟล์ อ่านเต็มไฟล์ หรือเขียนทับทั้งไฟล์ ส่วน Edit ใช้แก้เฉพาะจุดด้วยการจับคู่ข้อความที่ไม่ซ้ำ (unique text matching)

ทำไมสำคัญ

จุดที่ต้องรู้คือกรณีที่ Edit ล้มเหลว Edit ทำงานได้ก็ต่อเมื่อข้อความที่ให้จับคู่ปรากฏเพียงครั้งเดียวในไฟล์ ถ้าข้อความนั้นซ้ำหลายที่ Edit จะไม่รู้ว่าจะแก้ตัวไหนจึงล้มเหลว ทางกู้ที่เชื่อถือได้คือใช้ Read เพื่ออ่านเนื้อไฟล์ทั้งหมด แล้วใช้ Write เขียนไฟล์เวอร์ชันที่แก้แล้วกลับไป Read บวก Write จึงเป็น fallback เมื่อ Edit หา anchor ที่ไม่ซ้ำไม่ได้

อีกทักษะคือการสร้างความเข้าใจโค้ดเบสแบบค่อยเป็นค่อยไป แทนที่จะอ่านทุกไฟล์ตั้งแต่แรก ซึ่งเปลืองบริบท ให้เริ่มจาก Grep เพื่อหาจุดเริ่ม เช่น entry point หรือจุดที่ error ปรากฏ แล้วใช้ Read ตามรอย import ไล่ไปตาม flow ทีละขั้น วิธีนี้โหลดเฉพาะสิ่งที่เกี่ยวข้องเข้าบริบท ไม่ใช่ทั้งโปรเจกต์ และเมื่อต้องไล่การใช้งานฟังก์ชันข้าม wrapper module ให้หา exported name ทั้งหมดก่อน แล้วค้นแต่ละชื่อทั่วโค้ดเบส

เชื่อมกับบทเรื่อง MCP เมื่อ MCP server ให้ tool ที่ทำงานได้ดีกว่า built-in เช่นค้นเฉพาะทางในระบบภายนอก การเสริมคำอธิบาย MCP tool ให้ละเอียด ช่วยกันไม่ให้ agent เผลอเลือก Grep แทน MCP tool ที่เหมาะกว่า การเลือก tool ที่ถูก จึงเป็นทั้งเรื่องรู้จัก built-in และเรื่องเขียน description ให้ตัวที่ดีกว่าถูกเลือก

ตัวอย่าง

หา caller ของฟังก์ชัน / ข้อความ error   -> Grep (ค้นเนื้อหา)
หาไฟล์ตามชื่อ เช่น **/*.test.tsx        -> Glob (ค้นชื่อไฟล์)
อ่านเต็มไฟล์ / เขียนทับทั้งไฟล์          -> Read / Write
แก้เฉพาะจุดด้วยข้อความที่ไม่ซ้ำ          -> Edit
Edit ล้มเพราะข้อความซ้ำหลายที่          -> Read + Write (fallback)

# เข้าใจโค้ดแบบค่อยเป็นค่อยไป:
Grep หา entry point -> Read ตามรอย import -> ไล่ flow ทีละขั้น
(ไม่อ่านทุกไฟล์ตั้งแต่แรก)

เช็คความเข้าใจ

Grep, Glob, และ Edit ใช้ต่างกันอย่างไร และทำอย่างไรเมื่อ Edit ล้มเหลว

สร้างความเข้าใจโค้ดเบสแบบค่อยเป็นค่อยไปทำอย่างไร

อ่านต่อ