Cách xây dựng một Claude Code Agent tự sửa lỗi theo vòng lặp (Hướng dẫn thiết lập chi tiết)

@zodchiii
TIẾNG ANH4 tuần trước · 17 thg 6, 2026
143K
141
18
14
332

TL;DR

Hướng dẫn này cung cấp quy trình thiết lập hoàn chỉnh để tạo một Claude Code agent có khả năng tự sửa lỗi thông qua các lệnh và hook tùy chỉnh. Bằng cách triển khai giao thức phân loại lỗi, agent có thể tự chẩn đoán và khắc phục các lỗi mã nguồn một cách độc lập.

Claude viết code, một bài test hỏng, rồi nó trả lỗi về cho bạn xử lý.

Một tác nhân tự sửa lỗi thì không: nó tự đọc lỗi của mình, vá nguyên nhân, rồi chạy lại cho đến khi xanh.

Cài đặt một lần và bạn sẽ không còn làm người gỡ lỗi không lương cho tác nhân của mình nữa.

Đây là toàn bộ thiết lập bạn cần 👇

Trước khi đi sâu, tôi chia sẻ ghi chú hàng ngày về AI và vibe coding trong kênh Telegram của mình: https://t.me/zodchixquant🧠

darkzodchi - inline image

Tại sao một lần chạy là chưa đủ

Mặc định, Claude chạy một tác vụ một lần. Một bài test thất bại, nó báo lỗi và chờ. Bạn đọc, dán lại, bảo nó thử lại. Bạn đang làm việc gỡ lỗi, nó chỉ gõ chữ.

Một tác nhân tự sửa lỗi đảo ngược điều đó. Nó đọc lỗi của chính mình, xác định loại lỗi, sửa nguyên nhân đó, rồi chạy lại, giống như cách một trình gỡ lỗi suy nghĩ. Bạn chỉ can thiệp khi nó vượt qua hoặc thực sự bế tắc.

Tệp 1: lệnh fix

Đây là vòng lặp bạn thực sự chạy. Đặt vào .claude/commands/fix.md:

yaml
1---
2description: Chạy một tác vụ và tự sửa lỗi cho đến khi tất cả test đều đỗ
3argument-hint: <task>
4allowed-tools: Read, Write, Edit, Glob, Grep, Bash
5model: sonnet
6---
7
8Tác vụ: $ARGUMENTS
9
10Vòng lặp:
111. Triển khai tác vụ.
122. Chạy bộ test: `npm test` (hoặc pytest, cargo test).
133. Nếu tất cả test đỗ: dừng lại và hiển thị kết quả.
144. Nếu một test thất bại: phân loại loại lỗi, xác định nguyên nhân gốc,
15 sửa nguyên nhân đó, sau đó quay lại bước 2.
165. Giới hạn 5 lần thử. Thông báo số lần thử mỗi vòng.
17
18Thứ tự phân loại-rồi-sửa là toàn bộ ý chính. Chẩn đoán trước khi
19chỉnh sửa, mỗi vòng. Không bao giờ làm yếu test để đỗ, hãy sửa code.

Bạn gõ /fix thêm phân trang vào endpoint người dùng và tác nhân sẽ viết, test, và tự sửa cho đến khi bộ test xanh.

Tệp 2: hook tự động kiểm tra

Lệnh hoạt động theo yêu cầu. Hook làm cho việc tự kiểm tra trở nên tự động sau mỗi lần chỉnh sửa.

Thêm vào .claude/settings.json:

json
1{
2 "hooks": {
3 "PostToolUse": [
4 {
5 "matcher": "Write|Edit",
6 "hooks": [
7 { "type": "command", "command": "npm test --silent 2>&1 | tail -5 || echo 'TESTS FAILING, fix before continuing'" }
8 ]
9 }
10 ]
11 }
12}

Giờ đây, mỗi khi Claude chỉnh sửa một tệp, các bài test sẽ chạy và kết quả được đưa trở lại tầm nhìn của nó.

Một lỗi xuất hiện ngay lập tức, vì vậy tác nhân sửa nó trong cùng một luồng thay vì tiếp tục và chồng thêm nhiều thay đổi lên code bị hỏng.

Tệp 3: dạy nó đọc lỗi

Đây là tệp phân biệt một trình gỡ lỗi thực thụ với một kẻ đoán mò. Hầu hết các tác nhân thấy "test thất bại" và bắt đầu chỉnh sửa ngẫu nhiên.

Một tác nhân tốt sẽ đọc loại lỗi trước, vì mỗi loại chỉ ra một nguyên nhân khác nhau. Đặt cái này vào CLAUDE.md:

markdown
1## Cách đọc lỗi trước khi sửa
2
3Luôn nêu loại lỗi trước. Mỗi loại có ý nghĩa khác nhau:
4
5- Lỗi xác nhận (mong đợi X, nhận được Y): logic bị sai.
6 Truy ngược từ lỗi xác nhận đến nơi giá trị được tạo ra.
7 Sửa phép tính, không sửa kỳ vọng của test.
8
9- Lỗi kiểu / undefined is not a function: sự không khớp hình dạng.
10 Một thứ gì đó bị null, hoặc sai kiểu đến dòng này.
11 Tìm nơi giá trị đó bắt nguồn, bảo vệ hoặc sửa nó ở đó.
12
13- Hết thời gian / treo: thiếu await, hoặc một promise không bao giờ giải quyết.
14 Tìm các lời gọi async không có await, hoặc một điều kiện không bao giờ thay đổi.
15
16- Import / module không tìm thấy: vấn đề về đường dẫn hoặc phụ thuộc, không phải logic.
17 Sửa đường dẫn hoặc cài đặt, không chạm vào code sử dụng nó.
18
19- Flaky (lúc đỗ lúc trượt): trạng thái dùng chung hoặc thời gian, không bao giờ ngẫu nhiên.
20 Tìm các test phụ thuộc thứ tự hoặc thời gian/mạng chưa được mock.
21
22Quy tắc: nêu loại và nguyên nhân gốc trong một câu trước khi
23chỉnh sửa. Nếu bạn không thể đặt tên nguyên nhân, bạn đang đoán. Dừng lại.

Lỗi kiểu và lỗi xác nhận cần những hướng xử lý đối lập: một là vấn đề về hình dạng dữ liệu ở upstream, cái kia là logic sai tại chỗ. Phân loại trước và tác nhân sửa đúng thứ.

Bỏ qua nó và nó sẽ chỉnh sửa ngẫu nhiên cho đến khi màu đỏ biến mất, đó là cách bạn có một bộ test xanh nhưng âm thầm hỏng.

Những gì bạn thực sự thấy

Bạn gõ một dòng:

text
1/fix trình định dạng ngày tháng trả về múi giờ sai

Sau đó nó tự động làm việc:

text
1Lần thử 1
2 chạy test → THẤT BẠI
3 loại: xác nhận (mong đợi 5, nhận được 11)
4 nguyên nhân: không áp dụng kích thước trang vào truy vấn
5 đã sửa mệnh đề LIMIT
6
7Lần thử 2
8 chạy test → THẤT BẠI
9 loại: lỗi kiểu (offset không xác định)
10 nguyên nhân: trang 1 không gửi offset, mặc định sai
11 đã thêm offset = (page-1)*size
12
13Lần thử 3
14 chạy test → TẤT CẢ XANH (7/7)
15
16Đã sửa sau 3 lần thử. Xem lại diff?

Bạn không bao giờ phải dán lỗi lại. Nó tự đọc lỗi của mình, đặt tên từng nguyên nhân, và sửa cho đến khi bộ test xanh.

Các lỗi thường gặp

Sửa trước khi chẩn đoán. Lớn nhất. Một tác nhân chỉnh sửa trước khi xác định loại lỗi là đang đoán, và đoán làm cho màu đỏ thành xanh nhờ may mắn, không phải nhờ sửa lỗi. Quy tắc phân loại trước là toàn bộ hàng phòng thủ.

Xử lý mọi lỗi giống nhau. Hết thời gian và lỗi xác nhận không có điểm chung, nhưng một tác nhân không có hướng dẫn về loại lỗi sẽ coi cả hai là "có gì đó sai" và chỉnh sửa dòng gần nhất. Một nửa số lần sửa của bạn sẽ đặt nhầm tệp.

Vá triệu chứng. Bọc một lời gọi ném lỗi trong try/catch làm cho test đỗ nhưng để lại lỗi. Giao thức cấm việc im lặng hóa lỗi chính xác vì lý do này.

Để nó làm yếu test. Một tác nhân được phép chỉnh sửa test cuối cùng sẽ xóa test thất bại để đạt xanh. Một bộ test xanh không chứng minh được gì là kết quả tệ nhất, vì vậy quy tắc này là bất khả thương lượng.

Thiết lập trong 5 phút

2 phút: tạo .claude/commands/fix.md.

1 phút: thêm hook PostToolUse vào settings.json.

1 phút: thêm giao thức tự gỡ lỗi vào CLAUDE.md.

1 phút: chạy /fix trên một lỗi đã biết và xem nó xử lý nguyên nhân, từng lần thử.

Bạn không còn là con người chuyển tiếp lỗi nữa. Tác nhân đọc màu đỏ của chính nó và sửa cho đến khi xanh. Nó không trở nên thông minh hơn, nó chỉ dừng việc trả vấn đề lại cho bạn.

Cảm ơn bạn đã đọc!

Tôi chia sẻ ghi chú hàng ngày về AI, tài chính và vibe coding trong kênh Telegram của mình: https://t.me/zodchixquant

darkzodchi - inline image
Lưu một chạm

Đọc sâu bài viết viral bằng AI trong YouMind

Lưu nguồn, đặt câu hỏi tập trung, tóm tắt lập luận và biến một bài viết viral thành các ghi chú có thể tái sử dụng trong một không gian làm việc AI duy nhất.

Khám phá YouMind
Dành cho nhà sáng tạo

Biến Markdown của bạn thành bài viết 𝕏 gọn gàng

Khi bạn đăng bài viết dài của riêng mình, việc định dạng hình ảnh, bảng và khối mã cho 𝕏 rất mệt mỏi. YouMind biến cả bản nháp Markdown thành một bài viết 𝕏 gọn gàng, sẵn sàng để đăng.

Thử Markdown sang 𝕏

Thêm pattern để giải mã

Bài viết viral gần đây

Khám phá thêm bài viết viral