Agentic Coding

Coding agent คือ AI model แบบสนทนาที่สามารถเข้าถึง tool ต่าง ๆ เช่น อ่าน/เขียนไฟล์, ค้นหาเว็บ, และรันคำสั่ง shell ได้ มันทำงานได้ทั้งใน IDE หรือเป็นเครื่องมือ command-line หรือ GUI แบบ standalone Coding agent เป็นเครื่องมือที่ทำงานได้อัตโนมัติสูงและทรงพลัง รองรับ use case ที่หลากหลาย

บทนี้ต่อยอดจากเนื้อหา AI-powered development ในบท Development Environment and Tools เพื่อเป็น demo สั้น ๆ ลองมาดูตัวอย่างต่อจากส่วน AI-powered development กัน

from urllib.request import urlopen

def download_contents(url: str) -> str:
    with urlopen(url) as response:
        return response.read().decode('utf-8')

def extract(content: str) -> list[str]:
    import re
    pattern = r'\[.*?\]\((.*?)\)'
    return re.findall(pattern, content)

print(extract(download_contents("https://raw.githubusercontent.com/missing-semester/missing-semester/refs/heads/master/_2026/development-environment.md")))

เราลอง prompt coding agent ด้วย task นี้ได้

Turn this into a proper command-line program, with argparse for argument parsing. Add type annotations, and make sure the program passes type checking.

Agent จะอ่านไฟล์เพื่อทำความเข้าใจ จากนั้นแก้ไขโค้ด แล้วรัน type checker เพื่อให้แน่ใจว่า type annotation ถูกต้อง ถ้ามันทำผิดจนไม่ผ่าน type checking มันก็จะวนแก้ไขเอง แม้ว่า task นี้จะง่ายพอที่จะไม่ค่อยเกิดปัญหา เนื่องจาก coding agent มีสิทธิ์เข้าถึง tool ที่อาจเป็นอันตรายได้ โดยค่าเริ่มต้นแล้ว agent harness จะถามยืนยันผู้ใช้ก่อนเรียก tool

ถ้า coding agent ทำผิดพลาด เช่น คุณมี binary mypy อยู่ใน $PATH โดยตรง แต่ agent กลับเรียก python -m mypy แทน คุณสามารถให้ feedback เป็นข้อความเพื่อช่วยแก้ไขทิศทางได้

Coding agent รองรับการโต้ตอบแบบ multi-turn ทำให้สามารถพัฒนาต่อยอดผ่านการสนทนาไป-มากับ agent ได้ คุณยังสามารถขัดจังหวะ agent ได้หากมันกำลังไปผิดทาง mental model ที่อาจช่วยได้คือมองตัวเองเป็นหัวหน้าที่ดูแลเด็กฝึกงาน: เด็กฝึกงานจะทำงานละเอียดให้ แต่ต้องการคำแนะนำ และอาจทำผิดบ้างซึ่งต้องคอยแก้ไข

สำหรับ demo ที่ชัดเจนกว่านี้ ลองขอให้ agent รันสคริปต์ที่ได้ต่อเลย สังเกตผลลัพธ์ แล้วลองขอให้มันแก้ไข (เช่น ขอให้เอาเฉพาะ absolute URL)

AI model และ agent ทำงานอย่างไร

การอธิบายรายละเอียดภายในของ large language model (LLM) สมัยใหม่ และโครงสร้างพื้นฐานอย่าง agent harness นั้นอยู่นอกขอบเขตของคอร์สนี้ แต่การเข้าใจแนวคิดหลักในระดับ high-level จะช่วยให้_ใช้งาน_เทคโนโลยีล้ำสมัยนี้ได้อย่างมีประสิทธิภาพ และเข้าใจข้อจำกัดของมัน

LLM สามารถมองได้ว่าเป็นการ model probability distribution ของ completion string (output) จาก prompt string (input) การทำ LLM inference (สิ่งที่เกิดขึ้นเมื่อคุณส่ง query ไปยังแอปแชท) คือการ sample จาก probability distribution นี้ LLM มี context window ขนาดคงที่ ซึ่งเป็นความยาวสูงสุดของ input และ output string

AI tool ต่าง ๆ เช่น conversational chat และ coding agent สร้างอยู่บน primitive นี้ สำหรับการโต้ตอบแบบ multi-turn แอปแชทและ agent ใช้ turn marker และส่ง conversation history ทั้งหมดเป็น prompt string ทุกครั้งที่มี user prompt ใหม่ โดยเรียก LLM inference หนึ่งครั้งต่อ user prompt หนึ่งข้อความ สำหรับ tool-calling agent นั้น harness จะตีความ LLM output บางส่วนเป็นคำร้องขอเรียก tool แล้ว harness จะส่งผลลัพธ์ของ tool call กลับไปให้ model เป็นส่วนหนึ่งของ prompt string (ดังนั้น LLM inference จะรันใหม่ทุกครั้งที่มี tool call/response) แนวคิดหลักของ tool-calling agent สามารถ implement ได้ใน 200 บรรทัด

ความเป็นส่วนตัว

AI coding tool ส่วนใหญ่ในการตั้งค่าเริ่มต้นจะส่งข้อมูลของคุณจำนวนมากขึ้น cloud บางครั้ง harness รันแบบ local ในขณะที่ LLM inference รันบน cloud บางครั้งซอฟต์แวร์ส่วนใหญ่ก็รันบน cloud (และเช่น ผู้ให้บริการอาจได้รับสำเนา repository ทั้งหมดรวมถึงการโต้ตอบทุกครั้งที่คุณมีกับ AI tool)

มี AI coding tool แบบ open-source และ LLM แบบ open-source ที่ค่อนข้างดี (แม้จะยังไม่ดีเท่า proprietary model) แต่ในปัจจุบันสำหรับผู้ใช้ส่วนใหญ่ การรัน open LLM ล้ำสมัยแบบ local นั้นยังทำไม่ได้จริงเนื่องจากข้อจำกัดด้านฮาร์ดแวร์

Use case

Coding agent ช่วยได้ในงานหลากหลายประเภท ตัวอย่างเช่น

Advanced agent

ในส่วนนี้จะให้ภาพรวมสั้น ๆ ของรูปแบบการใช้งานขั้นสูงและความสามารถเพิ่มเติมของ coding agent

สำหรับ feature ขั้นสูงหลายอย่างที่ต้องเขียน prompt (เช่น skill หรือ subagent) คุณสามารถใช้ LLM ช่วยเริ่มต้นได้ Coding agent บางตัวมี built-in support สำหรับทำเรื่องนี้ เช่น Claude Code สามารถสร้าง subagent จาก prompt สั้น ๆ ได้ (เรียก /agents แล้วสร้าง agent ใหม่) ลองสร้าง subagent ด้วย prompt นี้

A Python code checking agent that uses `mypy` and `ruff` to type-check, lint, and format *check* any files that have been modified from the last git commit.

จากนั้นคุณสามารถใช้ agent ระดับบนสุดเพื่อเรียก subagent อย่างชัดเจนด้วยข้อความเช่น “use the code checker subagent” คุณยังอาจตั้งค่าให้ agent ระดับบนสุดเรียก subagent โดยอัตโนมัติเมื่อเหมาะสม เช่น หลังจากแก้ไขไฟล์ Python ใด ๆ

สิ่งที่ควรระวัง

AI tool อาจทำผิดพลาดได้ มันสร้างอยู่บน LLM ซึ่งเป็นเพียง model ที่ทำนาย token ถัดไปแบบ probabilistic มันไม่ได้ “ฉลาด” ในแบบเดียวกับมนุษย์ ตรวจสอบผลลัพธ์จาก AI ทั้งในด้านความถูกต้องและ security bug บางครั้งการตรวจสอบโค้ดอาจยากกว่าการเขียนเอง สำหรับโค้ดที่สำคัญ ควรพิจารณาเขียนเอง AI อาจลงไปใน rabbit hole และพยายาม gaslight คุณ ระวังเรื่อง debugging spiral อย่าใช้ AI เป็นไม้ค้ำยัน และระวังการพึ่งพามากเกินไปหรือเข้าใจเพียงผิวเผิน งาน programming อีกจำนวนมากที่ AI ยังทำไม่ได้ Computational thinking ยังคงมีคุณค่า

ซอฟต์แวร์ที่แนะนำ

IDE และ AI coding extension จำนวนมากมี coding agent ในตัว (ดูคำแนะนำจาก บท development environment) Coding agent ยอดนิยมอื่น ๆ ได้แก่ Claude Code ของ Anthropic, Codex ของ OpenAI, และ agent แบบ open-source อย่าง opencode

แบบฝึกหัด

  1. เปรียบเทียบประสบการณ์ของการเขียนโค้ดเอง, ใช้ AI autocomplete, inline chat, และ agent โดยทำ programming task เดียวกันสี่ครั้ง ตัวเลือกที่ดีที่สุดคือ feature ขนาดเล็กจากโปรเจกต์ที่คุณกำลังทำอยู่ ถ้าต้องการไอเดียอื่น ลองพิจารณาทำ task แบบ “good first issue” ในโปรเจกต์ open-source บน GitHub หรือโจทย์จาก Advent of Code หรือ LeetCode
  2. ใช้ AI coding agent เพื่อสำรวจ codebase ที่ไม่คุ้นเคย วิธีที่ดีที่สุดคือทำในบริบทที่ต้องการ debug หรือเพิ่ม feature ใหม่ให้กับโปรเจกต์ที่คุณสนใจจริง ๆ ถ้านึกไม่ออก ลองใช้ AI agent เพื่อทำความเข้าใจว่า feature ด้าน security ทำงานอย่างไรใน agent opencode
  3. Vibe code แอปเล็ก ๆ จากศูนย์ ห้ามเขียนโค้ดเองแม้แต่บรรทัดเดียว
  4. สำหรับ coding agent ที่คุณเลือกใช้ ให้สร้างและทดสอบ AGENTS.md (หรือชื่อที่เทียบเท่า เช่น CLAUDE.md), reusable prompt (เช่น custom slash command ใน Claude Code หรือ custom prompt ใน Codex), skill (เช่น skill ใน Claude Code หรือ skill ใน Codex), และ subagent (เช่น subagent ใน Claude Code) ลองคิดว่าเมื่อไหร่ควรใช้อันไหน โปรดทราบว่า coding agent ที่คุณเลือกอาจไม่รองรับบาง functionality เหล่านี้ คุณสามารถข้ามไปหรือลองใช้ coding agent ตัวอื่นที่รองรับ
  5. ใช้ coding agent เพื่อทำงานเดียวกับแบบฝึกหัด Markdown bullet point regex จาก บท Code Quality มันทำงานผ่านการแก้ไขไฟล์โดยตรงหรือไม่? ข้อเสียและข้อจำกัดของการที่ agent แก้ไขไฟล์โดยตรงเพื่อทำงานดังกล่าวคืออะไร? หาวิธี prompt agent ให้ไม่ทำงานผ่านการแก้ไขไฟล์โดยตรง คำใบ้: ขอให้ agent ใช้เครื่องมือ command-line ที่กล่าวถึงใน บทแรก
  6. Coding agent ส่วนใหญ่รองรับ “yolo mode” บางรูปแบบ (เช่น ใน Claude Code คือ --dangerously-skip-permissions) การใช้โหมดนี้โดยตรงไม่ปลอดภัย แต่อาจยอมรับได้หากรัน coding agent ในสภาพแวดล้อมที่แยกออกมาอย่าง virtual machine หรือ container แล้วจึงเปิดใช้งาน autonomous operation ให้ตั้งค่าระบบนี้บนเครื่องของคุณ เอกสารเช่น Claude Code devcontainer หรือ Docker Sandboxes / Claude Code อาจเป็นประโยชน์ มีหลายวิธีในการตั้งค่านี้

Edit this page.

Licensed under CC BY-NC-SA.