Cách xây dựng các AI Agent không bị quên (Sử dụng Memory Files)

@sairahul1
TIẾNG ANH4 tuần trước · 19 thg 6, 2026
395K
256
44
16
773

TL;DR

Các AI agent thường hoạt động kém hiệu quả do thiếu ngữ cảnh nhất quán giữa các phiên làm việc. Bằng cách sử dụng các tệp bộ nhớ như CLAUDE.md và AGENTS.md, các lập trình viên có thể tạo ra những agent ghi nhớ quy tắc dự án và học hỏi từ các mô hình theo thời gian.

Hầu hết các AI agent thất bại không phải vì mô hình tệ.

Chúng thất bại vì mỗi phiên làm việc, chúng thức dậy với chứng mất trí nhớ.

Bạn bảo Claude: "bọn mình dùng pnpm, không phải npm."

Phiên tiếp theo: nó lại thử npm.

Bạn bảo nó: "ở đây không dùng default export."

Phiên tiếp theo: nó viết một default export.

Mọi sửa lỗi bạn thực hiện đều biến mất ngay khi phiên làm việc kết thúc.

Có một cách sửa chỉ với một tệp duy nhất.

Tôi đã mất ba tháng lặp đi lặp lại để tìm ra nó.

Đây là tất cả những gì tôi học được.

Tại sao hầu hết AI agent đều thất bại

Rahul - inline image

Không phải tại mô hình.

Mà là thiếu lớp bên dưới mô hình.

→ Bạn viết một prompt

→ Agent thực hiện tác vụ

→ Phiên làm việc kết thúc

→ Ký ức biến mất

→ Phiên tiếp theo: lặp lại sai lầm cũ

→ Bạn lặp lại cùng một hướng dẫn

→ Mãi mãi

Vòng lặp này là nguyên nhân lớn nhất gây lãng phí thời gian trong việc lập trình AI.

Không phải code tệ. Không phải ảo giác.

Mà là sự lặp lại.

Lớp bị thiếu: bộ nhớ

Rahul - inline image

Mọi người đều ám ảnh về việc mô hình nào thông minh nhất.

Sai lớp rồi.

Nâng cấp thực sự không phải là một mô hình thông minh hơn.

Mà là cho mô hình một nơi để lưu trữ những gì nó học được.

→ Prompts → bảo agent phải làm gì ngay bây giờ

→ Agents → thực hiện tác vụ

→ Memory → lưu giữ ngữ cảnh qua nhiều phiên

→ Persistent context → không còn phải sửa lỗi lặp lại

→ Learning system → agent thực sự cải thiện theo thời gian

Đây là sự khác biệt giữa một công cụ và một đồng đội.

Một công cụ làm theo những gì bạn nói, mỗi lần, từ con số không.

Một đồng đội nhớ được ngày hôm qua.

5 tệp bộ nhớ mà mọi AI agent cần

Rahul - inline image

Một khi bạn chấp nhận bộ nhớ là lớp bị thiếu, câu hỏi tiếp theo là: nó sống ở đâu?

Năm tệp. Mỗi tệp một nhiệm vụ khác nhau.

→ CLAUDE.md — tài liệu tóm tắt cá nhân của Claude

→ AGENTS.md — tiêu chuẩn phổ quát, được mọi công cụ chính đọc

→ CLAUDE.local.md — sở thích cá nhân của bạn, không bao giờ commit vào git

→ MEMORY.md — ghi chú AI tự viết về chính nó, tự động

→ README.md — dành cho con người, không phải agent

Hãy xem qua từng cái một.

CLAUDE.md — cái bắt đầu tất cả

Rahul - inline image

Đặt tệp này trong thư mục gốc dự án của bạn.

Claude đọc nó khi bắt đầu mỗi phiên.

Hãy nghĩ về nó như một tài liệu tóm tắt cho một thành viên mới bị mất trí nhớ.

Một CLAUDE.md tốt có bốn phần:

→ Project context — một dòng. "Ứng dụng thương mại điện tử Next.js với Stripe và Postgres."

→ Code style — không phải "định dạng code đúng cách" mà là "sử dụng ES modules, named exports, thụt lề 2 dấu cách."

→ Commands — chuỗi chính xác. pnpm test:integration, không phải "chạy kiểm thử."

→ Architecture — "Các API route nằm trong /src/api/[resource]/route.ts. Sử dụng repository pattern cho truy cập DB."

text
1# CLAUDE.md
2
3## Project Context
4Ứng dụng thương mại điện tử Next.js 14. Tích hợp Postgres + Stripe.
5
6## Code Style
7- Chỉ dùng ES modules
8- Sử dụng named exports, không bao giờ dùng default exports
9- Thụt lề 2 dấu cách
10- TypeScript strict mode
11
12## Commands
13- Cài đặt: pnpm install
14- Chạy dev: pnpm dev
15- Kiểm thử: pnpm test:integration
16- Lint: pnpm lint:fix
17
18## Architecture
19- API routes: /src/api/[resource]/route.ts
20- Truy cập DB: chỉ dùng repository pattern
21- Components: /src/components, một tệp cho mỗi component

Mục tiêu: dưới 300 dòng.

Mỗi dòng phải cạnh tranh sự chú ý với công việc thực tế.

Chạy /init và Claude sẽ tự động tạo một tệp khởi động.

Sau đó xóa hầu hết nó đi.

Tệp mặc định bao gồm những thứ Claude đã biết từ file package.json của bạn. Chỉ giữ lại những gì Claude sẽ làm sai nếu không có tệp này.

Hệ thống @imports — giữ cho nó gọn nhẹ

Rahul - inline image

CLAUDE.md không cần phải chứa mọi thứ.

Nó có thể import các tệp khác:

Xem

@README .md để biết tổng quan dự án Xem

@docs/api-patterns .md để biết quy ước API Xem

@package .json để biết các npm script có sẵn

Import có thể được đệ quy — sâu tối đa 5 cấp.

Điều này giải quyết vấn đề "một tệp khổng lồ".

Đối với nhóm: nhóm frontend sở hữu docs/frontend-rules.md.

Ban bảo mật sở hữu docs/security.md.

CLAUDE.md chỉ import tất cả chúng.

Một tệp gốc. Nhiều nguồn chuyên biệt.

AGENTS.md — tiêu chuẩn phổ quát

Rahul - inline image

CLAUDE.md chỉ hoạt động với Claude.

Nếu nhóm của bạn cũng sử dụng Cursor, Copilot, hoặc Gemini CLI — chúng không bao giờ đọc nó.

AGENTS.md sửa lỗi này.

Một tệp. Mọi agent chính đều đọc nó.

Được hỗ trợ bởi Claude Code, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Aider, Zed, Warp, và nhiều hơn nữa.

Nó là markdown tiêu chuẩn. Không có schema đặc biệt. Không yêu cầu YAML.

text
1# AGENTS.md
2
3## Project Overview
4Nền tảng thương mại điện tử được xây dựng với Next.js 14, Postgres và Stripe.
5
6## Build & Test
7- Cài đặt: pnpm install
8- Chạy dev: pnpm dev
9- Kiểm thử: pnpm test
10- Lint: pnpm lint:fix
11
12## Code Standards
13- TypeScript strict mode
14- Named exports thay vì default exports
15- API routes tuân theo quy ước REST trong /src/api/
16
17## Testing Requirements
18- Tất cả PR phải bao gồm kiểm thử
19- vitest cho unit tests, playwright cho e2e

Hãy nghĩ về nó như một README dành cho AI agent.

README.md dành cho con người. AGENTS.md dành cho mọi agent, bất kể nhà cung cấp. CLAUDE.md thêm các phần mở rộng dành riêng cho Claude lên trên.

Chúng bổ sung cho nhau. Không cạnh tranh.

Bộ nhớ tự động — AI tự ghi chép

Rahul - inline image

Đây là lớp mới nhất và thú vị nhất.

Claude Code hiện có thể tự viết các tệp bộ nhớ của riêng nó trong các phiên của bạn.

memory/ ├── MEMORY.md ← chỉ mục, được tải mỗi phiên ├── debugging.md ← ghi chú về các mẫu gỡ lỗi ├── api-conventions.md ← quyết định thiết kế API └── ...

Sự thay đổi quan trọng:

Bạn viết CLAUDE.md. Bạn cung cấp các hướng dẫn.

Claude viết MEMORY.md. Nó ghi lại những gì nó học được.

→ Con người viết quy tắc

→ Agent khám phá ra các mẫu trong khi làm việc

→ Agent tự viết bộ nhớ của riêng nó

→ Các phiên tương lai bắt đầu thông minh hơn

Bạn có thể kích hoạt trực tiếp điều này. Kết thúc một phiên hiệu quả, chỉ cần nói:

"Cập nhật tệp bộ nhớ của bạn với những gì bạn đã học được về codebase của chúng ta hôm nay."

Những kiến thức này sẽ tồn tại. Không còn phải giải thích lại về trình bao bọc ORM tùy chỉnh của bạn lần thứ năm.

Chạy /memory bất cứ lúc nào để xem lại hoặc chỉnh sửa những gì Claude đã lưu.

Quy trình /init rồi xóa

Rahul - inline image

Cách nhanh nhất để khởi tạo một tệp bộ nhớ trên một dự án mới:

  1. Chạy /init trong thư mục dự án của bạn
  2. Claude tạo một CLAUDE.md khởi đầu dựa trên codebase của bạn
  3. Xóa những gì bạn không cần

Bước 3 là nơi hầu hết mọi người sai.

Tệp được tạo ra là một bản nháp, không phải sản phẩm hoàn chỉnh.

Nó thường bao gồm nội dung thừa. "Dự án này sử dụng JavaScript." Cảm ơn — có thể thấy từ package.json.

Chỉnh sửa từ một bản nháp hợp lý còn hơn viết từ một tệp trống.

Sau khi thiết lập, hãy xây dựng một cách tự nhiên.

Khi Claude đưa ra một giả định sai — ví dụ nó liên tục import một package đã lỗi thời — đừng chỉ sửa nó một lần.

Hãy bảo nó: "thêm vào CLAUDE.md của tôi: luôn import từ @company/utils-v2, không phải @company/utils."

Hướng dẫn sẽ tồn tại cho mọi phiên trong tương lai.

Cứ vài tuần, hãy yêu cầu Claude xem xét và dọn dẹp CLAUDE.md.

Các hướng dẫn tích tụ lại. Một số trở nên dư thừa. Một số khác bắt đầu mâu thuẫn. Một lượt kiểm tra nhanh giúp giữ nó sắc bén.

Thiết lập thực tế của tôi

Rahul - inline image

Sau khi kiểm tra tất cả những thứ này trên nhiều dự án sản xuất, đây là những gì còn đọng lại:

AGENTS.md trong thư mục gốc dự án — hướng dẫn chung mà bất kỳ công cụ AI nào cũng đọc được. Lệnh build, tiêu chuẩn code, yêu cầu kiểm thử.

CLAUDE.md với @imports cho hành vi dành riêng cho Claude. Giữ dưới 100 dòng, chủ yếu trỏ đến các tệp docs/.

CLAUDE.local.md cho các thói quen cá nhân — dữ liệu kiểm thử của tôi, URL sandbox, lệnh tắt. Không bao giờ commit vào git.

Auto-memory được bật. Claude tự ghi chép. Tôi xem xét hàng tháng.

Mọi thứ khác được thay thế bằng symlinks trỏ lại AGENTS.md. Một nguồn sự thật duy nhất.

bash
1# Thiết lập symlink cho tính nhất quán đa công cụ
2ln -sfn AGENTS.md .github/copilot-instructions.md
3mkdir -p .cursor/rules && ln -sfn ../../AGENTS.md .cursor/rules/main.mdc

Không thanh lịch.

Nhưng nó loại bỏ sự sai lệch hướng dẫn trên mọi công cụ trong nhóm.

Sự thay đổi lớn hơn

Rahul - inline image

Hầu hết các nhà phát triển nghĩ:

Mô hình tốt hơn = agent tốt hơn.

Sai.

Công thức thực sự:

Mô hình + Bộ nhớ + Truy xuất + Phản hồi = Agent hữu ích

Một mô hình thông minh hơn nhưng không có bộ nhớ vẫn sẽ quên lệnh kiểm thử của bạn vào ngày mai.

Một mô hình khiêm tốn với bộ nhớ tuyệt vời sẽ trở nên sắc bén hơn mỗi tuần.

Bộ nhớ là biến số lũy tiến.

Trí thông minh của mô hình thì không.

Cải tiến lớn nhất tôi thực hiện cho quy trình làm việc AI của mình không phải là chuyển đổi mô hình.

Mà là cho mô hình một bộ nhớ.

Sự khác biệt giữa:

"Claude, bọn mình dùng pnpm" — mỗi phiên

và:

"Claude đã biết rồi" — mỗi phiên

Là sự khác biệt giữa một công cụ và một đồng đội.

Nếu điều này hữu ích:

→ Đăng lại để chia sẻ với mọi nhà phát triển vẫn đang lặp đi lặp lại với Claude

→ Theo dõi @sairahul1 để biết thêm các hệ thống lũy tiến khi bạn ngủ

→ Đánh dấu trang này — thiết lập nó tối nay, ngừng sửa lỗi vào ngày mai

Tôi viết về AI, xây dựng sản phẩm và các hệ thống hoạt động mà không cần bạn.

Lưu một chạm

Đọc sâu bài viết viral bằng AI trong YouMind

Lưu nguồn, đặt câu hỏi tập trung, tóm tắt lập luận và biến một bài viết viral thành các ghi chú có thể tái sử dụng trong một không gian làm việc AI duy nhất.

Khám phá YouMind
Dành cho nhà sáng tạo

Biến Markdown của bạn thành bài viết 𝕏 gọn gàng

Khi bạn đăng bài viết dài của riêng mình, việc định dạng hình ảnh, bảng và khối mã cho 𝕏 rất mệt mỏi. YouMind biến cả bản nháp Markdown thành một bài viết 𝕏 gọn gàng, sẵn sàng để đăng.

Thử Markdown sang 𝕏

Thêm pattern để giải mã

Bài viết viral gần đây

Khám phá thêm bài viết viral