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 Loopconst 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);}// ✅ ปลอดภัย — มี guardfor (let i = 0; i < maxIterations; i++) { result = generator(feedback); review = reviewer(result); if (review.approved) break;}💡 Example: Agent Loop ใน action
// Generator: สร้าง draft จาก feedbackfunction generator(feedback) { if (feedback === 'initial') return 'draft v1'; if (feedback.includes('more detail')) return 'draft v2 — with more detail'; return 'final draft';}
// Reviewer: ตรวจสอบ draftfunction reviewer(draft) { if (draft.includes('final')) return { approved: true, feedback: '' }; return { approved: false, feedback: 'need more detail' };}
// Run the loopconst 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 จนกว่าจะผ่าน หรือครบจำนวนรอบ
-
Download ไฟล์เริ่มต้นของ quest:
Terminal window npx bluebeltdojo download quest-63-agent-loopcd quest-63-agent-loop -
เปิด
problem.jsใน editor ของคุณพร้อม AI tool -
Implement
agentLoop(generator, reviewer, maxIterations)ตาม instructions ในproblem.js -
ตรวจสอบ solution ของคุณ:
Terminal window node test.js -
สำคัญ! อ่าน failing tests อย่างละเอียด — โดยเฉพาะ never-approve edge case
-
แก้ไขจน tests ทุกตัวผ่าน
-
ส่งคำตอบ:
Terminal window npx bluebeltdojo submit
💡 Tip: ถ้าติดขัด ลองนึกถึง scenario ที่ reviewer ไม่เคย approve — loop ของคุณจะหยุดเมื่อไหร่?
คำใบ้
- อ่าน instructions ใน
problem.jsอย่างละเอียด - Edge case สำคัญ: ถ้า reviewer ไม่เคย approve, loop ต้องหยุดที่ maxIterations
- ทดสอบด้วย generator ที่ return ค่าเดิมเสมอ — loop ยังทำงานถูกต้องไหม?
- ถ้าติดขัด ลองอ่าน “Common Mistakes” อีกครั้ง