Đồng nghiệp AI của chúng tôi chạy bằng file
Không vector database, không memory service. Bộ nhớ của agent là markdown kèm frontmatter, một index 40 dòng, và giới hạn số dòng cứng rắn. Nhàm chán có chủ ý.
4 phút đọcViết từ Seoul và Nha Trang
Quyết định kiến trúc có ảnh hưởng lớn nhất mà chúng tôi đưa ra cho đám agent cũng là quyết định kém hào nhoáng nhất: bộ nhớ của agent chỉ là file thường nằm trong một cây thư mục thân thiện với git. Mỗi note một sự thật, frontmatter cho máy đọc, phần văn xuôi cho model đọc:
---
name: payment-retry-policy
description: retry queue must never re-attempt a captured payment
type: project
---
The retry worker treats 'captured' as terminal. The 2025-11 double-charge
incident came from retrying on a timeout after capture succeeded.
Related: [[refund-flow]], [[idempotency-keys]]
Một phiên làm việc bắt đầu bằng việc đọc một index 40 dòng, mỗi note một dòng, chứ không phải cả kho 400 KB. Model chọn hai ba note có description khớp với task rồi mở đúng những note đó. Việc truy hồi là một quyết định do thứ biết suy luận đưa ra, dựa trên các description mà con người đã tuyển chọn, và luôn giải thích được sau đó: đây là dòng index, đây là file, đây là câu chữ.
Tại sao không dùng embedding
Chúng tôi từng dựng thử cùng kho dữ liệu đó phía sau một vector store rồi khai tử nó sau hai tuần. Khi một agent hành xử kỳ cục, chẳng có file nào để mở, chỉ có mấy điểm similarity để mà đoán mò. Muốn sửa thì phải re-embed thay vì chỉnh lại một đoạn văn. Mà vài trăm note đã tuyển chọn thì cần gì đến approximate nearest neighbor; cả cái index gọn trong một màn hình context. Embedding sinh ra để giải quyết quy mô lớn và sự mơ hồ. Bộ nhớ đã tuyển chọn thì chẳng dính vấn đề nào trong hai cái đó.
Giới hạn quan trọng hơn schema
- File rules gọn trong một màn hình, thêm một dòng thì phải xóa một dòng.
- File state có giới hạn số dòng cứng; một cron quét mọi thứ cũ mèm vào một archive mà công cụ recall vẫn tìm được.
- Mỗi note liên kết tới các note liên quan bằng tham chiếu [[name]], nên có thể lần theo cả đồ thị chỉ bằng grep.
Bộ nhớ phình ra vô giới hạn thì sẽ không còn ai đọc, và bộ nhớ không được đọc chỉ là đồ trang trí. Chính mấy cái giới hạn giữ cho hệ thống trung thực.
Ranh giới khiến nó an toàn
Agent đề xuất, gate định đoạt. Một agent có thể nháp bất cứ thứ gì vào cây thư mục của nó, nhưng những hành động không thể hoàn tác, deploy, xóa, thanh toán, tin nhắn gửi ra ngoài, đều phải đi qua đúng những cái gate máy móc mà cron job của chúng tôi vẫn dùng: whitelist, hạn mức, ledger, và sự phê duyệt của con người ở những chỗ thật sự quan trọng. Chúng tôi không yêu cầu model phải nhớ mà cẩn thận. Sự cẩn thận được biên dịch thẳng vào pipeline bao quanh nó.