มีกระแสพูดถึงมากมายในตอนนี้เกี่ยวกับ "การออกแบบลูป" แทนที่จะแค่พรอมต์เอเยนต์เขียนโค้ดของคุณ ถ้าคุณลองไปหาคำจำกัดความที่แน่ชัดใน X ว่าลูปจริงๆ แล้วคืออะไร คุณจะเจอคำตอบที่แตกต่างกันหลายแบบ
ที่ทีม Claude Code เรานิยาม ลูปว่าเป็นเอเยนต์ที่ทำซ้ำวงจรการทำงานจนกว่าจะตรงตามเงื่อนไขการหยุด เราแบ่งประเภทของลูปต่างๆ ตาม:
- วิธีการเรียกใช้
- วิธีการหยุด
- พื้นฐาน (primitive) ของ Claude Code ที่ใช้
- ประเภทของงานที่เหมาะสมที่สุดกับแต่ละแบบ
เราจะมาครอบคลุมประเภทลูปหลักๆ ว่าเมื่อไหร่ควรใช้แต่ละแบบ และวิธีรักษาคุณภาพโค้ดไปพร้อมกับการจัดการการใช้โทเค็น งานบางอย่างไม่จำเป็นต้องใช้ลูปที่ซับซ้อน เริ่มจากวิธีแก้ปัญหาที่ง่ายที่สุดแล้วค่อยเลือกใช้รูปแบบเหล่านี้ตามความเหมาะสม
ลูปแบบเทิร์น (Turn-based loops)

- ถูกเรียกใช้โดย: พรอมต์จากผู้ใช้
- เงื่อนไขการหยุด: Claude ตัดสินว่างานเสร็จสมบูรณ์หรือต้องการข้อมูลเพิ่มเติม
- เหมาะที่สุดสำหรับ: งานสั้นๆ ที่ไม่ได้เป็นส่วนหนึ่งของกระบวนการหรือตารางเวลาปกติ
- จัดการการใช้งานโดย: เขียนพรอมต์ที่เจาะจงและปรับปรุงการตรวจสอบความถูกต้องโดยใช้สกิล (skills) เพื่อลดจำนวนเทิร์น
ทุกพรอมต์ที่คุณส่งไปจะเริ่มลูปแบบแมนนวลโดยที่คุณเป็นผู้ควบคุมแต่ละเทิร์น Claude จะรวบรวมบริบท ดำเนินการ ตรวจสอบงานของตัวเอง ทำซ้ำถ้าจำเป็น และตอบกลับ เราเรียกสิ่งนี้ว่าลูปแบบเอเยนต์ (agentic loop)
ตัวอย่างเช่น สั่งให้ Claude สร้างปุ่มไลค์ มันจะอ่านโค้ดของคุณ แก้ไข รันเทสต์ แล้วส่งคืนสิ่งที่มัน เชื่อว่า ใช้การได้ จากนั้นคุณตรวจสอบงานด้วยตัวเอง แล้วเขียนพรอมต์ถัดไป
คุณสามารถปรับปรุงขั้นตอนการตรวจสอบได้โดยการเข้ารหัสขั้นตอนแบบแมนนวลของคุณเป็นไฟล์ SKILL.md เพื่อให้ Claude ตรวจสอบงานของตัวเองได้มากขึ้นแบบครบวงจร ซึ่งควรรวมถึงเครื่องมือหรือตัวเชื่อมต่อที่ทำให้ Claude สามารถ เห็น, วัดผล หรือ โต้ตอบ กับผลลัพธ์ได้ ยิ่งการตรวจสอบเป็นเชิงปริมาณมากเท่าไหร่ Claude ก็จะยิ่งตรวจสอบตัวเองได้ง่ายขึ้นเท่านั้น
ตัวอย่างเช่น คุณอาจระบุในไฟล์ SKILL.md ดังนี้:
1---2name: verify-frontend-change3description: ตรวจสอบการเปลี่ยนแปลง UI แบบครบวงจรก่อนประกาศว่าเสร็จสมบูรณ์4---56# การตรวจสอบการเปลี่ยนแปลงฝั่ง frontend7ห้ามรายงานว่าการเปลี่ยนแปลง UI เสร็จสมบูรณ์โดยพิจารณาจากการแก้ไขที่สำเร็จเพียงอย่างเดียว ให้ตรวจสอบแบบเดียวกับที่ผู้ตรวจสอบที่เป็นมนุษย์จะทำ:891. เริ่มเซิร์ฟเวอร์สำหรับพัฒนาและเปิดหน้าที่แก้ไขในเบราว์เซอร์10112. โต้ตอบกับการเปลี่ยนแปลงโดยตรง สำหรับคอนโทรลใหม่ (ปุ่ม, ช่องกรอกข้อมูล, สวิตช์): คลิกมัน ยืนยันการเปลี่ยนแปลงสถานะที่คาดหวัง และแคปหน้าจอก่อน/หลัง12133. ตรวจสอบคอนโซลของเบราว์เซอร์: ต้องไม่มีข้อผิดพลาดหรือคำเตือนใหม่เลย14154. ใช้ Chrome Devtools MCP รันการติดตามประสิทธิภาพ (performance trace) และตรวจสอบ Core Web Vitals1617หากขั้นตอนใดล้มเหลว ให้แก้ไขปัญหาและเริ่มต้นใหม่ตั้งแต่ขั้นตอนที่ 1 — อย่าส่งมอบงานที่ตรวจสอบเพียงบางส่วน
ลูปตามเป้าหมาย (/goal)

- ถูกเรียกใช้โดย: พรอมต์แบบแมนนวลแบบเรียลไทม์
- เงื่อนไขการหยุด: บรรลุเป้าหมาย หรือ ถึงจำนวนเทิร์นสูงสุด
- เหมาะที่สุดสำหรับ: งานที่มีเกณฑ์การออกที่ตรวจสอบได้
- จัดการการใช้งานโดย: การกำหนดเกณฑ์ความสำเร็จที่เฉพาะเจาะจงและวงเงินเทิร์นที่ชัดเจน เช่น “หยุดหลังจาก 5 ครั้ง”
บางครั้ง เทิร์นเดียวก็ไม่เพียงพอ โดยเฉพาะกับงานที่ซับซ้อน เอเยนต์จะทำงานได้ดีกว่าเมื่อสามารถทำซ้ำได้ คุณสามารถขยายระยะเวลาที่ Claude จะทำซ้ำต่อไปได้โดยการกำหนดว่างานเสร็จเรียบร้อยแล้วมีลักษณะอย่างไรด้วย /goal
เมื่อคุณกำหนดเกณฑ์ความสำเร็จแล้ว Claude ไม่จำเป็นต้องตัดสินใจเองว่าอะไรคือ "ดีพอ" และจบลูปก่อนเวลาอันควร ทุกครั้งที่ Claude พยายามจะหยุด โมเดลผู้ประเมินจะตรวจสอบเงื่อนไขของคุณและส่งมันกลับไปทำงานจนกว่าจะบรรลุเป้าหมายหรือถึงจำนวนเทิร์นที่คุณกำหนด
นี่คือสาเหตุที่เกณฑ์ที่แน่นอน เช่น จำนวนเทสต์ที่ผ่าน หรือการถึงคะแนนที่กำหนด จึงมีประสิทธิภาพมาก
ตัวอย่างเช่น:
1/goal ทำให้ Lighthouse score ของหน้าแรกเป็น 90 ขึ้นไป หยุดหลังจากลอง 5 ครั้ง
ลูปตามเวลา (/loop และ /schedule)
- ถูกเรียกใช้โดย: ช่วงเวลาที่ระบุ
- เงื่อนไขการหยุด: คุณยกเลิกมัน หรือ งานเสร็จสมบูรณ์ (PR ถูก merge, คิวว่าง)
- เหมาะที่สุดสำหรับ: งานที่เกิดขึ้นเป็นประจำ หรือ การเชื่อมต่อกับสภาพแวดล้อม / ระบบภายนอก
- จัดการการใช้งานโดย: ตั้งช่วงเวลาที่นานขึ้น หรือตอบสนองตามเหตุการณ์แทนที่จะเป็นเวลา
งานบางอย่างของเอเยนต์เกิดขึ้นเป็นประจำ: งานเดิม保持不变 แค่ input เปลี่ยนไป ตัวอย่างเช่น การสรุปข้อความ Slack ทุกเช้า งานอื่นๆ ขึ้นอยู่กับระบบภายนอก และวิธีง่ายๆ ในการเชื่อมต่อกับระบบเหล่านั้นคือการตรวจสอบเป็นช่วงๆ และตอบสนองต่อสิ่งที่เปลี่ยนแปลงไป ตัวอย่างเช่น PR ที่อาจได้รับรีวิวโค้ดหรือ CI ล้มเหลว
สำหรับกรณีเหล่านี้ คุณสามารถสั่งให้ Claude รันด้วย /loop ซึ่งจะรันพรอมต์ซ้ำตามช่วงเวลาที่กำหนด ตัวอย่างเช่น:
1/loop 5m ตรวจสอบ PR ของฉัน ตอบกลับความคิดเห็นรีวิว และแก้ไข CI ที่ล้มเหลว
/loop รันบนคอมพิวเตอร์ของคุณ ดังนั้นถ้าคุณปิดเครื่อง มันก็จะหยุด คุณสามารถย้ายลูปไปยังคลาวด์ได้โดยสร้าง routine ด้วย /schedule
ลูปเชิงรุก (Proactive loops)

- ถูกเรียกใช้โดย: เหตุการณ์หรือตารางเวลา โดยไม่มีมนุษย์แบบเรียลไทม์
- เงื่อนไขการหยุด: แต่ละงานจะออกเมื่อบรรลุเป้าหมาย ตัว routine เองจะรันจนกว่าคุณจะปิดมัน
- เหมาะที่สุดสำหรับ: งานที่ชัดเจนและเกิดขึ้นเป็นประจำ: รายงานบั๊ก, การจัดหมวดหมู่ปัญหา (issue triage), การย้ายระบบ (migration), การอัปเกรด dependency ฯลฯ
- จัดการการใช้งานโดย: ส่ง routine ไปยังโมเดลที่เล็กกว่าและเร็วกว่า และใช้โมเดลที่มีความสามารถมากที่สุดสำหรับการตัดสินใจ
พื้นฐาน (primitives) ข้างต้น พร้อมกับฟีเจอร์อื่นๆ ของ Claude Code เช่น โหมดอัตโนมัติ (auto mode) และ เวิร์กโฟลว์แบบไดนามิก (dynamic workflows) (ตัวอย่างวิจัย) สามารถประกอบกันเป็นลูปสำหรับงานที่รันเป็นเวลานานได้
ตัวอย่างเช่น เพื่อจัดการกับความคิดเห็นที่เข้ามา คุณสามารถใช้:
- `/schedule` (ตัวอย่างวิจัย) เพื่อรัน routine ที่ตรวจสอบรายงานใหม่
- `/goal` เพื่อกำหนดว่างานเสร็จเรียบร้อยมีลักษณะอย่างไร และ skills เพื่อบันทึกวิธีการตรวจสอบ
- เวิร์กโฟลว์แบบไดนามิก เพื่อจัดระเบียบเอเยนต์ที่จัดหมวดหมู่แต่ละรายงาน แก้ไข และตรวจสอบการแก้ไข
- โหมดอัตโนมัติ เพื่อให้ routine รันโดยไม่ต้องหยุดเพื่อขออนุญาต
เมื่อนำมารวมกัน พรอมต์จะมีลักษณะดังนี้:
1/schedule ทุกชั่วโมง: ตรวจสอบช่อง project-feedback เพื่อหารายงานบั๊ก /goal: อย่าหยุดจนกว่ารายงานทั้งหมดที่พบในรอบนี้จะถูกจัดหมวดหมู่ ดำเนินการ และตอบกลับ เมื่อแก้ไขบั๊ก ให้ใช้เวิร์กโฟลว์เพื่อสำรวจสามวิธีแก้ไขใน worktrees แบบขนาน และให้ผู้ตัดสิน (judge) ตรวจสอบอย่างเป็นปฏิปักษ์ (adversarially review)
การรักษาคุณภาพโค้ด
คุณภาพของ output ของลูปขึ้นอยู่กับระบบรอบๆ มัน เมื่อออกแบบระบบ:
- รักษาโค้ดเบสให้สะอาด: Claude จะทำตามแพทเทิร์นและธรรมเนียมปฏิบัติที่มีอยู่ในโค้ดเบสของคุณ
- ให้วิธีให้ Claude ตรวจสอบงานของตัวเอง: เข้ารหัสว่าสิ่งที่ดีมีลักษณะอย่างไรสำหรับคุณและทีมของคุณด้วย skills
- ทำให้เอกสารเข้าถึงได้ง่าย: เอกสารของเฟรมเวิร์กและไลบรารีมีแนวทางปฏิบัติที่ดีที่สุดที่ทันสมัย
- ใช้เอเยนต์ตัวที่สองสำหรับรีวิวโค้ด: ผู้ตรวจสอบที่มีบริบทใหม่จะมีความลำเอียงน้อยกว่าและไม่ได้รับอิทธิพลจากเหตุผลของเอเยนต์หลัก คุณสามารถใช้สกิล
/code-reviewในตัวหรือ Code Review สำหรับ Github
เมื่อผลลัพธ์แต่ละรายการไม่ได้มาตรฐาน อย่าหยุดแค่การแก้ไขปัญหาเฉพาะหน้า แต่พยายามเข้ารหัสมันเพื่อปรับปรุงระบบสำหรับการทำงานซ้ำในอนาคตทั้งหมด
การจัดการการใช้โทเค็น
เพื่อจัดการการใช้โทเค็น ลูปควรมีขอบเขตที่ชัดเจน:
- เลือก primitive และโมเดลที่เหมาะสมกับงาน: งานเล็กๆ ไม่จำเป็นต้องใช้หลายเอเยนต์หรือลูป งานบางอย่างสามารถใช้โมเดลที่ถูกกว่าและเร็วกว่าได้
- กำหนดเกณฑ์ความสำเร็จและการหยุดที่ชัดเจน: ระบุให้ชัดเจนว่างานเสร็จเรียบร้อยมีลักษณะอย่างไร เพื่อให้ Claude ไปถึงคำตอบได้เร็วขึ้น (แต่ไม่เร็วเกินไป)
- ทดลองนำร่องก่อนรันขนาดใหญ่: เวิร์กโฟลว์แบบไดนามิกสามารถสร้างเอเยนต์ได้หลายร้อยตัว วัดการใช้งานจากงานส่วนย่อยที่เล็กลงก่อน
- ใช้สคริปต์สำหรับงานที่แน่นอน: การรันสคริปต์ถูกกว่าการใช้เหตุผลผ่านขั้นตอนต่างๆ ตัวอย่างเช่น สกิล PDF สามารถส่งสคริปต์กรอกฟอร์มที่ Claude รันทุกครั้ง แทนที่จะต้องได้รหัสใหม่มาใหม่
- อย่ารัน routine บ่อยเกินความจำเป็น: จับคู่ช่วงเวลาให้ตรงกับความถี่ที่สิ่งที่คุณกำลังตรวจสอบเปลี่ยนแปลง
- ตรวจสอบการใช้งาน: คำสั่ง
/usageจะแสดงรายละเอียดการใช้งานล่าสุดแยกตาม skills, subagents และ MCPs,/goalโดยไม่มีอาร์กิวเมนต์จะแสดงจำนวนเทิร์นและการใช้โทเค็นจนถึงตอนนั้น ส่วน/workflowsจะแสดงการใช้โทเค็นของแต่ละเอเยนต์ และคุณสามารถหยุดเอเยนต์ได้ตลอดเวลา
การเริ่มต้นใช้งาน
โดยสรุป:
ลูป
คุณส่งต่อ
ใช้เมื่อ
เลือกใช้
แบบเทิร์น
การตรวจสอบ
คุณกำลังสำรวจหรือตัดสินใจ
สกิลการตรวจสอบแบบกำหนดเอง
ตามเป้าหมาย
เงื่อนไขการหยุด
คุณรู้ว่างานเสร็จเรียบร้อยมีลักษณะอย่างไร
/goal
ตามเวลา
ตัวกระตุ้น
งานเกิดขึ้นภายนอกโปรเจกต์ของคุณตามตารางเวลา
/loop
,
/schedule
เชิงรุก
พรอมต์
งานเกิดขึ้นเป็นประจำและชัดเจน
ทั้งหมดที่กล่าวมา และเวิร์กโฟลว์แบบไดนามิก
ในการเริ่มต้นใช้งานลูป ให้ดูงานที่คุณทำอยู่แล้ว เลือกงานหนึ่งที่คุณเป็นคอขวด แล้วถามว่าชิ้นส่วนไหนที่คุณสามารถส่งต่อได้: คุณเขียนเงื่อนไขการตรวจสอบได้ไหม? เป้าหมายชัดเจนพอหรือไม่? งานเข้ามาตามตารางเวลาหรือเปล่า?
เมื่อคุณมีความคิดแล้ว ให้รันลูป สังเกตผลลัพธ์ว่ามันหยุดชะงักหรือทำเกินขอบเขตตรงไหน และอย่ากลัวที่จะปรับปรุงมันซ้ำๆ
สำหรับข้อมูลเพิ่มเติม อ่านเอกสาร Claude Code เกี่ยวกับ การรันเอเยนต์แบบขนาน รวมถึงหน้า loop, schedule, goal และ เวิร์กโฟลว์แบบไดนามิก
บทความนี้เขียนโดย @delba_oliveira




