Bài 2 · Cơ bản · 18 phút· Cập nhật 11/06/2026
Cách Claude Code hoạt động
Biên soạn bởi Nguyễn Anh Tuấn
Bản chất: vòng lặp agentic (thu thập ngữ cảnh → hành động → kiểm chứng), bộ công cụ, cửa sổ ngữ cảnh, model và phiên làm việc.
Nhiều người tưởng Claude Code là cái máy: gõ yêu cầu vào là nhận code trả ra. Thực tế nó làm việc giống một lập trình viên hơn nhiều: nó khảo sát dự án, ra tay, rồi tự kiểm tra - và nếu sai thì lặp lại cho đến khi đạt.
Cái “vòng lặp” đó chính là cốt lõi của một agent. Nó gồm ba pha xoay vòng:
- ▸Thu thập ngữ cảnh: đọc file, tìm kiếm, chạy lệnh đọc - để HIỂU trước khi làm.
- ▸Hành động: sửa file, tạo file, chạy lệnh - thực sự thay đổi dự án.
- ▸Kiểm chứng: chạy build/test, đọc lại kết quả - sai thì quay lại Hành động.
Đây là một việc thật: bạn nhờ “Thêm nút Đăng xuất vào header”. Theo dõi Claude đi qua ba pha, gặp lỗi, rồi tự quay lại sửa - màu cho biết mỗi bước thuộc pha nào:
› Thêm nút "Đăng xuất" vào header
Mọi thứ bắt đầu từ câu bạn gõ. Claude Code chưa biết code của bạn - việc đầu tiên là đi TÌM HIỂU, không phải viết ngay.
- ▸Mỗi bước nhỏ là một lần dùng công cụ; nhiều bước nối nhau thành một việc lớn.
- ▸Gặp lỗi KHÔNG phải là dừng - nó quay lại pha Hành động và thử tiếp (đó là vòng lặp).
- ▸Nó chỉ báo “xong” khi tự kiểm chứng đạt; bạn vẫn nên đọc lại diff lần cuối.
Vì sao bạn cần biết điều này
Claude “hành động” được là nhờ một bộ công cụ. Bạn không cần gọi tên chúng - Claude tự chọn công cụ phù hợp cho mỗi bước:
| Công cụ | Làm gì | Pha |
|---|---|---|
| Read | Đọc nội dung file (kể cả ảnh, PDF) | ngữ cảnh |
| Grep | Tìm theo nội dung (regex) khắp dự án | ngữ cảnh |
| Glob | Tìm file theo tên/mẫu (vd **/*.ts) | ngữ cảnh |
| Edit | Sửa một đoạn trong file (thay chuỗi) | hành động |
| Write | Tạo mới / ghi đè cả file | hành động |
| Bash | Chạy lệnh shell: build, test, git… | hành động / kiểm chứng |
| WebFetch / WebSearch | Tra cứu tài liệu trên web | ngữ cảnh |
| Task (subagent) | Giao việc cho một “trợ lý phụ” riêng | mở rộng |
- ▸Đọc/tìm (Read/Grep/Glob/Web) = an toàn; Sửa/Chạy (Edit/Write/Bash) = cần thận trọng.
- ▸Bạn mô tả mục tiêu, KHÔNG cần chỉ định công cụ - Claude tự chọn.
- ▸Công cụ nào cần hỏi phép do “chế độ quyền” quyết định (bài tiếp theo).
Mở rộng được bộ công cụ
Mọi thứ Claude “biết” trong một phiên nằm trong cửa sổ ngữ cảnh: lời bạn nói, file CLAUDE.md, nội dung file nó đọc, kết quả lệnh. Cửa sổ này rất lớn nhưng có giới hạn (đo bằng token) và đầy dần khi phiên kéo dài.
- ▸Khi gần đầy, Claude Code TỰ NÉN (compact) phần cũ thành tóm tắt để chạy tiếp.
- ▸/context - xem ngữ cảnh đang dùng bao nhiêu, mục nào chiếm nhiều.
- ▸/compact - nén thủ công (có thể nêu trọng tâm cần giữ).
- ▸/clear - xoá sạch để bắt đầu việc MỚI không liên quan.
Ngữ cảnh: liên quan quan trọng hơn nhiều
“Bộ não” của Claude Code là một model Claude. Có nhiều bậc - từ nhanh/rẻ tới mạnh nhất - đổi bằng /model:
| Opus | Mạnh nhất, suy luận sâu - việc khó, kiến trúc, bug rối. |
| Sonnet | Cân bằng tốc độ/chất lượng - phần lớn việc; thường là mặc định. |
| Haiku | Nhanh & rẻ - việc đơn giản, lặp nhiều, khối lượng lớn. |
Trên các gói cao cấp còn có bậc mạnh hơn nữa (vd Fable) cho việc cực khó hoặc ngữ cảnh rất lớn. Tên model kèm số thế hệ (vd Opus 4.x) và đổi theo thời gian - gõ /model để xem máy bạn đang có những lựa chọn nào.
Mỗi cuộc trò chuyện là một phiên (session), lưu ngay trên máy bạn:
- ▸Mặc định mỗi lần mở claude là một phiên MỚI (sạch ngữ cảnh).
- ▸claude --continue: nối lại phiên gần nhất; claude --resume: chọn một phiên cũ.
- ▸Checkpoint & hoàn tác (rewind): Claude Code lưu ảnh chụp trước mỗi lần sửa file để bạn quay lui - khác với git (học kỹ ở bài “Đọc, sửa code”).
Quan trọng nhất: nó vẫn có thể sai
Câu hỏi thường gặp
Vì nó chưa biết dự án của bạn. Viết code mà không hiểu cấu trúc, quy ước đặt tên, thư viện đang dùng… thì rất dễ sai hoặc lạc phong cách. Pha “thu thập ngữ cảnh” (Read/Grep/Glob) giúp nó bắt chước đúng những gì bạn đã có. Đọc trước, sửa sau - y như một lập trình viên giỏi vào dự án mới.
Không. Bạn chỉ mô tả MỤC TIÊU; Claude tự chọn công cụ phù hợp cho từng bước. Việc của bạn là nói rõ muốn gì và duyệt các hành động quan trọng. (Bạn có thể tác động gián tiếp, vd “đừng chạy lệnh xoá”, qua quyền - học ở bài sau.)
Là “bộ nhớ làm việc” của Claude trong một phiên: nó chứa lời bạn nói, CLAUDE.md, nội dung file nó vừa đọc, và kết quả các lệnh. Cửa sổ này có GIỚI HẠN (đo bằng token). Khi phiên kéo dài, nó đầy dần - nên cần biết cách dọn (xem Bước 4).
Không hẳn. Cái cần là ngữ cảnh ĐÚNG VÀ LIÊN QUAN, không phải nhiều. Nhồi cả đống file không liên quan làm “loãng” trọng tâm, tốn token và đôi khi khiến Claude lạc hướng. Chất lượng ngữ cảnh quan trọng hơn số lượng - đây là một trong những kỹ năng cốt lõi của khoá.
Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.
Trả lời vài câu để chắc rằng em đã nắm bài.
Ba pha của vòng lặp agentic theo đúng thứ tự là gì?
- 1
Ba pha của vòng lặp
Dùng công cụ ở Bước 2: bấm qua từng bước và viết ra, với MỖI bước, nó thuộc pha nào (ngữ cảnh / hành động / kiểm chứng).
Hoàn thành khi: Bạn nhận ra mẫu lặp lại: đọc để hiểu → ra tay → kiểm tra; và thấy bước “lỗi → quay lại sửa” là vòng lặp, không phải thất bại.
- 2
Đọc trước, sửa sau
Bằng lời: nêu một lý do code sẽ TỆ hơn nếu Claude bỏ qua pha “thu thập ngữ cảnh” và viết ngay.
Hoàn thành khi: Ví dụ: lạc phong cách dự án, gọi sai tên hàm có sẵn, trùng lặp thứ đã tồn tại, hoặc dùng nhầm thư viện.
- 3
Soi ngữ cảnh
Trong một phiên thật, làm vài việc rồi gõ
/context. Phần nào đang chiếm nhiều nhất?Hoàn thành khi: Bạn đọc được bản phân tích token theo mục (
CLAUDE.md, file đã đọc, hội thoại…) và hiểu vì sao ngữ cảnh đầy lên. - 4
Dọn đúng lúc
Làm xong một việc, chuẩn bị sang việc KHÔNG liên quan. Bạn nên gõ
/clearhay/compact? Vì sao?Hoàn thành khi:
/clear- vì việc mới không cần ngữ cảnh việc cũ; giữ lại chỉ tổ làm loãng và tốn token. - 5
Chọn model
Gõ
/modelxem các lựa chọn. Với việc “đổi tên một biến trong 1 file”, bạn chọn model nào và vì sao?Hoàn thành khi: Một model nhanh/rẻ (vd Haiku/Sonnet) là đủ; việc đơn giản không cần Opus. Bạn giải thích được đánh đổi tốc độ/chi phí/độ khó.