Agent AI không cần bộ nhớ, chúng cần tài liệu
Các plugin bộ nhớ cho AI agent hiện nay đều dựa trên RAG, tạo ra hàng nghìn đoạn ngữ cảnh rời rạc và chèn vào mỗi câu lệnh — một kiến trúc đầy lỗ hổng. Giải pháp đúng đắn không phải là ghi nhớ tốt hơn, mà là xây dựng một hệ thống tài liệu có cấu trúc mà agent có thể đọc, cập nhật và chia sẻ.

Agent AI không cần bộ nhớ, chúng cần tài liệu
Các plugin bộ nhớ cho AI agent hiện nay đều hoạt động theo cùng một cách: phân tích hội thoại, tạo ra hàng nghìn đoạn ngữ cảnh rời rạc, nhét vào cơ sở dữ liệu vector, rồi chèn vài đoạn "giống nhất" vào mỗi câu lệnh. Tác giả bài viết gốc cho rằng toàn bộ hệ sinh thái này đang giải quyết sai bài toán — vì agent không cần bộ nhớ, chúng cần tài liệu.
Bản chất của mọi plugin "bộ nhớ" đều là RAG
Hãy nhìn vào kiến trúc thực sự của bất kỳ plugin bộ nhớ nào trên thị trường:
- Đi qua toàn bộ bản ghi hội thoại
- Tạo ra các đoạn "ký ức" nhỏ
- Chèn vào cơ sở dữ liệu RAG
- Mỗi câu lệnh, truy xuất 5 đoạn giống nhất và chèn vào ngữ cảnh
- Nếu cần thêm, cấp cho agent một công cụ để tự tìm kiếm trong cơ sở dữ liệu RAG
Một số công cụ còn "cao cấp" hơn: cho phép agent tìm kiếm từng từ trong bản ghi cũ, xây dựng hệ thống bộ nhớ đa tầng phân loại ngắn hạn/dài hạn, hoặc thêm các tiến trình nền để rà soát, gộp và loại bỏ trùng lặp ký ức. Có cả những "dreamer" viết lại ký ức qua đêm, nén ngữ cảnh liên tục, reranker, vân vân.
Mỗi plugin lại thêm những tính năng "đốt token" mới để vá cùng một kiến trúc sai lầm bên dưới. Đó là lý do không có công cụ nào hoạt động đáng tin cậy.
Bạn muốn agent hiểu dự án của mình. Biết tính năng nằm ở đâu, tại sao nó được xây dựng, bạn đã thống nhất điều gì và bạn quan tâm đến điều gì. Thay vào đó, bạn nhận được một cuộc xổ số các đoạn RAG, chèn vào mỗi câu lệnh, hy vọng đoạn đúng sẽ nổi lên.
Kiến trúc bộ nhớ RAG rối rắm với hàng nghìn đoạn rời rạc
Năm vấn đề cốt lõi của mọi hệ thống bộ nhớ dựa trên truy xuất
Tất cả các plugin bộ nhớ đều mắc chung một nhóm vấn đề:
Ký ức được đưa lên bởi độ tương đồng. Tìm kiếm tương đồng chỉ xếp hạng mức độ gần nhau của hai đoạn trong không gian embedding. Chấm hết. Bạn không biết đoạn nào đúng, đoạn nào còn hiệu lực, hay đang thiếu gì.
Ký ức được lưu mà không có ngữ cảnh. Một đoạn RAG chỉ chứa được ngần ấy thông tin. Bạn mất tất cả phần còn lại: bối cảnh, động cơ, bài học kinh nghiệm, môi trường, v.v.
Quá khứ được đối xử như chân lý. Tất cả plugin đều dựa vào việc hồi tưởng, dù là tìm trong bản ghi hay cơ sở dữ liệu vector. Nhưng mã nguồn thay đổi mỗi ngày — vậy 500 đoạn về xác thực có còn chính xác không?
Agent không thể tìm thứ nó không biết. Kể cả khi bạn cấp công cụ tìm kiếm cho agent, làm sao nó biết khi nào nên dùng? Agent không biết những gì nó không biết.
Kho lưu trữ không thể kiểm toán. Có 10.000 embedding trong SQLite. Ký ức nào tồn tại? Cái nào đã cũ? Cái nào chưa từng được truy xuất? Cái nào sai và đang âm thầm ảnh hưởng đến cách agent hoạt động?
Tất cả đều xuất phát từ một giả định chung: agent quên — đó là vấn đề. Nên giải pháp là ghi nhớ. Muốn nhớ tốt hơn, ta phải thu thập nhiều hơn, đánh chỉ mục tốt hơn, truy xuất thông minh hơn.
Nhưng không ai xử lý tri thức theo cách đó. Không ai xem lại bản ghi cuộc họp nhóm từ 3 năm trước để nhớ các ràng buộc quanh một tính năng. Người ta viết ra giấy và dùng chính những ghi chép đó.
Tài liệu thay vì hồi tưởng
Mọi người đã biết agent cần ngữ cảnh. Đó là lý do họ phát minh ra các file AGENTS.md — để agent không lao vào mã nguồn trong tình trạng mù tịt. Nó hiệu quả. Nhưng thường thì file duy nhất đó chính là tài liệu duy nhất của dự án.
Một file là không đủ. Agent cần cả một bộ não — một không gian làm việc có cấu trúc, nơi nó ghi lại hướng dẫn, đặc tả, quyết định, nghiên cứu, chỉ mục, mọi thứ mà không cần được yêu cầu.
- Hướng dẫn về cách quy trình review mã hoạt động
- Đặc tả chi tiết điều đã thảo luận với người dùng
- Nghiên cứu có thể tái sử dụng về một thư viện hay API lạ
Khi agent làm việc, nó đọc file từ bộ não để có ngữ cảnh đầy đủ và liên quan. Sau khi làm việc, nó cập nhật những gì đã lỗi thời, thêm tài liệu mới khi cần, trong lúc toàn bộ bức tranh vẫn còn trong ngữ cảnh.
Vòng lặp agent chuyển từ câu lệnh → xây dựng → quên sang câu lệnh → tra cứu → xây dựng → cập nhật
Bằng cách này, vòng lặp agent thay đổi từ câu lệnh → xây dựng → quên thành câu lệnh → tra cứu → xây dựng → cập nhật. Bộ nhớ biến từ một cơ sở dữ liệu RAG gắn thêm vào agent thành một không gian làm việc bạn có thể đọc, cập nhật, thậm chí chia sẻ.
Thử nghiệm thực tế
Tác giả bài viết gốc đã nhận ra vấn đề này hơn một năm trước, khi lần đầu lập trình với AI. Ông muốn agent ghi nhớ công việc xuyên phiên, nên bắt đầu tạo một thư mục internal/ để yêu cầu agent viết mọi thứ xuống: đặc tả, kế hoạch, chỉ mục. Ông giao cho agent nhiệm vụ luôn đọc tài liệu và chỉ mục phù hợp trước khi làm việc, rồi cập nhật sau đó.
Tập hướng dẫn sơ khai này dần chuyển thành một hệ thống chính quy, rồi thành một plugin tên Operator Memory mà ông dùng thường xuyên trong mọi dự án.
Operator Memory cung cấp bộ nhớ dựa trên tài liệu theo mô hình vừa nêu. Nó trao cho agent một bộ não Markdown để lưu giữ tri thức quan trọng: hướng dẫn, đặc tả, nghiên cứu, chỉ mục. Trước khi làm việc, agent luôn tra cứu bộ não để lấy tài liệu liên quan. Sau khi làm việc, agent cập nhật bộ não, xem lại tài liệu cũ, thêm tài liệu khi còn thiếu.
Không cơ sở dữ liệu vector. Không embedding. Không trình tóm tắt, quản lý, cập nhật, dreamer hay bất kỳ tiến trình nền đốt token nào. Không truy xuất hộp đen.
Với Operator, mọi thứ là một tài liệu Markdown thuần túy mà bạn có thể đọc, cập nhật, commit và chia sẻ với đồng đội.
Góc nhìn cho lập trình viên Việt Nam
Với các nhóm phát triển phần mềm tại Việt Nam — đặc biệt những nhóm nhỏ đang tận dụng AI để tăng tốc — bài học này khá thiết thực. Việc phụ thuộc vào plugin bộ nhớ RAG thường tạo cảm giác an tâm giả tạo, nhưng lại thiếu khả năng kiểm toán và dễ tích tụ thông tin sai lệch.
Xây dựng một hệ thống tài liệu có cấu trúc, đặt trong chính kho mã nguồn, giúp cả người lẫn máy cùng đọc được, cùng cập nhật được. Nó minh bạch, dễ review, dễ chia sẻ trong nhóm, và không phụ thuộc vào những dịch vụ bên ngoài vốn có thể thay đổi hay ngừng hoạt động.
Nếu bạn muốn thử, dự án Operator Memory là mã nguồn mở và miễn phí: github.com/aerovato/operator-memory.


