Context engineering: fewer tokens, stronger signal for your agents
TL;DR
Context is a limited attention budget that thins as it grows. Keep a small, high-signal set of tokens, retrieve just in time, and for long tasks use compaction, structured notes or sub-agents.
Prompt engineering hỏi "viết câu lệnh thế nào cho hay". Khi xây agent chạy nhiều lượt, câu hỏi lớn hơn là: ở mỗi lượt, cái gì nên nằm trong context của model? System prompt, định nghĩa tool, kết quả tool, lịch sử hội thoại, tài liệu bên ngoài… tất cả cộng dồn và tranh nhau sự chú ý. Anthropic gọi kỹ năng này là context engineering trong bài viết kỹ thuật tháng 9/2025 của nhóm Applied AI. Bài này tóm tắt các ý chính và cách áp dụng cho cả người dùng Claude Code lẫn người tự build agent.
Vì sao context là tài nguyên khan hiếm?
- Context rot: các bài test "tìm kim trong đống rơm" cho thấy khi số token tăng, khả năng model nhớ chính xác thông tin trong context giảm dần.
- Ngân sách chú ý: mỗi token mới "rút" một phần chú ý. Kiến trúc transformer cho mọi token nhìn mọi token khác (n² quan hệ), nên context càng dài càng loãng.
- Suy giảm này là một dốc thoai thoải chứ không phải vách đá: context dài vẫn dùng được, nhưng độ chính xác kém dần.
Nguyên tắc định hướng của bài viết: tìm tập token nhỏ nhất nhưng giàu tín hiệu nhất giúp tăng khả năng đạt kết quả mong muốn.
Các thành phần của context
| Thành phần | Lỗi thường gặp | Khuyến nghị |
|---|---|---|
| System prompt | Quá cứng (if-else chi chít) hoặc quá mơ hồ | Viết ở "độ cao vừa phải": rõ ràng, chia mục bằng XML/Markdown; bắt đầu tối giản rồi thêm theo lỗi quan sát được |
| Tools | Bộ tool phình to, chồng chéo chức năng | Mỗi tool rõ phạm vi, ít trùng nhau, trả kết quả gọn. Kỹ sư còn không chắc nên chọn tool nào thì agent cũng không |
| Ví dụ | Nhồi danh sách dài các trường hợp biên | Vài ví dụ tiêu biểu, đa dạng |
| Dữ liệu | Nạp sẵn mọi thứ có thể liên quan | Truy xuất "đúng lúc" (just-in-time) |
Just-in-time: giữ "con trỏ", không giữ dữ liệu
Thay vì nạp trước toàn bộ tài liệu, agent giữ các tham chiếu nhẹ (đường dẫn file, câu query, link) và dùng tool để đọc khi cần. Claude Code là ví dụ: phân tích dữ liệu lớn bằng query có mục tiêu, head, tail, thay vì đọc cả file. Tên thư mục, quy ước đặt tên, thời gian sửa đổi đều là tín hiệu giúp agent đoán file nào quan trọng. Đánh đổi: khám phá lúc chạy chậm hơn. Claude Code chọn cách lai: CLAUDE.md nạp sẵn, còn lại tìm bằng glob/grep.
Ba kỹ thuật cho tác vụ dài hơi
- Compaction: khi gần đầy, tóm tắt hội thoại rồi bắt đầu lại với bản tóm tắt. Claude Code giữ quyết định quan trọng, bug chưa xử lý, chi tiết triển khai và các file vừa truy cập, bỏ output tool thừa. Dạng nhẹ nhất là xoá kết quả tool cũ.
- Ghi chú có cấu trúc: agent tự ghi tiến độ ra file ngoài context (to-do list,
NOTES.md) rồi đọc lại khi cần. Ví dụ trong bài: Claude chơi Pokémon giữ ghi chú bản đồ và chiến thuật qua hàng nghìn bước. - Kiến trúc sub-agent: agent chính điều phối, sub-agent làm việc trong context sạch, có thể dùng hàng chục nghìn token nhưng chỉ trả về bản tóm tắt khoảng 1.000–2.000 token.
Chọn kỹ thuật: compaction cho hội thoại qua lại dài; ghi chú cho phát triển lặp có mốc rõ; multi-agent cho nghiên cứu, phân tích song song.
Rủi ro và lưu ý
- Compaction tóm tắt quá tay sẽ làm mất chi tiết tinh tế; bài viết khuyên tối ưu "nhớ đủ" trước, rồi mới "gọn".
- Multi-agent tốn tổng token nhiều hơn; chỉ đáng khi việc thật sự chia nhỏ được.
- Model càng giỏi càng cần ít "kỹ thuật" hơn, nên tránh xây hệ thống quá phức tạp cho vấn đề tạm thời.
Áp dụng thế nào?
- Dev (dùng Claude Code): Giao việc khám phá cho subagent, ghi kế hoạch vào file,
/cleargiữa các task không liên quan, và dùng@filethay vì dán cả thư mục. - Tech Lead (build agent): Đo token theo từng thành phần (system, tools, history); tool trả kết quả gọn có phân trang; thêm cơ chế ghi chú và compaction ngay từ thiết kế.
- PM: Khi viết yêu cầu cho tính năng AI, định nghĩa rõ "agent cần biết gì ở mỗi bước". Đó chính là đặc tả context.
Sources & references
- Effective context engineering for AI agents — Anthropic Engineering