Bài 8 · Nâng cao · 24 phút· Cập nhật 11/06/2026
Subagents - trợ lý chuyên trách
Biên soạn bởi Nguyễn Anh Tuấn
Giao việc cho subagent có ngữ cảnh riêng: khi nào dùng, .claude/agents, giới hạn công cụ/model, chạy song song & cô lập.
Có những việc phụ làm ngập ngữ cảnh chính bằng thứ bạn sẽ không cần giữ: lục 30 file để tìm một chỗ gọi API, đọc cả núi log để truy lỗi, review một loạt thay đổi. Subagent nhận việc đó, làm trong cửa sổ riêng, rồi chỉ trả về một bản tóm tắt.
- ▸Giữ ngữ cảnh: khảo sát/đọc/review xảy ra ở cửa sổ riêng, ngữ cảnh chính sạch.
- ▸Giới hạn công cụ: vd reviewer chỉ-đọc, không sửa được file.
- ▸Chuyên biệt & tiết kiệm: system prompt riêng cho từng việc; chạy bằng model rẻ (Haiku) khi hợp.
Đã có sẵn vài subagent
So sánh: không có subagent thì mọi “rác” trộn vào ngữ cảnh chính; có subagent thì nó được cô lập.
Không subagent
Ngữ cảnh chính phình lên vì 30 file + log + kết quả tìm kiếm. Việc chính bị “loãng”, mau đầy, Claude dễ đãng trí.
Có subagent
Subagent “ngốn” 30 file trong cửa sổ riêng, chỉ trả về kết luận gọn. Ngữ cảnh chính vẫn sạch để làm tiếp việc lớn.
› Review các thay đổi gần đây của tôi.
⏺ ⤷ giao cho subagent: code-reviewer (ngữ cảnh riêng)
… subagent đọc 12 file, chạy linter, soi diff (trong cửa sổ của nó) …
Tóm tắt từ reviewer: 2 vấn đề - (1) thiếu kiểm tra null ở api.ts:42; (2) hàm trùng logic với utils.ts. Còn lại ổn.
Thử chuyển giữa hai chế độ để thấy ngữ cảnh chính thay đổi ra sao:
Nhiệm vụ: Điều tra luồng auth - Đọc 5 file để hiểu luồng xác thực, tìm chỗ gây lỗi timeout.
(Số token là ước lượng minh hoạ, không phải con số chính xác của mô hình.)
Ngữ cảnh chính đang dùng
8,000 / 30,000 token 27%
Các file nạp vào ngữ cảnh chính
- src/auth/authService.ts 1,800 tok
- src/auth/tokenManager.ts 1,200 tok
- src/middleware/authMiddleware.ts 950 tok
- src/api/userRoutes.ts 1,100 tok
- src/config/authConfig.ts 450 tok
Nền: 2,500 tok (lịch sử chat + system prompt) - cộng vào cả hai chế độ.
- ▸Subagent có CỬA SỔ NGỮ CẢNH RIÊNG, tách khỏi cuộc trò chuyện chính.
- ▸Nó chỉ trả về KẾT QUẢ (tóm tắt), không đổ toàn bộ quá trình vào ngữ cảnh chính.
- ▸Đây chính là cách giữ phiên dài không bị đầy ngữ cảnh (xem bài “Cách hoạt động”).
Mỗi subagent là một file markdown: frontmatter khai báo metadata, phần thân là system prompt định hình hành vi của nó:
.claude/agents/code-reviewer.md
---
name: code-reviewer
description: Review code về chất lượng, lỗi tiềm ẩn và bảo mật. Dùng khi người dùng nhờ review thay đổi hoặc một file.
tools: Read, Grep, Glob
model: sonnet
---
Bạn là người review code cẩn thận. Chỉ ĐỌC, không sửa.
Tập trung: lỗi tiềm ẩn, rủi ro bảo mật, code khó đọc, trùng lặp.
Trả lời ngắn gọn bằng tiếng Việt, nêu file + dòng cụ thể,
xếp theo mức độ nghiêm trọng. Không bàn chuyện ngoài phạm vi. - ▸Vị trí: .claude/agents/<tên>.md (dự án) hoặc ~/.claude/agents/<tên>.md (cá nhân).
- ▸Chỉ name và description là bắt buộc; tools, model… là tuỳ chọn.
- ▸Phần thân = system prompt: subagent CHỈ nhận prompt này (không có toàn bộ system prompt của Claude Code).
- ▸Lệnh /agents mở giao diện tạo & quản lý subagent (tạo qua đây có hiệu lực ngay).
Hai chỗ tinh chỉnh quan trọng nhất là công cụ và model:
- ▸tools: danh sách CHO PHÉP (allowlist). Bỏ trống = kế thừa mọi công cụ của phiên chính.
- ▸disallowedTools: danh sách CẤM - kế thừa hết trừ những cái liệt kê (vd cấm Write, Edit).
- ▸model: sonnet / opus / haiku / một model-id, hoặc inherit (mặc định = giống phiên chính).
Reviewer nên chỉ-đọc
Claude tự giao việc cho subagent khi việc khớp description (hoặc bạn gọi rõ). Trong một phiên, nhiều subagent có thể chạy song song cho các việc phụ độc lập.
- ▸Hợp khi: khảo sát/nghiên cứu, đọc log, review - việc “ngốn ngữ cảnh” và cần cô lập.
- ▸description rõ ràng = Claude giao đúng việc; mơ hồ = giao sai hoặc bỏ sót.
- ▸Đừng lạm dụng: việc nhỏ, cần qua lại nhiều với bạn thì làm thẳng ở ngữ cảnh chính.
Giới hạn cần biết
Câu hỏi thường gặp
Là một “trợ lý phụ” chuyên trách, chạy trong NGỮ CẢNH RIÊNG với system prompt riêng, quyền dùng công cụ riêng. Claude chính giao một việc phụ cho nó; nó làm độc lập rồi trả về một bản TÓM TẮT. Mọi “rác” trong quá trình làm (kết quả tìm kiếm, log, nội dung file) nằm trong cửa sổ của subagent, không làm bẩn ngữ cảnh chính.
Nhớ bài “Cách hoạt động”: cửa sổ ngữ cảnh có hạn và đầy dần. Việc như “đọc 30 file tìm chỗ gọi API” sẽ nhồi đầy ngữ cảnh chính bằng thứ bạn không cần giữ. Đẩy việc đó cho subagent: nó “ngốn” ngữ cảnh của riêng nó, rồi chỉ trả về câu trả lời gọn - ngữ cảnh chính vẫn sạch để làm tiếp.
Bài Cách Claude Code hoạt động - cửa sổ ngữ cảnh →Mỗi subagent là MỘT file markdown: .claude/agents/<tên>.md (dự án - commit cho cả nhóm) hoặc ~/.claude/agents/<tên>.md (cá nhân). Frontmatter YAML khai báo name, description (bắt buộc), kèm tuỳ chọn tools, model…; phần thân markdown là SYSTEM PROMPT định hình hành vi của subagent. Hoặc dùng lệnh /agents để tạo qua giao diện.
Nó đọc trường description của từng subagent và giao khi gặp việc khớp. Vì thế description phải nêu rõ subagent dùng để làm gì. Bạn cũng có thể gọi rõ ràng. Có sẵn vài subagent dựng sẵn (vd Explore để khảo sát, Plan để lập kế hoạch).
Có. Skill mở rộng việc Claude làm TRONG ngữ cảnh chính (cùng cửa sổ). Subagent làm việc trong CỬA SỔ RIÊNG rồi trả về tóm tắt. Việc phụ ngốn nhiều ngữ cảnh, cần cô lập, hoặc cần giới hạn công cụ/model → subagent. Một prompt/quy trình bạn muốn chạy ngay tại chỗ → skill/command.
Bài Agent Skills →Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.
Trả lời vài câu để chắc rằng em đã nắm bài.
Lợi ích cốt lõi của việc subagent có “ngữ cảnh riêng” là gì?
- 1
Tạo bằng /agents
Gõ
/agents→ tạo một subagent cá nhân “code-reviewer” chỉ-đọc (chỉ chọn công cụ đọc). Đặtdescriptionrõ ràng.Hoàn thành khi: Có file
~/.claude/agents/code-reviewer.md; subagent chỉ có công cụ đọc (Read/Grep/Glob). - 2
Giao việc thật
Nhờ Claude: “Review các thay đổi gần đây của tôi”. Quan sát nó có giao cho subagent
code-reviewerkhông.Hoàn thành khi: Claude giao việc cho subagent (theo
description); kết quả trả về là bản tóm tắt review, ngữ cảnh chính không bị ngập file. - 3
Vì sao ngữ cảnh riêng?
Bằng lời: một việc “đọc 40 file log tìm nguyên nhân lỗi” nên làm ở ngữ cảnh chính hay subagent? Vì sao?
Hoàn thành khi: Subagent - 40 file log sẽ nhồi đầy ngữ cảnh chính; để subagent “ngốn” rồi trả về kết luận gọn.
- 4
Giới hạn công cụ
Mở file subagent reviewer, đảm bảo nó KHÔNG có
Edit/Write. Vì sao reviewer nên chỉ-đọc?Hoàn thành khi: Frontmatter
toolschỉ gồm công cụ đọc; reviewer chỉ nên nhận xét, không tự sửa - tránh “vừa đá bóng vừa thổi còi”. - 5
Chọn model tiết kiệm
Đặt
model: haikucho một subagent làm việc đơn giản, lặp nhiều. Vì sao hợp lý?Hoàn thành khi: Việc đơn giản không cần model mạnh nhất; Haiku nhanh & rẻ → tiết kiệm chi phí cho việc khối lượng lớn.