Đại lý con (sub-agent) là cách bạn mở rộng quy mô. Mỗi sub-agent có cửa sổ ngữ cảnh riêng, chạy song song, trả về một tóm tắt ngắn — giữ cho cuộc trò chuyện chính của bạn sạch và tập trung.
Mở đầu — Ẩn dụ CEO và đội chuyên gia
Hãy tưởng tượng bạn là CEO. Bạn không tự đi dịch từng hợp đồng, viết từng email marketing, rà từng file bảng lương. Bạn thuê chuyên gia, giao task rõ ràng, rồi nhận kết quả. Sub-agent trong Claude Code hoạt động đúng như vậy. Agent chính (main agent) đóng vai CEO — hiểu bức tranh tổng thể, phân rã công việc, giao việc, gom kết quả. Đại lý con (sub-agent) là chuyên gia — nhận một task cụ thể, làm trong phòng riêng, trả về báo cáo tóm tắt.Vì sao cần sub-agent?
Cách ly ngữ cảnh (context isolation)
Task phụ như tìm file, phân tích dependency sinh ra hàng nghìn dòng output. Giao cho sub-agent → output đó nằm trong cửa sổ riêng của nó. Cuộc trò chuyện chính của bạn chỉ nhận tóm tắt 1 câu.
Chạy song song (parallelism)
7 task độc lập → 7 sub-agent chạy cùng lúc. Thời gian = thời gian của task lâu nhất, không phải tổng thời gian.
Chuyên môn hóa (specialization)
Mỗi sub-agent có system prompt riêng, tool riêng, model riêng. Ví dụ: sub-agent “Explore” chỉ dùng Read/Grep/Glob (read-only), sub-agent “Writer” dùng đầy đủ tool.
Cách ly ngữ cảnh — trực quan hóa
Mấu chốt: cửa sổ ngữ cảnh của bạn không bị bội thực bởi hàng nghìn dòng grep output. Sub-agent làm việc bẩn bên phòng riêng, trả về một summary sạch sẽ. Đây là cơ chế giúp bạn chạy các task lớn mà không “đốt” context window chính.Sub-agent được định nghĩa thế nào
Sub-agent thường được định nghĩa trong file với YAML frontmatter + markdown body. Ví dụ chính thức của Claude Code là
.claude/agents/my-agent.md.Nhưng — và đây là điểm quan trọng — bạn không bắt buộc phải theo cấu trúc này. Sub-agent có thể được định nghĩa inline trong một prompt, hoặc load từ bất kỳ đường dẫn file nào. Claude Code đọc ý định bạn nói, không đọc quy ước cứng. Bài 5 sẽ cho thấy ví dụ cụ thể.Hai cách gọi sub-agent
- Tự động (automatic delegation)
- Thủ công (explicit invocation)
Bạn yêu cầu một task phù hợp với description của sub-agent, Claude tự nhận ra và delegate.Ví dụ: bạn có sub-agent “Explore” với description “nghiên cứu codebase” → khi bạn hỏi “tìm hiểu dependency của module X”, Claude tự delegate cho Explore mà không cần bạn chỉ tên.Cách này phù hợp khi bạn có một bộ sub-agent ổn định và muốn để agent chính tự quyết chia việc.
Sơ đồ đội hình
Agent chính đứng giữa. Bạn chỉ nói chuyện với agent chính. Mỗi sub-agent sống trong một phòng riêng — không nhìn thấy phòng khác, không nhìn thấy bạn. Agent chính gom kết quả và báo lại.Ví dụ thực tế: 7 LAIKA function blueprints
Trong dự án Luklak, chúng tôi cần dịch 7 bản thiết kế chức năng LAIKA từ tiếng Anh sang tiếng Việt. Mỗi bản khoảng 200–280 dòng, đầy bảng biểu, sơ đồ workflow, quy tắc automation — tổng khoảng 1.600 dòng.Thay vì làm tuần tự (1.600 dòng × tốc độ gõ = nhiều giờ), chúng tôi spawn 7 sub-agent chạy song song:
- Marketing (183 dòng)
- CRM (275 dòng)
- Project (109 dòng)
- Design (193 dòng)
- Construction (286 dòng)
- Contract (206 dòng)
- Customer Success (235 dòng)
- Context file EN cần dịch
- Reference file VI mẫu
- Tên file output + đường dẫn
- Quy ước giọng điệu, thuật ngữ
docs.json, commit và push.Khi KHÔNG nên dùng sub-agent
Tự kiểm tra
Câu 1: Sub-agent có chia sẻ cửa sổ ngữ cảnh với agent chính không?
Câu 1: Sub-agent có chia sẻ cửa sổ ngữ cảnh với agent chính không?
Không. Mỗi sub-agent có cửa sổ ngữ cảnh riêng. Agent chính chỉ nhận tóm tắt kết quả — đó chính là lợi ích “cách ly ngữ cảnh (context isolation)”. Nhờ vậy, hàng nghìn dòng output trung gian của sub-agent không làm đầy bàn làm việc của agent chính.
Câu 2: Nếu tôi cần dịch 10 file giống nhau, nên spawn 10 sub-agent?
Câu 2: Nếu tôi cần dịch 10 file giống nhau, nên spawn 10 sub-agent?
Tùy. Nếu các file độc lập nhau → có, chạy song song tiết kiệm thời gian. Nếu file này phụ thuộc kết quả file kia (ví dụ: file 2 cần đọc glossary do file 1 sinh ra) → không, làm tuần tự rõ ràng hơn.
Câu 3: Sub-agent có bắt buộc định nghĩa trong thư mục `.claude/agents/`?
Câu 3: Sub-agent có bắt buộc định nghĩa trong thư mục `.claude/agents/`?
Không. Đó chỉ là convention chính thức. Bạn có thể định nghĩa inline trong prompt, hoặc trong bất kỳ file nào — Claude đọc ý định, không đọc cấu trúc cứng. Bài 5 sẽ minh họa một kiến trúc agent thực tế không theo convention mặc định mà vẫn chạy tốt.
Bài tập
Xem danh sách skill của Lulu
Mở thư mục
luklak-mintlify-docs/Lulu/02-skills/ (nếu có), hoặc đọc trước danh sách 8 skill sẽ xuất hiện ở Bài 5.Ghép skill với task
Với mỗi task dưới đây, chọn skill phù hợp:
- “Kiểm tra bài viết tiếng Việt này có dùng sai thuật ngữ không” →
quality-gate-review - “Dịch bài EN sang tiếng Việt theo chuẩn Lulu” →
translate-en-to-vi - “Thuật ngữ này nên dịch là gì?” →
glossary-lookup