
Dùng subagent trong Claude Code: chia nhỏ tác vụ để xử lý codebase lớn
Hiểu và áp dụng cách tạo, điều phối các subagent trong Claude Code để phân chia công việc và xử lý hiệu quả các codebase quy mô lớn.
Yêu cầu một AI agent refactor toàn bộ một codebase lớn thường không hiệu quả. Agent có thể bị "ngợp" thông tin, mất context hoặc đi lạc hướng. Đây là lúc kỹ thuật "chia để trị" với các subagent phát huy tác dụng. Bài viết này sẽ đi sâu vào kiến trúc Dynamic Workflows của Claude Code, phân biệt vai trò của Orchestrator và Specialist. Mình cũng sẽ chia sẻ code Python để bạn tự tạo subagent đầu tiên và áp dụng vào dự án thực tế của mình.
Claude Code và Subagent: Tại sao phải 'chia để trị'?
Claude Code là một AI agent được Anthropic phát triển, hỗ trợ bởi các model như Claude Opus 4.8 [F2]. Agent này có khả năng đọc hiểu toàn bộ codebase, lập kế hoạch thay đổi phức tạp, tự động viết và gỡ lỗi code, chạy các lệnh và lặp lại các tác vụ trong nhiều giờ [F1]. Nó cho phép mình mô tả các dự án bằng ngôn ngữ tự nhiên, một khái niệm được gọi là "vibe coding" [F3].
Tuy nhiên, với các codebase lớn—ví dụ như dự án rò rỉ của Claude Code có khoảng 512.000 dòng mã TypeScript trong 1.900 tệp [F5]—một agent đơn lẻ sẽ gặp khó khăn. Việc duy trì context và xử lý các tác vụ phức tạp trong một codebase khổng lồ như vậy là một thách thức không nhỏ.
Để giải quyết vấn đề này, Anthropic đã giới thiệu giải pháp subagent, một mô hình "chia để trị". Đây là cốt lõi của tính năng "Dynamic Workflows" mới trong Claude Opus 4.8 [F4]. Dynamic Workflows cho phép Claude điều phối hàng trăm subagent song song để xử lý các tác vụ mã hóa phức tạp [F4].
Trong mô hình này, một agent chính (orchestrator) sẽ đóng vai trò điều phối. Nó phân chia bài toán lớn thành nhiều phần nhỏ hơn, sau đó giao cho hàng trăm subagent chuyên biệt xử lý. Mỗi subagent sẽ tập trung vào một phần công việc cụ thể, giúp tăng hiệu quả và khả năng xử lý các dự án quy mô lớn.

Kiến trúc Dynamic Workflows: Orchestrator và Specialist ⚙️
Để xử lý các tác vụ phức tạp trên codebase lớn, Claude Code sử dụng một kiến trúc đặc biệt gọi là Dynamic Workflows [F4]. Mô hình này phân chia công việc thành hai loại agent chính: một Orchestrator Agent và nhiều Specialist Agents.
Orchestrator Agent đóng vai trò trung tâm, nhận yêu cầu từ bạn bằng ngôn ngữ tự nhiên, ví dụ như "vibe coding" [F3]. Sau đó, nó phân tích yêu cầu này, lập kế hoạch chi tiết và chia nhỏ thành các sub-task. Orchestrator có khả năng điều phối hàng trăm subagent song song để xử lý các tác vụ mã hóa phức tạp [F4].
Các Specialist Agents là những subagent được thiết kế để thực hiện các nhiệm vụ cụ thể. Mình có thể hình dung một số loại Specialist như `CodeScannerAgent` để tìm kiếm code, `RefactorAgent` để tái cấu trúc, `TestWriterAgent` để viết test, hoặc `DocGeneratorAgent` để tạo tài liệu. Mỗi Specialist sẽ chuyên trách một mảng công việc nhất định.
Luồng giao tiếp diễn ra như sau: Orchestrator sẽ giao nhiệm vụ cho một Specialist cụ thể. Ví dụ, nó có thể yêu cầu `CodeScannerAgent` "tìm tất cả các file sử dụng hook X". Specialist này sẽ thực thi nhiệm vụ được giao trên codebase (mà Claude Code có thể đọc toàn bộ [F1]) và trả về kết quả, chẳng hạn như một danh sách các đường dẫn file phù hợp.
Kiến trúc này cho phép Claude Code, được hỗ trợ bởi các mô hình như Claude Opus 4.8 [F2], xử lý các thay đổi phức tạp, tự động viết và gỡ lỗi code, cũng như lặp lại các tác vụ trong nhiều giờ [F1], mang lại hiệu quả cao cho việc phát triển phần mềm.
Hướng dẫn thực hành: Tạo Subagent với Claw Code (Python)
Claude Code của Anthropic là một tác nhân mã hóa AI mạnh mẽ, được hỗ trợ bởi các mô hình như Claude Opus 4.8 [F2]. Nó có khả năng đọc toàn bộ codebase, lập kế hoạch thay đổi phức tạp, tự động viết và gỡ lỗi code, chạy các lệnh và lặp lại tác vụ trong nhiều giờ [F1]. Để thử nghiệm ý tưởng subagent, chúng ta có thể dùng Claw Code.
Claw Code là phiên bản mã nguồn mở do cộng đồng tái tạo từ source code Claude Code bị rò rỉ [F5]. Mặc dù không phải là sản phẩm chính thức của Anthropic, Claw Code cho phép mình mô phỏng cách Claude Code có thể điều phối hàng trăm subagent song song để xử lý các tác vụ mã hóa phức tạp, một tính năng mới trong Claude Opus 4.8 được gọi là Dynamic Workflows [F4].
Dưới đây là một ví dụ Python đơn giản minh họa cách tạo ra một `OrchestratorAgent` để điều phối các `SubAgent` khác. Đây là mô hình cơ bản để chia nhỏ tác vụ và truyền kết quả giữa các agent.
class SubAgent:
def __init__(self, name):
self.name = name
def run(self, task, context=None):
print(f"[{self.name}] Đang thực hiện tác vụ: {task}")
# Logic xử lý tác vụ của SubAgent
if self.name == 'FileScanner':
# Giả lập kết quả tìm kiếm file
return ["src/utils/old_api.py", "src/components/legacy_feature.js"]
elif self.name == 'RefactorBot':
# Giả lập kết quả refactor
return f"Đã refactor các file: {', '.join(context)}"
return "Hoàn thành"
class OrchestratorAgent:
def __init__(self):
self.scanner = SubAgent(name='FileScanner')
self.refactor_bot = SubAgent(name='RefactorBot')
def execute_workflow(self, main_task):
print(f"[Orchestrator] Bắt đầu workflow: {main_task}")
# Bước 1: SubAgent FileScanner tìm kiếm các file cần refactor
files_to_refactor = self.scanner.run(task='Tìm các file sử dụng deprecated API')
print(f"[Orchestrator] FileScanner tìm thấy: {files_to_refactor}")
# Bước 2: SubAgent RefactorBot thực hiện refactor dựa trên kết quả từ scanner
refactor_result = self.refactor_bot.run(task='Refactor code', context=files_to_refactor)
print(f"[Orchestrator] RefactorBot báo cáo: {refactor_result}")
print("[Orchestrator] Workflow hoàn thành.")
# Khởi tạo và chạy Orchestrator
orchestrator = OrchestratorAgent()
orchestrator.execute_workflow(main_task='Cải thiện codebase bằng cách refactor deprecated API')Trong ví dụ trên, `OrchestratorAgent` đóng vai trò điều phối chính. Nó spawn ra hai `SubAgent` là `FileScanner` và `RefactorBot`. `FileScanner` được giao nhiệm vụ tìm các file cần refactor, sau đó kết quả từ `FileScanner` được truyền làm ngữ cảnh (`context`) cho `RefactorBot` để thực hiện công việc của mình. Cách tiếp cận này giúp chia nhỏ một tác vụ lớn thành các bước nhỏ hơn, dễ quản lý hơn.

Cách triển khai trong dự án thực tế
Claude Code của Anthropic là một tác nhân mã hóa AI được hỗ trợ bởi các mô hình như Claude Opus 4.8 [F2]. Nó có khả năng đọc toàn bộ codebase, lên kế hoạch cho những thay đổi phức tạp, tự động viết và gỡ lỗi code, chạy các lệnh và lặp lại tác vụ trong nhiều giờ [F1].
Trong một dự án thực tế, mình có thể mô tả các yêu cầu bằng ngôn ngữ tự nhiên, một khái niệm được gọi là "vibe coding" [F3]. Claude Code sau đó sẽ sử dụng tính năng Dynamic Workflows (có trong Claude Opus 4.8) để điều phối hàng trăm subagent chạy song song, xử lý các tác vụ mã hóa phức tạp [F4].
Ví dụ, nếu mình muốn thêm một tính năng mới vào một dự án TypeScript lớn, Claude Code có thể phân chia tác vụ thành nhiều phần nhỏ hơn. Mỗi subagent có thể được giao nhiệm vụ xử lý một file hoặc một module cụ thể, đảm bảo tính nhất quán và hiệu quả. Điều này đặc biệt hữu ích với các codebase lớn, như vụ rò rỉ Claude Code vào ngày 31 tháng 3 năm 2026, liên quan đến khoảng 512.000 dòng mã TypeScript trong 1.900 tệp [F5].
Việc chia nhỏ tác vụ cho phép Claude tập trung vào từng phần nhỏ, giảm thiểu lỗi và tăng tốc độ phát triển. Mình cũng có thể yêu cầu Claude Code thực hiện các tác vụ như refactor code, tối ưu hiệu suất hoặc thêm các bài kiểm tra tự động cho từng phần của dự án.
Lưu ý và pitfalls thường gặp
Mặc dù Claude Code rất mạnh mẽ, có thể đọc toàn bộ codebase, lập kế hoạch thay đổi phức tạp và tự động viết code [F1], nhưng khi làm việc với subagent, bạn vẫn cần lưu ý một số điểm. Việc chia nhỏ tác vụ quá mức có thể dẫn đến overhead không cần thiết.
Đầu tiên, hãy cẩn trọng với việc context switching giữa các subagent. Mỗi lần Claude Code chuyển đổi giữa các tác vụ, nó cần tải lại context liên quan, điều này có thể làm tăng latency và chi phí. Dynamic Workflows trong Claude Opus 4.8 cho phép Claude điều phối hàng trăm subagent song song [F4], nhưng bạn vẫn nên tối ưu hóa số lượng subagent cần thiết cho một tác vụ cụ thể.
Thứ hai, việc quản lý trạng thái (state management) giữa các subagent là một thách thức. Nếu một subagent tạo ra một thay đổi mà subagent khác cần biết, bạn phải đảm bảo cơ chế truyền đạt thông tin rõ ràng. Nếu không, các subagent có thể làm việc dựa trên thông tin cũ hoặc không đồng bộ, dẫn đến kết quả không mong muốn.
Cuối cùng, hãy luôn kiểm tra kỹ lưỡng output của Claude Code. Mặc dù nó có khả năng tự gỡ lỗi và lặp lại các tác vụ trong nhiều giờ [F1], nhưng không có hệ thống AI nào là hoàn hảo. Đặc biệt là với các tác vụ phức tạp liên quan đến codebase lớn như vụ rò rỉ 512.000 dòng mã TypeScript của Claude Code vào tháng 3 năm 2026 [F5], việc review code thủ công vẫn là bước không thể thiếu để đảm bảo chất lượng và bảo mật.
Tóm lại, việc sử dụng subagent với kiến trúc Orchestrator-Specialist là chìa khóa để Claude Code xử lý hiệu quả các codebase phức tạp. Thay vì một agent làm tất cả, bạn đã có một đội ngũ chuyên gia AI. Hãy bắt đầu thử nghiệm với đoạn code Python trong bài để áp dụng vào workflow của bạn.