Claude Code Auto Memory: Hướng Dẫn MEMORY.md 2026

Mỗi lần bạn mở Claude Code, nó bắt đầu như một trang giấy trắng. Không nhớ dự án của bạn, không nhớ command nào đã chạy, không nhớ bug nào đã fix tuần trước. Đó là vấn đề mà hầu hết developer gặp phải trong tuần đầu dùng công cụ này.
Auto memory ra đời để giải quyết vấn đề đó. Tính năng này, có từ Claude Code v2.1.59, cho phép Claude tự ghi lại những gì nó học được vào một file tên MEMORY.md và đọc lại ở mọi session sau. Không cần bạn làm gì, không cần cập nhật thủ công.
Sau hơn 30 session dùng auto memory cho dự án blog ongboit.com, mình sẽ cho bạn thấy đúng thứ Claude đã tự ghi vào MEMORY.md của mình, những pattern mà nó hay lưu, và một bẫy quan trọng ở session thứ 20 mà hầu hết bài viết về chủ đề này bỏ qua.
TL;DR
- Auto memory = Claude tự ghi note vào MEMORY.md sau mỗi session, không cần bạn làm gì thêm
- Giới hạn quan trọng: chỉ load 200 dòng đầu (khoảng 4.000 tokens) mỗi session, giữ file ngắn
- Khác CLAUDE.md: bạn viết CLAUDE.md cho team; Claude viết MEMORY.md cho chính nó
- Bẫy phổ biến: sau 20+ session, memory dễ bị stale với các entry mâu thuẫn hoặc lỗi thời
- Tắt khi cần: đặt
autoMemoryEnabled: falsetrong settings.json hoặc dùng/memory
Claude Code Auto Memory Là Gì Và Hoạt Động Ra Sao?
Auto memory là tính năng cho phép Claude Code tự động lưu thông tin về dự án của bạn vào file MEMORY.md sau mỗi session, và đọc lại ở session tiếp theo để duy trì context liên tục. Tính năng bật mặc định từ phiên bản v2.1.59 và không cần cấu hình thêm.
Mỗi khi Claude giải quyết một vấn đề phức tạp, khám phá ra command quan trọng, hoặc nhận ra pattern đặc thù trong codebase của bạn, nó tự hỏi: “Thông tin này có hữu ích ở session sau không?” Nếu có, nó ghi vào MEMORY.md. Nếu không, nó bỏ qua.
File MEMORY.md nằm tại ~/.claude/projects/<tên-project>/memory/MEMORY.md và có cấu trúc đơn giản: một dòng index ngắn trỏ đến các file chi tiết hơn.
Đây là file MEMORY.md thực tế từ dự án blog ongboit.com của mình sau 30+ session:
# Memory Index
- [User Profile](user_profile.md): DevOps engineer, Vietnamese tech blogger, focused on Claude Code + n8n + AI
- [Blog Workflow Rules](feedback_blog_workflow.md): Quick rules: Sonnet 4.6, RankMath 5 KWs, WebP images, 4 audits, no em dashes
- [WP MCP Setup](reference_wp_mcp_setup.md): Connecting Claude Code to WordPress via WP MCP Ultimate plugin
- [ng-* Super Skills](project_ng_skills.md): Blog workflow v5.0: 9 super skills (ng-setup/research/cluster/brief/write/audit/image/publish/report)
- [Image Prompt Style Guide](feedback_image_prompts.md): Proven infographic templates: 4:5 mind-map, carousel slides, dark hero, 16:9 landscape
Để ý cấu trúc: mỗi dòng là một pointer ngắn (dưới 150 ký tự) trỏ đến một file riêng chứa chi tiết. MEMORY.md chỉ là mục lục, không phải nơi chứa toàn bộ nội dung. Đây cũng là một phần của 2-Layer Memory System trong Claude Code mà mình sẽ giải thích chi tiết ở mục tiếp theo.
Trong bài Claude Code Memory Types mình đã cover tổng quan 3 loại memory, nhưng bài này sẽ đi sâu vào cơ chế hoạt động thực tế của auto memory.

MEMORY.md Và CLAUDE.md Khác Nhau Chỗ Nào?
2-Layer Memory System là framework giúp bạn hiểu rõ hai file memory trong Claude Code: CLAUDE.md do bạn viết, MEMORY.md do Claude viết. Hai file cùng được load vào context mỗi session, nhưng mục đích và người quản lý hoàn toàn khác nhau.
| CLAUDE.md | MEMORY.md | |
|---|---|---|
| Ai viết? | Bạn viết thủ công | Claude tự ghi |
| Nội dung | Instructions và rules | Learnings và patterns |
| Scope | Project, user, hoặc org | Per working tree (machine-local) |
| Version control | Commit vào git, shared với team | Không commit, chỉ ở máy bạn |
| Dùng cho | Coding standards, workflows, architecture | Build commands, debug insights, preferences |
| Khi delete? | Mất instructions mãi mãi | Claude rebuild sau 1-2 session |
Ranh giới thực tế: bạn viết "Use pnpm, not npm" vào CLAUDE.md vì đó là quy tắc của team. Claude tự ghi "pnpm build takes ~45s, use --filter flag for monorepo packages" vào MEMORY.md vì đó là điều nó khám phá ra khi làm việc với project.
Việc phân biệt rõ hai file này giúp tránh nhầm lẫn khi debug tại sao Claude “quên” một thông tin cụ thể trong session mới. Nếu thông tin đó nằm trong CLAUDE.md mà vẫn bị quên, vấn đề nằm ở context window, không phải auto memory.
Nguyên tắc đơn giản để nhớ trong hệ thống 2-Layer Memory System này: CLAUDE.md cho rules bất biến, MEMORY.md cho learnings động. Nếu bạn muốn Claude làm điều gì đó mãi mãi, viết vào CLAUDE.md. Nếu Claude phát hiện điều gì hữu ích, nó sẽ tự lưu vào MEMORY.md.
Một hệ quả quan trọng: NEVER xóa CLAUDE.md khi không có backup. Nhưng xóa MEMORY.md và để Claude rebuild từ đầu là hoàn toàn bình thường, thậm chí đôi khi cần thiết sau một refactor lớn.
Tham khảo bài CLAUDE.md và .claude/ là gì nếu bạn muốn hiểu sâu hơn về cách cấu hình CLAUDE.md theo từng scope (project, user, org).
Claude Code Tự Động Lưu Gì Vào MEMORY.md?
Claude không lưu mọi thứ. Nó chọn lọc dựa trên tiêu chí: thông tin này có hữu ích ở session tương lai không? Cụ thể, Claude ưu tiên 4 loại thông tin sau:
1. Build commands và CLI patterns: những lệnh đặc thù của project mà Claude không thể đoán ra từ code.
# Ví dụ từ MEMORY.md của mình (đã paraphrase)
- Run: python3 ~/.claude/scripts/workflow_tracker.py start --slug [slug] --phase [N]
- Images: Convert PNG to WebP with Pillow, quality 85, max 2400px before upload
- WP publish: Always draft first, never publish immediately
2. Debug insights và error patterns: cách fix bug phức tạp mà Claude mất thời gian tìm.
3. Project architecture notes: cấu trúc thư mục, module relationships, file paths quan trọng.
4. Preferences của bạn: style conventions, tone, những correction bạn đã đưa ra nhiều lần.
Điểm thú vị mình nhận ra sau 30+ session với dự án ongboit.com: Claude ưu tiên lưu file paths và command patterns (thứ không thể đoán từ code) nhiều hơn architectural decisions (những thứ thường đã có trong CLAUDE.md hoặc có thể đọc từ codebase). Điều này hợp lý, vì architectural decisions thường ổn định và bạn đã viết chúng vào CLAUDE.md, còn command patterns thì biến đổi nhiều hơn.
Claude cũng không lưu API keys, passwords, hay thông tin nhạy cảm vào MEMORY.md. Nếu nó vô tình ghi một pattern có chứa credential, bạn nên check và xóa thủ công qua lệnh /memory.

Làm Thế Nào Để Bật, Tắt Và Kiểm Tra Auto Memory?
Auto memory bật mặc định từ Claude Code v2.1.59. Kiểm tra version của bạn:
claude --version
Nếu dưới v2.1.59, cập nhật trước: npm update -g @anthropic-ai/claude-code.
Cách xem Claude đang lưu gì: gõ /memory trong bất kỳ session nào. Bạn sẽ thấy danh sách tất cả file CLAUDE.md đang được load và toggle bật/tắt auto memory.
Tắt auto memory theo 3 cách:
Cách 1: Qua session (tắt tạm):
/memory → chọn toggle auto memory → tắt
Cách 2: Qua settings.json (tắt vĩnh viễn cho project):
{
"autoMemoryEnabled": false
}
Lưu file này tại .claude/settings.json trong project root.
Cách 3: Qua biến môi trường:
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude
Chuyển thư mục lưu memory sang vị trí khác (ví dụ dùng cloud sync):
{
"autoMemoryDirectory": "~/Dropbox/claude-memory/"
}
Cài đặt autoMemoryDirectory chỉ chấp nhận trong user hoặc local settings, không chấp nhận trong project settings để tránh redirect memory ra ngoài project scope ngoài ý muốn.
Lệnh /memory trong Claude Code thuộc nhóm slash commands, tương tự các skills khác, bạn có thể dùng nó để xem trực tiếp những gì Claude đang “nhớ” về project.
Một mẹo ít người biết: bạn có thể debug xem file nào đang được load bằng cách dùng InstructionsLoaded hook, hook này log chính xác những instruction file nào được load và khi nào.
Chi Phí Token Của Auto Memory: Tính Toán Thực Tế
Token overhead của auto memory thực tế rất nhỏ. Giới hạn 200 dòng của MEMORY.md tương đương khoảng 4.000 tokens mỗi session.
Tính toán thực tế:
- 200 dòng x 20 tokens/dòng (average) = 4.000 tokens overhead
- Với Sonnet 4.6 ($3/MTok input): 4.000 tokens = $0.012/session
- 30 session/tháng = $0.36/tháng chỉ cho memory overhead
So với giá trị persistent context mang lại (tiết kiệm 5-10 phút giải thích lại project context mỗi session), chi phí này hoàn toàn không rõ rệt.
Điểm quan trọng hơn là cách giữ MEMORY.md ngắn để không lãng phí token. Nguyên tắc của Memory Hygiene Cycle (mình giải thích chi tiết ở mục dưới):
- MEMORY.md chỉ là index, nội dung chi tiết nằm trong file riêng (ví dụ
feedback_blog_workflow.md,project_ng_skills.md) - Mỗi dòng trong MEMORY.md không dài hơn 150 ký tự
- Xóa entries đã lỗi thời thay vì để tích lũy
Topic này cũng liên quan đến tiết kiệm token Claude Code tổng quát, nhưng với auto memory, chiến lược chính là giữ MEMORY.md index ngắn và để nội dung chi tiết trong các file riêng chỉ được đọc khi cần.
MEMORY.md index. Các file topic riêng biệt như debugging.md, api-conventions.md không bị load tự động, chỉ được đọc khi Claude thấy relevant. Đây là thiết kế có chủ ý để tối ưu token.
Khi Nào Auto Memory Bị “Stale” Và Cách Fix?
Đây là vấn đề mà hầu hết bài viết về auto memory bỏ qua. Sau 20-30 session, memory file của bạn sẽ bắt đầu tích lũy các vấn đề:
- Entries mâu thuẫn nhau: một entry ghi “dùng PostgreSQL”, entry khác ghi “database là MySQL”
- Dates mất nghĩa: “yesterday’s deploy bug” không còn có ý nghĩa sau 2 tuần
- File references đến file không còn tồn tại sau refactor
- Duplicate entries về cùng một pattern nhưng wording khác nhau
Mình nhận ra vấn đề này ở session thứ 25 khi Claude đưa ra suggestion dựa trên một setup cũ đã thay đổi từ 3 tuần trước. MEMORY.md vẫn lưu workflow cũ mà mình đã migrate sang pipeline mới.
Memory Hygiene Cycle là thói quen định kỳ để giữ memory sạch và chính xác:
Bước 1. Trigger: Sau refactor lớn, sau khi thay đổi toolchain, hoặc theo lịch hàng tháng.
Bước 2. Review: Gõ /memory → mở auto memory folder → đọc từng file trong thư mục.
Bước 3. Xóa stale entries: Xóa entries có relative dates, references đến file không còn tồn tại, hoặc settings đã thay đổi.
Bước 4. Hợp nhất duplicates: Nếu có 3 entries về cùng một build pattern, giữ lại cái mới nhất và chính xác nhất.
Bước 5. Verify: Chạy một session mới, xem Claude có apply đúng memory không.
Claude Code cũng có tính năng Auto Dream (từ phiên bản mới hơn) tự động consolidate memory files, prune entries stale và resolve contradictions. Nhưng Auto Dream chạy theo lịch định kỳ, không phải ngay lập tức. Memory Hygiene Cycle là cách chủ động xử lý vấn đề này thay vì chờ Auto Dream.
Một cách hiệu quả để tránh stale là chỉ để Claude lưu facts có thể verify được (command strings, file paths) thay vì subjective preferences (“prefer clean code”). Facts có thể check lại, preferences thì không rõ ràng để clean up.
Claude Code Sub-Agents cũng có thể maintain memory riêng theo cơ chế tương tự, điều này rất hữu ích khi bạn có nhiều agent chạy song song với các context khác nhau.
Câu Hỏi Thường Gặp
Auto memory Claude Code là gì?
Auto memory là tính năng trong Claude Code v2.1.59+ cho phép Claude tự ghi lại những gì nó học được vào MEMORY.md tại ~/.claude/projects/<project>/memory/. File này được load tự động vào mỗi session (giới hạn 200 dòng đầu), giúp Claude nhớ build commands, debug insights và project conventions mà không cần bạn viết lại.
MEMORY.md và CLAUDE.md khác nhau thế nào?
CLAUDE.md do bạn viết, chứa instructions và rules, có thể commit vào git và share với team. MEMORY.md do Claude viết, chứa learnings từ session thực tế, machine-local và không vào version control. Theo 2-Layer Memory System: CLAUDE.md cho rules bất biến của team, MEMORY.md cho knowledge Claude tự tích lũy.
Làm thế nào để xem Claude đang lưu gì trong auto memory?
Gõ /memory trong bất kỳ session Claude Code nào. Bạn sẽ thấy danh sách tất cả instruction files đang được load và một link để mở thư mục auto memory. Tất cả file đều là plain Markdown, có thể đọc, sửa hoặc xóa bất cứ lúc nào.
Auto memory tốn thêm bao nhiêu token?
Khoảng 4.000 tokens mỗi session (200 dòng x ~20 tokens/dòng). Với Sonnet 4.6 ở mức $3/MTok: xấp xỉ $0.012/session, tức $0.36/tháng nếu dùng 30 session. Chi phí không đáng kể so với giá trị context tiết kiệm được.
Có thể tắt auto memory Claude Code không?
Có, theo 3 cách: (1) Toggle trong /memory command, (2) Đặt "autoMemoryEnabled": false trong .claude/settings.json, (3) Chạy với biến môi trường CLAUDE_CODE_DISABLE_AUTO_MEMORY=1. Auto memory bật mặc định và không ảnh hưởng đến CLAUDE.md.
Auto dream Claude Code là gì?
Auto dream là tính năng companion của auto memory, chạy định kỳ để consolidate và prune MEMORY.md. Claude review toàn bộ memory files, xóa entries stale, resolve contradictions và reorganize lại. Auto dream là giải pháp tự động cho vấn đề memory decay mà Memory Hygiene Cycle giải quyết theo cách thủ công.
Kết Luận
Auto memory là một trong những tính năng thực dụng nhất của Claude Code, vì nó giải quyết đúng vấn đề developer gặp phải mỗi ngày: Claude reset context về zero sau mỗi session. Với hệ thống 2-Layer Memory System (CLAUDE.md cho team rules, MEMORY.md cho personal learnings), bạn có full control về những gì được lưu và những gì không.
Khuyến nghị thực tế: bật auto memory (mặc định), để nó chạy tự nhiên, và áp dụng Memory Hygiene Cycle một lần mỗi tháng hoặc sau mỗi refactor lớn để tránh stale entries. Đừng cố steer Claude lưu thêm quá nhiều thứ, nó sẽ tự biết chọn.
Nếu bạn đang tối ưu setup Claude Code toàn diện, đọc thêm bài về Plan Mode để hiểu cách kết hợp memory với các chế độ hoạt động khác của Claude Code.
Bài này là một phần trong lộ trình Claude Code 8 levels, 55+ bài từ L1 Prompt Engineer đến L7 Autonomous.
