skipLink.label

Quest 63 - Agent Loop Builder

Quest 63: Agent Loop Builder

medium 25-30 minutes

🎯 Learning Objectives

  • ✅ เข้าใจ Agent Loop รูปแบบ generate → review → fix
  • ✅ รู้จัก max iterations guard ป้องกัน infinite loop
  • ✅ ติดตาม iteration history และ feedback ระหว่าง loop
  • ✅ สร้าง workflow ที่ terminates อย่างถูกต้องแม้ reviewer ไม่เคย approve

📖 Concept: Agent Loop Pattern

Agent Loop คือหนึ่งใน pattern ที่สำคัญที่สุดของ Agentic Workflows — มันคือรอบการทำงานที่ agent สร้างงาน → ตรวจสอบ → แก้ไข → วนซ้ำ จนกว่าจะได้ผลลัพธ์ที่ยอมรับได้

ลองนึกภาพว่าคุณกำลังเขียนบทความ — คุณเขียนร่างแรก แล้วให้ editor ตรวจสอบ ถ้า editor บอกว่ายังไม่ดีพอ คุณก็แก้ไขแล้วส่งตรวจสอบอีกครั้ง Agent Loop ทำแบบเดียวกันแต่เป็น code

// วงจร Agent Loop
const result = agentLoop(generator, reviewer, maxIterations);
// generator: สร้าง draft จาก feedback ก่อนหน้า
// reviewer: ตรวจสอบ draft แล้ว approve/reject พร้อม feedback
// maxIterations: จำนวนรอบสูงสุด (ป้องกัน infinite loop!)

สิ่งที่สำคัญคือ ทุก loop ต้องมี exit condition — ไม่เช่นนั้นถ้า reviewer ไม่เคย approve loop จะทำงานตลอดกาล


⚙️ How It Works

วงจร Agent Loop

1. generator สร้าง draft จาก 'initial' (รอบแรก) หรือ feedback ก่อนหน้า
↓
2. reviewer ตรวจสอบ draft
↓
3. ถ้า approved === true → หยุด loop, return result
↓
4. ถ้า approved === false → บันทึก history, วนซ้ำกับ feedback ใหม่
↓
5. ถ้า iterations >= maxIterations → หยุด loop, return draft สุดท้าย

ทำไมต้องมี Max Iterations?

ในโลกจริง reviewer อาจไม่เคยพอใจ หรือ generator อาจไม่สามารถสร้างงานที่ดีพอได้ ถ้าไม่มี max iterations guard:

// ❌ อันตราย! Loop ไม่มีวันหยุด
while (!review.approved) {
result = generator(review.feedback);
review = reviewer(result);
}
// ✅ ปลอดภัย — มี guard
for (let i = 0; i < maxIterations; i++) {
result = generator(feedback);
review = reviewer(result);
if (review.approved) break;
}

💡 Example: Agent Loop ใน action

// Generator: สร้าง draft จาก feedback
function generator(feedback) {
if (feedback === 'initial') return 'draft v1';
if (feedback.includes('more detail')) return 'draft v2 — with more detail';
return 'final draft';
}
// Reviewer: ตรวจสอบ draft
function reviewer(draft) {
if (draft.includes('final')) return { approved: true, feedback: '' };
return { approved: false, feedback: 'need more detail' };
}
// Run the loop
const result = agentLoop(generator, reviewer, 5);
console.log(result);
// {
// result: 'final draft',
// iterations: 3,
// history: [
// { iteration: 1, draft: 'draft v1', approved: false, feedback: 'need more detail' },
// { iteration: 2, draft: 'draft v2 — with more detail', approved: false, feedback: 'need more detail' },
// { iteration: 3, draft: 'final draft', approved: true, feedback: '' }
// ]
// }

สังเกต: ทุก iteration ถูกบันทึกใน history — ทำให้เราเห็นว่า feedback แต่ละรอบเปลี่ยนแปลง draft อย่างไร


⚠️ Common Mistakes

Mistake 1: ไม่มี max iterations guard

“Reviewer ต้อง approve สักวัน” → ไม่เสมอไป! ต้องมี max iterations เพื่อป้องกัน infinite loop

Mistake 2: ไม่ส่ง feedback ให้ generator

generator ได้รับ ‘initial’ ทุกรอบ → ต้องส่ง feedback จาก review ก่อนหน้าให้ generator เพื่อให้รู้ว่าต้องแก้ไขอะไร

Mistake 3: ไม่บันทึก iteration history

“แค่ return result ก็พอ” → History ช่วย debug และเข้าใจว่า loop ทำงานอย่างไร — มันคือ audit trail

Mistake 4: คิดว่า iteration = ความล้มเหลว

“Loop หลายรอบ = ไม่ดี” → ไม่จริง! Agent loop ที่ดี ควร วนหลายรอบ — นั่นคือจุดประสงค์ของมัน


📝 Knowledge Check

📝 Knowledge Check

Q1:Agent Loop ทำอะไร?

Q2:ทำไมต้องมี max iterations guard?

Q3:ข้อผิดพลาดใดที่พบบ่อยที่สุดของ Agent Loop?


🏋️ Quest: Agent Loop Builder

สร้าง Agent Loop ที่หมุนวน generate → review → fix จนกว่าจะผ่าน หรือครบจำนวนรอบ

  1. Download ไฟล์เริ่มต้นของ quest:

    Terminal window
    npx bluebeltdojo download quest-63-agent-loop
    cd quest-63-agent-loop
  2. เปิด problem.js ใน editor ของคุณพร้อม AI tool

  3. Implement agentLoop(generator, reviewer, maxIterations) ตาม instructions ใน problem.js

  4. ตรวจสอบ solution ของคุณ:

    Terminal window
    node test.js
  5. สำคัญ! อ่าน failing tests อย่างละเอียด — โดยเฉพาะ never-approve edge case

  6. แก้ไขจน tests ทุกตัวผ่าน

  7. ส่งคำตอบ:

    Terminal window
    npx bluebeltdojo submit

💡 Tip: ถ้าติดขัด ลองนึกถึง scenario ที่ reviewer ไม่เคย approve — loop ของคุณจะหยุดเมื่อไหร่?


คำใบ้

  • อ่าน instructions ใน problem.js อย่างละเอียด
  • Edge case สำคัญ: ถ้า reviewer ไม่เคย approve, loop ต้องหยุดที่ maxIterations
  • ทดสอบด้วย generator ที่ return ค่าเดิมเสมอ — loop ยังทำงานถูกต้องไหม?
  • ถ้าติดขัด ลองอ่าน “Common Mistakes” อีกครั้ง