Nó không kẹt theo kiểu báo lỗi — nó kẹt theo kiểu bận rộn

Một dạng câm động: agent không dừng, không báo lỗi, vẫn 'làm việc' — mà bốn lần liền lặp đúng một nước đi

Đọc5 phút đọc
Chủ đềproduction · debugging · failure-modes
TL;DR

Có một dạng câm không phải im lặng mà là bận rộn: agent không dừng, không báo lỗi, vẫn ra dáng làm việc — nhưng lặp đi lặp lại cùng một nước đi mà không tiến lên. Vì mỗi bước riêng lẻ trông hợp lý, nó không tự thấy mình đang quay vòng; bạn phải thấy cái pattern ở tầng trên. Ba dấu hiệu để bắt tại trận, và đường thoát không phải là dặn dò thêm — là ngắt sớm, reset context sạch, rồi giao lại kèm một điều kiện dừng tường minh.

Agent vẫn đang chạy. Màn hình vẫn cuộn. Nó sửa một chỗ, chạy lại, thấy chưa ổn, sửa lại — cùng chỗ đó, cùng cách đó. Lần thứ hai. Lần thứ ba. Tới lần thứ tư bạn mới sững người nhận ra: nó không tiến thêm một phân nào so với mười phút trước. Nó không đứng yên — nó đang đi vòng tròn, và mỗi vòng bạn vẫn trả tiền như thể nó đang tiến.

Đây là một kiểu hỏng lạ. Nó không câm theo kiểu dừng lại rồi báo xong. Nó câm theo kiểu ồn ào — lúc nào cũng có hoạt động để nhìn, nên cái không-tiến-triển bị che lấp dưới một lớp bận rộn.

01Vì sao nó không tự thấy mình đang quay vòng

Để gỡ, phải hiểu vì sao nó không tự thoát. Agent quyết định từng bước một, dựa trên cái nó đang thấy ngay trước mặt. Và ở mỗi bước, nước đi nó chọn đều hợp lý cục bộ: "kết quả chưa đúng, thử sửa lại chỗ này" — một câu hoàn toàn có nghĩa nếu bạn chỉ nhìn riêng bước đó.

Cái nó thiếu là tầm nhìn trên cao. Nó không lùi lại để thấy rằng bước này giống hệt bước hai vòng trước, rằng cả chuỗi đang vẽ một cái vòng tròn thay vì một đường thẳng. Mỗi quyết định đúng tại chỗ, nhưng gộp lại thì sai về tổng thể — và agent sống trong cái "tại chỗ" đó, không có cái nhìn toàn cảnh. Đó chính là chỗ bạn phải vào: pattern lặp ở tầng trên là thứ chỉ bạn thấy được, không phải nó.

Ba dấu hiệu nó đang đi vòng tròn
Lặp lại cùng một cách diễn đạtnó nói gần như y nguyên câu cũ — "để tôi thử cách khác", rồi thử đúng cái nó vừa thử. Lời giống nhau là dấu hiệu suy nghĩ giống nhau.
Sửa rồi hỏng, hỏng rồi sửanó sửa A làm hỏng B, sửa B làm hỏng A, rồi quay lại. Cái này gọi là oscillate — dao động giữa hai trạng thái xấu, không bao giờ ra khỏi cả hai.
"Gần xong rồi" — mãi không xongvòng nào nó cũng báo "sắp được", "chỉ còn một chút". Một tiến độ cứ ở mãi 90% là một tiến độ đứng yên đội lốt.

Cả ba có chung một điều: không cái nào là một dòng lỗi. Đó là lý do loop nguy hiểm hơn một cú crash — crash thì dừng và hét lên, loop thì chạy tiếp và thì thầm "gần rồi".

02Đường thoát không phải dặn thêm — là ngắt và làm lại

Phản xạ sai khi thấy loop là gõ thêm một câu: "thử cách khác đi", "đừng làm lại cái vừa làm". Nhưng nói thế là đổ thêm chữ vào đúng cái context đã làm nó mắc kẹt. Nó vẫn nhìn cùng đống thông tin cũ, nên vẫn đi cùng cái vòng cũ. Bạn không gỡ được vòng lặp từ bên trong vòng lặp.

Cách thoát là ra khỏi nó hẳn, theo ba nhịp:

NHẬN RANGẮT + RESETGIAO LẠI
Nhịp 1 — Nhận ra: thấy pattern lặp ở tầng trên (cùng nước đi, cùng lời, "gần xong" mãi) — cái chỉ bạn thấy được, nó thì không.

Nhịp 2 — Ngắt và reset: dừng ngay, dọn sạch context đã làm nó kẹt. Không ai gỡ được vòng lặp từ bên trong vòng lặp.

Nhịp 3 — Giao lại: bài toán cũ, bàn làm việc mới, kèm một điều kiện dừng tường minh.

Nhịp giữa là nhịp quan trọng nhất và hay bị bỏ: phải dọn context. Giao lại trong cùng cuộc hội thoại cũ thì nó kéo theo cả đống vòng tròn vừa rồi — bắt đầu bằng một bàn làm việc sạch mới cắt được mạch.

Khi giao lại, thêm đúng cái nó thiếu: một điều kiện dừng. Thay vì "sửa cho đến khi chạy", hãy nói "thử tối đa hai cách; nếu cả hai không ăn, dừng lại và mô tả bạn đã thử gì, kẹt ở đâu". Câu đó cấp cho agent cái nó không tự có — một cái phanh, một định nghĩa "khi nào thì nên bỏ cuộc và hỏi". Bạn đang cho nó mượn cái tầm nhìn trên cao mà nó thiếu.

03Càng thả lâu, cái vòng càng đắt

Loop cắn nặng nhất đúng lúc bạn không ngồi nhìn. Khi bạn giám sát từng bước, bạn ngắt sau vòng thứ hai. Nhưng cho một agent chạy nền, hoặc một chuỗi tự động dài, cái vòng tròn quay hàng chục lượt trước khi có ai ngó tới — và mỗi lượt là token thật, thời gian thật, đổ vào một chỗ đứng yên. Output cuối vẫn sai như từ vòng đầu; bạn chỉ trả thêm tiền cho việc nó sai lâu hơn.

Nên cái đáng cài sẵn không phải là "làm cho agent thông minh hơn để khỏi kẹt" — kẹt là bản chất của một thứ chỉ thấy được trước mặt. Cái đáng cài là một điều kiện dừng, ngay từ đầu, cho mọi việc bạn định thả nó chạy xa. Một con tàu không có phanh chạy nhanh cỡ nào cũng vô nghĩa nếu nó chỉ đang chạy quanh một cái vòng. Việc của bạn là vẽ sẵn vạch dừng trước khi cho nó lăn bánh.

c
Người viết

Mỗi câu chuyện ở đây gói một bài học đã trả giá để học.

craftagentmột người vừa xây vừa học

Bạn đang xây gì với agent? Muốn trao đổi, phản biện, hay cùng làm một thứ gì đó — viết cho mình một dòng.

58bài12cụmVI·ENsong ngữ

Nhận bài mới qua email

Ghi chép thực chiến về làm việc với AI agent — thi thoảng, không spam.