ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

AI & Vibe Coding

AI Coding Agent คืออะไร ต่างจาก Autocomplete อย่างไร

AI Coding Agent คืออะไร ต่างจาก Autocomplete อย่างไร

เครื่องมือ AI สำหรับนักพัฒนามีหลายแบบมาก ตั้งแต่ตัวที่เติมโค้ดให้ทีละบรรทัดใน editor ไปจนถึงตัวที่รับงานแล้วไปเปิดไฟล์ แก้หลายไฟล์ รันเทสต์ และแก้ต่อเองจนเสร็จ หลายคนเรียกรวมกันว่า "AI ช่วยเขียนโค้ด" ทั้งที่วิธีใช้และความเสี่ยงต่างกันมาก บทความนี้จะแยกระดับของเครื่องมือให้ชัด อธิบายว่า AI Coding Agent ทำงานอย่างไรด้วยวงจร plan-act-observe และแนะนำวิธีตั้งสิทธิ์ให้ใช้งานได้คล่องโดยไม่เสี่ยงเกินจำเป็น

สามระดับของเครื่องมือ AI สำหรับเขียนโค้ด

ระดับทำอะไรได้ใครควบคุมความเสี่ยง
1. Autocompleteเดาโค้ดบรรทัดถัดไปหรือทั้งฟังก์ชันจากสิ่งที่พิมพ์อยู่เรากด Tab รับหรือไม่รับต่ำ แต่รับโดยไม่อ่านก็สะสมบั๊กได้
2. Chatตอบคำถาม อธิบายโค้ด เขียนโค้ดตามที่ขอในหน้าต่างแชตเราคัดลอกไปวางเองปานกลาง ขึ้นกับว่าเราตรวจก่อนวางหรือไม่
3. Agentอ่านไฟล์ ค้นหา แก้หลายไฟล์ รันคำสั่ง ดูผล แล้วทำต่อเองAI ตัดสินใจแต่ละขั้น เราอนุมัติตามที่ตั้งไว้สูงกว่า เพราะลงมือกับเครื่องจริง

Autocomplete

ทำงานใน editor ขณะเราพิมพ์ ดูบริบทรอบ ๆ cursor และไฟล์ที่เปิดอยู่ เหมาะกับงานซ้ำ ๆ เช่น เขียน array config, rules ใน model, getter/setter ข้อดีคือเร็วและอยู่ในมือเราตลอด ข้อเสียคือมองเห็นบริบทจำกัด และทำให้เราติดนิสัยกด Tab โดยไม่อ่าน

Chat

เราถาม AI ตอบ เหมาะกับการทำความเข้าใจ ออกแบบ หรือขอโค้ดชิ้นเล็ก AI ไม่ได้แตะไฟล์เราโดยตรง เราเป็นคนตัดสินใจว่าจะวางโค้ดตรงไหน ข้อจำกัดคือเราต้องคัดลอกบริบทใส่เอง และต้องคัดลอกผลกลับเอง

Agent

เราให้เป้าหมาย เช่น "เพิ่ม endpoint export CSV พร้อมเทสต์" agent จะค้นไฟล์ที่เกี่ยวข้อง วางแผน แก้โค้ด รันเทสต์ อ่านผล และแก้ต่อจนผ่าน งานที่เคยต้องคัดลอกไปมาหลายสิบรอบเหลือการตรวจผลรอบเดียว แต่ก็หมายความว่า AI ได้ลงมือกับไฟล์และ terminal ของเราจริง

วงจร Plan-Act-Observe

หัวใจของ agent คือการวนลูปสามขั้นจนกว่าจะถึงเป้าหมายหรือถูกหยุด

  1. Plan คิดว่าต้องทำอะไรต่อ เช่น "ต้องดู OrderController ก่อน"
  2. Act เรียกเครื่องมือ (tool) เช่น อ่านไฟล์ ค้นข้อความ แก้ไฟล์ รันคำสั่ง
  3. Observe อ่านผลจากเครื่องมือ เช่น เนื้อหาไฟล์ หรือ output ของเทสต์ แล้วกลับไปขั้น Plan

ตัวอย่างลำดับการทำงานของ agent เมื่อได้รับงาน "แก้บั๊กยอดรวมผิดเมื่อมีคูปอง"

[plan]    ค้นหาที่คำนวณยอดรวม
[act]     search "calculateTotal" ในโปรเจกต์
[observe] พบใน common/services/OrderService.php และ tests/unit/OrderServiceTest.php
[plan]    อ่านฟังก์ชันและเทสต์เดิม
[act]     read common/services/OrderService.php
[observe] ส่วนลดคูปองถูกหักก่อนคิด VAT แต่ส่วนลดสมาชิกหักหลัง
[plan]    เขียนเทสต์ที่จำลองบั๊กก่อน
[act]     edit tests/unit/OrderServiceTest.php
[act]     run vendor/bin/codecept run unit OrderServiceTest
[observe] เทสต์ใหม่ fail ตามคาด
[plan]    แก้ลำดับการหักส่วนลด
[act]     edit common/services/OrderService.php
[act]     run vendor/bin/codecept run unit
[observe] ผ่านทั้งหมด → รายงานผลให้ผู้ใช้

สังเกตว่าคุณภาพของงานขึ้นกับขั้น Observe อย่างมาก ถ้าโปรเจกต์ไม่มีเทสต์ agent ก็ไม่มีสัญญาณบอกว่าแก้ถูกหรือไม่ จะได้แค่ "โค้ดที่ดูน่าจะถูก" นี่คือเหตุผลที่โปรเจกต์ที่มีเทสต์ดีได้ประโยชน์จาก agent มากกว่าโปรเจกต์ที่ไม่มี

Agent เก่งอะไร และพลาดตรงไหนบ่อย

งานที่ agent ทำได้ดี

  • งานที่มีเกณฑ์ชัดและตรวจได้ด้วยคำสั่ง เช่น ทำให้เทสต์ผ่าน แก้ lint error ทั้งโปรเจกต์
  • งานแก้ซ้ำหลายไฟล์ เช่น เปลี่ยนชื่อ method แล้วตามแก้ทุกจุดที่เรียก
  • สำรวจโค้ดที่ไม่คุ้นเคย หาว่า feature หนึ่งเริ่มจากตรงไหน ผ่านไฟล์อะไรบ้าง

จุดที่พลาดบ่อย

  • แก้เกินขอบเขต "ปรับปรุง" ไฟล์ที่ไม่ได้ขอ
  • เมื่อเทสต์ไม่ผ่าน อาจแก้เทสต์ให้ผ่านแทนแก้โค้ด หรือข้ามเทสต์ไป
  • วนลูปแก้ไปมาโดยไม่คืบหน้า เมื่อปัญหาอยู่นอกโค้ด เช่น config ของ environment
  • อ่านข้อความในไฟล์หรือเว็บแล้วทำตามคำสั่งที่แฝงอยู่ (prompt injection) ซึ่งจะอธิบายละเอียดในบทความ "Prompt Injection คืออะไร และป้องกันในแอปของเรา"

ความเสี่ยงหลักเมื่อ AI รันคำสั่งได้

เมื่อ agent เข้าถึง terminal มันมีสิทธิ์เท่ากับ user ที่รันมันอยู่ หมายความว่าทุกอย่างที่เราทำได้ มันก็ทำได้ ความเสี่ยงที่ต้องคิดถึงมีดังนี้

  • คำสั่งทำลายข้อมูล ลบไฟล์ git reset --hard drop ตาราง
  • ข้อมูลรั่ว อ่าน .env หรือ SSH key แล้วนำไปใส่ใน output หรือส่งออกผ่านคำสั่งเครือข่าย
  • ติดตั้งของแปลกปลอม ติดตั้งแพ็กเกจที่ไม่ได้ตรวจ ซึ่งอาจมี script ที่รันตอนติดตั้ง
  • กระทบระบบภายนอก push โค้ด เรียก API จริง ส่งอีเมล หรือแตะ production ถ้ามี credential อยู่ในเครื่อง

ตั้งสิทธิ์ให้ agent อย่างไรให้สมดุล

เป้าหมายคือให้ agent ทำงานได้ลื่นในเรื่องที่ปลอดภัย และต้องขออนุญาตในเรื่องที่มีผลกระทบ เครื่องมือแต่ละตัวมีวิธีตั้งค่าต่างกัน ให้ดูเอกสารของเครื่องมือที่ใช้ แต่แนวคิดเหมือนกัน

กลุ่มคำสั่งตัวอย่างแนะนำ
อ่านอย่างเดียวls, cat, git status, git diff, ค้นไฟล์อนุญาตอัตโนมัติ
ตรวจสอบรันเทสต์, lint, static analysisอนุญาตอัตโนมัติ
แก้ไฟล์ในโปรเจกต์แก้โค้ด สร้างไฟล์อนุญาตได้ เพราะย้อนกลับด้วย Git ได้ แต่ต้องอ่าน diff
มีผลกระทบลบไฟล์, git push, migration, ติดตั้งแพ็กเกจถามทุกครั้ง
อันตรายเข้าถึง production, อ่าน secret, คำสั่ง sudoปิดไม่ให้ทำเลย

มาตรการเพิ่มเติมที่แนะนำ

  • รัน agent ใน container หรือ VM แยก โดยเฉพาะเมื่อให้ทำงานอัตโนมัติยาว ๆ
  • ไม่เก็บ credential ของ production บนเครื่องที่ agent ทำงาน
  • ทำงานบน branch แยก และ commit ก่อนให้ agent เริ่มงานใหญ่ ถ้าผลไม่ดีจะย้อนได้ทันที
  • กำหนดขอบเขตใน prompt และไฟล์แนวทางโปรเจกต์ เช่น "ห้ามแก้ไฟล์นอก common/services"
  • ตรวจ log การทำงานของ agent ว่ารันคำสั่งอะไรไปบ้าง ไม่ดูแค่ข้อความสรุปตอนจบ

เลือกใช้ระดับไหนเมื่อไร

  • Autocomplete งานเขียนโค้ดประจำวันที่เรารู้ว่าจะเขียนอะไร แค่อยากพิมพ์น้อยลง
  • Chat ถามความเข้าใจ ออกแบบ เปรียบเทียบแนวทาง หรือโค้ดชิ้นเล็กที่อยากคุมเองทุกบรรทัด
  • Agent งานหลายไฟล์ที่มีเทสต์รองรับ งานสำรวจโค้ด หรืองานซ้ำ ๆ ที่ตรวจผลได้ด้วยคำสั่ง

ไม่จำเป็นต้องเลือกแบบเดียว นักพัฒนาหลายคนใช้ทั้งสามระดับในวันเดียวกัน สิ่งสำคัญคือรู้ว่าตอนนี้กำลังให้ AI มีอำนาจแค่ไหน และตรวจผลให้เหมาะกับระดับนั้น

สรุป

  • เครื่องมือ AI แบ่งได้เป็น autocomplete, chat และ agent ซึ่งต่างกันที่ระดับการลงมือและความเสี่ยง
  • Agent ทำงานแบบวนลูป plan-act-observe คุณภาพขึ้นกับสัญญาณที่มันสังเกตได้ เช่น ผลเทสต์
  • เมื่อ agent รันคำสั่งได้ มันมีสิทธิ์เท่ากับเรา จึงต้องตั้งสิทธิ์แยกตามความเสี่ยงของคำสั่ง
  • อนุญาตคำสั่งอ่านและตรวจสอบอัตโนมัติ ถามก่อนเมื่อมีผลกระทบ ปิดสิ่งที่อันตราย
  • Git, branch แยก และ sandbox คือเครือข่ายรองรับเมื่อ agent ทำพลาด

ลองทำ

ถ้าคุณใช้เครื่องมือ agent อยู่แล้ว หรือกำลังจะเริ่มใช้

  1. เปิดการตั้งค่าสิทธิ์ของเครื่องมือ แล้วจัดคำสั่งที่ใช้บ่อยในโปรเจกต์ลงตาราง 5 กลุ่มด้านบน
  2. ตั้งค่าให้คำสั่งอ่านและรันเทสต์ทำงานได้อัตโนมัติ ส่วนคำสั่งกลุ่มมีผลกระทบให้ถามทุกครั้ง
  3. ให้ agent ทำงานเล็ก ๆ บน branch ใหม่ เช่น เพิ่มเทสต์ให้ฟังก์ชันหนึ่ง แล้วอ่าน log ว่ามันรันคำสั่งอะไรบ้างตามลำดับ
  4. จดว่ามีคำสั่งไหนที่คุณไม่คาดว่ามันจะรัน แล้วปรับการตั้งค่าหรือไฟล์แนวทางโปรเจกต์ตามนั้น
ติดปัญหาตอนทำตาม? ถามในชุมชน

ความคิดเห็น (0)

ยังไม่มีความคิดเห็น — เริ่มคุยเป็นคนแรก ถามสิ่งที่สงสัย หรือแชร์ประสบการณ์ของคุณ