• เปิดตัว Agent Skills ที่ระบุกฎของฐานข้อมูลอย่างชัดเจน เพื่อแก้ปัญหาที่ AI coding agent จัดการ Postgres ได้ไม่ถูกต้อง
  • Postgres มีทั้ง ฟีเจอร์ที่สั่งสมมาหลายทศวรรษ, edge case, และลักษณะด้านประสิทธิภาพ ทำให้เอเจนต์อาจสร้างโค้ดที่ใช้งานได้ แต่ ก่อให้เกิด full table scan หรือข้ามนโยบายความปลอดภัย ได้
  • ประกอบด้วย 8 หมวดหมู่ 30 กฎ จัดลำดับตามความสำคัญของผลกระทบ ครอบคลุมประสิทธิภาพคิวรี การจัดการการเชื่อมต่อ ความปลอดภัยและ RLS การออกแบบสคีมา ฯลฯ
  • ไม่ได้มาในรูปเอกสารสำหรับมนุษย์อ่าน แต่เป็น ชุดกฎที่ AI agent อ้างอิงได้โดยตรง
  • เมื่อนำไปรวมกับ MCP server ก็สามารถสร้าง database agent สำหรับใช้งานจริง ที่มีทั้งความสามารถในการลงมือทำและหลักเกณฑ์ในการตัดสินใจ

การมองปัญหา: AI เขียนโค้ดได้ แต่ไม่เข้าใจระบบ

  • AI coding agent สร้างโค้ดที่ถูกต้องตามไวยากรณ์ได้ แต่ยังมี ข้อจำกัดในการคำนึงถึงคุณลักษณะภายในของ Postgres และความเสี่ยงในการปฏิบัติการ
  • ปัญหาอย่างคิวรีที่ทำให้เกิด full table scan, การเสนอ index ที่ทำให้ประสิทธิภาพการเขียนลดลง, หรือการ ละเลย Row Level Security เกิดซ้ำอยู่บ่อยครั้ง
  • มีการยืนยันหลายกรณีว่าเอเจนต์ มองข้ามปัจจัยด้านประสิทธิภาพ ความปลอดภัย และความเสถียร ที่สำคัญในสภาพแวดล้อม production

ภาพรวมของ Postgres Agent Skills

  • เป็น คลังความรู้แบบอิงกฎ ที่สร้างขึ้นเพื่อให้ AI agent ใช้อ้างอิงเมื่อเขียนโค้ด Postgres
  • ประกอบด้วย 30 กฎ ใน 8 หมวดหมู่ ที่เรียงตามระดับผลกระทบ
  • แต่ละกฎมีชื่อ ลำดับความสำคัญ คำอธิบายว่าเหตุใดจึงสำคัญ และตัวอย่างโค้ดที่ถูกต้อง/ไม่ถูกต้อง

โครงสร้าง 8 หมวดหมู่ของกฎ

  • แต่ละกฎใช้รูปแบบที่สม่ำเสมอ โดยมีชื่อ ระดับผลกระทบ คำอธิบาย และแท็ก
  • Query Performance (Critical): กฎสำหรับป้องกัน full table scan และการเขียนคิวรีอย่างมีประสิทธิภาพ
  • Connection Management (Critical): connection pooling, การจัดการอายุของ client, ข้อจำกัดด้านทรัพยากร
  • Security and RLS (Critical): นโยบาย Row Level Security และแพตเทิร์นการควบคุมการเข้าถึง
  • Schema Design (High): โครงสร้างตาราง ชนิดข้อมูล และการตัดสินใจเรื่อง normalization
  • Concurrency and Locking (Medium-High): transaction isolation, การป้องกัน deadlock, การจัดการ lock
  • Data Access Patterns (Medium): pagination, งานแบบ bulk, การออกแบบรูปแบบการเข้าถึงข้อมูล
  • Monitoring and Diagnostics (Low-Medium): การวิเคราะห์คิวรี การติดตามประสิทธิภาพ และการดีบัก
  • Advanced Features (Low): CTE, window function, ส่วนขยาย และความสามารถเฉพาะของ Postgres อื่น ๆ

ตัวอย่างกฎของ Row Level Security

  • วิธีที่ไม่ถูกต้อง: หากพึ่งพาการกรองระดับแอปพลิเคชันอย่างเดียว จะมี ความเสี่ยงที่ข้อมูลทั้งหมดถูกเปิดเผยจากบั๊กหรือการเลี่ยงข้อกำหนด
    • หากเขียนในรูป select * from orders where user_id = $current_user_id; เมื่อถูก bypass ก็อาจคืนค่าคำสั่งซื้อทั้งหมด
  • วิธีที่ถูกต้อง: บังคับใช้ RLS ที่ระดับฐานข้อมูล
    • เปิดใช้ RLS ด้วย alter table orders enable row level security;
    • สร้างนโยบายด้วย create policy เพื่อให้ผู้ใช้มองเห็นได้เฉพาะข้อมูลของตนเอง
    • บังคับใช้ RLS แม้กับเจ้าของตารางด้วย alter table orders force row level security;
  • ตัวอย่างนโยบายสำหรับ role ที่ยืนยันตัวตนแล้ว: create policy orders_user_policy on orders for all to authenticated using (user_id = auth.uid());

ฟอร์แมตของ Agent Skills และระบบนิเวศ

  • Agent Skills คือ ฟอร์แมตเอกสารสำหรับ AI agent โดยเฉพาะ ในรูปแบบมาตรฐานเปิดที่มอบความเชี่ยวชาญเฉพาะด้านให้เอเจนต์ โดยเอเจนต์สามารถอ่านและนำไปใช้ได้โดยตรงเมื่อจำเป็น
    • ใช้งานร่วมกับ Claude Code, Cursor, GitHub Copilot, VS Code, Gemini CLI ฯลฯ ได้
    • อยู่ในรูปโฟลเดอร์ที่บรรจุคำแนะนำและตัวอย่างที่เอเจนต์ค้นพบและใช้งานได้เมื่อจำเป็น
    • แทนที่จะคาดหวังให้เรียนรู้แพตเทิร์นที่ถูกต้องจากข้อมูลฝึกสอน ก็ให้ กฎที่ระบุอย่างชัดเจน แก่เอเจนต์
  • เป็นมาตรฐานเปิดที่ Anthropic กำหนด และกำลังได้รับการยอมรับในวงกว้างในอุตสาหกรรม
    • Vercel เปิดตัว react-best-practices ที่แพ็กความรู้ด้านการเพิ่มประสิทธิภาพ React และ Next.js ตลอด 10 ปีไว้ใน 40 กฎ
    • Cloudflare เปิดตัว Skills สำหรับบริการ มากกว่า 40 รายการ เช่น Workers, Pages, D1 และ R2

เหตุผลที่ Supabase สร้างกฎชุดนี้

  • Supabase ดูแล Postgres ในหลายแสนโปรเจกต์ และพบว่าความผิดพลาดเดิม ๆ เกิดซ้ำอยู่เสมอ
    • ไม่มี index บน foreign key
    • คิวรีที่เผลอ bypass RLS
    • migration ที่ทำให้ตารางถูก lock ใน production
    • connection pool หมด จากการจัดการ client ที่ไม่ถูกต้อง
    • full table scan ที่ถูกซ่อนอยู่หลัง ORM
  • จึงนำความรู้ที่มีอยู่แล้วในทีมสนับสนุน database advisor และเอกสารต่าง ๆ มา จัดโครงใหม่ให้อยู่ในรูปแบบที่เป็นมิตรกับเอเจนต์ และแพ็กเป็นชุดเดียว

ความสัมพันธ์กับ MCP server

  • Supabase MCP server ช่วยให้ AI agent เชื่อมต่อกับโปรเจกต์ Supabase ได้โดยตรง และทำงานอย่างการสร้างตาราง รันคิวรี จัดการสคีมา และตั้งค่าคอนฟิกด้วยภาษาธรรมชาติ
  • MCP server มอบ ความสามารถ ในการทำงานกับฐานข้อมูลให้เอเจนต์ ส่วนแนวปฏิบัติที่ดีที่สุดจะสอนให้ทำอย่าง ถูกต้อง
  • เปรียบเทียบได้ว่า MCP server คือ พวงมาลัย ส่วนแนวปฏิบัติที่ดีที่สุดคือ การเรียนขับรถ
  • เอเจนต์ที่มีเพียงสิทธิ์เข้าถึง MCP สามารถรันทุกคิวรีที่ถูกร้องขอได้
  • แต่เอเจนต์ที่มีทั้งสิทธิ์ MCP และกฎเหล่านี้ จะสามารถเตือนก่อนสร้าง index ที่อาจ lock ตาราง เสนอ RLS policy ก่อน deploy โค้ดที่ไม่ปลอดภัย และจัดโครงสร้างคิวรีเพื่อหลีกเลี่ยงปัญหาด้านประสิทธิภาพได้
  • MCP server รับผิดชอบเรื่องการเชื่อมต่อและการรันคำสั่ง ส่วนแนวปฏิบัติชุดนี้รับผิดชอบเรื่อง การตัดสินใจ
  • Agent Skills จะ เตือนความเสี่ยงและชี้นำไปสู่ตัวเลือกที่ดีกว่า ก่อนลงมือทำ
  • การแยกความสามารถในการลงมือทำออกจากเกณฑ์การตัดสินใจ ช่วยสร้าง สภาพแวดล้อมอัตโนมัติที่ปลอดภัยและเชื่อถือได้

วิธีติดตั้ง

  • ที่เก็บซอร์ส: github.com/supabase/agent-skills
  • ติดตั้งแบบโต้ตอบได้ด้วย แพ็กเกจ npm ชื่อ skills ของ Vercel
    • npx skills add supabase/agent-skills
  • หากใช้ Claude Code สามารถติดตั้งเป็นปลั๊กอินได้
    • /plugin marketplace add supabase/agent-skills
    • /plugin install postgres-best-practices@supabase-agent-skills

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น