Lưu ý của biên tập viên: Claude Code đang chuyển mình từ một trợ lý viết code thành một bàn làm việc Agent có thể lập trình được.
Workflows (luồng công việc) được giới thiệu trong bài viết này có giá trị cốt lõi ở chỗ giúp Claude không chỉ "nghĩ xong rồi mới làm" trong cùng một cửa sổ ngữ cảnh, mà có thể tự động tạo ra một khung thực thi động dựa trên nhiệm vụ: phân tách nhiệm vụ, phân phối các Agent con, xử lý song song, kiểm tra chéo, lặp vòng lặp, thậm chí để các Agent khác nhau cạnh tranh với nhau, cuối cùng tổng hợp kết quả.
Điều này có nghĩa là các tình huống sử dụng Claude Code đang mở rộng rõ rệt. Nó không chỉ phù hợp cho việc di chuyển mã, tái cấu trúc, tái hiện kiểm thử và xem xét mã, mà còn có thể được dùng cho các nhiệm vụ phi kỹ thuật như nghiên cứu chuyên sâu, kiểm tra sự thật, sàng lọc hồ sơ, phân tích sự cố, đúc kết quy tắc, đánh giá kế hoạch kinh doanh, brainstorm đặt tên. Bản chất của nhiều công việc phức tạp đều giống với lập trình: cần phân tách vấn đề, tách biệt ngữ cảnh, kiểm tra giả thuyết, xử lý lượng lớn chi tiết và lựa chọn giữa nhiều con đường ứng viên.
Dynamic workflows (luồng công việc động) cố gắng giải quyết chính xác một số vấn đề phổ biến của mô hình lớn khi thực hiện các nhiệm vụ dài: "sự lười biếng của agent" (tuyên bố hoàn thành khi mới làm được một nửa), "thiên kiến ưu tiên bản thân" (xu hướng công nhận kết luận của chính mình), và "trôi dạt mục tiêu" (dần dần lệch khỏi mục tiêu ban đầu sau nhiều lượt thực thi). Bằng cách giao nhiệm vụ cho nhiều Claude có ngữ cảnh độc lập, nó chuyển đổi nhiệm vụ phức tạp từ "cuộc chạy dài một agent" thành "sự phối hợp đa agent".
Tất nhiên, workflows không phải là câu trả lời vạn năng. Nó thường tiêu thụ nhiều token hơn và cũng không nhất thiết phù hợp với mọi nhiệm vụ viết mã thông thường. Nhưng nó cung cấp một hướng đi quan trọng: sự cạnh tranh của các công cụ AI trong tương lai có thể không chỉ nằm ở việc một mô hình riêng lẻ thông minh đến đâu, mà còn ở khả năng tổ chức ra một quy trình thực thi đáng tin cậy, có thể tái sử dụng, có thể kiểm tra xung quanh các mục tiêu phức tạp.
Dưới đây là văn bản gốc:
Mặc dù khung thực thi mặc định của Claude Code được xây dựng cho lập trình, nhưng nó cũng phù hợp với nhiều loại nhiệm vụ khác. Thực tế chứng minh, cấu trúc của nhiều nhiệm vụ rất giống với nhiệm vụ lập trình. Tuy nhiên, để đạt được hiệu suất tốt nhất với một số loại nhiệm vụ cụ thể, chúng tôi vẫn cần xây dựng các khung thực thi tùy chỉnh trên nền Claude Code, ví dụ như nghiên cứu, phân tích bảo mật, hợp tác nhóm agent hoặc xem xét mã.
Workflows (luồng công việc) cho phép bạn tạo động các khung thực thi, giúp Claude có thể giải quyết các vấn đề trên và nhiều loại vấn đề khác một cách nguyên bản hơn bên trong Claude Code. Bạn cũng có thể chia sẻ, tái sử dụng các workflows này với người khác.
Trong bài viết này, tôi sẽ chia sẻ kinh nghiệm và hiểu biết ban đầu khi sử dụng workflows, giúp bạn khai thác tối đa khả năng của nó.
Tuy nhiên cần lưu ý, các thực hành tốt nhất liên quan vẫn đang được hình thành. Dynamic workflows thường tiêu thụ nhiều token hơn, do đó bạn cần cân nhắc cẩn thận khi nào sử dụng và sử dụng như thế nào.
Chú thích: Bài viết này cũng được đăng trên Claude Blog.
Ví dụ Prompt
Trước khi đi vào chi tiết kỹ thuật, tôi muốn đưa ra một số ví dụ prompt để giúp bạn hiểu khả năng của workflows:
"Bài kiểm tra này cứ khoảng 50 lần chạy thì thất bại 1 lần. Thiết lập một workflow để tái hiện nó, đưa ra giả thuyết và thực hiện kiểm tra đối kháng trong các worktree khác nhau. /goal Không dừng lại cho đến khi có một giả thuyết được xác minh đúng."
"Sử dụng workflow, xem lại 50 phiên gần đây nhất của tôi, khai thác những điều chỉnh tôi liên tục thực hiện và chuyển hóa các vấn đề lặp đi lặp lại đó thành các quy tắc CLAUDE.md."
"Sử dụng workflow, lật xem kênh #incidents trên Slack trong sáu tháng qua, tìm ra những nguyên nhân gốc rễ lặp đi lặp lại nhưng không ai gửi ticket."
"Chạy một workflow cho bản kế hoạch kinh doanh của tôi, để các agent khác nhau phân tích nó từ góc độ nhà đầu tư, khách hàng và đối thủ cạnh tranh."
"Đây là một thư mục chứa 80 bản sơ yếu lý lịch. Sử dụng workflow, sắp xếp chúng theo yêu cầu vị trí backend và xem xét lại mười bản đầu tiên. Thông qua công cụ AskUserQuestion đặt câu hỏi cho tôi, giúp bạn thiết lập tiêu chí đánh giá."
"Tôi cần đặt tên cho công cụ CLI này. Sử dụng workflow để brainstorm một loạt lựa chọn, sau đó chọn ra ba cái tên hàng đầu thông qua cơ chế giải đấu loại trực tiếp."
"Sử dụng workflow, đổi tên mô hình User của chúng ta thành Account ở mọi nơi."
"Đọc bản nháp blog của tôi và sử dụng workflow để kiểm tra chéo từng phán đoán kỹ thuật trong đó với kho mã. Tôi không muốn xuất bản bất kỳ nội dung sai sót nào."
Dynamic Workflows Hoạt Động Như Thế Nào
Dynamic workflow thực thi một tệp JavaScript, trong đó chứa một số hàm đặc biệt dùng để tạo và điều phối các agent con.
Dynamic workflow cũng chứa các hàm JavaScript tiêu chuẩn, ví dụ như JSON, Math và Array, dùng để xử lý dữ liệu.
Đặc biệt đáng chú ý, dynamic workflow có thể quyết định một agent cụ thể sử dụng mô hình nào, và cũng có thể quyết định liệu agent con có chạy trong worktree riêng của nó hay không. Điều này cho phép Claude tự chọn mức độ thông minh và mức độ tách biệt cần thiết dựa trên yêu cầu nhiệm vụ.
Nếu một workflow bị gián đoạn, ví dụ như người dùng thao tác thủ công hoặc terminal thoát, sau khi khôi phục phiên, workflow đó có thể tiếp tục thực thi từ điểm bị gián đoạn.
Tại Sao Cần Dynamic Workflows
Khi bạn để khung thực thi mặc định của Claude Code xử lý một nhiệm vụ, nó cần hoàn thành cả việc lập kế hoạch và thực thi trong cùng một cửa sổ ngữ cảnh. Đối với nhiều nhiệm vụ lập trình, cách này rất hiệu quả, nhưng đối với các nhiệm vụ chạy lâu, quy mô lớn song song, hoặc nhiệm vụ đối kháng có cấu trúc cao, đôi khi nó thất bại.
Lý do là, khi Claude xử lý các nhiệm vụ phức tạp càng lâu trong một cửa sổ ngữ cảnh duy nhất, nó càng dễ xuất hiện một số kiểu thất bại cụ thể:
Agentic laziness (Sự lười biếng của agent), chỉ việc Claude xử lý các nhiệm vụ đặc biệt phức tạp, gồm nhiều phần, dừng lại quá sớm khi chưa thực sự hoàn thành, và tuyên bố nhiệm vụ đã hoàn thành khi chỉ đạt được một phần tiến triển. Ví dụ, trong một đợt xem xét bảo mật chỉ xử lý 20 trong số 50 mục rồi tuyên bố công việc kết thúc.
Self-preferential bias (Thiên kiến ưu tiên bản thân), chỉ việc Claude có xu hướng ưa thích kết quả hoặc phát hiện của chính mình, đặc biệt là khi được yêu cầu xác minh hoặc đánh giá nội dung do chính nó tạo ra dựa trên một số tiêu chí đánh giá.
Goal drift (Trôi dạt mục tiêu), chỉ việc trong quá trình thực thi nhiều lượt, sự trung thành của Claude với mục tiêu ban đầu dần giảm đi, đặc biệt là sau khi ngữ cảnh bị nén lại. Mỗi lần tóm tắt đều gây mất mát thông tin, một số yêu cầu chi tiết, ví dụ như các trường hợp biên hoặc điều kiện hạn chế kiểu "không được làm X", có thể bị bỏ sót.
Tạo workflow giúp giảm bớt những vấn đề này vì nó có thể sắp xếp nhiều Claude độc lập, cho chúng có các cửa sổ ngữ cảnh riêng và tập trung vào các nhiệm vụ được tách biệt, mục tiêu rõ ràng.
Dynamic Workflows vs Static Workflows
Bạn có thể đã từng tạo static workflows thông qua Claude Agent SDK hoặc claude -p trước đây, để điều phối nhiều phiên bản Claude Code.
Nhưng vì static workflows cần bao quát nhiều trường hợp biên, chúng thường mang tính tổng quát hơn. Với sự xuất hiện của Claude Opus 4.8 và dynamic workflows, Claude hiện đã đủ thông minh để viết một khung thực thi được tùy chỉnh cho tình huống sử dụng cụ thể của bạn.
Các Mẫu Hình Thực Tế Khi Sử Dụng Dynamic Workflows
Bạn có thể để Claude trực tiếp tạo một dynamic workflow, hoặc sử dụng từ kích hoạt "ultracode" để đảm bảo Claude Code tạo workflow.
Tuy nhiên, nếu bạn có thể xây dựng được một mô hình tư duy về cách dynamic workflows hoạt động, bạn sẽ dễ dàng hơn trong việc đánh giá khi nào nên sử dụng nó và cũng dễ dàng hơn trong việc hướng dẫn Claude thông qua prompt.
Khi xây dựng workflows, Claude thường sử dụng và kết hợp một số mẫu hình sau:
Phân loại và thực thi: Sử dụng một agent phân loại để đánh giá loại nhiệm vụ, sau đó định tuyến đến các agent hoặc hành vi khác nhau dựa trên loại nhiệm vụ. Cũng có thể sử dụng một bộ phân loại ở cuối quy trình để đánh giá kết quả đầu ra.
Phân tán và tổng hợp: Chia một nhiệm vụ thành nhiều bước nhỏ hơn, để mỗi bước được một agent xử lý, cuối cùng tổng hợp các kết quả này. Cách này đặc biệt phù hợp khi nhiệm vụ bao gồm nhiều bước nhỏ, hoặc mỗi bước cần một cửa sổ ngữ cảnh sạch để tránh nhiễu lẫn nhau hoặc ô nhiễm chéo. Bước tổng hợp tương đương với một "rào cản": nó sẽ đợi tất cả các agent được phân tán hoàn thành, sau đó hợp nhất đầu ra có cấu trúc của chúng thành một kết quả.
Kiểm tra đối kháng: Đối với mỗi agent được tạo ra, chạy thêm một agent độc lập, xác minh đầu ra của nó một cách đối kháng theo một số tiêu chuẩn hoặc nguyên tắc đánh giá.
Tạo và sàng lọc: Tạo ra nhiều ý tưởng xoay quanh một chủ đề, sau đó sàng lọc dựa trên tiêu chí đánh giá hoặc quy trình xác minh, loại bỏ các mục trùng lặp, chỉ trả về những ý tưởng đã được kiểm tra, chất lượng cao nhất.
Giải đấu loại trực tiếp: Thay vì chia nhỏ công việc, hãy để các agent cạnh tranh với nhau. Tạo N agent, để chúng lần lượt thử hoàn thành cùng một nhiệm vụ bằng các phương pháp khác nhau. Sau đó, một agent đánh giá thông qua prompt hoặc mô hình sẽ so sánh các kết quả theo cặp cho đến khi chọn ra người chiến thắng.
Lặp cho đến khi hoàn thành: Đối với các nhiệm vụ có khối lượng công việc chưa biết, không đặt số lượt cố định, mà lặp lại việc tạo agent cho đến khi đáp ứng điều kiện dừng, ví dụ như không còn phát hiện mới xuất hiện, hoặc không còn lỗi trong nhật ký.
Các Tình Huống Sử Dụng
Bạn có thể suy nghĩ sáng tạo hơn về việc khi nào và làm thế nào để Claude Code tạo dynamic workflows. Tôi nhận thấy workflows đôi khi thậm chí còn hữu ích hơn trong các công việc phi kỹ thuật.
Di Chuyển và Tái Cấu Trúc
Bun đã từng sử dụng workflows để viết lại từ Zig sang Rust. Bạn có thể đọc bài đăng của Jarred trên X để tìm hiểu quy trình cụ thể.
Điểm mấu chốt là, chia nhiệm vụ thành một loạt các bước cần xử lý, ví dụ như điểm gọi, kiểm tra thất bại, mô-đun, v.v. Khởi chạy một agent con cho mỗi nhiệm vụ sửa chữa trong một worktree, để nó hoàn thành việc sửa chữa; sau đó để một agent khác thực hiện xem xét đối kháng, cuối cùng hợp nhất kết quả. Bạn có thể cân nhắc nói rõ với agent rằng không sử dụng các lệnh tiêu tốn nhiều tài nguyên, như vậy có thể tối đa hóa mức độ song song mà không làm cạn kiệt tài nguyên máy cục bộ.
Nghiên Cứu Chuyên Sâu
Chúng tôi đã phát hành một kỹ năng deep research skill (/deep-research) trong Claude Code, nó sử dụng dynamic workflow. Cụ thể, nó sẽ phân tán thực hiện tìm kiếm web, thu thập nguồn, xác minh đối kháng các tuyên bố liên quan và tổng hợp tạo một báo cáo có trích dẫn.
Nhưng loại nghiên cứu này không chỉ áp dụng cho tìm kiếm web. Ví dụ, bạn cũng có thể để Claude tổng hợp một báo cáo trạng thái từ ngữ cảnh Slack, hoặc thông qua khám phá sâu vào kho mã để nghiên cứu cách một tính năng hoạt động.
Xác Minh Chuyên Sâu
Mặt khác, nếu bạn có một báo cáo và muốn kiểm tra từng phán đoán thực tế và nguồn được trích dẫn trong đó, bạn có thể tạo một workflow: đầu tiên một agent xác định tất cả các tuyên bố thực tế, sau đó khởi chạy một agent con cho mỗi tuyên bố để kiểm tra tỉ mỉ. Bạn cũng có thể để một agent xác minh kiểm tra các agent con chịu trách nhiệm truy xuất nguồn, đảm bảo chất lượng nguồn của chúng đủ cao.
Sắp Xếp
Bạn có thể có một nhóm các hạng mục, muốn sắp xếp chúng theo một chỉ số định tính nào đó, và bạn tin rằng Claude Code giỏi đánh giá loại chỉ số này. Ví dụ, sắp xếp các ticket hỗ trợ theo mức độ nghiêm trọng của lỗi.
Nhưng nếu bạn cố gắng sắp xếp hơn 1000 dòng nội dung trong một prompt, chất lượng sẽ giảm, và cửa sổ ngữ cảnh cũng không chứa hết. Cách làm tốt hơn là chạy cơ chế giải đấu loại trực tiếp, thiết lập một đường ống gồm các agent so sánh theo cặp, vì đánh giá so sánh thường đáng tin cậy hơn cho điểm tuyệt đối; hoặc sắp xếp phân nhóm song song trước, sau đó hợp nhất kết quả. Mỗi lần so sánh được thực hiện bởi một agent độc lập, do đó vòng lặp xác định có thể duy trì cấu trúc toàn bộ giải đấu, chỉ có thứ tự chạy hiện tại cần được giữ lại trong ngữ cảnh.
Ghi Nhớ và Tuân Thủ Quy Tắc
Nếu bạn có một nhóm quy tắc cụ thể, và Claude ngay cả khi thấy các quy tắc này trong CLAUDE.md vẫn thường xuyên bỏ sót hoặc thực hiện không tốt, bạn có thể tạo một workflow, liệt kê các quy tắc này và để agent xác minh kiểm tra từng điều - mỗi quy tắc tương ứng với một agent xác minh. Tạo một agent con với nhân cách "người hoài nghi" để xem xét các quy tắc này có hợp lý hay không cũng giúp tránh quá nhiều báo động sai.
Cũng có thể làm ngược lại: Khai thác các phiên gần đây và nhận xét xem xét mã của bạn, tìm ra những điều chỉnh bạn liên tục thực hiện; để các agent song song phân cụm các vấn đề này; sau đó xác minh đối kháng từng quy tắc ứng viên, đánh giá xem nó có thực sự ngăn chặn được một lỗi thực tế nào đó hay không; cuối cùng đúc kết các quy tắc vượt qua sàng lọc trở lại CLAUDE.md.
Điều Tra Nguyên Nhân Gốc Rễ
Cách gỡ lỗi hiệu quả nhất là đưa ra một vài giả thuyết độc lập với nhau và kiểm tra từng cái một. Nhưng nếu bạn chỉ sử dụng một cửa sổ ngữ cảnh, Claude có thể rơi vào thiên kiến ưu tiên bản thân.
workflow có thể ngăn chặn tình trạng này về mặt cấu trúc: nó có thể khởi chạy nhiều agent, để chúng tạo ra các giả thuyết dựa trên bằng chứng không chồng chéo. Ví dụ, để các agent khác nhau lần lượt xem nhật ký, tệp và dữ liệu. Sau đó, mỗi giả thuyết có thể được một nhóm người xác minh và người bác bỏ xem xét.
Điều này không chỉ áp dụng cho mã. Workflows cũng có thể được sử dụng cho phân tích bán hàng, ví dụ "Tại sao doanh số tháng 3 giảm?"; cho kỹ thuật dữ liệu, ví dụ "Tại sao pipeline này thất bại?"; hoặc cho bất kỳ phân tích sau sự cố nào.
Phân Loại Quy Mô Lớn
Mỗi nhóm đều có hàng đợi hỗ trợ, báo cáo lỗi hoặc các công việc tồn đọng khác không thể hoàn toàn do con người xử lý. Một workflow phân loại có thể phân loại từng hạng mục, loại bỏ trùng lặp với các vấn đề đã được theo dõi và thực hiện hành động. Điều này có thể có nghĩa là thử sửa chữa, hoặc nâng cấp cho người dùng con người xử lý.
Đối với workflow phân loại, một mẫu hình hữu ích là quarantine (cách ly). Nghĩa là, cấm các agent đọc nội dung công khai không đáng tin cậy thực hiện các thao tác có quyền cao; các thao tác có quyền cao nên được thực hiện bởi các agent chuyên trách hành động.
Bạn có thể kết hợp workflows phân loại với /loop, để Claude liên tục thực hiện loại nhiệm vụ này.
Khám Phá và Đánh Giá Thẩm Mỹ
Khi bạn cần khám phá các con đường giải pháp khác nhau, đặc biệt là các nhiệm vụ liên quan đến đánh giá thẩm mỹ như thiết kế, đặt tên, và có thể hưởng lợi từ một bộ tiêu chí đánh giá, workflows rất hữu ích.
Bạn có thể để Claude khám phá nhiều phương án, và cung cấp cho agent xem xét một bộ tiêu chí về "phương án tốt trông như thế nào". Khi agent xem xét cho rằng kết quả đã đáp ứng tiêu chuẩn, nhiệm vụ hoàn thành. Các phương án khác nhau cũng có thể được sắp xếp hoặc sàng lọc theo bộ tiêu chí đánh giá này thông qua cơ chế giải đấu loại trực tiếp.
Evals (Đánh Giá)
Bạn có thể chạy các đánh giá nhẹ cho nhiệm vụ cụ thể bằng cách khởi chạy agent độc lập trong worktree, sau đó khởi chạy agent so sánh, so sánh và chấm điểm đầu ra cụ thể dựa trên tiêu chí đánh giá. Ví dụ, bạn có thể đánh giá và cải thiện một kỹ năng nào đó do bạn tạo ra, xem nó có đáp ứng một số tiêu chuẩn cụ thể hay không.
Định tuyến Mô hình và Mức độ Thông minh: Bạn có thể tạo một agent phân loại được điều chỉnh cho nhiệm vụ của riêng mình, để nó quyết định sử dụng mô hình nào. Cách này hữu ích khi nhiệm vụ liên quan đến nhiều lệnh gọi công cụ, và việc nghiên cứu trước khi thực thi có thể giúp xác định mô hình phù hợp nhất.
Ví dụ, đối với nhiệm vụ "Giải thích cách mô-đun auth hoạt động", mô hình phù hợp nhất phụ thuộc vào việc có bao nhiêu tệp trong mô-đun auth và cấu trúc kho mã như thế nào. Agent phân loại có thể hoàn thành nghiên cứu này trước, sau đó định tuyến nhiệm vụ cho Sonnet hoặc Opus dựa trên độ phức tạp dự kiến.
Khi Nào Không Nên Sử Dụng Dynamic Workflows
Workflows vẫn là thứ mới mẻ. Mặc dù trong nhiều tình huống sử dụng, nó có thể mang lại hiệu quả vượt xa cách thông thường, nhưng không phải mọi nhiệm vụ đều cần đến nó, và nó có thể làm tăng đáng kể lượng token tiêu thụ.
Tốt nhất nên sử dụng workflows cho những nhiệm vụ có thể mở rộng ranh giới khả năng của Claude Code theo cách mới. Đối với các nhiệm vụ lập trình thông thường, bạn có thể tự hỏi: Nhiệm vụ này có thực sự cần nhiều tài nguyên tính toán hơn không? Ví dụ, hầu hết các nhiệm vụ lập trình truyền thống không cần một nhóm gồm 5 người xem xét.
Kỹ Thuật Xây Dựng Dynamic Workflows
Thiết Kế Prompt
Khi viết prompt cho dynamic workflow, càng nhiều chi tiết thường càng tốt, đặc biệt là khi sử dụng các kỹ thuật cụ thể được đề cập ở trên.
Workflows không chỉ áp dụng cho các nhiệm vụ lớn. Bạn cũng có thể nhắc mô hình sử dụng một "quick workflow". Ví dụ, bạn có thể tạo một quy trình xem xét đối kháng nhanh để kiểm tra một giả thuyết nào đó.
Kết Hợp với /goal và /loop
Khi bạn sử dụng các workflows có thể thực thi lặp lại, ví dụ như phân loại, nghiên cứu hoặc workflow xác minh, bạn có thể kết hợp chúng với /loop để chúng chạy theo khoảng thời gian cố định; đồng thời sử dụng /goal để đặt yêu cầu hoàn thành cứng.
Ngân Sách Sử Dụng Token
Bạn có thể thiết lập ngân sách sử dụng token rõ ràng cho dynamic workflow, để hạn chế số lượng token nhiệm vụ tiêu thụ. Bạn có thể viết vào prompt các yêu cầu ngân sách như "use 10k tokens", nó sẽ đặt giới hạn là 10k token.
Lưu Trữ và Chia Sẻ Dynamic Workflows
Bạn có thể nhấn "s" trong menu workflow để lưu workflows. Bạn có thể commit chúng vào ~/.claude/workflows, hoặc phân phối thông qua skill.
Nếu muốn chia sẻ chúng thông qua skill, bạn có thể đặt tệp JavaScript workflow vào thư mục skill và tham chiếu trong SKILL.md. Để có tính linh hoạt lớn hơn, bạn cũng có thể nhắc Claude: coi workflows trong skill như các mẫu, chứ không phải là kịch bản phải chạy từng chữ.
Một Thế Giới Hoàn Toàn Mới
Workflows là một cách mới hữu ích để mở rộng Claude Code. Tôi khuyến khích bạn coi nó như một điểm khởi đầu. Chúng ta còn nhiều điều cần khám phá về cách sử dụng nó tốt nhất. Hãy cho chúng tôi biết phát hiện của bạn.
Thariq Shihipar và Sid Bidasaria(@sidbid) là thành viên của nhóm kỹ thuật Anthropic, phụ trách các công việc liên quan đến Claude Code.
















