Một harness cho mọi tác vụ: workflow động trong Claude Code
(x.com/trq212)Giới thiệu Dynamic Workflows của Claude Code
Đây là bài viết do nhóm Claude Code của Anthropic (Thariq Shihipar, Sid Bidasaria) công bố, giải thích về tính năng Dynamic Workflows mới được đưa vào Claude Code. Dynamic Workflows là cách Claude tự viết trực tiếp một cấu trúc thực thi riêng (harness) dưới dạng tệp JavaScript ngay tại chỗ để điều phối nhiều sub-agent theo đúng tác vụ. Harness mặc định trước đây của Claude Code được tối ưu cho công việc lập trình, nhưng có giới hạn với những tác vụ cần chạy lâu, song song quy mô lớn hoặc cần kiểm chứng đối kháng; điểm cốt lõi để giải quyết là cho phép chính Claude tự tạo ra harness tùy biến.
Bối cảnh ra đời và cách hoạt động
- Giới hạn của một context đơn: Có ba kiểu thất bại khi vừa lập kế hoạch vừa thực thi trong cùng một context window. Đó là agentic laziness, khi tác nhân làm dở khoảng nửa chừng rồi tuyên bố đã xong; self-preferential bias, khi tự đánh giá kết quả của chính mình theo hướng có lợi; và goal drift, khi mục tiêu ban đầu bị mờ đi trong quá trình nén context.
- Cấu trúc vận hành: Workflow chạy tệp JavaScript để tạo và điều phối sub-agent, đồng thời có thể dùng các hàm chuẩn như JSON, Math, Array. Workflow cũng tự quyết định loại model cho từng sub-agent (Sonnet, Opus, v.v.) và có tách biệt worktree hay không. Khi bị gián đoạn, có thể tiếp tục chạy bằng cách khôi phục session.
- Cách gọi: Có thể yêu cầu Claude tạo workflow hoặc dùng từ kích hoạt
ultracode.
Tổng hợp các pattern tiêu biểu
- Classify and Route: Một classifier agent xác định loại tác vụ, rồi rẽ nhánh sang agent hoặc luồng xử lý phù hợp với từng loại. Cũng có thể dùng ở bước cuối để phân loại kết quả.
- Fan-out and Synthesize: Chia một tác vụ lớn thành các phần nhỏ, chạy agent riêng cho từng phần, rồi gom toàn bộ kết quả ở bước synthesize để hợp nhất thành một đầu ra. Phù hợp với nhiều tác vụ nhỏ cần context sạch.
- Adversarial Verification: Mỗi agent thực hiện tác vụ đi kèm một agent kiểm chứng riêng để phản biện và xác minh kết quả theo rubric.
- Generate and Filter: Tạo ra nhiều ý tưởng, sau đó lọc bằng rubric và bước kiểm chứng, loại trùng lặp để chỉ giữ lại những ứng viên chất lượng cao nhất.
- Tournament: N agent cùng giải một tác vụ bằng các cách tiếp cận khác nhau, rồi một judge agent chọn ra người thắng bằng pairwise comparison. Bài viết giải thích rằng so sánh cặp đôi đáng tin cậy hơn đánh giá bằng điểm tuyệt đối.
- Loop Until Convergence: Khi khối lượng công việc chưa thể xác định trước, hệ thống tiếp tục lặp việc tạo agent cho đến khi không còn phát hiện mới hay lỗi mới.
Tổng hợp các trường hợp sử dụng
- Refactor và migration quy mô lớn: Chia theo callsite, test thất bại hoặc theo module, để sub-agent sửa trong từng worktree, rồi một agent khác review theo kiểu đối kháng trước khi hợp nhất. Thực tế đã có trường hợp viết lại từ Zig sang Rust; nếu chỉ dẫn tránh các lệnh tiêu tốn nhiều tài nguyên thì có thể tối đa hóa tính song song.
- Deep research (kỹ năng
/deep-research): Fan-out việc tìm kiếm web để thu thập nguồn, xác minh các tuyên bố bằng kiểm chứng đối kháng, rồi tổng hợp thành báo cáo có trích dẫn. Cũng có thể áp dụng để viết báo cáo trạng thái trên Slack hoặc khám phá sâu codebase. - Fact-checking: Một agent đầu tiên xác định mọi tuyên bố thực tế trong báo cáo, sau đó sub-agent kiểm chứng từng tuyên bố bằng cách kiểm tra nguồn, và một agent xác minh riêng đánh giá cả chất lượng nguồn.
- Căn chỉnh và xếp hạng định tính: Với các tác vụ khó xử lý một lần, như sắp xếp hơn 1000 dòng ticket hỗ trợ theo mức độ nghiêm trọng, có thể dùng pipeline tournament với pairwise comparison hoặc chia bucket để xử lý song song rồi hợp nhất.
- Kiểm chứng quy tắc và tự động hóa
CLAUDE.md: Dùng agent kiểm chứng theo từng quy tắc để phát hiện phần bị thiếu, đồng thời một agent mang persona hoài nghi kiểm tra tính hợp lý của chính các quy tắc đó. Theo chiều ngược lại, cũng có thể tự động rút ra quy tắc mới bằng cách gom cụm các chỉnh sửa lặp lại trong những session gần đây và trong code review. - Debug lỗi gián đoạn và phân tích hậu kiểm: Các agent độc lập hình thành giả thuyết từ những bằng chứng tách biệt theo log, tệp hoặc dữ liệu; sau đó một hội đồng agent xác minh và phản biện sẽ đánh giá từng giả thuyết. Không chỉ áp dụng cho code mà còn cho việc phân tích nguyên nhân sụt giảm doanh thu hay sự cố pipeline dữ liệu.
- Triage và xử lý backlog: Phân loại hàng đợi hỗ trợ và bug report, loại trùng với mục đã có, rồi tự sửa hoặc chuyển lên cho con người xử lý. Bài viết khuyến nghị pattern quarantine, tách agent đọc nội dung bên ngoài không đáng tin khỏi agent thực hiện hành động có quyền. Kết hợp với
/loopthì có thể vận hành liên tục. - Khám phá sáng tạo và đánh giá (Eval): Trong các công việc có yếu tố gu thẩm mỹ như thiết kế hay đặt tên, có thể tạo nhiều phương án rồi để review agent chấm điểm và sàng lọc theo rubric. Cũng có thể dùng cho các đánh giá nhẹ nhằm chấm và cải thiện chất lượng của chính skill.
- Model Routing: Một classifier agent khảo sát trước độ phức tạp của tác vụ rồi chọn model phù hợp giữa Sonnet và Opus để định tuyến.
Ưu điểm và điểm khác biệt
- Điểm khác biệt: Các workflow tĩnh do Claude Agent SDK hoặc
claude -ptạo ra phải được viết theo hướng đa dụng để xử lý tổng quát, còn Dynamic Workflows khác ở chỗ Claude tự viết harness tùy biến ngay lúc đó cho từng nhu cầu. - Ưu điểm: Nhiều agent với context tách biệt có thể tập trung vào mục tiêu riêng, nên về mặt cấu trúc sẽ giảm được các vấn đề như lười biếng, thiên vị bản thân và lệch mục tiêu. Về vận hành, hệ thống cũng hỗ trợ khôi phục session bị gián đoạn, chỉ định ngân sách token (
use 10k tokens), kết hợp với/goalvà/loop, cũng như lưu bằng phímsđể chia sẻ qua thư mục~/.claude/workflowshoặc dưới dạng skill. - Nhược điểm và lưu ý: Lượng token sử dụng có thể tăng mạnh nên không phù hợp với mọi tác vụ. Chính tác giả cũng nói rõ rằng các công việc lập trình thông thường không cần tới một hội đồng năm người review, và khuyến nghị nên tự hỏi “liệu có thực sự cần thêm năng lực tính toán hay không” trước khi dùng. Các best practice cũng vẫn đang trong quá trình hình thành.
Dynamic Workflows có thể được xem là bước mở rộng Claude Code từ một trợ lý lập trình đơn lẻ thành một meta-orchestrator điều phối nhiều agent. Đây là cách tiếp cận nhắm vào khoảng giữa giữa pipeline tĩnh và agent tự chủ hoàn toàn, và có vẻ sẽ đặc biệt hiệu quả với các công việc cấu trúc, kéo dài như migration mã nguồn, deep research, triage hay phân tích hậu kiểm. Tuy nhiên, do chi phí token lớn và best practice vẫn chưa được định hình đầy đủ, cần cân nhắc kỹ mức độ phù hợp của từng pattern và bắt đầu nhỏ từ “quick workflow”
Chưa có bình luận nào.