- เวิร์กโฟลว์แบบไดนามิก คือฟีเจอร์ที่ให้ Claude Code เขียน ฮาร์เนส (harness) ที่เหมาะกับงานนั้น ๆ ขึ้นมาเองแบบสด ๆ ทำให้ฮาร์เนสแบบปรับแต่งที่เดิมต้องสร้างแยก สามารถจัดการได้แบบเนทีฟภายในตัวโค้ด
- รันไฟล์ JavaScript เพื่อสร้างและประสานงาน ซับเอเจนต์ (subagents) พร้อมเลือกได้ทั้งโมเดลที่แต่ละเอเจนต์จะใช้และจะเปิดใช้การแยก worktree หรือไม่
- ป้องกัน failure mode อย่าง agentic laziness, self-preferential bias, goal drift ที่เกิดในหน้าต่างคอนเท็กซ์เดียว ได้อย่างเป็นโครงสร้างด้วยการแยกคอนเท็กซ์
- ใช้ได้ไม่เฉพาะงานเขียนโค้ด แต่รวมถึงงานที่ไม่ใช่เชิงเทคนิคอย่าง migration, deep research, การจัดอันดับ, triage, การสืบหาสาเหตุราก
- ใช้โทเคนค่อนข้างมากจึงไม่จำเป็นสำหรับทุกงาน แต่เป็นจุดเริ่มต้นในการขยาย Claude Code ไปสู่รูปแบบใหม่ ๆ ผ่าน การใช้งานอย่างสร้างสรรค์
ภาพรวมของเวิร์กโฟลว์แบบไดนามิก
- สัปดาห์ที่แล้ว Claude Code เปิดตัว เวิร์กโฟลว์แบบไดนามิก ซึ่งทำให้ Claude สามารถเขียน ฮาร์เนส ให้เหมาะกับงานได้ทันที
- ฮาร์เนสมาตรฐานของ Claude Code ถูกสร้างมาสำหรับงานเขียนโค้ด แต่เพราะหลายงานมีลักษณะคล้ายกับงานเขียนโค้ด จึงมีประโยชน์กับงานประเภทอื่นด้วย
- ที่ผ่านมา Research, security analysis, agent teams, Code Review ต่างสร้างฮาร์เนสแบบปรับแต่งแยกบน Claude Code เพื่อให้ได้ประสิทธิภาพสูงสุด
- เวิร์กโฟลว์ช่วยแก้ปัญหาเหล่านี้แบบเนทีฟภายใน Claude Code และยังรองรับการ แชร์และนำกลับมาใช้ซ้ำ
- แนวปฏิบัติที่ดีสุดยังอยู่ระหว่างการพัฒนา และเพราะใช้โทเคนมาก จึงควรคิดให้รอบคอบว่าจะใช้เมื่อไรและอย่างไร
ตัวอย่างพรอมป์ต์
- "การทดสอบนี้อาจล้มเหลวประมาณ 1 ครั้งในทุก 50 ครั้งที่รัน ช่วยสร้างเวิร์กโฟลว์เพื่อทำให้เกิดซ้ำ ตั้งสมมติฐานหลายแบบเกี่ยวกับ race แล้วดำเนินการต่อจนกว่าจะได้สมมติฐานที่สมเหตุสมผลจากหลักฐาน"
- "ใช้เวิร์กโฟลว์ตรวจดู 50 เซสชันล่าสุด หาแพตเทิร์นของสิ่งที่ถูกแก้ซ้ำ ๆ แล้วเปลี่ยนส่วนที่เกิดซ้ำให้เป็นกฎใน
CLAUDE.md" - "ใช้เวิร์กโฟลว์วิเคราะห์ #incidents ใน Slack ตลอด 6 เดือนที่ผ่านมา และหาสาเหตุรากที่เกิดซ้ำซึ่งยังไม่มีใครส่งตั๋วไว้"
- "นำแผนธุรกิจของผมมารันผ่านเวิร์กโฟลว์ที่ให้หลายบทบาทตรวจวิเคราะห์อย่างละเอียดจากมุมมองของนักลงทุน ลูกค้า และคู่แข่ง"
- "นี่คือโฟลเดอร์ที่มีเรซูเม่ 80 ฉบับ ใช้เวิร์กโฟลว์จัดอันดับเรซูเม่ที่เหมาะกับตำแหน่งแบ็กเอนด์ แล้วช่วยตรวจทาน 10 อันดับแรกอีกครั้ง ใช้เครื่องมือ AskUserQuestion เพื่อสัมภาษณ์ผมตามเกณฑ์การประเมิน"
- "ผมต้องตั้งชื่อให้เครื่องมือ CLI นี้ ใช้เวิร์กโฟลว์ระดมไอเดียหลายตัวเลือก แล้วคัด 3 อันดับแรกด้วยรูปแบบทัวร์นาเมนต์"
- "ใช้เวิร์กโฟลว์เปลี่ยนชื่อโมเดล User เป็น Account ทุกที่"
- "ช่วยรีวิวร่างบทความบล็อกของผมอย่างละเอียด และใช้เวิร์กโฟลว์ตรวจเทียบกับโค้ดเบสและข้ออ้างทางเทคนิคทั้งหมด ผมไม่อยากเผยแพร่ข้อมูลที่ผิด"
เวิร์กโฟลว์แบบไดนามิกทำงานอย่างไร
- รัน ไฟล์ JavaScript ที่มีฟังก์ชันพิเศษบางตัวสำหรับช่วยสร้างและประสานงาน ซับเอเจนต์
- รองรับการประมวลผลข้อมูลด้วยฟังก์ชัน JavaScript มาตรฐานอย่าง JSON, Math, Array เป็นต้น
- สามารถ เลือกโมเดล ที่เอเจนต์จะใช้ และกำหนดว่าจะให้ซับเอเจนต์ แยก worktree หรือไม่ โดย Claude จะเลือกทั้งระดับสติปัญญาและระดับการแยกที่เหมาะสม
- แม้เวิร์กโฟลว์จะถูกขัดจังหวะจากการกระทำของผู้ใช้หรือการปิดเทอร์มินัล ก็สามารถทำต่อจากจุดเดิมเมื่อกลับมาเริ่มเซสชันอีกครั้ง
ทำไมจึงต้องมีเวิร์กโฟลว์แบบไดนามิก
- ฮาร์เนสมาตรฐานทำทั้งการวางแผนและการลงมือใน หน้าต่างคอนเท็กซ์เดียว ซึ่งมีประสิทธิภาพกับงานโค้ดจำนวนมาก แต่มีข้อจำกัดในงานระยะยาว งานขนานขนาดใหญ่ และงานเชิงโครงสร้างที่มีลักษณะเป็นปฏิปักษ์สูง
- ยิ่งทำงานซับซ้อนในคอนเท็กซ์เดียวนานเท่าไร ก็ยิ่งเสี่ยงต่อ failure mode บางแบบ
- Agentic laziness: หยุดกลางทางก่อนจบงานหลายขั้นตอนที่ซับซ้อน แล้วประกาศว่างานเสร็จทั้งที่ทำได้เพียงบางส่วน (เช่น ตรวจความปลอดภัย 50 รายการแต่ทำจริงแค่ 20)
- Self-preferential bias: มีแนวโน้มจะลำเอียงเข้าข้างผลลัพธ์ของตัวเองเมื่อต้องตรวจหรือประเมินเทียบกับ rubric
- Goal drift: ค่อย ๆ สูญเสียความยึดโยงกับเป้าหมายเดิมเมื่อสนทนาหลายเทิร์น โดยเฉพาะหลัง compaction และอาจหลุดข้อกำหนด edge case หรือข้อจำกัดประเภท "ห้ามทำ X"
- ปัญหาเหล่านี้ป้องกันได้ด้วยการประสาน Claude หลายตัวที่มีหน้าต่างคอนเท็กซ์แยกกัน และมีเป้าหมายที่โฟกัสและแยกจากกัน
เวิร์กโฟลว์แบบไดนามิก vs แบบสแตติก
- ก่อนหน้านี้สามารถเขียน เวิร์กโฟลว์แบบสแตติก เพื่อประสาน Claude Code หลายอินสแตนซ์ได้ผ่าน Claude Agent SDK หรือ
claude -p - เวิร์กโฟลว์แบบสแตติกมักมีความทั่วไปมากกว่า เพราะต้องรองรับทุก edge case
- ด้วย Claude Opus 4.8 และเวิร์กโฟลว์แบบไดนามิก ตอนนี้ Claude ฉลาดพอที่จะเขียนฮาร์เนสแบบปรับแต่งให้เหมาะกับ use case ได้เอง
แพตเทิร์นการใช้งานเวิร์กโฟลว์แบบไดนามิก
- สามารถขอให้ Claude สร้างเวิร์กโฟลว์ได้โดยตรง หรือใช้คำกระตุ้น
ultracodeเพื่อให้มั่นใจว่าจะมีการสร้างเวิร์กโฟลว์ - มีแพตเทิร์นร่วมที่ Claude มักนำมาประกอบกันเมื่อสร้างเวิร์กโฟลว์
-
Classify-and-act
- เอเจนต์ตัวจำแนกจะพิจารณาประเภทงานก่อน แล้วจึงส่งต่อไปยังเอเจนต์หรือการกระทำที่ต่างกันตามประเภทงาน หรือใช้ตัวจำแนกตัดสินเอาต์พุตในตอนท้าย
-
Fan-out-and-synthesize
- แบ่งงานออกเป็นขั้นย่อย ๆ แล้วรันเอเจนต์ในแต่ละขั้นก่อนสังเคราะห์ผลรวม
- เหมาะเมื่อมีขั้นย่อยจำนวนมาก หรือเมื่อแต่ละขั้นได้ประโยชน์จากหน้าต่างคอนเท็กซ์ที่สะอาด ช่วยป้องกันการรบกวนกันและการปนเปื้อนข้ามกัน
- ขั้น synthesize ทำหน้าที่เป็น barrier รอให้เอเจนต์ fan-out ทั้งหมดเสร็จก่อน แล้วรวมเป็นเอาต์พุตที่มีโครงสร้างเดียว
-
Adversarial verification
- สำหรับทุกเอเจนต์ที่ถูกสร้างขึ้น จะมีอีกเอเจนต์แยกต่างหากมารันเพื่อตรวจผลลัพธ์แบบปฏิปักษ์เทียบกับ rubric และเกณฑ์
-
Generate-and-filter
- สร้างไอเดียจำนวนมากในหัวข้อหนึ่ง แล้วกรองด้วย rubric และการตรวจสอบ ตัดของซ้ำ และคืนเฉพาะไอเดียที่ผ่านการตรวจและมีคุณภาพดีที่สุด
-
Tournament
- แทนที่จะแบ่งงาน เอเจนต์จะมาแข่งขันกัน โดยมีเอเจนต์ N ตัวลองทำงานเดียวกันด้วยแนวทางต่างกัน และเอเจนต์ผู้ตัดสินจะตัดสินแบบ pairwise จนกว่าจะได้ผู้ชนะ
-
Loop until done
- เมื่อปริมาณงานไม่แน่นอน ให้สร้างเอเจนต์ซ้ำไปเรื่อย ๆ จนกว่าจะถึงเงื่อนไขหยุด แทนการกำหนดจำนวนรอบคงที่ (เช่น ไม่พบสิ่งใหม่แล้ว หรือไม่มีข้อผิดพลาดในล็อก)
กรณีการใช้งาน
- บางครั้งเวิร์กโฟลว์กลับมีประโยชน์มากกว่าในงานที่ไม่ใช่เชิงเทคนิค
-
Migration และรีแฟกเตอร์
- Bun ถูกเขียนใหม่จาก Zig เป็น Rust ด้วยเวิร์กโฟลว์ โดยดูรายละเอียดเพิ่มได้ใน เธรด X ของ Jarred
- หัวใจสำคัญคือการแตกงานออกเป็นขั้นอย่าง callsites, เทสต์ที่ล้มเหลว, โมดูล เป็นต้น
- สำหรับแต่ละการแก้ไข จะสร้างซับเอเจนต์ใน worktree แล้วให้อีกเอเจนต์หนึ่งรีวิวแบบปฏิปักษ์ก่อนรวม
- สามารถสั่งให้หลีกเลี่ยงคำสั่งที่กินทรัพยากรมาก เพื่อทำงานแบบขนานสูงสุดโดยไม่ทำให้ทรัพยากรเครื่องหมด
-
Deep research
- มีการเปิดเผย deep research skill (
/deep-research) ที่ใช้เวิร์กโฟลว์แบบไดนามิก โดยทำ fan-out การค้นเว็บ ดึงแหล่งข้อมูล ตรวจข้ออ้างแบบปฏิปักษ์ และสังเคราะห์เป็นรายงานพร้อมการอ้างอิง - นอกจากการค้นเว็บแล้ว ยังใช้เขียนรายงานสถานะจากคอนเท็กซ์ Slack หรือสำรวจโค้ดเบสเชิงลึกเพื่อสืบค้นการทำงานของฟีเจอร์ได้ด้วย
- มีการเปิดเผย deep research skill (
-
Deep verification
- หากต้องการตรวจและใส่แหล่งที่มาของทุกข้ออ้างเชิงข้อเท็จจริงในรายงาน สามารถสร้างเวิร์กโฟลว์ที่ให้เอเจนต์หนึ่งระบุข้ออ้างทั้งหมด แล้วให้ซับเอเจนต์ตรวจแต่ละข้ออย่างละเอียด
- เอเจนต์ตรวจสอบยังสามารถประเมินคุณภาพของแหล่งอ้างอิงที่ซับเอเจนต์ต้นทางใช้ได้ด้วย
-
การจัดอันดับ
- มีประโยชน์เมื่อจะจัดอันดับรายการตามเกณฑ์เชิงคุณภาพ (เช่น ตั๋วซัพพอร์ตตามความรุนแรงของบั๊ก)
- หากจัดอันดับข้อมูลเกิน 1000 แถวในพรอมป์ต์เดียว คุณภาพจะลดลงและอาจเกินคอนเท็กซ์ จึงควรใช้ทัวร์นาเมนต์, ไปป์ไลน์เปรียบเทียบแบบ pairwise หรือ bucket-rank แบบขนานแล้วค่อยรวม
- comparative judgment เชื่อถือได้มากกว่าการให้คะแนนแบบสัมบูรณ์ และเมื่อการเปรียบเทียบแต่ละครั้งอยู่ในเอเจนต์แยก ลูปแบบ deterministic จะรักษา bracket ไว้ โดยเหลือในคอนเท็กซ์เพียงลำดับการรัน
-
หน่วยความจำและการทำตามกฎ
- สำหรับกฎที่ใส่ใน CLAUDE.md แล้ว Claude ยังพลาดได้ สามารถสร้างเวิร์กโฟลว์ที่มีรายการกฎและให้เอเจนต์ตรวจหนึ่งตัวต่อหนึ่งกฎ
- เพื่อลด false positive สามารถสร้าง ซับเอเจนต์ persona แบบ skeptic มาทบทวนกฎได้
- ทำย้อนทางก็ได้เช่นกัน: ขุดหาการแก้ไขซ้ำจากเซสชันล่าสุดหรือคอมเมนต์รีวิวโค้ด จัดคลัสเตอร์ด้วยเอเจนต์ขนาน ตรวจแบบปฏิปักษ์กับแต่ละกฎผู้สมัคร ("กฎนี้ช่วยป้องกันความผิดพลาดจริงหรือไม่") แล้วค่อยกลั่นกฎที่รอดไปเป็น CLAUDE.md
-
การสืบหาสาเหตุราก
- การดีบักมีประสิทธิภาพเมื่อสร้างและทดสอบสมมติฐานอิสระหลายแบบ แต่ในหน้าต่างคอนเท็กซ์เดียวอาจเกิด self-preferential bias
- เวิร์กโฟลว์ช่วยป้องกันเชิงโครงสร้าง โดยให้เอเจนต์สร้างสมมติฐานจากหลักฐานที่แยกกัน เช่น ล็อก ไฟล์ หรือข้อมูล และให้แต่ละสมมติฐานเผชิญหน้ากับคณะผู้ตรวจสอบและผู้โต้แย้ง
- ใช้ได้กับ post-mortem นอกเหนือจากโค้ดด้วย เช่น ฝ่ายขาย (สาเหตุที่รายได้เดือนมีนาคมลดลง) หรือ data engineering (สาเหตุที่ pipeline ล้มเหลว)
-
Triage ขนาดใหญ่
- สำหรับคิวซัพพอร์ต รายงานบั๊ก หรือแบ็กล็อกที่คนจัดการไม่ไหว เวิร์กโฟลว์ triage จะจำแนกรายการแต่ละชิ้น ลบรายการซ้ำกับสิ่งที่ติดตามอยู่แล้ว และเลือกการดำเนินการ (ลองแก้ หรือเอสคาเลตให้มนุษย์)
- แพตเทิร์นที่มีประโยชน์คือ quarantine ซึ่งบล็อกการกระทำสิทธิ์สูงของเอเจนต์ที่อ่านคอนเทนต์สาธารณะที่ไม่น่าเชื่อถือ และให้เอเจนต์อีกตัวรับหน้าที่ประมวลผลข้อมูลแทน
- สามารถใช้ร่วมกับ
/loopเพื่อให้ทำงานต่อเนื่องได้
-
การสำรวจและรสนิยม
- มีประโยชน์กับการค้นหาโซลูชันที่อิงรสนิยม เช่น งานออกแบบหรือการตั้งชื่อ ซึ่งยังได้ประโยชน์จาก rubric
- สามารถให้สำรวจหลายโซลูชัน แล้วส่ง rubric ว่าโซลูชันที่ดีควรเป็นอย่างไรให้เอเจนต์รีวิว เมื่อเอเจนต์รีวิวตัดสินว่าตรงเกณฑ์ก็ถือว่าเสร็จ และยังจัดอันดับหรือเลือกด้วยทัวร์นาเมนต์ได้
-
การประเมิน (Evals)
- สามารถรันการประเมินแบบเบา ๆ โดยสร้างเอเจนต์แยกใน worktree และใช้เอเจนต์เปรียบเทียบให้คะแนนเทียบกับ rubric เช่น ประเมินและปรับปรุง skill ที่สร้างขึ้นตามเกณฑ์เฉพาะ
-
การ route โมเดลและระดับสติปัญญา
- สร้างเอเจนต์ตัวจำแนกเพื่อเลือกโมเดลให้เหมาะกับงาน โดยเฉพาะงานที่ต้องเรียกเครื่องมือจำนวนมาก ซึ่งการสำรวจก่อนช่วยระบุโมเดลที่เหมาะที่สุด
- ตัวอย่างเช่น งาน "อธิบายการทำงานของโมดูล auth" โมเดลที่เหมาะที่สุดอาจต่างกันตามจำนวนไฟล์ในโมดูล auth และลักษณะของโค้ดเบส โดยตัวจำแนกจะสำรวจแล้ว route ไปยัง Sonnet หรือ Opus ตามความซับซ้อน
เมื่อไม่ควรใช้
- เวิร์กโฟลว์เป็นฟีเจอร์ใหม่ แม้จะมี use case มากมายที่ให้ผลลัพธ์โดดเด่น แต่ก็ไม่จำเป็นกับทุกงาน และอาจใช้โทเคนเพิ่มขึ้นอย่างมาก
- เหมาะกับการใช้งานอย่างสร้างสรรค์ที่ผลักดัน Claude Code ไปในวิธีที่ก่อนหน้านี้ทำไม่ได้
- สำหรับงานเขียนโค้ดทั่วไป ควรถามตัวเองว่า "จำเป็นต้องใช้คอมพิวต์มากขึ้นจริงหรือ?" เพราะงานโค้ดแบบดั้งเดิมส่วนใหญ่ไม่จำเป็นต้องมีคณะผู้รีวิว 5 คน
เคล็ดลับการสร้างเวิร์กโฟลว์แบบไดนามิก
-
การเขียนพรอมป์ต์
- การเขียนพรอมป์ต์อย่างละเอียดโดยใช้เทคนิคที่อธิบายไว้ก่อนหน้า จะให้ผลลัพธ์ดีที่สุด
- ไม่ได้จำกัดเฉพาะงานขนาดใหญ่ และสามารถพรอมป์ต์ว่า "quick workflow" เพื่อทำอย่างเช่นการรีวิวสมมติฐานแบบปฏิปักษ์อย่างรวดเร็วได้
-
ใช้ร่วมกับ /goal และ /loop
- เวิร์กโฟลว์ที่ทำซ้ำได้ เช่น triage, research, verification สามารถใช้ร่วมกับ
/loopเพื่อรันเป็นประจำ และใช้/goalเพื่อตั้งข้อกำหนดการเสร็จงานแบบตายตัว
- เวิร์กโฟลว์ที่ทำซ้ำได้ เช่น triage, research, verification สามารถใช้ร่วมกับ
-
งบประมาณการใช้โทเคน
- สามารถตั้งงบโทเคนแบบชัดเจนเพื่อจำกัดการใช้ต่อหนึ่งงาน ด้วยพรอมป์ต์อย่าง "use 10k tokens" เพื่อกำหนดเพดาน
-
การบันทึกและแชร์
- ในเมนูเวิร์กโฟลว์ กด "s" เพื่อบันทึก แล้วสามารถเช็กอินไปที่
~/.claude/workflowsหรือเผยแพร่เป็น skill ได้ - หากแชร์เป็น skill ให้นำไฟล์เวิร์กโฟลว์ JavaScript ไปไว้ในโฟลเดอร์ skill และอ้างอิงใน SKILL.md โดยควรพรอมป์ต์ให้มองเวิร์กโฟลว์ใน skill เป็น เทมเพลต ไม่ใช่สคริปต์ที่ต้องรันตรง ๆ เพื่อความยืดหยุ่น
- ในเมนูเวิร์กโฟลว์ กด "s" เพื่อบันทึก แล้วสามารถเช็กอินไปที่
-
จุดเริ่มต้นของการขยาย
- เวิร์กโฟลว์คือวิธีใหม่ในการขยาย Claude Code และแนวทางใช้งานที่ดีที่สุดยังเป็นจุดเริ่มต้นที่มีอะไรให้ค้นพบอีกมาก
ยังไม่มีความคิดเห็น