Đừng tin tưởng mù quáng vào các cửa sổ ngữ cảnh khổng lồ của LLM
Bài viết phân tích việc các mô hình ngôn ngữ lớn (LLM) thực tế chỉ hoạt động hiệu quả trong khoảng 100.000 token đầu tiên, bất chấp quảng cáo về khả năng xử lý hàng triệu token. Các tác nhân lập trình hiện nay dễ dàng vượt quá giới hạn này, khiến AI rơi vào trạng thái "quên" thông tin và hoạt động kém hiệu quả. Tác giả đề xuất phương pháp quản lý ngữ cảnh như một ngân sách, sử dụng các tài liệu tóm tắt và phiên làm việc mới để duy trì hiệu suất tối ưu.
Mới đây, tôi đã xem một video đã gọi tên được một cảm giác mà tôi đã nhận thấy từ lâu. Tác giả chia sẻ cửa sổ ngữ cảnh (context window) của một LLM thành hai khu vực: vùng thông minh (smart zone) và vùng kém thông minh (dumb zone).
Trong vùng thông minh, mô hình hoạt động sắc bén. Tuy nhiên, khi bước vào vùng kém thông minh, sự chú ý (attention) giảm sút và mô hình bắt đầu quên những gì bạn vừa nói vài phút trước. Điểm cắt ngang này nằm ở đâu đó khoảng 100.000 token. Con số này không phụ thuộc vào việc nhà cung cấp quảng cáo cửa sổ ngữ cảnh lớn đến đâu.
Tại sao vấn đề này lại quan trọng?
Điều này trở nên cấp thiết vì các tác nhân lập trình (coding agents) sẽ rất vui vẻ dẫn bạn thẳng vào vùng kém thông minh. Một tác nhân hiện đại tiêu thụ token cực nhanh. Chỉ với vài lần đọc file, một phiên gỡ lỗi dài, hoặc một loạt bài kiểm tra (test) rộng lớn, bạn đã chạm mốc 100k token trước giờ ăn trưa.
Trong khi đó, các nhà cung cấp vẫn tiếp tục quảng cáo các con số 200k, 1M, thậm chí 2M token, như thể những con số đó đại diện cho một bộ nhớ làm việc khả dụng. Thực tế không phải vậy. Các nghiên cứu như RULER và báo cáo về "sự phân rã ngữ cảnh" (context rot) của Chroma cho thấy ngữ cảnh hiệu quả chỉ là một phần nhỏ trong số được quảng cáo, và hiệu suất sẽ giảm dần khi bạn lấp đầy cửa sổ đó.
Các cửa sổ ngữ cảnh lớn chủ yếu là một con số marketing. Kiến trúc đằng sau chúng hoạt động, nhưng chúng chỉ che đậy một vấn đề mà cơ chế chú ý (attention mechanism) cơ bản chưa thực sự giải quyết được. Con số trên hộp ngày càng lớn hơn ở mỗi bản phát hành, nhưng phần có thể sử dụng thì không theo kịp.
Giải pháp tự động chưa đủ
Các tác nhân hiện đại đang trở nên thông minh hơn trong việc này. Các công cụ như Claude Code hiện có tính năng tự động nén (auto-compact): khi phiên làm việc trở nên dài, tác nhân sẽ tóm tắt lịch sử và bắt đầu lại. Điều này có ích.
Tuy nhiên, tính năng tự động nén chỉ kích hoạt sau khi bạn đã dành thời gian ở vùng kém thông minh, và bản tóm tắt đó lại được tạo ra bởi một mô hình mà hiệu suất đã bị suy giảm. Tốt hơn là không có gì, nhưng tôi thà tránh tình huống này hoàn toàn.
Cách tiếp cận "ngân sách ngữ cảnh"
Điều tôi làm là mở một phiên làm việc mới và chuyển cho nó một bản đặc tả (spec) do chính tôi viết. Đó là một sự chuyển giao tín hiệu cao hơn nhiều so với bất kỳ bản tóm tắt tự động nào, vì tôi quyết định điều gì là quan trọng cho bước tiếp theo. Đây là cách tiếp cận "để lại dấu vết bánh mì" (breadcrumb) được áp dụng cho các tác nhân. Để lại một tài liệu (artifact) mà phiên tiếp theo hoặc người tiếp theo có thể nhặt lên một cách sạch sẽ.
Bạn có thể đi xa hơn nữa. Các dự án như obra/superpowers và mattpocock/skills xây dựng toàn bộ quy trình công việc của tác nhân xung quanh các tài liệu nhỏ, được đặt tên. PRD, kế hoạch, kỹ năng, chuyển giao tác nhân con. Mỗi cái là một cách để giữ phiên làm việc trong vùng thông minh bằng cách cố ý di chuyển thông tin ra khỏi phiên thành một thứ mà phiên tiếp theo có thể đọc được.
Vì vậy, tôi coi cửa sổ ngữ cảnh của mình như một ngân sách. Tôi giả định chỉ có phần đầu tiên thực sự làm việc cho tôi, và mọi thứ tôi có thể chuyển ra khỏi phiên trực tiếp và vào một tài liệu viết là một thứ ít hơn mà sự chú ý phải đấu tranh để giành lấy.
