ใช้เวิร์กโฟลว์ Prompt-to-PR กับ Claude Code ในเครื่อง: เขียน prompt เล็ก ๆ ส่ง diffs เล็ก ๆ รันการตรวจสอบ แล้ว re-prompt เมื่อล้ม จนได้ PR พร้อม merge.

prompt ใหญ่ในครั้งเดียวมักนำไปสู่การเปลี่ยนแปลงครั้งใหญ่และรกรุงรัง: แตะไฟล์หลายสิบไฟล์, รีแฟกเตอร์ที่ไม่เกี่ยวข้อง และโค้ดที่คุณยังไม่มีเวลาเข้าใจ แม้ผลลัพธ์จะถูกตามหลัก แต่การรีวิวรู้สึกเสี่ยงเพราะยากจะบอกว่าอะไรเปลี่ยนและทำไม
การเปลี่ยนแปลงขนาดเล็กแก้ปัญหานั้น เมื่อแต่ละการเปลี่ยนจำกัดและมุ่งเป้า คุณสามารถอ่านได้ภายในไม่กี่นาที พบข้อผิดพลาดเร็ว และหลีกเลี่ยงการทำให้สิ่งที่ไม่ตั้งใจแตะพัง ผู้รีวิวไว้วางใจ PR เล็ก ๆ มากกว่า ทำให้การ merge เกิดขึ้นเร็วขึ้นและมีคอมเมนต์น้อยลง
Prompt-to-PR เป็นลูปง่าย ๆ:
จังหวะนี้เปลี่ยนความล้มเหลวเป็น feedback ที่เร็ว แทนที่จะเป็นเซอร์ไพรซ์ตอนท้าย ถ้าคุณขอให้ Claude Code ปรับกฎการตรวจสอบ ให้จำกัดแค่กฎนั้น หากเทสต์ล้ม ให้แปะเอาต์พุตที่ล้มและขอการแก้ไขเล็กที่สุดที่จะทำให้เทสต์ผ่าน ไม่ใช่การเขียนโมดูลใหม่ทั้งอัน
สิ่งหนึ่งที่ไม่เปลี่ยน: คุณยังคงรับผิดชอบต่อโค้ดสุดท้าย จงปฏิบัติต่อโมเดลเหมือนคู่เขียนโค้ดท้องถิ่นที่พิมพ์เร็ว ไม่ใช่ระบบขับเคลื่อนอัตโนมัติ คุณเป็นคนตัดสินใจว่าจะใส่อะไรไว้ จะเก็บอะไรไว้ และเมื่อใดปลอดภัยที่จะเปิด PR
เริ่มจากสถานะฐานที่สะอาด หากสาขาของคุณตามหลังหรือเทสต์ล้มอยู่แล้ว ทุกคำแนะนำจะกลายเป็นการเดา ดึงการเปลี่ยนล่าสุด รีเบสหรือรวมตามที่ทีมของคุณชอบ และตรวจสอบให้แน่ใจว่าสถานะปัจจุบันสมบูรณ์ก่อนจะขออะไร
การตั้งค่า “คู่เขียนโค้ดท้องถิ่น” หมายความว่า Claude Code แก้ไฟล์ในรีโปของคุณในขณะที่คุณควบคุมเป้าหมาย ขอบเขต และทุก diff โมเดลไม่รู้จักโค้ดของคุณจนกว่าคุณจะโชว์ ดังนั้นต้องระบุไฟล์ ข้อจำกัด และพฤติกรรมที่คาดหวังให้ชัด
ก่อน prompt แรก ให้ตัดสินใจว่าการตรวจสอบจะรันตรงไหน หากคุณรันเทสต์ได้ท้องถิ่น คุณจะได้ feedback ในไม่กี่นาที ซึ่งช่วยให้การวนรอบเล็ก ๆ ต่อเนื่อง หากการตรวจสอบบางอย่างรันได้เฉพาะใน CI (กฎ lint บางอย่าง, ชุดทดสอบยาว, ขั้นตอน build) ให้ตกลงก่อนว่าเมื่อใดจะพึ่ง CI เพื่อไม่ต้องรอหลังทุกการเปลี่ยนเล็ก ๆ
เช็คลิสต์ก่อนบินแบบง่าย ๆ:
เปิดบันทึกจดเล็ก ๆ ขณะทำงาน จดข้อจำกัดเช่น "ไม่เปลี่ยน API," "คงพฤติกรรม backward compatible," "แตะเฉพาะโมดูล X," รวมทั้งการตัดสินใจที่ทำ เมื่อเทสต์ล้ม ให้แปะข้อความผิดพลาดตรงนั้นด้วย บันทึกนี้จะเป็นอินพุตที่ดีที่สุดสำหรับ prompt ถัดไปและช่วยหยุดการทำงานให้เลื่อนไหล
diff เล็ก ๆ เริ่มจาก prompt ที่แคบโดยเจตนา เส้นทางที่เร็วที่สุดสู่โค้ดที่ merge ได้คือการเปลี่ยนหนึ่งอย่างที่คุณรีวิวได้ในหนึ่งนาที ไม่ใช่รีแฟกเตอร์ที่ต้องเข้าใจเป็นชั่วโมง
prompt ที่ดีต้องระบุเป้าหมายหนึ่งจุด พื้นที่ของโค้ดหนึ่งที่ชัดเจน และผลลัพธ์ที่คาดหวังหนึ่งอย่าง หากคุณชี้ไม่ได้ว่าจะให้เปลี่ยนที่ไหน (ไฟล์, โฟลเดอร์, หรือโมดูล) โมเดลจะเดาและ diff จะกระจาย
โครง prompt ที่ช่วยให้การเปลี่ยนจำกัด:\n\n- Goal: พฤติกรรมเดียวที่ต้องการเปลี่ยน.\n- Location: ไฟล์(หรือคอมโพเนนต์) ที่ให้แตะ.\n- Constraints: สิ่งที่ห้ามเปลี่ยน.\n- Acceptance: จะถือว่า "เสร็จ" อย่างไร.\n- Diff size: ขอการเปลี่ยนที่เล็กที่สุดที่ทำงานได้.
ขอบเขตเป็นอาวุธลับ แทนที่จะพูดว่า "แก้บั๊กล็อกอิน" ให้ระบุสิ่งที่ต้องคงไว้: "อย่าเปลี่ยน API shape," "อย่าเปลี่ยนชื่อฟังก์ชันสาธารณะ," "ไม่แก้แต่ฟอร์แมตอย่างเดียว," "หลีกเลี่ยง dependency ใหม่." นั่นบอกคู่เขียนโค้ดว่าห้ามฉลาดเกินไปตรงไหน
เมื่อการเปลี่ยนยังไม่ชัด ให้ขอแผนก่อนเขียนโค้ด แผนสั้น ๆ บังคับให้งานเป็นขั้นตอนและให้คุณมีโอกาสอนุมัติการเคลื่อนไหวเล็ก ๆ แรก
Goal: Fix the null crash when rendering the profile header.
Location: src/components/ProfileHeader.tsx only.
Constraints: Do not change styling, props, or any exported types.
Expected outcome: If user.name is missing, show "Anonymous" and no crash.
Diff constraint: Minimal diff. No refactors. No unrelated formatting.
If unclear: First reply with a 3-step plan, then wait for approval.
ถ้าคุณทำงานเป็นทีม ให้เพิ่มข้อจำกัดการรีวิวด้วยเช่นกัน: "เก็บให้ไม่เกิน ~30 บรรทัดที่แก้" หรือ "ไฟล์เดียวเท่านั้น เว้นแต่จำเป็นจริง ๆ." มันทำให้ diff อ่านง่ายขึ้นและช่วยให้ prompt ถัดไปชัดขึ้นเมื่อมีสิ่งผิดพลาด
รักษาแต่ละลูปให้อยู่ที่การเปลี่ยนแปลงเล็ก ๆ ที่ทดสอบได้ หากคุณสามารถอธิบายเป้าหมายในประโยคเดียวและคาดเดาไฟล์ที่จะเปลี่ยนได้ งานนั้นมีขนาดเหมาะสม
หน่วยงานของงานที่ดีรวมถึง: แก้บั๊กเส้นทางเดียว (พร้อม repro และ guard), ปรับเทสต์เดียวสำหรับพฤติกรรมหนึ่งอย่าง, รีแฟกเตอร์ที่ไม่เปลี่ยนพฤติกรรม (rename, extract function, remove duplication), หรือปรับปรุงข้อความข้อผิดพลาด/กฎ validation หนึ่งอย่าง
จำกัดเวลาแต่ละลูป สิบถึงยี่สิบนาทีโดยทั่วไปเพียงพอเพื่อเขียน prompt ชัดเจน, ประยุกต์ diff, และรันการตรวจสอบด่วน หากยังสำรวจต่อหลัง 20 นาที ให้ย่อหน่วยงานหรือเปลี่ยนเป็นการสำรวจเท่านั้น (จดบันทึก, logging, เทสต์ที่ล้ม) แล้วหยุด
กำหนดคำว่า "เสร็จ" ก่อนเริ่ม:\n\n- การเปลี่ยนอยู่ในไฟล์และพฤติกรรมที่ตั้งใจ.\n- การตรวจสอบหนึ่งอย่างยืนยันว่ามันทำงาน (เทสต์, lint, หรือรันง่าย ๆ).\n- ไม่มีคำเตือนใหม่หรือการเปลี่ยนฟอร์แมตที่มากเกินไป.\n- diff อธิบายได้ง่ายในสองประโยค.
เมื่อขอบเขตเริ่มขยาย ให้หยุดก่อน หากคุณเริ่มพูดว่า "ในเมื่ออยู่ตรงนี้..." คุณเพิ่งพบงานถัดไป บันทึกไว้เป็นสิ่งที่จะทำรอบต่อไป commit diff เล็กปัจจุบัน แล้วไปต่อ
ก่อนจะรันเทสต์หรือ build ให้อ่านข้อความ diff เหมือนผู้รีวิว นี่แหละที่จะกำหนดว่าเวิร์กโฟลว์ยังคงสะอาดหรือค่อย ๆ ลื่นไปสู่ "ทำไมมันถึงแตะไฟล์นั้น?"
เริ่มจากขอให้ Claude Code สรุปสิ่งที่มันเปลี่ยนเป็นภาษาง่าย ๆ: ไฟล์ที่แตะ, พฤติกรรมที่เปลี่ยน, และสิ่งที่มันไม่ได้เปลี่ยน หากมันอธิบายการเปลี่ยนไม่ชัดเจน แปลว่า diff น่าจะทำเกินไป
จากนั้นอ่านด้วยตัวเอง เลื่อนสายตามองหาขอบเขตแล้วอ่านเจตนา คุณกำลังมองหาการลื่นไหล: การเปลี่ยนฟอร์แมตที่ไม่เกี่ยวข้อง, รีแฟกเตอร์เสริม, การเปลี่ยนชื่อสัญลักษณ์, หรือการเปลี่ยนที่ไม่ได้ถูกขอ
เช็คลิสต์ด่วน:\n\n- ไฟล์ที่เปลี่ยนตรงกับที่คุณขอไหม?\n- มีการแก้แบบ drive-by ไหม (whitespace, refactor ไม่เกี่ยว)?\n- แนะนำพฤติกรรมใหม่ที่คุณไม่ได้ขอไหม?\n- เพิ่ม dependency หรือการตั้งค่าใหม่ที่ต้องเหตุผลจริงไหม?\n- ผู้รีวิวเข้าใจสิ่งนี้โดยไม่ต้องอ่านไฟล์อื่นห้าชิ้นไหม?
ถ้า diff ใหญ่กว่าคาด อย่าพยายามทดสอบเพื่อออกจากมัน ย้อนกลับและ re-prompt ขอขั้นตอนเล็กกว่า เช่น: "เพิ่มเทสต์ที่ล้มเพื่อจำลองบั๊กเท่านั้น. ไม่มีรีแฟกเตอร์." diffs เล็กทำให้การตีความความล้มเหลวง่ายขึ้นและทำให้ prompt ถัดไปเฉพาะเจาะจง
diff เล็กจะคุ้มค่าได้ก็ต่อเมื่อคุณยืนยันทันที เป้าหมายคือลูปกระชับ: เปลี่ยนนิด เช็กหน่อย พบข้อผิดพลาดขณะที่บริบทยังสด
เริ่มจากการตรวจสอบที่เร็วที่สุดซึ่งบอกได้ว่า "สิ่งนี้พัง" หากคุณเปลี่ยนฟอร์แมตหรือ imports ให้รัน lint/format ก่อน หากแตะ business logic ให้รัน unit tests ที่เจาะจงไฟล์หรือแพ็กเกจนั้น หากแก้ types หรือ config ให้คอมไพล์เร็ว ๆ
ลำดับปฏิบัติได้จริง:\n\n- Lint หรือ format.\n- Unit tests เจาะจงสำหรับพื้นที่ที่เปลี่ยน.\n- Build หรือ typecheck เพื่อยืนยันทุกอย่างยังเข้ากันได้.\n- ชุดทดสอบช้ากว่า (integration, end-to-end) หลังจากพื้นฐานผ่าน.
เมื่อมีอย่างใดล้ม ให้เก็บสองอย่างก่อนแก้: คำสั่งที่คุณรันแบบเป๊ะและเอาต์พุตข้อผิดพลาดเต็ม (คัดลอกแบบตรง ๆ) บันทึกนี้ช่วยให้ prompt ถัดไปเฉพาะเจาะจงและป้องกันลูป "มันยังล้ม" ที่วนซ้ำ
รักษาขอบเขตแคบ หาก lint ล้มและเทสต์ล้ม ให้แก้ lint ก่อน แล้วรันใหม่ จากนั้นจัดการเทสต์ อย่ารวม "ทำความสะอาดด่วน" กับการแก้บั๊กในรอบเดียว
เมื่อการตรวจสอบล้ม ให้ใช้เอาต์พุตของความล้มเป็น prompt ถัดไป ลูปที่เร็วที่สุดคือ: แปะข้อผิดพลาด, ขอการวินิจฉัย, ประยุกต์แพตช์เล็ก ๆ, รันใหม่
แปะความล้มแบบคำต่อคำ รวมคำสั่งและ stack trace ขอหาสาเหตุที่เป็นไปได้ที่สุดก่อน ไม่ใช่เมนูตัวเลือก Claude Code ทำงานได้ดีกว่าเมื่อจับคู่กับเลขบรรทัดและข้อความมากกว่าการเดา
เพิ่มประโยคสั้น ๆ ว่าคุณลองอะไรไปแล้วเพื่อไม่ให้มันส่งคุณวนซ้ำ (เช่น "ฉันทดสอบการ X แล้วแต่ยังล้ม") ย้ำข้อจำกัดที่สำคัญ ("อย่าเปลี่ยน public APIs," "คงพฤติกรรมเดิม แก้แค่ crash") แล้วขอแพตช์เล็กที่สุดที่จะทำให้การตรวจสอบผ่าน
prompt ความล้มที่ดีรวม:\n\n- เอาต์พุตที่ล้มแบบเป๊ะ (คำต่อคำ).\n- ไฟล์และบรรทัดที่เกี่ยวข้อง.\n- สิ่งที่คุณเปลี่ยนใน diff ล่าสุด.\n- สิ่งที่ลองแล้ว.\n- คำขอแพตช์เล็กที่สุดที่ทำให้ผ่าน.
ถ้าแพตช์ที่เสนอเปลี่ยนพฤติกรรม ให้ขอเทสต์ที่พิสูจน์ว่าพฤติกรรมใหม่นั้นถูกต้อง หาก handler ตอนนี้ส่ง 400 แทน 500 ให้ขอเทสต์หนึ่งตัวที่ล้มบนโค้ดเก่าและผ่านบนโค้ดแก้ไข วิธีนี้ช่วยให้งานซื่อสัตย์และทำให้ PR น่าเชื่อถือ
หยุดเมื่อการตรวจสอบผ่านและ diff ยังดูเป็นไอเดียเดียว หากโมเดลเริ่มปรับปรุงโค้ดที่ไม่เกี่ยวกับเรื่อง ให้ re-prompt ว่า: "แก้เฉพาะเทสต์ที่ล้มเท่านั้น. ไม่มีการทำความสะอาด."
PR จะ merge ได้เร็วเมื่อตรรกะของการเปลี่ยนชัดเจน: อะไรเปลี่ยน ทำไมเปลี่ยน และตรวจสอบอย่างไร ในเวิร์กโฟลว์นี้ PR ควรอ่านเหมือนเรื่องสั้นสั้น ๆ: ก้าวเล็ก ๆ, เหตุผลชัด
เก็บ commit ให้สอดคล้องกับการวนรอบ หากคุณขอการเปลี่ยนพฤติกรรมหนึ่ง ให้ทำเป็น commit เดียว หากคุณแก้เทสต์ที่ล้ม ให้เป็น commit ถัดไป ผู้รีวิวจะตามเส้นทางและไว้วางใจว่าคุณไม่ได้แอบใส่การเปลี่ยนอื่น
เขียน commit message เพื่อสื่อเจตนา ไม่ใช่ชื่อไฟล์ "แก้ redirect เมื่อ session หมด" ดีกว่า "อัปเดต auth middleware" เมื่อข้อความระบุผลลัพธ์ผู้ใช้ ผู้รีวิวจะเสียเวลาน้อยลงในการคาดเดา
หลีกเลี่ยงการผสมรีแฟกเตอร์กับการเปลี่ยนพฤติกรรมใน commit เดียว ถ้าต้องการเปลี่ยนชื่อหรือลาก helper ให้แยกเป็นอีก PR หรือเลื่อนออกไป เสียงรบกวนชะลอการรีวิว
ในคำอธิบาย PR ให้สั้นและเป็นรูปธรรม:\n\n- อะไรเปลี่ยน (1-2 ประโยค).\n- ทำไมเปลี่ยน (บั๊กหรือความต้องการ).\n- วิธีทดสอบ (ขั้นตอนชัดเจน รวมถึง flag หรือข้อมูลที่ต้องใช้).\n- สิ่งที่คุณไม่ได้เปลี่ยน (ตั้งความคาดหวัง).\n- ความเสี่ยงหรือหมายเหตุการย้อนกลับ.
ตัวอย่าง: หน้า billing crash เพราะ customer record เป็น null. Commit 1 เพิ่ม guard และสถานะแสดงข้อผิดพลาดชัดเจน. Commit 2 เพิ่มเทสต์สำหรับเคส null. คำอธิบาย PR ระบุ: "เปิด Billing, โหลดลูกค้าที่ไม่มีโปรไฟล์, ยืนยันว่าเพจแสดงสถานะว่างใหม่." นี่คือ PR ที่ผู้รีวิวอนุมัติได้เร็ว
จังหวะนี้พังเมื่อขอบเขตขยายเงียบ ๆ prompt ที่เริ่มต้นว่า "แก้เทสต์ที่ล้ม" กลายเป็น "ปรับปรุง error handling ทั่วโมดูล" และทันใดนั้นคุณต้องรีวิว diff ใหญ่ที่เจตนาไม่ชัด ให้รักษาแค่มุ่งเป้า: เป้าหมายเดียว ชุดการเปลี่ยนเดียว ชุดการตรวจสอบเดียว
ความช้าที่อีกอย่างคือการยอมรับรีแฟกเตอร์ที่ดูสวยแค่เพราะมันสวย การเปลี่ยนชื่อ ย้ายไฟล์ และการเปลี่ยนสไตล์สร้างเสียงรบกวนในการรีวิวและทำให้สังเกตการเปลี่ยนพฤติกรรมได้ยากขึ้น
กับดักทั่วไป:\n\n- ให้โมเดลแตะไฟล์ที่ไม่เกี่ยว "เพราะอยู่ตรงนี้".\n- แก้อาการ (เช่นเพิ่ม null checks หนาแน่น) แทนสาเหตุที่เทสต์ชี้.\n- แปะเฉพาะท้ายของ logs และซ่อน error แรก.\n- ข้ามการสแกน diff ด่วนก่อนรันการตรวจสอบ.\n- Re-prompt ด้วย "มันยังล้ม" โดยไม่มีคำสั่งและเอาต์พุตเฉพาะ.
ตัวอย่างชัดเจน: เทสต์ล้มด้วย "expected 400, got 500." ถ้าคุณแปะแค่ท้ายของ stack trace คุณมักจะได้คำแนะนำทั่วไปแบบ try/catch แต่ถ้าแปะเอาต์พุตเทสต์เต็ม คุณอาจเห็นปัญหาจริง: ขาด branch validation นั่นนำไปสู่ diff เล็กและเฉพาะเจาะจง
ก่อน commit อ่าน diff เหมือนผู้รีวิว ถามตัวเอง: ทุกบรรทัดตอบโจทย์คำขอไหม และฉันอธิบายมันได้ในประโยคเดียวไหม? ถ้าไม่ ให้ย้อนการเปลี่ยนที่เกินและ re-prompt ด้วยคำขอที่แคบกว่า
ผู้ใช้รายงาน: "หน้า settings บางครั้งรีเซ็ตเป็นค่าเริ่มต้นหลังบันทึก" คุณดึง main, รันเทสต์, แล้วเห็นเทสต์ล้มหนึ่งตัว หรือไม่มีเทสต์แต่มีขั้นตอน reproducible
รับมันเป็นลูป: ขอเล็กหนึ่งขั้น, diff เล็กหนึ่งอัน, แล้วตรวจสอบ
ก่อนอื่น ให้ Claude Code บริบทเล็กที่สุดที่ใช้ได้: เอาต์พุตเทสต์ที่ล้ม (หรือขั้นตอน reproduce), path ของไฟล์ที่คุณสงสัย, และเป้าหมาย ("คงพฤติกรรมไว้ ยกเว้นแก้การรีเซ็ต") ขอการวินิจฉัยและแพตช์เล็กที่สุด ไม่ใช่รีแฟกเตอร์
แล้วทำงานเป็นลูปสั้น ๆ:
รันการตรวจสอบหลังตรวจ diff
ถ้าการตรวจสอบผ่านแต่คุณกังวลเรื่อง regression ให้เพิ่ม coverage
สรุปด้วยคำอธิบาย PR เล็ก ๆ: บั๊กคืออะไร ทำไมเกิด และเปลี่ยนอะไร เพิ่มหมายเหตุผู้รีวิวเช่น "แตะไฟล์ X เท่านั้น" หรือ "เพิ่มเทสต์สำหรับเคสรีเซ็ต" เพื่อให้การรีวิวปลอดภัย
ก่อนเปิด PR ให้ทำผ่านอีกครั้งว่า งานตรวจทานง่ายและปลอดภัยต่อการ merge
ตัวอย่างด่วน: ถ้าคุณแก้บั๊กล็อกอินแต่ก็ฟอร์แมตไฟล์ 20 ไฟล์ ให้ยกเลิก commit การฟอร์แมตก่อน ผู้รีวิวควรโฟกัสที่การแก้ล็อกอิน ไม่ใช่สงสัยว่าอย่างอื่นเปลี่ยนไปเพราะอะไร
ถ้าสิ่งใดล้ม ให้ทำลูปเล็กอีกครั้ง: ทำ diff เล็ก, รันการตรวจสอบ, และอัปเดตโน้ต PR รอบสุดท้ายนี้มักช่วยประหยัดชั่วโมงของการคอมเมนต์กลับไปกลับมา
ความสม่ำเสมอเปลี่ยนเซสชันที่ดีให้เป็นเวิร์กโฟลว์ที่เชื่อถือได้ เลือกลูปเริ่มต้นแล้วทำซ้ำในแบบเดียวกันทุกครั้ง หลังหนึ่งสัปดาห์ คุณจะสังเกตว่า prompt สั้นลงและ diffs อ่านง่ายขึ้น
รูทีนง่าย ๆ:\n\n- เลือกผลลัพธ์จิ๋วหนึ่งอย่าง (บั๊กหนึ่งเคส, edge case หนึ่งอย่าง, ฟังก์ชันหนึ่งตัว).\n- ขอ diff เล็ก ๆ หนึ่งอันและคำอธิบายสั้น ๆ ว่าเปลี่ยนอะไร.\n- อ่าน diff เหมือนผู้รีวิว แล้วรันการตรวจสอบท้องถิ่น.\n- Re-prompt ด้วยเอาต์พุตความล้มแบบเป๊ะและชื่อไฟล์.\n- หยุดทันทีเมื่อการตรวจสอบผ่านและการเปลี่ยนชัดเจน.
เทมเพลต prompt ส่วนตัวช่วยให้คุณมีวินัย: "เปลี่ยนเฉพาะสิ่งที่จำเป็น แตะไฟล์ไม่เกิน 2 ไฟล์ คงพฤติกรรมสาธารณะไว้นอกจากฉันจะบอกให้เปลี่ยน บอกคำสั่งที่จะรันและลักษณะของความสำเร็จ"
ถ้าคุณสร้างภายใน Koder.ai คุณสามารถใช้ลูปเดียวกันในอินเทอร์เฟซแชทได้ โหมดวางแผนเหมาะสำหรับกำหนด slice ที่ merge ได้เล็กที่สุด (อินพุต เอาต์พุต และการตรวจสอบการยอมรับ) และ snapshot/rollback ช่วยให้กู้คืนอย่างรวดเร็วเมื่อการทดลองเบี่ยง
เมื่อการเปลี่ยนเสถียร ส่งออกซอร์สโค้ดเพื่อรันเครื่องมือท้องถิ่น CI และให้เพื่อนร่วมงานรีวิวตามปกติ ปล่อยใช้งานเมื่อคุณต้องการการยืนยันจากโลกระดับจริง เช่น ตรวจฟลว์แบบ end-to-end
ทำให้ลูปนี้เป็นค่าเริ่มต้น: prompt เล็ก diffs เล็ก การตรวจสอบบ่อย และการแก้ไขเร็ว ๆ รวมกันแล้วจะได้ PR ที่น่าเบื่อในความหมายที่ดีที่สุด
ค่าเริ่มต้น: ตั้งเป้าเป็นการเปลี่ยนแปลงเล็ก ๆ ที่ตรวจทานได้และคุณอธิบายในประโยคเดียวได้\n\nกฎปฏิบัติที่ดีคือ: คุณสามารถทำนายได้ว่า ไฟล์ใด(บ้าง) จะเปลี่ยน และคุณสามารถยืนยันด้วยการตรวจสอบที่เร็ว (เช่น unit test ที่เจาะจง, lint หรือรันแบบเร็ว) หากทำไม่ได้ งานนั้นยังใหญ่เกินไป—แบ่งเป็น “เพิ่มเทสต์ที่ทำให้ล้มเหลว” และ “แก้บั๊ก” เป็นสองรอบแยกกัน
ใช่—เริ่มด้วยการขอแผนสั้น ๆ เมื่อเป้าหมายยังไม่ชัดเจน\n\nใช้เกตง่าย ๆ:\n\n- ขอแผน 3 ขั้นตอนสั้น ๆ.\n- อนุมัติเฉพาะขั้นตอนที่ 1.\n- แล้วขอโค้ดสำหรับเฉพาะขั้นตอนนั้นเท่านั้น.\n\nวิธีนี้ช่วยป้องกันไม่ให้โมเดลเดาและแก้ไขไฟล์เพิ่มก่อนที่คุณจะตกลงแนวทาง
ใส่พื้นฐานเหล่านี้ใน prompt ของคุณ:\n\n- Goal: การเปลี่ยนพฤติกรรมเดียวที่ต้องการ.\n- Location: ไฟล์(ที่)จะแก้ไขอย่างชัดเจน.\n- Constraints: สิ่งที่ห้ามเปลี่ยน (API, exports, styling, dependencies).\n- Acceptance: จะรู้ได้อย่างไรว่างานเสร็จ.\n- Diff constraint: “diff เล็กที่สุด, ไม่มีรีแฟกเตอร์, ไม่มีการแก้ฟอร์แมตเฉยๆ.”\n\nโครงสร้างนี้จำกัดขอบเขตโดยธรรมชาติและทำให้การรีวิวเร็วขึ้น
หยุดและลดขอบเขตทันที\n\nการดำเนินการที่เป็นประโยชน์:\n\n- ย้อนการเปลี่ยนแปลง (revert).\n- Re-prompt: “แก้เฉพาะไฟล์ X. ไม่มีรีแฟกเตอร์. ไม่มีการฟอร์แมตที่ไม่เกี่ยวข้อง.”\n\nถาจำเป็น ให้ขอ เฉพาะ เทสต์ที่ล้มเหลวก่อน\n\nพยายาม “ทดสอบเพื่อแก้” diff ที่ขยายมักจะเสียเวลามากกว่าการทำใหม่ให้เล็กกว่า
อ่าน diff ก่อน แล้วรันการตรวจสอบ\n\nลำดับง่าย ๆ:\n\n1. สแกน diff (ไฟล์ที่ถูกแตะ ขยายขอบเขต การเพิ่ม dependency).\n2. การตรวจสอบที่เร็วที่สุด ที่บอกได้ว่ามันเสีย (lint/format หรือ unit test ที่เจาะจง).\n3. typecheck/build หากเกี่ยวข้อง.\n4. ชุดทดสอบช้ากว่า (integration/e2e) หลังจากพื้นฐานผ่านแล้ว.\n\nวิธีนี้ช่วยให้รอบสั้นและทำให้การหาข้อผิดพลาดเป็นเรื่องง่ายขึ้น
วางผลล้มเหลวแบบคำต่อคำแล้วขอแพตช์ที่เล็กที่สุด\n\nใส่ข้อมูล:\n\n- คำสั่งที่คุณรันแบบเป๊ะ ๆ.\n- ข้อความผิดพลาดเต็ม / stack trace.\n- ไฟล์และบรรทัดที่เกี่ยวข้อง.\n- สิ่งที่เปลี่ยนใน diff ล่าสุด.\n- ข้อจำกัด (เช่น: “อย่าเปลี่ยน public APIs”).\n\nหลีกเลี่ยงคำถามแบบ “มันยังล้มเหลว” โดยไม่มีรายละเอียด—เอาตัวออกมาแบบเจาะจงช่วยให้ได้แพตช์ที่แม่นยำ
มองโมเดลเป็นคนพิมพ์เร็ว ไม่ใช่ผู้ขับอัตโนมัติ\n\nคุณรับผิดชอบสำหรับ:\n\n- อนุมัติแผนและขอบเขต.\n- อ่านทุก diff.\n- รันการตรวจสอบ.\n- ตัดสินใจว่าอะไรปลอดภัยจะ merge.\n\nนิสัยที่ดีคือขอสรุปเป็นภาษาธรรมดา: เปลี่ยนอะไร, ไม่เปลี่ยนอะไร, และเพราะอะไร
โดยปกติแยกกันเป็นค่าเริ่มต้น\n\n- การเปลี่ยนพฤติกรรม: หนึ่ง commit.\n- แก้เทสต์/เพิ่มความคุ้มครอง: commit ถัดไป.\n- รีแฟกเตอร์ทางเลือก: PR แยกหรือภายหลัง.\n\nการผสมรีแฟกเตอร์กับการเปลี่ยนพฤติกรรมทำให้เกิดเสียงรบกวนและทำให้ผู้รีวิวสงสัยเพราะเจตนาทำให้ตรวจสอบยาก
สั้นและเจาะจง:\n\n- เปลี่ยนอะไร (1–2 ประโยค).\n- ทำไมต้องเปลี่ยน (บั๊กหรือข้อกำหนด).\n- วิธีทดสอบ (คำสั่ง/ขั้นตอนชัดเจน).\n- สิ่งที่คุณ ไม่ได้ เปลี่ยน (ตั้งความคาดหวัง).\n- ความเสี่ยงหรือหมายเหตุการย้อนกลับ\n\nถ้า PR ของคุณอ่านได้เหมือน “ไอเดียเดียว พิสูจน์ด้วยการตรวจสอบหนึ่งอย่าง” มันมักจะถูกอนุมัติเร็ว
Koder.ai สนับสนุนวินัยเดียวกันพร้อมฟีเจอร์ช่วยเหลือ:\n\n- โหมดวางแผน เพื่อกำหนดอินพุต เอาต์พุต และการยอมรับก่อนโค้ด.\n- Snapshot และ rollback เพื่อย้อนการทดลองได้สะอาดเมื่อขอบเขตเบี่ยง.\n- ส่งออกซอร์สโค้ด เพื่อให้คุณรันเครื่องมือท้องถิ่นและ CI ตามปกติในรีโพของคุณ.\n- การปรับใช้/โฮสต์และโดเมนกำหนดเอง เมื่อคุณต้องการตรวจสอบ end-to-end จริงๆ.\n\nใช้ฟีเจอร์เหล่านี้เพื่อให้การวนรอบเล็กและย้อนกลับได้ แล้วค่อย merge ผ่านกระบวนการรีวิวปกติของคุณ