โดยทั่วไปแล้ว human-in-the-loop ของ coding agent มักถูกอธิบายว่าเป็นเพียงการตั้งค่าอย่างหนึ่ง นั่นคือโหมดที่เครื่องมือจะถามก่อนลงมือแก้ไข นั่นเป็นวงจรเดียว และเป็นวงจรที่เล็กที่สุดด้วย มันทำงานอยู่ภายในเทอร์มินัลของนักพัฒนาคนเดียว ในหนึ่งเซสชัน และเลือนหายไปทันทีที่เซสชันจบลง ทีมที่คิดว่าตนมีการกำกับดูแลโดยมนุษย์เพียงเพราะทุกคนตั้ง Claude Code ไว้ในโหมด Manual นั้น แท้จริงแล้วกำลังกำกับดูแลแค่การกดปุ่ม ไม่ใช่ผลลัพธ์
คู่มือนี้จะอธิบายเวิร์กโฟลว์การรีวิวในรูปแบบของห้าด่าน ตั้งแต่พรอมป์ต์ขออนุญาตภายในรันไทม์ ไปจนถึงการตัดสินใจยอมรับบนบันทึกที่แชร์ร่วมกัน พร้อมระบุว่าใครเป็นผู้ตัดสินใจในแต่ละด่าน และการตัดสินใจนั้นถูกบันทึกไว้ที่ไหน ด่านระดับรันไทม์มาจากเอกสารของเครื่องมือเอง ส่วนด่านระดับทีมใช้ Sharkly เพราะ Sharkly บันทึกด่านเหล่านั้นไว้บน Task แทนที่จะปล่อยให้ไปอยู่ในประวัติการเลื่อนหน้าจอของใครสักคน หากคุณอยากได้นิยามของแนวปฏิบัตินี้ก่อน คู่มือของเราเกี่ยวกับ การจัดการโปรเจกต์ด้วย AI agent ครอบคลุมวงจรที่เวิร์กโฟลว์นี้ดำเนินอยู่
สรุปสั้น
เวิร์กโฟลว์การรีวิวแบบ human-in-the-loop สำหรับ coding agent มีห้าด่านด้วยกัน ได้แก่ โหมดขออนุญาตของรันไทม์, การยืนยันแผนก่อนที่งานจะกลายเป็น Task, ขอบเขตการลงมือทำงานที่กำหนดว่าเมื่อใดการรันจะเริ่มได้, สัญญาณเรียกความสนใจที่ส่งการรีวิวไปยังบุคคลที่มีชื่อระบุไว้ และการยอมรับที่บันทึกผ่านการเปลี่ยนสถานะโดยบุคคลนั้น มีเพียงด่านแรกเท่านั้นที่เป็นการตั้งค่าของเครื่องมือ อีกสี่ด่านที่เหลือเป็นการตัดสินใจของทีม และต้องมีบันทึกที่แชร์ร่วมกันจึงจะถือเป็นจริงได้ Agent ทำหน้าที่ค้นคว้า ลงมือทำ ทดสอบ และรายงานผล ส่วนคนเป็นผู้กำหนดทิศทาง มอบอำนาจ และยอมรับผลลัพธ์
ด่านที่ 1: โหมดขออนุญาตภายในรันไทม์
coding agent ตัวจริงทุกตัวมาพร้อมปุ่มขออนุมัติ โหมดขออนุญาตของ Claude Code มีตั้งแต่ default ซึ่งมีป้ายกำกับว่า Manual และจะถามก่อนแก้ไข รันคำสั่งเชลล์ และเข้าถึงเครือข่าย ผ่าน acceptEdits, plan และ auto ซึ่งมีโมเดลตัวที่สองที่เรียกว่า classifier เป็นผู้รีวิวการกระทำแทนคุณ ไปจนถึง bypassPermissions สำหรับคอนเทนเนอร์ที่แยกออกมาอย่างเดียวเท่านั้น สลับได้ด้วย Shift+Tab หรือ --permission-mode ส่วน Codex เปิดเผยแนวคิดเดียวกันผ่านคำสั่ง /permissions ซึ่งกำหนดว่าเมื่อใดจึงจะแก้ไฟล์หรือรันคำสั่งได้โดยไม่ต้องถาม
ด่านนี้จำเป็นแต่ยังไม่เพียงพอ เพราะมันเป็นรายเซสชันและรายนักพัฒนา อีกทั้งยังปกป้องตัวเครื่องมากกว่าปกป้องความต้องการของงาน และไม่ทิ้งบันทึกใด ๆ ที่เพื่อนร่วมทีมจะอ่านได้ ปัจจุบันบนแพลน Pro, Max และ Team นั้น Claude Code เริ่มต้นในโหมด auto โดยค่าเริ่มต้น ซึ่งเป็นทางเลือกที่สมเหตุสมผล เพราะ classifier นั้นเร็วกว่าและสม่ำเสมอกว่ามนุษย์ที่เหนื่อยล้าคอยกดตอบตกลง บทเรียนไม่ได้อยู่ที่การฝืนปุ่มหมุนนั้น แต่อยู่ที่การเลิกมองว่าปุ่มหมุนคือการรีวิว
ด่านที่ 2: การยืนยันแผน
ด่านระดับทีมด่านแรกเกิดขึ้นก่อนที่โค้ดจะถือกำเนิดขึ้นด้วยซ้ำ ใน Agent chat ของ Sharkly โหมด Plan ให้ Agent เสนอการกระทำเพื่อให้คุณรีวิว และ Task กับ sub-task ที่วางแผนไว้จะถูกสร้างขึ้นก็ต่อเมื่อมีคนยืนยันข้อเสนอนั้นแล้วเท่านั้น คุณจะยืนยันโดยไม่เริ่มงาน หรือยืนยันแล้วเริ่มงานเลยก็ได้
นี่คือจุดที่ขอบเขตของงานถูกกำหนด และราคาถูกด้วย การแก้ sub-task ที่เสนอมาคิดเป็นเวลาแค่ไม่กี่นาที แต่การต้องมารีวิวการ refactor ที่ไม่มีใครขออาจกินเวลาไปครึ่งวัน เลือก Explore ไว้เมื่อคุณต้องการแค่การวิเคราะห์ ใช้ Crew เมื่อหัวหน้าทีมต้องตีความเป้าหมายและดึงสมาชิก Agent คนอื่นมาร่วมด้วย และใช้ Agent เดี่ยวพร้อมข้ามพิธีกรรมนี้ไปเลยเมื่อมีบทบาทเดียวที่ครอบคลุมงานทั้งหมด คู่มือของเราเกี่ยวกับการแชตกับ AI agent หรือการมอบหมาย Taskอธิบายสามโหมดนี้ไว้
ด่านที่ 3: ขอบเขตการลงมือทำงาน
Task ที่มอบหมายให้ Agent จะไม่เริ่มทำงานตราบใดที่ยังอยู่ใน Backlog การย้ายมันไปยังสถานะที่มีหมวดหมู่พร้อมทำงานต่างหากที่ทำให้การรันเริ่มขึ้น โดยหมวดหมู่ completed, canceled และ duplicate จะไม่ทำให้เกิดการรันครั้งแรกเลย ดังนั้นหมวดหมู่สถานะจึงเป็นด่านที่คนเป็นผู้สั่งการอย่างตั้งใจ และมองเห็นได้บนบอร์ด
มีสองสิ่งทำให้ด่านนี้ไม่ใช่แค่พิธีการ อย่างแรกคือการรันแต่ละครั้งได้ไดเรกทอรีที่แยกออกมา และการรันที่ผูกกับรีโปจะเตรียม worktree ใหม่ให้ การรันที่ได้รับอนุมัติจึงทำลายการรันที่ไม่มีใครอนุมัติไม่ได้ อย่างที่สองคือการรันจะพาข้อมูล Task description, คอมเมนต์ล่าสุด และประเภท Task แบบ Workflow ติดไปด้วย ซึ่งจำกัดว่าสถานะใดที่ Agent เลือกได้ Agent จะไม่สามารถทำเครื่องหมายว่างานของตัวเองได้รับการยอมรับได้ หาก Workflow ไม่ได้ให้สถานะนั้นแก่ Agent บทความของเราเกี่ยวกับ Git worktree กับ AI coding agent อธิบายเรื่องการแยกส่วนนี้ไว้
ด่านที่ 4: สัญญาณเรียกความสนใจ
Agent จบการรันได้ในหนึ่งในสองจุดที่มีประโยชน์ คือจบพร้อมผลลัพธ์ หรือจบพร้อมคำถาม Sharkly ตั้งชื่อไว้ทั้งสองแบบ Agent สามารถปล่อย Task ให้อยู่ในสถานะรอคำตอบจากมนุษย์ หรือรอการรีวิวจากมนุษย์ได้ ส่วนงานที่ล้มเหลวหรือถูกบล็อกจะปรากฏขึ้นเป็นรายการที่ต้องให้ความสนใจ สัญญาณเหล่านี้จะไปถึง Inbox ในส่วน Primary สำหรับผู้รับผิดชอบ และความล้มเหลวของการรันจะส่งไปยังผู้ที่ได้รับมอบหมาย ไม่ใช่ถึงผู้ติดตามทุกคน
ด่านตรงนี้คือการกำหนดเส้นทางส่ง ซึ่งเป็นด่านที่ทีมส่วนใหญ่พลาดโดยไม่ตั้งใจ การรีวิวที่ส่งไปยังช่องแชตนั้นเท่ากับส่งไปให้ไม่มีใคร ส่วนการรีวิวที่ส่งไปยังผู้รับผิดชอบที่เป็นมนุษย์ บน Task โดยมี execution log ห่างออกไปแค่คลิกเดียว คือการส่งไปถึงคนที่ถูกถามย้อนหลังได้จริง คู่มือของเราเกี่ยวกับ AI agent inbox อธิบายกลไกของคิวไว้
การตอบกลับก็เป็นวิธีที่งานดำเนินต่อไปเช่นกัน คอมเมนต์ของสมาชิกบน Task ที่มี Agent ผู้ได้รับมอบหมายพร้อมทำงานอยู่สามารถเข้าคิวเพื่อรันอีกรอบได้ ฟีดแบ็กจากการรีวิวจึงต่อยอดงานเดิมแทนที่จะเริ่มกระบวนการใหม่ ส่วนการ mention บุคคลหรือการ mention ทั้งหมดไม่ได้ทำให้ Agent เริ่มทำงานโดยตัวมันเอง ซึ่งช่วยไม่ให้บทสนทนาระหว่างคนด้วยกันไปปลุก Agent ขึ้นมา
ด่านที่ 5: การยอมรับบนบันทึก
การยอมรับคือการที่คนคนหนึ่งเปลี่ยนสถานะ Task หลังจากอ่านหลักฐานแล้ว ให้อ่านตามลำดับนี้ เกณฑ์การยอมรับใน description, คอมเมนต์ของ Agent ที่ระบุการตรวจสอบที่มันรันไปและสิ่งที่ยังไม่แน่ชัด, execution log แล้วจึงค่อยดู diff บันทึกนี้เก็บเหตุผลว่าทำไมการรันจึงถูกเข้าคิว เวลาเริ่มและสิ้นสุด การเรียกใช้เครื่องมือและเหตุการณ์ของ Runtime แหล่งที่มาของทริกเกอร์ และรายละเอียดความล้มเหลว มันคือความแตกต่างระหว่างการรีวิวการเปลี่ยนแปลง กับการรีวิวเรื่องเล่าเกี่ยวกับการเปลี่ยนแปลง
มีสองกฎที่ปกป้องด่านนี้ กฎแรก การ merge pull request ที่เชื่อมโยงไว้จะไม่เปลี่ยนสถานะ Task ดังนั้นการ merge จึงไม่มีทางถูกเข้าใจผิดว่าเป็นการยอมรับ กฎที่สอง การรัน Automation ที่เสร็จสมบูรณ์นั้นบรรยายถึงการรันเท่านั้น ไม่ใช่คำสัญญาว่าผลลัพธ์ปลายทางทุกอย่างจะถูกต้อง ทั้งสองข้อมาจากเอกสารของผลิตภัณฑ์โดยตรง และทั้งสองข้อมีอยู่เพราะทีมต่าง ๆ ยังคงสับสนระหว่างคำว่าเสร็จ กับคำว่าถูกต้อง
เวิร์กโฟลว์ในตารางเดียว
| ด่าน | คำถามที่ด่านนี้ตอบ | ใครตัดสินใจ | บันทึกไว้ที่ไหน |
|---|---|---|---|
| โหมดขออนุญาต | เซสชันนี้แตะสิ่งนั้นได้ไหม? | นักพัฒนา | ไม่ได้แชร์ที่ไหน |
| การยืนยันแผน | การแบ่งงานแบบนี้ถูกต้องหรือไม่? | คนคนหนึ่ง บนข้อเสนอที่วางไว้ | sub-task ที่ได้รับการยืนยันแล้ว |
| ขอบเขตการลงมือทำงาน | Task นี้เริ่มรันได้หรือยัง? | ใครก็ตามที่ย้ายมันออกจาก Backlog | การเปลี่ยนสถานะใน Activity |
| สัญญาณเรียกความสนใจ | ใครต้องเข้ามาดู และดูอะไร? | Sharkly ส่งต่อไปยังผู้ได้รับมอบหมาย | Inbox ส่วน Primary และตัว Task |
| การยอมรับ | ผลลัพธ์ถูกต้องหรือไม่? | ผู้ได้รับมอบหมายที่เป็นมนุษย์ | การเปลี่ยนสถานะโดยบุคคลที่มีชื่อระบุไว้ |
เมื่อใดควรเปิดด่านให้กว้างขึ้น
ไม่ใช่ทุก Task ที่สมควรมีห้าจุดหยุด และการแสร้งว่าเป็นเช่นนั้นคือหนทางที่ทำให้การรีวิวกลายเป็นละคร งานที่อ่านอย่างเดียว เช่น การตรวจสอบรีโป ต้องการแค่ด่านที่ 1 กับด่านที่ 5 งานที่ย้อนกลับได้ใน worktree ที่แยกออกมา เช่น การอัปเดต dependency พร้อมเทสต์ สามารถข้ามการยืนยันแผนได้ ส่วน Automation ที่รันตามกำหนดการควรมีคำสั่งระบุว่าเมื่อใดที่คนต้องเข้ามารีวิวหรือตัดสินใจ และควรถูกสั่งรันด้วยมือและตรวจสอบก่อนที่ใครจะพึ่งพากำหนดการนั้น คู่มือของเราเกี่ยวกับ Automation ใน Sharkly อธิบายเรื่องนี้ไว้
ให้คงทั้งห้าด่านไว้สำหรับทุกสิ่งที่ไม่ว่าจะเป็นการเปลี่ยน public interface, แตะต้องข้อมูล หรือไม่สามารถย้อนกลับได้ด้วยคำสั่งเดียว และให้ยึดกฎหนึ่งข้อไว้ทุกที่ นั่นคือทุก Agent Task ต้องมีผู้รับผิดชอบที่เป็นมนุษย์และระบุชื่อไว้ Sharkly แยกความรับผิดชอบของมนุษย์ออกจากการลงมือทำงานของ Agent อย่างจงใจ Task หนึ่งจึงมีทั้งคนที่ได้รับมอบหมายและ Agent ที่ได้รับมอบหมายพร้อมกันได้ ความรับผิดชอบไม่อาจมอบหมายต่อ และบันทึกควรแสดงให้เห็นว่าใครถือมันอยู่
human-in-the-loop ไม่ใช่สิ่งเหล่านี้
มันไม่ใช่การที่คนคนหนึ่งนั่งเฝ้าเทอร์มินัล ไม่ใช่พรอมป์ต์ขออนุญาตที่มีนักรีวิวสุดเหนื่อยล้าอยู่เบื้องหลัง และไม่ใช่สถานะที่เขียนว่า Completed ระบบอัตโนมัติจะหยุดตรงจุดที่ต้องใช้วิจารณญาณของทีม และส่งมอบงานที่กลับมาพร้อมบริบทครบถ้วนและหลักฐานที่ตรวจสอบได้ ประโยคนี้คือเวิร์กโฟลว์ทั้งหมด ส่วนด่านต่าง ๆ เป็นเพียงจุดที่มันถูกบังคับใช้ Sharkly ไม่ใช่ตัวแทนของ Claude Code, Codex หรือเครื่องมือลงมือทำงานอื่น ๆ แต่เป็นชั้นที่คอยบันทึกการตัดสินใจเหล่านี้ไว้เป็นลายลักษณ์อักษร
คำถามที่พบบ่อย
โหมด auto ใน Claude Code ทำให้มนุษย์หลุดออกจากวงจรหรือไม่? มันทำให้มนุษย์หลุดออกจากพรอมป์ต์ขออนุญาตต่างหาก classifier จะรีวิวการกระทำเทียบกับคำขอของคุณ แต่ไม่ได้รีวิวว่าผลลัพธ์ตรงตามความต้องการหรือไม่ ด่านที่ 2 ถึง 5 ยังคงเป็นของคน
จะหยุด Agent กลางคันได้อย่างไร? การรันที่อยู่ในคิวหรือกำลังรันอยู่สามารถยกเลิกได้ การย้าย Task ไปยังสถานะ Canceled หรือ Duplicate ก็หยุดการรันที่ทำงานอยู่เช่นกัน แต่การย้ายไปยัง Completed ไม่หยุด ดังนั้นให้ยกเลิกก่อนหาก Agent ยังทำงานอยู่
ใครควรเป็นนักรีวิว? ผู้รับมอบหมายที่เป็นมนุษย์บน Task นั้น Sharkly จะส่งสัญญาณรอการรีวิวและสัญญาณความล้มเหลวไปยังคนคนนั้น ซึ่งเป็นเหตุผลว่าทำไมทุก Agent Task ควรระบุชื่อคนหนึ่งเอาไว้ คู่มือของเราเกี่ยวกับ Agent ใน Sharkly อธิบายช่องการมอบหมายทั้งสองแบบไว้
ฟีดแบ็กจากการรีวิวส่งกลับไปยัง Agent ได้โดยไม่ต้องสร้าง Task ใหม่หรือไม่? ได้ คอมเมนต์บน Task สามารถเข้าคิวการรันต่อเนื่องให้กับ Agent ที่ได้รับมอบหมายได้ และคอมเมนต์ที่ส่งถี่ ๆ จะถูกรวบรวมเข้าด้วยกันเพื่อไม่ให้เกิดการรันซ้ำซ้อน



