𝗔𝗜 𝗔𝗴𝗲𝗻𝘁𝘀 𝗔𝗻𝗱 𝗕𝗿𝗮𝗻𝗰𝗵 𝗦𝘁𝗿𝗮𝘁𝗲𝗴𝘆: 𝗦𝗮𝗳𝗲 𝗔𝘂𝘁𝗼𝗺𝗮𝘁𝗶𝗼𝗻 𝗪𝗶𝘁𝗵 𝗚𝗶𝘁
เอเจนต์ AI ไม่ได้ทำงานผิดพลาด แต่พวกมันคาดเดาไม่ได้
ปัญหาหนึ่งที่พบใน GitHub เมื่อเร็วๆ นี้ แสดงให้เห็นว่าเอเจนต์เพิกเฉยต่อคำสั่งที่ระบุไว้อย่างชัดเจนว่าห้าม commit ลงใน branch main โดยมันอ่านกฎแล้ว เห็นด้วยกับกฎนั้น แต่สุดท้ายก็ยัง push ลง main อยู่ดี
หากโมเดลความปลอดภัยของคุณขึ้นอยู่กับการบอกเอเจนต์ว่า "อย่าทำสิ่งนี้" แสดงว่าคุณไม่ได้มีโมเดลความปลอดภัย แต่คุณแค่กำลัง "ภาวนา" เท่านั้น
คุณไม่สามารถตะโกนสั่งผ่าน system prompt ให้ดังกว่าการกระทำได้ สิ่งที่คุณต้องทำคือสร้างระบบที่เอเจนต์ "ไม่สามารถ" ทำสิ่งที่ผิดพลาดได้ในทางกายภาพ
และนี่คือวิธีตั้งค่ากลยุทธ์การทำ automation อย่างปลอดภัย:
ใช้ Git Worktrees เพื่อแยกส่วน (Isolation) อย่าปล่อยให้เอเจนต์ทำงานในไดเรกทอรีหลักของคุณ ให้ใช้
git worktree addเพื่อมอบไดเรกทอรีและ branch ของตัวเองให้แก่เอเจนต์แต่ละตัว เอเจนต์จะไม่สามารถ commit ลง main ได้ หาก main ไม่ได้ถูก checked out อยู่ใน workspace ของมันใช้รูปแบบการตั้งชื่อ branch ที่เคร่งครัด เอเจนต์จะสร้าง branch จำนวนมาก หากคุณตั้งชื่อไม่ดี คุณจะติดตามไม่ทัน ให้ใช้ prefix แบบสามส่วน: • agent/feat/checkout-coupon-stacking • agent/fix/flaky-payment-test • agent/chore/bump-eslint วิธีนี้จะช่วยให้คุณกรองและล้าง branch ที่สร้างโดยอัตโนมัติได้อย่างง่ายดาย
ใช้การ Squash เมื่อทำการ Merge เอเจนต์อาจทำงานไม่เป็นระเบียบ พวกมันอาจ commit บ่อยเกินไป หรือสร้าง commit ขนาดใหญ่ที่อ่านไม่ออกเพียงอันเดียว ไม่ต้องกังวลเรื่องความสะอาดของ commit (commit hygiene) ให้ใช้การ squash-merging เมื่อคุณ merge PR ของพวกมัน วิธีนี้จะช่วยรักษาประวัติ (history) ใน main ให้สะอาด ในขณะที่ยังปล่อยให้เอเจนต์ใช้ branch ของมันเป็นเหมือนกระดาษทด (scratchpad) ได้
ใช้การป้องกันแบบหลายชั้น (Layered defense) อย่าพึ่งพาเกราะป้องกันเพียงชั้นเดียว
- Prompt instructions: ด่านป้องกันแรก
- Local pre-commit hooks: ป้องกันการ commit ลง branch ที่ได้รับการคุ้มครองโดยไม่ตั้งใจ
- Server-side branch protection: ชั้นที่สำคัญที่สุด กำหนดให้ต้องมีการทำ pull request ใน remote repository ของคุณ วิธีนี้จะทำให้เอเจนต์ไม่สามารถ push ลง main ได้หากไม่ได้รับการอนุมัติจากมนุษย์
เป้าหมายคือการปล่อยให้เอเจนต์ทำงานได้อย่างอิสระ โดยที่มนุษย์จะเข้ามามีส่วนร่วม (human-in-the-loop) เฉพาะในขั้นตอนการทำ pull request เท่านั้น
เลิกเฝ้าดูทุกการแก้ไข (babysitting) แต่จงสร้างโครงสร้างที่แม้แต่เอเจนต์ที่สะเพร่าก็ยังให้ผลลัพธ์ที่ปลอดภัย
Source: https://dev.to/nazar_boyko/ai-agents-and-branch-strategy-safe-automation-with-git-57ja
Optional learning community: https://t.me/GyaanSetuAi