ก่อนปิดบท
ทายก่อนรันโค้ด
ทุกข้อคือสถานการณ์ใน repo ที่ agent กำลังทำงาน
ข้อ 1 / 10agent push ลง main ตรง ๆ และ main deploy ขึ้นร้านจริงทุกครั้ง migration ที่มันเพิ่มคอลัมน์
agent push ลง main ตรง ๆ และ main deploy ขึ้นร้านจริงทุกครั้ง migration ที่มันเพิ่มคอลัมน์ line_user_id แบบ NOT NULL ล้มบน DB ของร้าน อะไรพังบ้าง?
1 · Branch and Pull Request deploy รัน migration ก่อน start ถ้า migration ล้ม แอปทั้งตัว start ไม่ขึ้น ถ้างานเดียวกันอยู่ใน branch ความพังจะอยู่แค่ใน preview ของ PR และร้านจริงขายต่อได้ ดูบนกระดาน 1 · Branch and Pull Request →
ข้อ 2 / 10ร้านขอให้ถอยบอท LINE ออกก่อน agent เสนอคำสั่ง
ร้านขอให้ถอยบอท LINE ออกก่อน agent เสนอคำสั่ง git reset --hard 5d0a && git push --force origin main ปัญหาคืออะไร?
1 · Branch and Pull Request บน main งานของ agent ปนกับงานของคนอื่น การถอยด้วยมือเลยลากงานคนอื่นไปด้วย ถ้างานของ agent อยู่ใน branch และ PR ของมันเอง การถอยคือปิด PR โดยไม่ต้องแตะ main ดูบนกระดาน 1 · Branch and Pull Request →
ข้อ 3 / 10
PR #149 มี 40 ไฟล์ คือคูปอง LINE10 การเปลี่ยนชื่อ 36 ไฟล์ และแก้ priceFor บรรทัดเดียว คนรีวิวขอแก้คูปองหนึ่งจุด agent แก้แล้ว rebase กับ force-push เกิดอะไรกับการรีวิว?
2 · Small Pull Requests ยิ่ง PR ใหญ่ ทุกการขอแก้ยิ่งแพง และรอบที่สองคนรีวิวอ่านน้อยลง ถ้าคูปองอยู่ใน PR ของตัวเอง การขอแก้จะอ่านซ้ำแค่ 2 ไฟล์ ดูบนกระดาน 2 · Small Pull Requests →
ข้อ 4 / 10บรรทัดนี้อยู่ในไฟล์ที่ 27 ของ PR 40 ไฟล์ ระหว่างไฟล์ที่แค่เปลี่ยนชื่อ
บรรทัดนี้อยู่ในไฟล์ที่ 27 ของ PR 40 ไฟล์ ระหว่างไฟล์ที่แค่เปลี่ยนชื่อ - Math.min(total * 0.1, 500) + total * 0.1 ทางที่ทำให้คนรีวิวเห็นมันแน่ ๆ คืออะไร?
2 · Small Pull Requests PR เรื่องเดียวที่มี diff บรรทัดเดียว ไม่มีที่ให้บรรทัดอันตรายซ่อน การเปลี่ยนชื่อที่ไม่มี logic ก็แยกไปเป็น PR ของมันเอง แล้วรีวิวด้วยการค้นคำ ดูบนกระดาน 2 · Small Pull Requests →
ข้อ 5 / 10
agent รายงานว่า “2c2p.test.ts ผ่าน 4/4” แต่ร้านส่งยอด 199,000 บาทไป 2C2P แทน 1,990 ทำไม test ของ agent ไม่จับ?
3 · CI as the Fence test ที่เขียนตามโค้ด จะผ่านเสมอแม้โค้ดผิด contract test บอกว่า gateway ทุกตัวต้องทำอะไร และ CI รันมันทุก PR ยอดที่ผิดหน่วยเลยทำให้ CI แดงก่อนถึงเงินของลูกค้า ดูบนกระดาน 3 · CI as the Fence →
ข้อ 6 / 10diff ของ agent มี
diff ของ agent มี it.skip("cap 500", …) และรายงานว่า “ผ่านหมดครับ · 11 passed, 1 skipped” ควรทำอย่างไรให้ไม่ต้องพึ่งการอ่านของคุณ?
3 · CI as the Fence คำสั่งใน prompt เป็นแค่คำขอ agent เลือกทำหรือไม่ทำก็ได้ กฎที่ CI รันและ branch protection บังคับ เป็นด่านที่ agent เถียงไม่ได้ ดูบนกระดาน 3 · CI as the Fence →
ข้อ 7 / 10agent ตัวใหม่ถูกสั่งให้ทำ priceFor ให้อ่านง่ายขึ้น
agent ตัวใหม่ถูกสั่งให้ทำ priceFor ให้อ่านง่ายขึ้น git blame บนเงื่อนไข !cart.hasSaleItem บอกแค่ “update” อะไรมีโอกาสเกิดมากที่สุด?
4 · Commits as Context agent ตัวใหม่จำแชทเมื่อวานไม่ได้ มันอ่านได้แค่ repo ถ้า commit บอกว่าเงื่อนไขนี้มาจาก #147 เพราะขาดทุน 3 วัน มันจะเก็บไว้ ดูบนกระดาน 4 · Commits as Context →
ข้อ 8 / 10
commit message แบบไหนช่วย agent ตัวถัดไปมากที่สุด?
4 · Commits as Context หัวบอกว่าทำอะไร body บอกว่าทำไม และลิงก์ PR พาไปหาการคุยทั้งหมด session ถัดไปเปิด blame แล้วรู้ว่าบรรทัดนี้ห้ามลบ ดูบนกระดาน 4 · Commits as Context →
ข้อ 9 / 10
23:40 ออเดอร์จาก LINE checkout v2 ค้าง ฝั่งซ้ายปิด flag คำสั่งเดียว ฝั่งขวา agent แก้ checkoutV2 กับ createOrder สดบน main ตอนตีหนึ่ง และออเดอร์ก็เดินได้ ทำไมฝั่งขวายังเสี่ยงกว่า?
5 · One-Command Rollback การถอยที่ต้องเขียนโค้ดใหม่คือการปล่อยของใหม่อีกรอบ ตอนที่ทุกคนง่วงที่สุด บนกระดาน hotfix นี้ทำให้ revert 14 commit ชน conflict แล้วออเดอร์เว็บถูกสร้างซ้ำ ดูบนกระดาน 5 · One-Command Rollback →
ข้อ 10 / 10migration นี้ไม่มี down
migration นี้ไม่มี down pgm.addColumn("orders", { channel }) pgm.dropColumn("orders", "source") ถ้าต้องถอยมัน จะเกิดอะไร?
5 · One-Command Rollback เพิ่มของใหม่ก่อน ลบของเก่าทีหลัง (expand แล้วค่อย contract) migration ที่มี down และยังไม่ลบข้อมูล ถอยได้ด้วยคำสั่งเดียวโดยไม่เสียอะไร ดูบนกระดาน 5 · One-Command Rollback →
คะแนนเก็บในเบราว์เซอร์ของคุณเท่านั้น