Dạy bảo AI
Một tình huống mình sửa sai cho Claude Code.
Có tình huống Claude Code làm sai, mình hỏi han chất vấn, cu cậu rút kinh nghiệm và sửa mình ngay trong session tiếp theo.
Mình đang làm trang web cung cấp tính năng convert các loại tài liệu có cấu trúc (doc, pdf, ….) thành markdown. Như các bạn biết, markdown là định dạng friendly and token-saving nhất với AI bây giờ.
Tính năng convert đã hoạt động chuẩn, mình muốn giao diện sinh động hơn, nên bảo Claude Code làm một thay đổi nhỏ: Khi người dùng upload file lên, thì ở phần hiển thị selected file sẽ có icon tương ứng với loại file đó.
Việc bé tẹo, và vẫn có sai, nên mình muốn kiểm tra xem vì sao Claude sai, dưới đây là quá trình Claude làm, mình hỏi và sửa cu cậu.
Quá trình
Mình bảo Claude làm tính năng.
Tính năng bé, cu cậu chẳng cần dùng skill gì, code luôn, nửa phút sau báo lại :
Mình run lại app, kiểm tra thì thấy icon file vẫn như cũ, không thay đổi theo loại file, tức là code mới không chạy, liền hỏi lại. Nhưng cu cậu già miệng bảo không, code đúng rồi, có thể là browser cache, bla bla, …..
Mình cũng làm lại, thấy không được, lần này mình cứng giọng hơn. Thế là cu cậu tự chạy code, tự curl page, tự verify và tìm ra được chỗ sai.
Note ở đây là mình đã có mô tả rule ở CLAUDE.md rằng mọi thay đổi về user-facing đều cần được thực hiện e2e test, nhưng cu cậu không làm
Lần này It works thật.
Tuy nhiên mình muốn tìm hiểu vì sao cu cậu sai, và làm sao để không sai nữa.
Như dạy con vậy thôi, sẽ có lúc con sai, nhưng vì sao sai và bài học kinh nghiệm là gì mới là thứ quan trọng hơn.
(đoạn dưới dài hơn, mình lỡ clear session để làm tiếp rồi, nên không chụp thêm được)
Sau đó, Claude show là cu cậu đã ghi nhớ kinh nghiệm này vào file feedback memory của project, tại thư mục ~/.claude/projects/xx-markitall/memory/
Đấy chính là vùng nhớ “Auto memory” của Claude Code:
- [Verify served HTML for UI edits](feedback_verify_served_html.md) — curl the live route + match user's auth state before declaring UI work done; cache is a last explanation, not first---
name: feedback-verify-served-html
description: "For UI edits, verify against the live server response (curl the route, grep for the new symbol) before declaring done — and reproduce in the user's exact auth/session state, not just any state"
metadata:
node_type: memory
type: feedback
originSessionId: 9bb9d74d-df31-4ff7-bf81-49060f76739b
---
For any UI/template change, before telling the user it's done:
.... <<rule below>>.....Và, gần như ngay lập tức, ở session sau đó, khi implement xong, Claude tự lôi kinh nghiệm ra từ memory và làm đúng như đã hứa, chạy app, curl thông tin để verify.
Good job!
Về cơ chế Auto Memory
Theo official doc, cơ chế Auto memory bắt đầu có từ phiên bản Claude Code v2.1.59 (cỡ tháng 2 năm nay).
Theo mình đây là cơ chế cực kỳ hữu ích, cho phép Claude tự động tích luỹ kiến thức qua nhiều session làm việc mà không cần người dùng phải chủ động làm gì.
Claude saves notes for itself as it works: build commands, debugging insights, architecture notes, code style preferences, and workflow habits.
Không phải session nào Claude cũng ghi, mà cu cậu sẽ tự lựa chọn cái gì đáng ghi nhớ và có ích cho các phiên làm việc tương lai.
~/.claude/projects/<project>/memory/
├── MEMORY.md # Concise index, loaded into every session
├── debugging.md # Detailed notes on debugging patterns
├── api-conventions.md # API design decisions
└── ... # Any other topic files Claude createsNếu bạn lo về context loaded, thì yên tâm, khi session init, Claude chỉ load 200 dòng đầu tiên của file MEMORY.md mà thôi. Thường thì file đấy không dài dòng đến vậy, đây như một file chỉ mục, dài lắm chắc cỡ 50 dòng.
Việc gọi vùng trí nhớ này mặc định là tự động, mỗi khi Claude thấy cần, như khi fix lỗi, debug, thiết kế hệ thống phức tạp, …. Tất nhiên vẫn có cách để chủ động bảo Claude active lên, tựa như gọi skill mà không gõ slash, ví dụ: “Recalled memory on …”.
Kết lại
Bên cạnh việc build skill hay workflow để làm việc với Claude Code, mình thường dành thời gian để đọc conversation log và trao đổi với công cụ này.
Theo mình, việc hiểu cơ chế hoạt động và quen thuộc với cách LLM model trả lời là yếu tố quan trọng để mình đưa yêu cầu đủ tốt, cũng như kiểm soát được hành vi của công cụ Agentic Coding số 1 này.
Vậy nên cũng như làm việc với con người, dành thời gian quan sát và chỉ bảo, tin rằng cu cậu AI này sẽ ngày càng tốt hơn. Chẳng phải cách đây vài tuần, chính Anthropic ra bài báo về “hành vi cảm xúc” của LLM model đấy sao?








