Context Engineering: Kỹ thuật ngữ cảnh cho AI Agent 2026

Posted on: 6/8/2026 1:09:23 AM

Năm 2024 chúng ta nói về prompt engineering — gọt giũa từng câu chữ trong lời nhắc. Năm 2026, khi AI Agent chạy hàng trăm bước, gọi hàng chục công cụ và sống qua những phiên làm việc dài hàng giờ, câu hỏi không còn là "viết prompt thế nào cho hay" mà là "đưa thông tin gì, vào lúc nào, và bao nhiêu là vừa đủ". Đó chính là Context Engineering — kỹ năng định hình của kỷ nguyên agent.

Bài viết này đi sâu vào lý do vì sao "nhồi" thêm context không làm agent thông minh hơn mà thường khiến nó kém đi, và bốn nhóm kỹ thuật để giữ cho cửa sổ ngữ cảnh luôn gọn gàng, đậm tín hiệu.

Từ Prompt Engineering đến Context Engineering

Prompt engineering là việc rời rạc: bạn soạn một lời nhắc tốt rồi dùng lại. Context engineering thì lặp đi lặp lại — ở mỗi lượt suy luận, agent phải quyết định lại xem cửa sổ ngữ cảnh nên chứa những gì. Như Anthropic định nghĩa, đây là "tập hợp các chiến lược để tuyển chọn và duy trì bộ token tối ưu trong suốt quá trình suy luận của LLM".

Khác biệt cốt lõi: prompt engineering chỉ bận tâm cách diễn đạt chỉ dẫn, còn context engineering làm chủ toàn bộ vòng đời token — từ token đầu tiên của system prompt đến bản tóm tắt cuối cùng sau khi nén. Với agent chạy dài hơi, nó thay thế chứ không bổ sung cho prompt engineering.

Nguyên lý xuyên suốt

Toàn bộ context engineering quy về một câu: tìm tập token nhỏ nhất, đậm tín hiệu nhất, đủ để tối đa hóa khả năng đạt kết quả mong muốn. Mọi token thêm vào đều phải "trả phí" — và cái phí đó không hề rẻ.

Context là tài nguyên hữu hạn: hiện tượng "Context Rot"

Trực giác sai lầm phổ biến nhất: cửa sổ ngữ cảnh 200K hay 1M token nghĩa là cứ đổ đầy thông tin vào là tốt. Thực tế ngược lại. Nghiên cứu của Chroma năm 2025 trên 18 mô hình tiên tiến cho thấy tất cả đều suy giảm độ chính xác khi đầu vào dài ra — hiện tượng được gọi là context rot (ngữ cảnh "mục ruỗng").

18/18mô hình tiên tiến đều suy giảm khi context dài ra (Chroma 2025)
~50%mức lấp đầy mà độ chính xác bắt đầu nghiêng về token gần nhất
~75%ngưỡng mà chất lượng tụt mạnh — cần nén chủ động trước điểm này
quan hệ cặp token trong attention — gốc rễ của giới hạn

Vì sao? Kiến trúc transformer buộc mỗi token phải "chú ý" tới mọi token khác, tạo ra n² quan hệ cặp. Khi context phình to, "ngân sách chú ý" (attention budget) bị pha loãng. Cộng thêm việc dữ liệu huấn luyện thiên về văn bản ngắn, mô hình có ít tham số chuyên cho các phụ thuộc trải dài toàn cục. Kết quả là ba lỗi kinh điển:

  • Lost in the middle — thông tin nằm giữa khối context dài dễ bị bỏ quên hơn so với ở đầu và cuối.
  • Attention dilution — càng nhiều token, sự chú ý dành cho mỗi token càng loãng.
  • Distractor interference — token gây nhiễu (gần đúng nhưng không liên quan) kéo mô hình đi sai hướng.

Lập ngân sách theo phần trăm, không theo token tuyệt đối

Đừng đợi đến khi gần chạm giới hạn 200K mới lo. Hãy quản lý theo tỷ lệ lấp đầy: qua mốc ~50% mô hình bắt đầu thiên vị token gần nhất, qua ~75% chất lượng rớt mạnh. Nén chủ động trước ngưỡng luôn rẻ hơn nhiều so với cứu vãn một thất bại do ngữ cảnh gây ra.

Bốn kỹ thuật cốt lõi để quản lý ngữ cảnh

Dù khung tư duy mỗi nơi mỗi khác, các kỹ thuật context engineering thực chiến đều quy về bốn nhóm. Hãy xem chúng như bốn chiếc van để điều tiết dòng token chảy vào cửa sổ ngữ cảnh.

flowchart TB
    CTX["Cửa sổ ngữ cảnh
(tài nguyên hữu hạn)"] subgraph TECH["4 kỹ thuật điều tiết"] OFF["Offload — Giảm tải
tóm tắt kết quả công cụ,
giữ tham chiếu tới dữ liệu gốc"] RED["Reduce — Nén gọn
compaction & summarization
khi gần chạm ngưỡng"] RET["Retrieve — Truy hồi
nạp đúng thứ cần, đúng lúc
(just-in-time)"] ISO["Isolate — Cô lập
sub-agent với context riêng,
trả về bản tóm tắt"] end OFF --> CTX RED --> CTX RET --> CTX ISO --> CTX CTX --> OUT["Bộ token nhỏ nhất,
đậm tín hiệu nhất"] style CTX fill:#e94560,stroke:#fff,color:#fff style OUT fill:#2c3e50,stroke:#fff,color:#fff style OFF fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style RED fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style RET fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style ISO fill:#f8f9fa,stroke:#e94560,color:#2c3e50
Bốn van điều tiết dòng token: Offload, Reduce, Retrieve, Isolate.

1. Offload — Giảm tải kết quả công cụ

Một lệnh gọi công cụ có thể trả về 50.000 token JSON, nhưng agent thường chỉ cần 3 dòng. Kỹ thuật offload: tóm tắt phản hồi công cụ trước khi đưa vào context, đồng thời lưu dữ liệu đầy đủ ra ngoài (file, object store) và giữ lại một tham chiếu nhẹ. Thực nghiệm cho thấy hóa đầu ra công cụ có thể cắt tới 99% số token trước khi nó chạm vào cửa sổ ngữ cảnh.

2. Reduce — Nén gọn hội thoại

Khi lịch sử hội thoại phình to, compaction sẽ tóm tắt nó và khởi tạo lại cửa sổ ngữ cảnh mới từ bản tóm tắt. Đây là kỹ thuật long-horizon quan trọng nhất, sẽ bàn kỹ ở phần sau.

3. Retrieve — Truy hồi đúng lúc

Thay vì nhồi sẵn mọi tài liệu vào context, agent giữ các "định danh nhẹ" (đường dẫn file, truy vấn đã lưu, link) rồi nạp dữ liệu theo nhu cầu tại thời điểm chạy. Đây là bước dịch chuyển từ RAG kiểu pre-retrieval sang just-in-time.

4. Isolate — Cô lập bằng sub-agent

Giao tác vụ con cho các sub-agent, mỗi cái có cửa sổ ngữ cảnh riêng, system prompt riêng và quyền dùng công cụ bị giới hạn. Chúng làm việc độc lập, không "làm bẩn" ngữ cảnh chính của agent điều phối.

System prompt ở "đúng độ cao"

System prompt tốt nằm ở vùng Goldilocks giữa hai thái cực:

Thái cựcBiểu hiệnHậu quả
Quá cụ thểHardcode logic phức tạp, liệt kê mọi tình huống if-elseGiòn, khó bảo trì, dễ vỡ khi gặp ca lạ
Quá mơ hồChỉ dẫn chung chung, giả định agent đã "ngầm hiểu"Hành vi thiếu định hướng, kết quả chệch choạc
Đúng độ caoĐủ cụ thể để dẫn dắt, đủ linh hoạt để mô hình tự suy luận heuristic mạnhỔn định và dễ tiến hóa theo lỗi thực tế

Thực hành tốt: chia prompt thành các khối rõ ràng (bối cảnh, chỉ dẫn, hướng dẫn dùng công cụ, mô tả đầu ra) bằng thẻ XML hoặc tiêu đề Markdown; bắt đầu với prompt tối giản trên mô hình mạnh, rồi chỉ bổ sung chỉ dẫn dựa trên phân tích các lỗi thực tế thay vì cố phủ mọi trường hợp ngay từ đầu.

Thiết kế công cụ: ít chồng lấn, đậm tín hiệu

Phép thử của kỹ sư

"Nếu một kỹ sư con người không thể nói chắc chắn nên dùng công cụ nào trong một tình huống, thì đừng mong AI Agent làm tốt hơn." Bộ công cụ phình to và chồng chéo chức năng là một trong những nguyên nhân thất bại bị xem nhẹ nhất.

Công cụ tốt cần tự chứa, chống lỗi, và cực kỳ rõ ràng về mục đích sử dụng. Mỗi công cụ nên trả về thông tin súc tích và có ít chồng lấn chức năng với các công cụ khác — vừa tiết kiệm token, vừa giúp agent chọn đúng. Với ví dụ minh họa, đừng liệt kê đủ mọi ca biên; hãy tuyển một bộ ví dụ đa dạng, kinh điển phản ánh đúng hành vi kỳ vọng — "ví dụ là bức tranh đáng giá ngàn lời".

Just-in-time vs Pre-retrieval

Trào lưu đang dịch từ việc nhúng và truy hồi toàn bộ dữ liệu trước khi suy luận, sang chiến lược nạp đúng lúc. Cách tiếp cận này phản chiếu cách con người làm việc: ta không thuộc lòng mọi thứ, mà dùng hệ thống tổ chức bên ngoài (thư mục, sổ tay, dấu trang) để lấy ra khi cần.

Tiêu chíPre-retrieval (RAG cổ điển)Just-in-time
Thời điểm nạpTrước suy luận, một lầnTại runtime, theo nhu cầu
Thứ giữ trong contextCả khối dữ liệu đã embeddingĐịnh danh nhẹ: path, query, link
Tín hiệu metadataBị làm phẳng khi chunkGiữ nguyên: tên file, timestamp, cấu trúc thư mục
Khám phá lũy tiếnKhóTự nhiên (progressive disclosure)
Nhược điểmDễ nhồi token thừa, mất tín hiệuChậm hơn runtime, đòi thiết kế công cụ kỹ lưỡng

Trong thực tế, nhiều hệ thống dùng kết hợp: pre-retrieval cho phần kiến thức ổn định, just-in-time cho dữ liệu động và lớn.

Kỹ thuật cho tác vụ dài hơi (long-horizon)

Compaction — Nén để khởi tạo lại

Khi hội thoại sắp chạm giới hạn, compaction tóm tắt nội dung rồi bắt đầu một cửa sổ ngữ cảnh mới chỉ với bản tóm tắt đó. Mấu chốt là cân bằng: nén quá tay sẽ đánh rơi những chi tiết tưởng nhỏ nhưng về sau mới lộ ra là tối quan trọng. Lời khuyên: ưu tiên khả năng nhớ lại (recall) trước, rồi mới tinh chỉnh độ chính xác; và hãy dùng trigger theo ngưỡng thay vì cắt cụt phản xạ khi tràn.

flowchart LR
    A["Hội thoại dài
~75% cửa sổ"] --> B{"Chạm
ngưỡng?"} B -- "Chưa" --> A B -- "Rồi" --> C["Tóm tắt
(ưu tiên recall)"] C --> D["Khởi tạo lại
cửa sổ mới + tóm tắt"] D --> E["Agent tiếp tục
với context gọn"] E --> A style A fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style B fill:#ff9800,stroke:#fff,color:#fff style C fill:#e94560,stroke:#fff,color:#fff style D fill:#16213e,stroke:#fff,color:#fff style E fill:#2c3e50,stroke:#fff,color:#fff
Vòng đời compaction: phát hiện ngưỡng → tóm tắt → khởi tạo lại → tiếp tục.

Ghi chú có cấu trúc — bộ nhớ ngoài context

Agent có thể tự ghi chú ra bộ nhớ bên ngoài cửa sổ ngữ cảnh, rồi nạp lại khi cần. Một file NOTES.md đơn giản đủ để agent theo dõi tiến độ, ghi lại các phụ thuộc và quyết định quan trọng xuyên suốt một tác vụ kéo dài hàng nghìn bước — thứ mà nếu để trong context sẽ bị compaction cuốn trôi. Đây là cách tạo "bộ nhớ bền" với chi phí cực thấp.

Kiến trúc sub-agent — chia để trị ngữ cảnh

Thay vì một agent ôm toàn bộ trạng thái dự án, một agent điều phối giữ kế hoạch tổng, còn các sub-agent chuyên biệt xử lý từng tác vụ với cửa sổ ngữ cảnh sạch. Mỗi sub-agent có thể khám phá rất sâu (đọc hàng chục file, chạy nhiều truy vấn) nhưng chỉ trả về một bản tóm tắt cô đọng, thường chỉ 1.000–2.000 token. Nhờ đó ngữ cảnh của agent chính luôn gọn và tách bạch mối quan tâm rõ ràng.

flowchart TB
    ORC["Agent điều phối
giữ kế hoạch tổng"] ORC --> S1["Sub-agent A
context riêng"] ORC --> S2["Sub-agent B
context riêng"] ORC --> S3["Sub-agent C
context riêng"] S1 -- "tóm tắt 1-2K token" --> ORC S2 -- "tóm tắt 1-2K token" --> ORC S3 -- "tóm tắt 1-2K token" --> ORC ORC --> RES["Tổng hợp kết quả
context vẫn gọn"] style ORC fill:#e94560,stroke:#fff,color:#fff style RES fill:#2c3e50,stroke:#fff,color:#fff style S1 fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style S2 fill:#f8f9fa,stroke:#e94560,color:#2c3e50 style S3 fill:#f8f9fa,stroke:#e94560,color:#2c3e50
Mỗi sub-agent khám phá sâu trong context riêng, chỉ trả về bản chắt lọc.

Hành trình tiến hóa

2022–2023
Prompt engineering — gọt giũa câu chữ, few-shot, chain-of-thought. Context window còn nhỏ (4K–8K).
2024
Bùng nổ RAG và cửa sổ ngữ cảnh dài (128K–200K). Niềm tin "context càng dài càng tốt" lên ngôi.
2025
Context rot lộ diện — nghiên cứu Chroma trên 18 mô hình chứng minh chất lượng suy giảm theo độ dài. Cộng đồng nhận ra "dài" không đồng nghĩa "tốt".
2026
Context engineering thành chuẩn mực — compaction, structured memory, sub-agent, just-in-time retrieval trở thành nền tảng cho agent production.

Checklist thực chiến

Việc nên làm

  • Theo dõi số token theo thời gian thực — không đo thì không phải đang làm context engineering.
  • Có file onboarding AGENTS.md/CLAUDE.md để định hình hành vi nền.
  • Sandbox hóa đầu ra công cụ trước khi nó chạm context.
  • Nén theo trigger ngưỡng, ưu tiên khả năng đảo ngược hơn là nén tối đa.
  • Đẩy tác vụ nặng context cho sub-agent; chỉ kéo về bản tóm tắt.

Việc nên tránh

  • Nhồi mọi tài liệu "cho chắc" — đó là cách nhanh nhất gây distractor interference.
  • Đợi tràn context rồi mới cắt cụt phản xạ (reactive truncation).
  • Bộ công cụ chồng chéo, mô tả mơ hồ.
  • Compaction quá tay làm rơi mất chi tiết quan trọng tiềm ẩn.

Kết luận

Context engineering không phải là chiêu trò nhỏ mà là môn học nền của kỷ nguyên agent. Khi mô hình ngày càng mạnh, lợi thế cạnh tranh không nằm ở việc có cửa sổ ngữ cảnh to hơn, mà ở việc biết đưa đúng thông tin, đúng lúc, đúng liều lượng. Hãy coi mỗi token như một khoản chi từ "ngân sách chú ý" hữu hạn — và tiêu nó một cách khôn ngoan. Câu thần chú để ghi nhớ vẫn là: tìm tập token nhỏ nhất, đậm tín hiệu nhất, đủ để agent hoàn thành việc.


Nguồn tham khảo