Cho Claude Code nhớ qua các session, và cái giá phải trả
Việc cần làm là mở một session mới mà không mất những gì session trước đã biết. claude-mem là một plugin làm đúng việc này: nó ghi lại Claude đã làm gì, viết ghi chú ngắn, rồi đưa danh sách ghi chú cho session sau. Ngày 5/11/2026 mình test nó (plugin bản 15.9.0) trên một project test nhỏ, mỗi lần chỉ chạy một run headless.
Mình chạy thế nào
Không có gì được cài vào setup Claude Code thật của mình. Plugin được load riêng cho từng lần chạy bằng --plugin-dir, data ghi vào một folder nháp, và background worker của nó bị tắt sau mỗi lần chạy. Mình gỡ trước hai startup hook của nó, vì chúng đặt một chương trình claude-mem vào ~/.local/bin và sửa file khởi động của shell. Mọi lần gọi claude chạy nền của nó đều đi qua một wrapper ghi log, để mình đếm được token.
# session 1: do some work that prints a value
claude -p "read README.md, run compute.py, grep src/ for TODO, tell me the BUILD_TAG" --model haiku --plugin-dir plug ...
rm compute.py
# session 2: can it remember?
claude -p "What BUILD_TAG did compute.py print last session?" --model haiku --plugin-dir plug ...
# overhead probe, with and without the plugin
claude -p "Reply with the single word OK." --model haiku --max-turns 1 [--plugin-dir plug]
Nó có nhớ không?
Có, nhưng chỉ khi được bảo đi tìm. Danh sách đưa cho session mới chỉ có tiêu đề chứ không có nội dung. Ghi chú của lần test này là "tidewater project BUILD_TAG identifier". Khi bị chặn dùng tool, Claude trả lời UNKNOWN. Khi được dùng tool search của claude-mem thì nó tìm ra đúng giá trị walrus-6304, nhưng tốn thêm hai lượt, lượt nào cũng đọc lại toàn bộ context.
Nó tốn những gì
- Thêm khoảng 1.720 token cho mỗi lần gọi model, ở mọi lượt. Đo được 37.525 so với 35.806, hai lần probe đều y vậy. Khoảng 1.000 trong số đó là danh sách ghi chú khi mới có một ghi chú. Lên 50 ghi chú thì nó tăng tới khoảng 1.700.
- Mỗi lần gọi tool là một lần gọi model. Bộ ghi chú chạy Haiku một lần cho mỗi lần gọi tool, tính vào subscription của bạn. Ba lần gọi tool trong session 1 tốn 10.132 token input và 829 token output. Mỗi lần nó gửi lại toàn bộ cuộc hội thoại ghi chú, nên session càng dài thì mỗi lần gọi càng to, lên tới khoảng 100.000 token rồi mới bắt đầu lại.
- Một job chạy nền mà không ai yêu cầu. Tính năng "My Work" khởi động cùng worker, cứ 10 phút kiểm tra một lần, rồi chạy một chuỗi lệnh gọi Claude để gom các request của bạn thành một "story". Một lần refresh nó tự khởi động tốn 7 lần gọi (4 trên Sonnet, 3 trên Haiku), 4 phút 20 giây, 215.780 token input và 24.992 token output, khoảng $0,65 theo giá API.
- Nhớ lại còn tốn hơn là không nhớ. Session 2 có memory dùng 114.953 token input qua 3 lượt. Không có claude-mem thì cùng câu hỏi đó tốn 42.855 token trong 1 lượt (và tất nhiên là không trả lời được).
Token tiết kiệm được trong lần test này: không có. Cả lần test tốn khoảng $2 theo giá API, trong khi ngân sách là $1, phần lớn là do hai lần refresh "My Work" mà mình không ngờ tới.
Những chỗ làm mình bất ngờ
- Nó đọc transcript nằm ngoài folder mình giao. "My Work" chui vào folder projects của Claude Code, copy vài prompt mình từng gõ ở các project khác vào folder riêng của nó, rồi gửi cho Sonnet. Mình đã xoá mấy bản copy đó.
- Telemetry ẩn danh bật sẵn. Bạn phải tự tắt.
- Trình cài đặt chọn sẵn bản note-taker hosted trả phí. Nếu để nguyên lựa chọn đó thì input và output của mọi lần gọi tool sẽ gửi lên server của họ thay vì Anthropic. Che secret mặc định là tắt.
- Nó lưu nguyên văn prompt của bạn, cộng input và output của từng tool, vào một file SQLite trên máy, kèm một web viewer chạy ở 127.0.0.1.
- Nó cần Bun, và hook của nó gọi một chương trình mà nó tự cài vào PATH, nên chỉ cài plugin thôi thì không chạy.
- Đoạn text lúc mở session dặn Claude giữ mọi to-do list trong claude-mem "instead of any built-in to-do tool", tức là có thể đè lên cách lên plan mà bạn đang dùng.
- Con số "95% savings" trong block mở đầu là token mà chính bộ ghi chú tiêu, trừ đi độ dài danh sách. Đó không phải phần tiết kiệm đo được.
Mình sẽ lấy gì thay vào
Ý tưởng đáng giữ là cái khung: một mục lục ngắn chỉ cho project hiện tại lúc mở session, còn chi tiết thì khi cần mới lấy. Một file mục lục memory đơn giản load lúc mở session đã làm được phần lớn việc đó cho mình, mà không cần chạy model cho mỗi lần gọi tool.
English