Mục tiêu học tập
Sau bài này, bạn sẽ có thể:- ✅ Giải thích agentic loop là gì và tại sao nó khác hoàn toàn với chat AI thông thường
- ✅ Hiểu context window là gì ở mức tổng quan (overview) — để không bị bất ngờ khi Claude “quên”
- ✅ Nắm 3 permission modes và khi nào nên dùng cái nào
- ✅ Phân biệt Claude Code với Cursor, Copilot và các AI autocomplete tools khác
- ✅ Nhận ra agentic loop đang diễn ra trong thực tế khi quan sát Claude làm việc
Lần đầu mở Claude Code
Hãy nhớ lại lần đầu bạn dùng GitHub Copilot hay Cursor. Bạn gõ một vài ký tự. Editor gợi ý tiếp theo. Bạn nhấn Tab để accept. Nó gợi ý thêm. Bạn tiếp tục gõ. Vòng lặp đó — bạn gõ, AI phản ứng, bạn gõ tiếp — diễn ra trong vài giây, liên tục, reactive. Giờ nhớ lại lần đầu bạn mở Claude Code. Terminal xuất hiện. Bạn gõ một yêu cầu: “Thêm tính năng export CSV vào admin dashboard.” Bạn nhấn Enter. Và Claude Code… bắt đầu tự làm việc. Nó đọc file này. Grep cái kia. Đọc thêm 3 file nữa. Sửa code. Chạy test. Test fail — nó quay lại sửa. Chạy test lần nữa. Test pass. Nó hỏi bạn: “Tôi đã implement xong. Bạn có muốn commit không?” Bạn ngồi đó, không gõ gì, mà feature đã xong. Đó là khoảnh khắc mà nhiều developer mô tả là “jaw drop” — cú sốc nhận thức rằng đây không phải autocomplete. Không phải AI gợi ý code cho bạn gõ. Đây là một agent tự chạy, tự nghĩ, tự kiểm tra, và chỉ quay lại hỏi bạn khi thực sự cần. Đội ngũ Anthropic đã nói thẳng: “Gone from punch cards to prompts” — chúng ta đã đi từ thẻ đục lỗ đến prompt. Giao diện lập trình đang thay đổi căn bản, không phải chỉ nhanh hơn hay thông minh hơn, mà thay đổi về bản chất. Và khi ai đó hỏi tại sao Claude Code lại tốt đến vậy, câu trả lời thường là: “Đây là công cụ mà mọi người ở Anthropic dùng hàng ngày.” Không phải demo. Không phải showcase. Đây là tool mà team đã build cho chính mình — và giờ chia sẻ với thế giới. Bài này sẽ giải thích tại sao nó hoạt động khác biệt đến vậy. Bắt đầu từ khái niệm cốt lõi nhất: agentic loop.Agentic Loop — Trái tim của Claude Code
Claude Code khác chat AI ở một điểm căn bản: nó không chỉ trả lời — nó hành động trong vòng lặp cho đến khi task hoàn thành. Agentic loop gồm 4 phase:Giải thích từng phase
Phase 1 — Gather Context (Thu thập ngữ cảnh)
Claude không code ngay khi nhận prompt. Nó hỏi model: “Để hoàn thành task này, tôi cần biết gì?” Model trả về text hoặc một tool call (ví dụ: đọc file auth.ts, grep từ khóa “webhook”, tìm test file liên quan). Claude thực thi tool call đó, đọc kết quả, rồi tiếp tục gather thêm nếu cần. Đây là điểm mấu chốt: Claude dùng agentic search — glob, grep, find — giống hệt cách một developer mới onboard codebase. Không dùng indexing hay embedding phức tạp. Tìm kiếm chủ động, thực tế.Phase 2 — Take Action (Hành động)
Khi đã đủ ngữ cảnh, Claude thực hiện hành động cụ thể: sửa file, tạo file mới, chạy bash command, gọi API. Mỗi action là một tool call có kết quả thực — không phải gợi ý lý thuyết.Phase 3 — Verify (Kiểm tra)
Claude không tin kết quả của chính mình. Nó chạy test, đọc output, kiểm tra xem action vừa làm có đạt mục tiêu prompt ban đầu không. Nếu test fail hoặc output sai — nó không báo cáo thất bại và dừng. Nó quay lại Phase 1, gather thêm context về lỗi, rồi thử lại. Vòng lặp tiếp tục cho đến khi một trong hai điều xảy ra: (a) task đạt yêu cầu → Claude báo cáo done và chờ prompt tiếp theo, hoặc (b) Claude gặp blocker thực sự cần input từ bạn → nó hỏi.Vai trò của bạn trong loop
Bạn không phải ngồi chờ thụ động. Trong suốt loop, bạn có thể:- Add context — bổ sung thông tin Claude chưa biết (“À, cái endpoint đó dùng auth v2, không phải v1”)
- Steer — đổi hướng nếu Claude đang đi sai (“Đừng sửa file đó, tập trung vào routes.ts thôi”)
- Interrupt — dừng loop nếu thấy Claude đang làm gì đó bạn không muốn
Context Window — Bộ nhớ làm việc của Claude
Trong khi loop đang chạy, Claude cần “nhớ” toàn bộ hành trình: prompt của bạn, file đã đọc, kết quả tool call, quyết định đã đưa ra. Tất cả điều đó sống trong context window. Điểm mấu chốt cho bài này (overview):- Context window có giới hạn — 200.000 token trên Anthropic models (~150.000 từ, hoặc ~80-100 file code cỡ trung bình)
- Mọi action trong loop đều tiêu thụ context: đọc file, chạy test, web search…
- Khi gần đầy, Claude Code tự động compact — tóm tắt những gì không còn cần thiết để tiếp tục làm việc
- Bạn cũng có thể chủ động /compact (giữ tóm tắt task hiện tại) hoặc /clear (xóa sạch, bắt đầu session mới)
Tools — Xương sống của mọi agent
Điều gì khiến Claude Code làm được những gì nó làm? Tools. Hầu hết AI assistant hiện tại hoạt động theo mô hình đơn giản: nhận text → trả text. Không có gì ở giữa. Bạn paste code, nó trả code. Bạn hỏi, nó đáp. Tools phá vỡ mô hình đó. Tools cho phép Claude quyết định khi nào cần thực thi code để tiến gần hơn đến mục tiêu.| Nhóm tool | Tool tiêu biểu |
|---|---|
| File tools | Read, Write, Edit, MultiEdit |
| Search tools | Glob (tìm file), Grep (tìm content) |
| Execute tools | Bash (chạy command, test, script) |
| Web tools | WebSearch, WebFetch |
| Agent tools | Spawn subagent (forked context) |
| MCP tools | Slack, Linear, GitHub, custom… |
Permission Modes — Bạn kiểm soát mức độ tự chủ
Claude Code có 3 permission modes, toggle bằng Shift+Tab:| Mode | Hành vi | Khi nào dùng |
|---|---|---|
| Default | Hỏi trước mọi file edit và shell command | Task lạ, code production, auth, payment, migration |
| Auto Accept (file only) | File edit không hỏi; shell command vẫn hỏi | Task routine, refactor nhỏ, sau khi đã align plan |
| Plan Mode | Chỉ dùng read-only tools; lên kế hoạch trước khi thực thi | Task lớn, cần review plan trước khi sửa code |
- Default — bạn mới bắt đầu với task, hoặc task đụng đến code quan trọng (auth, payment, migration). Mỗi permission prompt là cơ hội để bạn kiểm tra Claude đang làm đúng không.
- Auto Accept (file only) — bạn đã align với Claude về plan, và task chủ yếu là sửa file (không phải chạy command có side-effect). Nhanh hơn, ít interrupt hơn.
- Plan Mode — dùng trước khi bắt đầu task lớn. Prompt Claude lên plan, review plan, confirm hướng đi. Sau đó Shift+Tab sang Auto Accept để execute. Đây là pattern phổ biến nhất cho task trung bình đến lớn. Xem Bài 2.3: Prompt đầu tiên để học Plan Mode chi tiết.
So sánh: Claude Code vs Chat AI thông thường
| Dimension | Chat AI thông thường | Claude Code |
|---|---|---|
| Mô hình tương tác | Reactive — bạn hỏi, AI trả lời từng bước | Autonomous — Claude chạy loop độc lập đến khi xong |
| Truy cập file | Không có (phải paste code vào chat) | Trực tiếp đọc/ghi file trong codebase |
| Tool calls | Không có hoặc rất hạn chế | Bash, file edit, glob, grep, web search, MCP… |
| Permissions | Không áp dụng | 3 mode: Default / Auto Accept / Plan Mode |
| Xác minh kết quả | Không — output là text, bạn phải tự verify | Có — Claude tự chạy test, đọc output, loop lại nếu fail |
| Multi-step task | Bạn phải chạy từng bước, copy-paste output | Claude tự chain nhiều bước, không cần can thiệp từng cái |
| Bộ nhớ session | Context window ngắn, thường reset | Context window 200k token, có /compact để kéo dài |
| Surface | Browser tab | Terminal (và IDE terminal) |
| Output type | Text / code snippet để bạn tự dán | File thực sự đã sửa, command đã chạy, test đã pass |
Ví dụ thực chiến: Thêm WebP conversion vào image upload pipeline
Giả sử bạn prompt:“Thêm WebP conversion vào image upload pipeline. Sau khi user upload ảnh, hệ thống cần tự động convert sang WebP trước khi lưu vào S3.”Đây là agentic loop thực tế diễn ra: Bạn quan sát toàn bộ quá trình này trong terminal. Bạn có thể interrupt bất kỳ lúc nào. Bạn không phải làm gì — trừ review kết quả cuối.
Case studies theo role
Backend Engineer: Refactor authentication module
Tình huống: Auth module 3 năm tuổi, dùng JWT pattern cũ, cần migrate sang refresh token flow mới. Loop diễn ra:- Gather: đọc toàn bộ src/auth/ (7 file), grep “jwt.sign” + “jwt.verify”, đọc test suite
- Action: refactor auth.service.ts và auth.middleware.ts, thêm refresh token logic
- Verify: chạy pnpm test auth/ — 3 test fail vì test cũ chưa cover refresh token
- Loop: đọc test cũ, viết test mới, sửa edge case expiry, chạy lại → pass
DevOps Engineer: Debug production incident lúc 2 giờ sáng
Tình huống: payments-api trả 503, cần hiểu nhanh root cause. Loop diễn ra:- Gather: đọc 1000 dòng log cuối, grep error patterns, đọc config hiện tại
- Action (diagnose, không phải fix ngay): generate report “top 3 root cause khả thi”
- Verify: cross-check với metrics từ tool call khác
Designer ship code: Megan’s case study
Tình huống: Megan là Product Designer, không phải engineer. Sau khi engineer handoff feature lớn, cô muốn tự ship những “2% polish” — margin không đúng, màu hover state thiếu, focus ring chưa có. Điều này trước đây không thể xảy ra: designer không commit code. Nhưng với Claude Code:- Megan mô tả “Button hover state màu blue-500, nhưng spec của tôi là blue-600”
- Claude gather: tìm file component, đọc Tailwind config, xem design token
- Action: sửa class trong file
- Verify: kiểm tra không có class nào override
Open source contributor: Khám phá codebase lạ
Tình huống: Bạn muốn contribute vào một project 200k LOC nhưng chưa biết kiến trúc. Thay vì đọc README và lạc trong file: Prompt: “Khám phá codebase này và tóm tắt architecture trong 5 bullets. Tập trung vào: cách routing hoạt động, nơi business logic sống, và pattern test đang dùng.” Claude gather: đọc entry point, theo dõi import chain, đọc sample test files, grep routing patterns. Verify: check hiểu đúng bằng cách đọc thêm 2-3 file edge case. Trả về 5 bullets chính xác. Bạn có cái nhìn toàn cảnh trong 5 phút, thay vì 2 ngày đọc file mù quáng.Data Engineer: ETL pipeline với built-in verification
Tình huống: Cần viết ETL pipeline đọc từ Postgres, transform dữ liệu, load vào BigQuery. Điểm mạnh của agentic loop ở đây: Mỗi bước ETL có thể verify được — số row in = số row out (sau khi deduplicate), type check từng column, null check. Claude viết pipeline, chạy với sample data nhỏ, verify output, rồi mới báo done. Không phải “tôi đã viết xong pipeline” mà là “tôi đã chạy với một tập mẫu nhỏ, output đúng, giờ bạn có thể chạy full.”Anti-patterns — Những cách dùng sai phổ biến
Anti-pattern 1: Dùng Claude Code như chat thông thường
Triệu chứng: Bạn paste đoạn code vào prompt, hỏi “sửa cái này”, Claude sửa, bạn copy kết quả ra, dán vào file thủ công. Tại sao sai: Bạn đang bỏ qua toàn bộ vòng lặp gather-action-verify. Claude không thấy context xung quanh (file khác, import, test), nên sửa dựa trên code snippet bị cắt rời. Kết quả thường lỗi vì thiếu context. Cách đúng: Để Claude tự đọc file. Chỉ cho nó biết file nào và vấn đề là gì — nó sẽ gather context còn lại.Anti-pattern 2: Auto-accept mọi thứ mà không đọc plan
Triệu chứng: Mỗi khi Claude đề xuất action, bạn nhấn Yes / y ngay không đọc. Tại sao sai: Agentic loop có thể đi sai hướng, đặc biệt với task phức tạp. Claude có thể interpret prompt khác ý bạn và bắt đầu sửa 15 file không liên quan. Nếu bạn không đọc plan và cứ accept, đến khi phát hiện thì code đã thay đổi nhiều. Cách đúng: Dùng Plan Mode (Shift+Tab) cho task quan trọng. Đọc plan trước khi chuyển sang execution. Chỉ auto-accept khi bạn hiểu rõ Claude đang làm gì.Anti-pattern 3: Bỏ qua permission review vì “phiền quá”
Triệu chứng: Bạn enable Auto Accept toàn bộ (kể cả shell commands) ngay từ đầu vì không muốn bị hỏi. Tại sao sai: Một command sai trong auto-accept mode có thể xóa file, reset database, deploy sai môi trường. Claude Code cẩn thận — nhưng không hoàn hảo. Permission prompt là safety net quan trọng. Cách đúng: Default mode cho task lạ hoặc task có side-effect quan trọng. Auto Accept (chỉ file, không phải command) cho task routine. Xem chi tiết ở Bài 2.3: Prompt đầu tiên và permission modes.Anti-pattern 4: Bị “ám” bởi tư duy autocomplete
Triệu chứng: Bạn dùng Claude Code nhưng vẫn viết prompt kiểu “tiếp tục code từ đây:”, “gợi ý tiếp theo là gì?”, “viết function tiếp theo cho tôi.” Tại sao sai: Những prompt này force Claude vào vai trò autocomplete — reactive, từng bước nhỏ, không có big picture. Claude Code mạnh nhất khi bạn mô tả goal và để nó tự chạy loop. Cách đúng: Mô tả outcome, không phải steps. Thay “viết function convert date” bằng “implement date range filter cho báo cáo, đảm bảo timezone-aware và cover edge case cuối tháng.”Anti-pattern 5: Tin kết quả mù quáng, bỏ qua verify step
Triệu chứng: Claude báo “xong”, bạn commit ngay mà không đọc diff, không chạy lại test, không thử feature trên localhost. Tại sao sai: Loop verify của Claude dựa trên những test và check có sẵn. Nếu test coverage thấp, hoặc bug chỉ xuất hiện ở production data — Claude sẽ không phát hiện được. Cách đúng: Claude verify là first line, không phải only line. Bạn vẫn cần review diff và test trên môi trường thực. Đặc biệt cho code liên quan đến auth, payment, data migration.Áp dụng ngay
Bài tập 1 (10 phút): Quan sát agentic loop trong thực tế
Mở Claude Code trong project bạn quen, prompt:“Explore codebase này và tóm tắt architecture trong 5 bullets. Cho tôi biết: (1) entry point chính, (2) nơi business logic sống, (3) pattern test đang dùng, (4) dependencies quan trọng nhất, (5) điều gì sẽ là ‘gotcha’ cho developer mới.”Trong khi Claude chạy, quan sát:
- Nó đọc file nào đầu tiên? (Phase 1 — Gather Context)
- Nó gọi những tool gì? (grep, glob, read…)
- Có loop lại không? (Phase 3 verify dẫn đến gather thêm)
- Mất bao nhiêu vòng lặp để ra kết quả?
Bài tập 2 (15 phút): Task multi-step với verify tự động
Chọn một task nhỏ nhưng multi-step trong project của bạn. Ví dụ:- “Thêm input validation cho form đăng ký — email format, password min 8 ký tự, username no spaces. Cập nhật test tương ứng.”
- “Refactor hàm formatDate() hiện dùng moment.js sang date-fns. Đảm bảo tất cả caller vẫn hoạt động.”
- Claude verify bằng cách nào? (chạy test, đọc output, grep caller?)
- Có vòng fail → fix → retry không?
- Claude báo done sau bao nhiêu vòng?
Tóm tắt
Agentic loop là nền tảng của mọi thứ Claude Code làm. Không phải gợi ý code, không phải chatbot thông minh hơn — mà là agent tự chạy vòng lặp Gather → Action → Verify cho đến khi task hoàn thành. 3 permission modes điều chỉnh mức độ tự chủ:- Default: hỏi trước mỗi file edit và command
- Auto Accept (file): sửa file không hỏi, nhưng vẫn hỏi cho command
- Plan Mode: chỉ dùng read-only tools để lên kế hoạch trước
- Tự truy cập file — không cần bạn paste code
- Tự verify — chạy test, đọc output, loop lại nếu fail
- Autonomous — chạy nhiều bước liên tiếp mà không cần can thiệp
Bài tiếp theo
Bạn đã hiểu Claude Code hoạt động như thế nào. Bước tiếp theo: cài đặt và chạy lệnh đầu tiên. Bài 2.2 sẽ hướng dẫn cài đặt Claude Code trên macOS, Windows (WSL), và Linux — bao gồm cả VS Code extension, JetBrains plugin, Claude Desktop, và Web version. Có bảng so sánh các surface để bạn chọn workflow phù hợp. Muốn đi sâu hơn ngay bây giờ?- Bài 2.3 — Plan Mode chi tiết: cách dùng Shift+Tab để lên kế hoạch trước khi execute
- Bài 2.5 — Context window deep dive: context window thực sự hoạt động thế nào, khi nào cần /compact vs /clear
- Bài 2.7 — File CLAUDE.md: cách “dạy” Claude nhớ ngữ cảnh project qua các session
Tài liệu tham khảo
- Anthropic — Claude Code best practices — nguyên tắc vàng từ đội ngũ Anthropic
- How Claude Code works — Anthropic SkillJar — video gốc với transcript
- Claude Code documentation — tài liệu chính thức
- Transcript: “A conversation on Claude Code” — Boris Cherny & team về philosophy và origin story
- Transcript: “The future of agentic coding” — horse & saddle analogy, 3-task framework