2 điểm bởi johnonlee 4 giờ trước | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Nếu là một lập trình viên làm việc hằng ngày với AI coding agent, bạn sẽ biết cảm giác này.

Rõ ràng hôm qua cả hai đã thống nhất convention với nhau, vậy mà mở session mới là trắng tinh. Việc tôi luôn dùng type thay vì interface trong TypeScript, việc tôi từng nói trong PR review là không thích pattern đó, nguyên nhân gốc của bug mà tuần trước khó khăn lắm mới bắt được — tất cả đều phải được kể lại như thể đây là lần đầu tiên nó nghe thấy.

Lặp đi lặp lại như vậy, cuối cùng chỉ còn câu: "Thôi để tôi tự làm."

Để giải quyết vấn đề này, tôi đã tạo ra Monet. Biến một AI agent đa dụng hành xử như thể đó là agent của riêng tôi. Một hệ thống học convention của tôi, ghi nhớ cách làm tôi ưa thích, và tự nắm lấy lịch sử của dự án.


Nó hoạt động như thế nào

Cốt lõi rất đơn giản.

Ghi — agent tự đánh giá. Không cần ra lệnh kiểu "hãy nhớ cái này", nó tự ghi lại các quyết định được đưa ra trong quá trình làm việc, các pattern được phát hiện, và những vấn đề đã gặp. Nó lọc nhiễu và chỉ giữ lại tín hiệu.

Đọc — cái hữu ích sẽ xuất hiện trước. Đây không phải tìm kiếm từ khóa đơn thuần. Những ký ức thực sự được tham chiếu nhiều và từng giúp giải quyết vấn đề sẽ được ưu tiên hiển thị. Các bộ nhớ zombie không ai tìm đến sẽ tự nhiên bị đẩy lùi về sau.

Phát triển — càng tích lũy càng thông minh hơn. Lần làm việc đầu tiên sẽ chậm hơn. Vì nó chưa biết codebase, chưa biết convention, cũng chưa biết những bug hay tái diễn. Nhưng khi bộ nhớ tích lại, lần sau sẽ nhanh hơn. Pattern tìm ra hôm qua, quyết định đã chốt tuần trước, nguyên nhân gốc của bug đó — không cần phải đi tìm lại nữa. Sau khoảng một tháng, agent này không còn là một công cụ đa dụng nữa mà vận hành như một kỹ sư chuyên trách hiểu dự án này từ trong ra ngoài.


Tôi đã đi tới đây như thế nào

Ban đầu tôi chỉ đơn giản là dồn ghi chú vào một file. Những gì agent học được trong lúc làm việc sẽ được ghi vào Markdown, rồi khi bắt đầu session mới thì include vào. Cách đó đơn giản, nhưng càng tích lũy thì nhiễu càng nhiều.

Vì vậy 4 tháng trước, tôi đã xây dựng một hệ thống bộ nhớ đúng nghĩa. Monet cũ. Nó được thiết kế theo nền tảng MCP để agent có thể đọc và ghi, đồng thời cũng tính đến chuyện chia sẻ trong nhóm. Nhưng vì tập trung vào chia sẻ trong nhóm, trải nghiệm khi dùng một mình lại trở nên lưng chừng. Nó có hoạt động, nhưng cảm giác không hợp với workflow của tôi.

Thế là tôi làm lại từ đầu. Vài tuần trước, tôi tạm gác mục tiêu chia sẻ trong nhóm sang một bên và xây dựng lại Monet từ đầu, chỉ tập trung vào một câu hỏi: "Liệu tôi có thể thực sự dùng nó mỗi ngày không?" Tại thời điểm viết bài này, 12 agent đang đọc và ghi trên Monet mới. Vẫn chưa có tính năng monitoring nên tôi chưa thể đưa ra con số chính xác, nhưng so với trước thì số lần tìm kiếm đã giảm, còn số lần đọc/ghi thì tăng lên rất nhiều. Điều đó có nghĩa là agent đang tự chọn lọc những thứ quan trọng và tích lũy chúng.


Nói thật

Ở giai đoạn vibe coding, bộ nhớ không quá quan trọng. Phần lớn là tính năng mới được tạo ra, bug cũng đơn giản. Chỉ cần bảo agent "sửa cái này đi" là nó xử lý xong trong context window.

Nhưng khi ứng dụng đó ngày càng phức tạp, câu chuyện sẽ khác. Muốn sửa một dòng code phải kiểm tra mười đoạn logic liên quan, và agent phải bò qua file này file khác để tìm side effect. Sai sót cũng tăng lên. Dù có cho nó 1M token, sau ba lần nén context thì cũng lại quay về vạch xuất phát.

Ở nhà, tôi dùng agent để tạo ra những thứ thú vị từ code mới; còn ở công ty, ngày nào tôi cũng vật lộn với một codebase hơn 20 năm tuổi. Ở công ty, bộ nhớ của agent là thứ bắt buộc phải có. Không có nó thì công việc không thể tiến lên.

Vì thế tôi bắt đầu tự làm và dùng một bộ nhớ chỉ mục dựa trên file. Đó chính là khởi đầu của Monet. Dạo này ở công ty tôi còn cố tình bắt các agent chạy vòng vòng — để chúng thu thập context. Phần lớn ticket đều kết thúc trong 20% context đầu tiên. Chưa cần nói đến thời gian, mức độ căng thẳng cũng giảm đi.

Quan trọng nhất là, trước đây tôi phải lục lọi trí nhớ xem "mình đã sửa bug đó thế nào nhỉ", còn bây giờ tôi chỉ cần hỏi Kiro (coding agent ở công ty). Phần lớn là nó biết.

Khi số lượng agent lên đến hàng chục và code lên đến hàng triệu dòng, context không còn là vấn đề byte nữa mà là vấn đề hạ tầng. Và đến lúc đó, bộ nhớ không còn là nice-to-have mà là thứ quyết định liệu công việc có khả thi hay không.


Nếu muốn thử dùng

  • Trang chủ: monet.team-monet.com
  • GitHub: github.com/team-monet/with-monet — harness cài đặt (Apache-2.0)
  • 100% cục bộ: mã không rời khỏi thiết bị của bạn. Embedding trên thiết bị, không có network hay telemetry. Bộ nhớ là một file SQLite duy nhất trong ~/.monet — bạn có thể tự mở ra xem và backup/export.
  • Dùng miễn phí. Engine là binary biên dịch riêng, không công khai, nhưng giao diện tích hợp là MCP tiêu chuẩn. Có thể tích hợp ngay với các agent hỗ trợ MCP như Claude Code, Cursor, Codex.

Tôi đặc biệt muốn những người này thử một lần:

  • Lập trình viên làm việc nghiêm túc hằng ngày với AI agent
  • Người từng cảm thấy mệt mỏi vì phải nói lại kiểu "lại phải nhắc chuyện hôm qua nữa…"
  • Người nghĩ rằng "bộ nhớ cho agent à? tại sao lại cần thứ đó?" (thật đấy — tôi cũng muốn nghe ý kiến phản đối)

Các ví dụ và kịch bản trong bài viết này đều dựa trên trải nghiệm thực tế.

Chưa có bình luận nào.

Chưa có bình luận nào.