CCA · Foundations

Plan mode vs direct execution: เลือกเมื่อไร

แนวคิด

plan mode สั่งให้ Claude สำรวจและเสนอแผนโดยยังไม่ลงมือแก้ มันอ่านไฟล์ รันคำสั่งเพื่อสำรวจ และเขียนแผนออกมา แต่จะไม่แก้ source code ของเรา เข้าโหมดนี้ได้ด้วยการกด Shift+Tab วนโหมด หรือ prefix prompt ด้วย /plan หรือเริ่มจาก CLI ด้วย claude --permission-mode plan เมื่อแผนพร้อม Claude จะเสนอให้อนุมัติ พออนุมัติแล้วจึงออกจาก plan mode และสลับไปโหมดที่แก้ไขได้เพื่อลงมือจริง

plan mode ออกแบบมาสำหรับงานซับซ้อน คืองานที่มีการเปลี่ยนแปลงขนาดใหญ่ มีหลายแนวทางที่ถูกต้องได้ มีการตัดสินใจเชิงสถาปัตยกรรม และแตะหลายไฟล์ ส่วน direct execution เหมาะกับงานที่ scope ชัดและเล็ก เช่น เพิ่ม validation check เดียวในฟังก์ชันเดียว แก้ typo เพิ่มบรรทัด log หรือ rename ตัวแปร

ทำไมสำคัญ

หลักคิดที่เอกสารสรุปไว้คมมากคือ ถ้าอธิบาย diff ได้ในประโยคเดียว ให้ข้าม plan ไปเลย เพราะ plan mode มีประโยชน์แต่ก็เพิ่ม overhead มันคุ้มเมื่อเราไม่แน่ใจในแนวทาง เมื่อการเปลี่ยนแปลงแตะหลายไฟล์ หรือเมื่อเราไม่คุ้นกับโค้ดที่กำลังแก้ ประโยชน์คือมันแยกการสำรวจและออกแบบออกจากการลงมือ ป้องกันการเขียนโค้ดที่แก้ผิดปัญหาแล้วต้องรื้อทำใหม่ ซึ่งแพงกว่ามาก

พิจารณาโจทย์ที่ exam guide ยก คือได้รับมอบหมายให้ปรับ monolith เป็น microservices งานนี้แตะไฟล์นับสิบ และต้องตัดสินใจเรื่อง service boundary กับ module dependency ทางเลือกที่ถูกคือเข้า plan mode เพื่อสำรวจ codebase เข้าใจ dependency และออกแบบแนวทางก่อนลงมือ เพราะนี่คืองานที่มีทั้งขนาดใหญ่ หลายแนวทาง และการตัดสินใจเชิงสถาปัตยกรรมครบ การเริ่ม direct execution แล้วค่อยเปลี่ยนเป็น plan เมื่อเจอความซับซ้อน เป็นการเพิกเฉยว่าความซับซ้อนถูกระบุไว้ในโจทย์ตั้งแต่ต้นแล้ว ไม่ใช่สิ่งที่อาจโผล่มาทีหลัง

กลับกัน ถ้าโจทย์คือแก้บั๊กไฟล์เดียวที่มี stack trace ชัด หรือเพิ่มเงื่อนไข validate วันที่ การ plan จะเป็น overhead เปล่า ลงมือตรงเร็วกว่า

ตัวอย่าง

ลองสลับเงื่อนไขด้านล่างเพื่อดูว่าเมื่อไรควร plan เมื่อไรควร direct งานเชิงสถาปัตยกรรม หรืองานหลายไฟล์ที่มีหลายแนวทาง จะเอนไปทาง plan ส่วนงานไฟล์เดียวที่ scope ชัด จะเอนไปทาง direct

recommendation: direct

งานไฟล์เดียว ขอบเขตชัด ไม่กำกวม — เขียน plan ไปก็เปลืองเปล่า แก้ตรง ๆ ได้เลย

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

ได้รับมอบหมายให้ปรับ monolith เป็น microservices ที่แตะไฟล์นับสิบและต้องตัดสิน service boundary ควรใช้โหมดใด และทำไม

หลักคิดง่าย ๆ ที่ช่วยตัดสินว่าควรข้าม plan คืออะไร

อ่านต่อ