Le Duy Khuong

Chuỗi: claude-code-20-p1 · Phần 3

Năng suất & công cụ dev

Agents — subagents và khi nào delegate

Khái niệm agent trong Claude Code; khi nào dùng planner, architect, reviewer.

2026-03-146 phút đọcVI

Phần 3 của 560% hoàn thành

Agents — subagents và khi nào delegate

English title: Agents — Subagents and When to Delegate

Bài 3 trong chuỗi 20 bài về Claude Code. Bạn đã cài xong và chạy được command. Giờ câu hỏi: khi nào tự làm, khi nào giao cho "chuyên gia" (subagent)? Trong Claude Code, agent = persona + instructions + (tuỳ chọn) tools; subagent là agent được gọi từ agent chính để xử lý một phần việc chuyên biệt. Bài này làm rõ khái niệm và khi nào nên dùng planner, architect, reviewer.


Mở đầu: Một task, một context hay nhiều "chuyên gia"?

Bạn gõ "plan feature login rồi implement rồi review giúp tôi". Nếu tất cả chạy trong một session với một bộ prompt, Claude có thể làm được nhưng dễ bị loãng: vừa plan vừa code vừa review trong cùng context, dễ sót bước hoặc không theo đúng chuẩn review. Cách khác: tách role — một agent "planner" chỉ lo phân rã task, một agent "reviewer" chỉ lo kiểm tra chất lượng. Main agent nhận request, gọi planner → lấy plan → gọi coder (hoặc chính nó) implement → gọi reviewer. Mỗi subagent có instructions riêng, tool set riêng (nếu cần). Đó chính là delegate trong Claude Code.


1. Đi sâu: Agent là gì trong Claude Code

Tại sao quan trọng: Nếu bạn không phân biệt agent với "một session chat" hay "một command", bạn sẽ nhầm lẫn khi đọc tài liệu: "thêm agent", "delegate cho agent" — đó là thêm một định nghĩa (persona + instructions + tools), không phải thêm một tab chat.

Hiểu sai thường gặp: "Agent = command" hoặc "agent = skill". Command là trigger (user gõ /plan); skill là procedure (các bước làm). Agent là ai làm — role, tone, và (tuỳ cấu hình) danh sách tool được phép dùng. Một command có thể gọi một agent; agent đó có thể tham chiếu một skill để biết làm từng bước.

Bản chất đúng: Trong Claude Code, agent = (1) persona/role (vd. "bạn là senior code reviewer"), (2) instructions (quy tắc, format output, khi nào từ chối), (3) optional tools (read, edit, run command…). Khi bạn "delegate" cho subagent, hệ thống tạo (hoặc dùng sẵn) một context với agent đó, chạy task, rồi trả kết quả về agent gọi. Khác với chat thường vì instructions và scope được cố định theo từng agent.


2. Khái niệm

  • Agent: Định nghĩa một "role" với system instructions và (tuỳ nền tảng) tools. File/config agent thường có: name, description, instructions (hoặc path tới file), model (optional), tools (optional).
  • Subagent: Agent được gọi bởi agent khác (hoặc bởi orchestrator). Main agent không làm hết mà delegate một phần cho subagent; subagent chạy trong context riêng, trả kết quả (text, file, checklist).
  • Delegate: Hành động "giao việc" cho subagent. Lợi ích: isolation (reviewer không bị lẫn context của coder), instructions chuyên biệt (planner chỉ lo plan, không lo implement).
  • Planner / Architect / Reviewer: Ba role phổ biến. Planner: phân rã feature thành task, ước lượng, thứ tự. Architect: thiết kế hệ thống, API, data model. Reviewer: kiểm tra code (chất lượng, security, test coverage).

3. Code / ví dụ cấu trúc agent

Bạn không copy nguyên file; chỉ cần hình dung một agent được mô tả dạng metadata (ví dụ):

# Ví dụ cấu trúc mô tả agent (pseudo)
name: code-reviewer
description: Reviews code for quality, security, and maintainability
instructions: |
  You are a senior code reviewer. Check for: correct types, no secrets,
  tests for new logic, and clear naming. Output a short checklist.
tools: ["Read", "Grep"]
model: sonnet  # optional

Khi command /code-review chạy, hệ thống có thể load agent "code-reviewer" và (tuỳ cấu hình) skill "code-review", rồi chạy trong context đó. User không cần biết chi tiết — chỉ cần biết "có một role reviewer được gọi khi mình gõ command này".


4. Workflow: Khi nào delegate

  1. Một agent làm hết: Phù hợp task đơn giản, ít bước. Ví dụ: "refactor hàm X" — một context, một role là đủ.
  2. Delegate khi domain chuyên biệt: "Plan feature X" → gọi planner (instructions chỉ lo phân rã, không lo code). "Review diff" → gọi reviewer (chỉ đọc code, đưa nhận xét). Main agent nhận kết quả và quyết định bước tiếp.
  3. Delegate khi cần isolation: Reviewer không nên "nhìn" toàn bộ chat history của coder — chỉ cần diff hoặc file list. Subagent chạy với context gọn (chỉ những gì cần review) cho kết quả sạch hơn.
  4. Tránh delegate quá sâu: Nhiều tầng (main → A → B → C) tốn token và khó debug. Heuristic: 1–2 tầng (main + 1 subagent, hoặc main → planner → coder/reviewer) thường đủ.

Quy ước: Bắt đầu với 1–2 agent (vd. default + reviewer). Khi workflow ổn, thêm planner hoặc architect nếu bạn thường xuyên cần "plan trước khi code" hoặc "thiết kế API trước khi implement".


5. Ứng dụng trong AI-centric engineering

  • Planner: Dùng khi feature phức tạp, nhiều file. Thay vì bảo Claude "làm hết", bạn gọi planner trước → nhận plan (task list, thứ tự) → rồi implement theo plan. Giảm "quên bước" và dễ estimate.
  • Architect: Dùng khi cần thiết kế API, schema, hoặc module boundary. Agent architect chỉ output design (text, diagram mô tả); coder (bạn hoặc agent khác) implement theo.
  • Reviewer: Dùng sau khi implement hoặc trước khi commit. Command /code-review (hoặc tương đương) gọi reviewer → nhận checklist (types, tests, security, naming). Bạn sửa theo trước khi push.

Trong chuỗi bài này, bài 4 sẽ nói skills — cách định nghĩa workflow (procedure) cho agent; command thường gắn với một skill và (tuỳ cấu hình) một agent.


Bài tiếp: Skills — định nghĩa workflow cho agent (bài 4).

LDK

Le Duy Khuong

AI Transformation & Digital Strategy. Writing about agentic systems, engineering leadership, and building in public.