เริ่มต้นใช้งาน Loops ใน Claude Code

@ClaudeDevs
อังกฤษ11 ชั่วโมงที่ผ่านมา · 06 ก.ค. 2569
2.1M
9.9K
1.1K
193
21.4K

TL;DR

ทีมงาน Claude Code นิยาม Loops ว่าเป็นวงจรการทำงานของ Agent ที่จะทำซ้ำไปเรื่อย ๆ จนกว่าจะถึงเงื่อนไขที่กำหนดไว้ ซึ่งเป็นกรอบการทำงานสำหรับการทำระบบอัตโนมัติในงานเขียนโค้ดที่ต้องทำซ้ำ ๆ

มีกระแสพูดถึงมากมายในตอนนี้เกี่ยวกับ "การออกแบบลูป" แทนที่จะแค่พรอมต์เอเยนต์เขียนโค้ดของคุณ ถ้าคุณลองไปหาคำจำกัดความที่แน่ชัดใน X ว่าลูปจริงๆ แล้วคืออะไร คุณจะเจอคำตอบที่แตกต่างกันหลายแบบ

ที่ทีม Claude Code เรานิยาม ลูปว่าเป็นเอเยนต์ที่ทำซ้ำวงจรการทำงานจนกว่าจะตรงตามเงื่อนไขการหยุด เราแบ่งประเภทของลูปต่างๆ ตาม:

  • วิธีการเรียกใช้
  • วิธีการหยุด
  • พื้นฐาน (primitive) ของ Claude Code ที่ใช้
  • ประเภทของงานที่เหมาะสมที่สุดกับแต่ละแบบ

เราจะมาครอบคลุมประเภทลูปหลักๆ ว่าเมื่อไหร่ควรใช้แต่ละแบบ และวิธีรักษาคุณภาพโค้ดไปพร้อมกับการจัดการการใช้โทเค็น งานบางอย่างไม่จำเป็นต้องใช้ลูปที่ซับซ้อน เริ่มจากวิธีแก้ปัญหาที่ง่ายที่สุดแล้วค่อยเลือกใช้รูปแบบเหล่านี้ตามความเหมาะสม

ลูปแบบเทิร์น (Turn-based loops)

ClaudeDevs - inline image
  • ถูกเรียกใช้โดย: พรอมต์จากผู้ใช้
  • เงื่อนไขการหยุด: Claude ตัดสินว่างานเสร็จสมบูรณ์หรือต้องการข้อมูลเพิ่มเติม
  • เหมาะที่สุดสำหรับ: งานสั้นๆ ที่ไม่ได้เป็นส่วนหนึ่งของกระบวนการหรือตารางเวลาปกติ
  • จัดการการใช้งานโดย: เขียนพรอมต์ที่เจาะจงและปรับปรุงการตรวจสอบความถูกต้องโดยใช้สกิล (skills) เพื่อลดจำนวนเทิร์น

ทุกพรอมต์ที่คุณส่งไปจะเริ่มลูปแบบแมนนวลโดยที่คุณเป็นผู้ควบคุมแต่ละเทิร์น Claude จะรวบรวมบริบท ดำเนินการ ตรวจสอบงานของตัวเอง ทำซ้ำถ้าจำเป็น และตอบกลับ เราเรียกสิ่งนี้ว่าลูปแบบเอเยนต์ (agentic loop)

ตัวอย่างเช่น สั่งให้ Claude สร้างปุ่มไลค์ มันจะอ่านโค้ดของคุณ แก้ไข รันเทสต์ แล้วส่งคืนสิ่งที่มัน เชื่อว่า ใช้การได้ จากนั้นคุณตรวจสอบงานด้วยตัวเอง แล้วเขียนพรอมต์ถัดไป

คุณสามารถปรับปรุงขั้นตอนการตรวจสอบได้โดยการเข้ารหัสขั้นตอนแบบแมนนวลของคุณเป็นไฟล์ SKILL.md เพื่อให้ Claude ตรวจสอบงานของตัวเองได้มากขึ้นแบบครบวงจร ซึ่งควรรวมถึงเครื่องมือหรือตัวเชื่อมต่อที่ทำให้ Claude สามารถ เห็น, วัดผล หรือ โต้ตอบ กับผลลัพธ์ได้ ยิ่งการตรวจสอบเป็นเชิงปริมาณมากเท่าไหร่ Claude ก็จะยิ่งตรวจสอบตัวเองได้ง่ายขึ้นเท่านั้น

ตัวอย่างเช่น คุณอาจระบุในไฟล์ SKILL.md ดังนี้:

markdown
1---
2name: verify-frontend-change
3description: ตรวจสอบการเปลี่ยนแปลง UI แบบครบวงจรก่อนประกาศว่าเสร็จสมบูรณ์
4---
5
6# การตรวจสอบการเปลี่ยนแปลงฝั่ง frontend
7ห้ามรายงานว่าการเปลี่ยนแปลง UI เสร็จสมบูรณ์โดยพิจารณาจากการแก้ไขที่สำเร็จเพียงอย่างเดียว ให้ตรวจสอบแบบเดียวกับที่ผู้ตรวจสอบที่เป็นมนุษย์จะทำ:
8
91. เริ่มเซิร์ฟเวอร์สำหรับพัฒนาและเปิดหน้าที่แก้ไขในเบราว์เซอร์
10
112. โต้ตอบกับการเปลี่ยนแปลงโดยตรง สำหรับคอนโทรลใหม่ (ปุ่ม, ช่องกรอกข้อมูล, สวิตช์): คลิกมัน ยืนยันการเปลี่ยนแปลงสถานะที่คาดหวัง และแคปหน้าจอก่อน/หลัง
12
133. ตรวจสอบคอนโซลของเบราว์เซอร์: ต้องไม่มีข้อผิดพลาดหรือคำเตือนใหม่เลย
14
154. ใช้ Chrome Devtools MCP รันการติดตามประสิทธิภาพ (performance trace) และตรวจสอบ Core Web Vitals
16
17หากขั้นตอนใดล้มเหลว ให้แก้ไขปัญหาและเริ่มต้นใหม่ตั้งแต่ขั้นตอนที่ 1 — อย่าส่งมอบงานที่ตรวจสอบเพียงบางส่วน

ลูปตามเป้าหมาย (/goal)

ClaudeDevs - inline image
  • ถูกเรียกใช้โดย: พรอมต์แบบแมนนวลแบบเรียลไทม์
  • เงื่อนไขการหยุด: บรรลุเป้าหมาย หรือ ถึงจำนวนเทิร์นสูงสุด
  • เหมาะที่สุดสำหรับ: งานที่มีเกณฑ์การออกที่ตรวจสอบได้
  • จัดการการใช้งานโดย: การกำหนดเกณฑ์ความสำเร็จที่เฉพาะเจาะจงและวงเงินเทิร์นที่ชัดเจน เช่น “หยุดหลังจาก 5 ครั้ง”

บางครั้ง เทิร์นเดียวก็ไม่เพียงพอ โดยเฉพาะกับงานที่ซับซ้อน เอเยนต์จะทำงานได้ดีกว่าเมื่อสามารถทำซ้ำได้ คุณสามารถขยายระยะเวลาที่ Claude จะทำซ้ำต่อไปได้โดยการกำหนดว่างานเสร็จเรียบร้อยแล้วมีลักษณะอย่างไรด้วย /goal

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

นี่คือสาเหตุที่เกณฑ์ที่แน่นอน เช่น จำนวนเทสต์ที่ผ่าน หรือการถึงคะแนนที่กำหนด จึงมีประสิทธิภาพมาก

ตัวอย่างเช่น:

bash
1/goal ทำให้ Lighthouse score ของหน้าแรกเป็น 90 ขึ้นไป หยุดหลังจากลอง 5 ครั้ง

ลูปตามเวลา (/loop และ /schedule)

  • ถูกเรียกใช้โดย: ช่วงเวลาที่ระบุ
  • เงื่อนไขการหยุด: คุณยกเลิกมัน หรือ งานเสร็จสมบูรณ์ (PR ถูก merge, คิวว่าง)
  • เหมาะที่สุดสำหรับ: งานที่เกิดขึ้นเป็นประจำ หรือ การเชื่อมต่อกับสภาพแวดล้อม / ระบบภายนอก
  • จัดการการใช้งานโดย: ตั้งช่วงเวลาที่นานขึ้น หรือตอบสนองตามเหตุการณ์แทนที่จะเป็นเวลา

งานบางอย่างของเอเยนต์เกิดขึ้นเป็นประจำ: งานเดิม保持不变 แค่ input เปลี่ยนไป ตัวอย่างเช่น การสรุปข้อความ Slack ทุกเช้า งานอื่นๆ ขึ้นอยู่กับระบบภายนอก และวิธีง่ายๆ ในการเชื่อมต่อกับระบบเหล่านั้นคือการตรวจสอบเป็นช่วงๆ และตอบสนองต่อสิ่งที่เปลี่ยนแปลงไป ตัวอย่างเช่น PR ที่อาจได้รับรีวิวโค้ดหรือ CI ล้มเหลว

สำหรับกรณีเหล่านี้ คุณสามารถสั่งให้ Claude รันด้วย /loop ซึ่งจะรันพรอมต์ซ้ำตามช่วงเวลาที่กำหนด ตัวอย่างเช่น:

bash
1/loop 5m ตรวจสอบ PR ของฉัน ตอบกลับความคิดเห็นรีวิว และแก้ไข CI ที่ล้มเหลว

/loop รันบนคอมพิวเตอร์ของคุณ ดังนั้นถ้าคุณปิดเครื่อง มันก็จะหยุด คุณสามารถย้ายลูปไปยังคลาวด์ได้โดยสร้าง routine ด้วย /schedule

ลูปเชิงรุก (Proactive loops)

ClaudeDevs - inline image
  • ถูกเรียกใช้โดย: เหตุการณ์หรือตารางเวลา โดยไม่มีมนุษย์แบบเรียลไทม์
  • เงื่อนไขการหยุด: แต่ละงานจะออกเมื่อบรรลุเป้าหมาย ตัว routine เองจะรันจนกว่าคุณจะปิดมัน
  • เหมาะที่สุดสำหรับ: งานที่ชัดเจนและเกิดขึ้นเป็นประจำ: รายงานบั๊ก, การจัดหมวดหมู่ปัญหา (issue triage), การย้ายระบบ (migration), การอัปเกรด dependency ฯลฯ
  • จัดการการใช้งานโดย: ส่ง routine ไปยังโมเดลที่เล็กกว่าและเร็วกว่า และใช้โมเดลที่มีความสามารถมากที่สุดสำหรับการตัดสินใจ

พื้นฐาน (primitives) ข้างต้น พร้อมกับฟีเจอร์อื่นๆ ของ Claude Code เช่น โหมดอัตโนมัติ (auto mode) และ เวิร์กโฟลว์แบบไดนามิก (dynamic workflows) (ตัวอย่างวิจัย) สามารถประกอบกันเป็นลูปสำหรับงานที่รันเป็นเวลานานได้

ตัวอย่างเช่น เพื่อจัดการกับความคิดเห็นที่เข้ามา คุณสามารถใช้:

  1. `/schedule` (ตัวอย่างวิจัย) เพื่อรัน routine ที่ตรวจสอบรายงานใหม่
  2. `/goal` เพื่อกำหนดว่างานเสร็จเรียบร้อยมีลักษณะอย่างไร และ skills เพื่อบันทึกวิธีการตรวจสอบ
  3. เวิร์กโฟลว์แบบไดนามิก เพื่อจัดระเบียบเอเยนต์ที่จัดหมวดหมู่แต่ละรายงาน แก้ไข และตรวจสอบการแก้ไข
  4. โหมดอัตโนมัติ เพื่อให้ routine รันโดยไม่ต้องหยุดเพื่อขออนุญาต

เมื่อนำมารวมกัน พรอมต์จะมีลักษณะดังนี้:

bash
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

บันทึกในคลิกเดียว

อ่านบทความไวรัลเชิงลึกด้วย AI ใน YouMind

Save the source, ask focused questions, summarize the argument, and turn a viral article into reusable notes in one AI workspace.

Explore YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม