TROISINH
Nền tảngKhái niệm cốt lõi

Agent Loop là gì? Cách Claude Code tự động đọc file, chạy lệnh và sửa lỗi

Khám phá agent loop - vòng lặp Observe-Decide-Act giúp Claude Code tự động đọc file, chạy test và sửa lỗi. Hiểu sâu cách AI agent khác biệt so với Copilot

Định nghĩa

Claude Code không phải IDE hay plugin autocomplete thông thường, mà là một AI agent vận hành theo vòng lặp liên tục: đọc ngữ cảnh → suy luận → dùng công cụ → quan sát kết quả → lặp lại cho đến khi hoàn thành mục tiêu. Thay vì chỉ gợi ý từng dòng code như Copilot, Claude có thể tự động đọc hàng chục file, chạy test, sửa lỗi, và commit git mà không cần bạn chỉ từng bước.

Giải thích chi tiết

Vòng lặp 3 bước: Observe - Decide - Act

Tưởng tượng Claude như một thực tập sinh siêu nhanh nhưng bị "mù" - em ấy không thấy toàn bộ codebase mà chỉ đọc được từng phần bạn cho phép. Vòng lặp agent là cách em ấy làm việc:

  1. Observe (Quan sát): Claude dùng công cụ Read, Glob, Grep để thu thập thông tin - đọc file, liệt kê thư mục, tìm kiếm pattern. Giống như thực tập sinh mở tủ hồ sơ để tìm tài liệu liên quan đến nhiệm vụ được giao.

  2. Decide (Quyết định): Dựa trên dữ liệu thu thập, LLM (Claude 3.5 Sonnet/Opus) phân tích trong context window và quyết định hành động tiếp theo. Em ấy tự hỏi: "Đã đủ thông tin chưa? Cần sửa file nào? Hay chạy test để verify?"

  3. Act (Hành động): Claude thực thi qua các tool như Edit, Write, Bash (chạy lệnh terminal), hoặc MCP (gọi API bên ngoài). Sau mỗi hành động, em ấy nhìn kết quả (output của lệnh, nội dung file sau edit) và quay lại bước 1.

Đây là agent loop - một state machine nơi LLM quyết định chuyển trạng thái, khác hoàn toàn với mô hình "hỏi-đáp" một lượt của ChatGPT thông thường.

Tại sao gọi là "Agent" (tác nhân)?

Thuật ngữ "agent" ám chỉ khả năng tự chủ (agency). Khác với IDE truyền thống chờ bạn bấm nút, Claude chủ động đề xuất chuỗi hành động: "Tôi cần đọc file config trước, rồi sửa hàm utils, sau đó chạy npm test để kiểm tra".

Điểm then chốt là inverted control (đảo ngược điều khiển): Trong lập trình truyền thống, code của bạn "kéo" dữ liệu (const data = fetchAPI()). Trong agent loop, LLM "đẩy" hành động ra ngoài - khi thấy cần thiết, Claude tự gọi tool mà không cần trigger từ bạn.

Context Window - "Trí nhớ làm việc" của Agent

Mỗi vòng lặp, Claude phải "nhìn lại" toàn bộ lịch sử hội thoại (context window ~200K tokens). Đây là bộ nhớ làm việc tạm thời - nếu bạn đóng terminal, session mới bắt đầu với bộ nhớ trống (trừ khi dùng CLAUDE.md để lưu trữ lâu dài).

Điều này giải thích tại sao sau khoảng 20-30 phút chat dài, Claude có thể "quên" những chỉ dẫn đầu tiên - context bị nén (compaction) để nhường chỗ cho kết quả mới. Để tránh điều này, bạn cần hiểu cách Context Window hoạt động và giữ phiên làm việc tập trung.

Ví dụ thực tế

Debug lỗi thanh toán trên app Shopee

Bạn gõ: "Fix lỗi TypeError: Cannot read property 'name' của undefined ở trang giỏ hàng khi khách chưa đăng nhập"

Vòng 1 - Observe: Claude chạy grep "Cannot read property" --include="*.ts" --include="*.tsx" để tìm stack trace, sau đó Read file CartPage.tsxuserContext.ts.

Vòng 2 - Decide: Phát hiện biến user có thể null khi chưa login. Quyết định thêm optional chaining để tránh crash.

Vòng 3 - Act: Dùng Edit để sửa user.name thành user?.name, đồng thời thêm fallback hiển thị "Khách" nếu chưa đăng nhập.

Vòng 4 - Verify: Chạy Bash: npm run test:cart để kiểm tra. Test pass, không còn lỗi TypeError.

Vòng 5 - Commit: Dùng Bash: git commit -m "fix: add null check for guest checkout - Shopee cart" và báo cáo cho bạn: "Đã sửa lỗi, giờ khách chưa đăng nhập sẽ thấy 'Khách' thay vì crash".

Toàn bộ quá trình diễn ra trong 30-60 giây, tự động, không cần bạn copy-paste lỗi hay chỉ đường dẫn file.

Refactor module VietQR từ JavaScript sang TypeScript

Bạn yêu cầu: "Chuyển tất cả file xử lý thanh toán VietQR từ JS sang TS trong thư mục payments/"

Giai đoạn 1: Claude dùng Glob để liệt kê 12 file .js liên quan đến VietQR (generate-qr.ts, validate-bank.ts...), sau đó spawn Subagents (agent con) - mỗi agent xử lý 1 file song song trong context window riêng để tránh "nhiễu" thông tin.

Giai đoạn 2: Mỗi subagent đọc file → thêm interface cho VietQRData → chạy tsc --noEmit để check lỗi type → sửa lỗi nếu có (ví dụ: thêm kiểm tra bankCode phải là string 8 số theo chuẩn Napas) → trả kết quả về agent chính.

Giai đoạn 3: Agent chính tổng hợp kết quả, chạy test toàn bộ hệ thống thanh toán, và báo cáo: "Đã refactor 12 file VietQR, 0 lỗi type, test pass hết, đảm bảo tương thích với API VietQR cũ".

Lập kế hoạch thêm tính năng "Giao hàng 2h" với Planning Mode

Kích hoạt /plan trước khi code:

Bước lập kế hoạch: Claude phân tích yêu cầu "Thêm tính năng giao hàng 2h cho khu vực nội thành Hà Nội", liệt kê các file cần sửa (shipping.ts, deliveryZones.json, CheckoutForm.tsx), và đề xuất kế hoạch 6 bước (thêm zone mới, tính phí ship, validate địa chỉ...). Bạn duyệt kế hoạch trước khi thực thi.

Vòng lặp thực thi: Sau khi bạn approve, Claude chạy agent loop để thực hiện từng bước trong kế hoạch, tự kiểm tra kết quả sau mỗi bước (ví dụ: sau khi sửa logic tính phí, em ấy tự mở file test chạy verify giá ship từ Quận 1 sang Quận 2 có đúng 15k không).

Ứng dụng

Developer mới vào nghề

Hiểu rằng Claude không "viết code ngẫu nhiên" mà có quy trình logic rõ ràng: quan sát → phân tích → hành động → kiểm chứng. Bạn có thể tin tưởng hơn vào các thay đổi khi thấy em ấy tự chạy test để verify. Đây là cách học test-driven development thông qua quan sát agent loop, giúp bạn nhanh chóng quen với chuẩn mực code chuyên nghiệp tại các công ty như Tiki, VNG hay các startup Việt.

Product Manager / Non-coder

Xem Claude như "thực tập sinh siêu tốc" làm việc theo quy trình: tìm hiểu → phân tích → thực hiện → kiểm tra. Bạn không cần biết syntax code, chỉ cần mô tả mục tiêu bằng tiếng Việt (ví dụ: "làm cho nút 'Mua ngay' to hơn khi hover trên mobile"), Claude sẽ tự xử lý vòng lặp để đạt được mục tiêu đó, rồi báo cáo kết quả bằng ngôn ngữ tự nhiên.

Team Lead và Senior Dev

Nắm được agent loop giúp đặt đúng kỳ vọng về Permission Modes. Bạn có thể chọn plan mode để review từng vòng lặp trước khi Claude act (phù hợp cho code liên quan đến tiền bạc, security), hoặc auto mode để cho phép em ấy tự chạy nhiều vòng lặp liên tiếp không cần approve từng bước (phù hợp cho refactor đơn giản, format code).

So sánh

Đặc điểmIDE truyền thống (VS Code + Copilot)Claude Code (Agent)
Cách thứcBạn viết code, AI gợi ý từng dòngBạn mô tả mục tiêu, AI tự đọc/sửa/chạy
Vòng lặpKhông có - hỏi-đáp 1 lượtVòng lặp Observe-Decide-Act liên tục
Bộ nhớChỉ biết file đang mởĐọc nhiều file, nhớ ngữ cảnh trong session
Kiểm chứngBạn tự chạy testTự động chạy test trong vòng lặp
Quyết địnhBạn quyết định mọi thứAI đề xuất sequence hành động

Kết luận: Claude Code biến coding từ "đánh máy" thành "điều phối". Bạn không còn là người viết từng dòng, mà là người giám sát vòng lặp agent, approve kế hoạch, và verify kết quả cuối cùng - tương tự như quản lý một thực tập sinh giỏi nhưng cần giám sát.

Bài viết liên quan

Cùng cụm (Khái niệm cốt lõi)

Đọc tiếp (Thực chiến Level 1)

On this page