Bốn mươi phút. Đó là khoảng thời gian agent chạy trước khi tôi mở kết quả ra và thấy nó sai — sai từ một chỗ rất sớm, rồi cõng cái sai đó đi suốt phần còn lại.
Phản xạ đầu tiên của tôi: đổ cho agent. Nó chưa đủ giỏi cho việc này.
Nhưng ngồi dò lại, tôi thấy agent làm đúng cái quy trình tôi giao. Chỗ hỏng không nằm ở năng lực của nó. Nằm ở chỗ tôi đã thả dây theo một kiểu để cho cái sai đó có chỗ lớn lên mà không ai chặn. Và đó không phải lần đầu — tôi đã vấp đúng kiểu này vài lần, chỉ là chưa gọi được tên.
01Autonomy hỏng có hình dạng, không phải xui rủi
Khi bạn ngồi cạnh agent và duyệt từng bước, lỗi hiếm khi đi xa: thấy nó chệch là bạn kéo lại ngay. Autonomy lấy đúng cái khoảnh khắc kéo-lại-ngay đó đi. Và khi khoảnh khắc đó biến mất, lỗi không tan theo những cách ngẫu nhiên — nó đổ theo vài khuôn rất ổn định.
Tôi đếm được ba. Gần như mọi lần autonomy phản đòn, nó rơi vào một trong ba khuôn này.
02Kiểu một — nó lấp khoảng trống bằng một phỏng đoán nghe rất hợp lý
Mọi task giao cho agent đều có chỗ chưa nói rõ. Khi bạn ngồi cạnh, agent chạm tới chỗ mờ đó thì khựng lại — hoặc bạn thấy nó sắp rẽ sai mà chỉnh. Khi nó tự chạy, không có ai để hỏi, nên nó chọn cái default nghe hợp lý nhất rồi đi tiếp.
Vấn đề: "nghe hợp lý nhất" với agent thường là cái phổ biến nhất, không phải cái đúng cho trường hợp của bạn. Nó không sai một cách lộ liễu. Nó sai một cách trơn tru — một giả định nền lệch, và mọi thứ xây trên đó đều chỉn chu, trừ cái móng.
03Kiểu hai — nó trôi dạt, và không ai thấy lúc bắt đầu trôi
Khi agent là một chuỗi dài — bước này nuôi bước kia — một lệch nhỏ ở bước hai không nằm yên. Nó thành đầu vào của bước ba, bước bốn. Đến lúc bạn nhìn kết quả cuối, bạn đang xem cái sai đã được nhân lên năm lần, xa cái nguồn tới mức khó lần ngược.
Cái nguy của kiểu này không phải độ lớn của lỗi gốc — nó thường nhỏ xíu. Là khoảng cách giữa chỗ lỗi xảy ra và chỗ bạn nhìn vào. Chuỗi càng dài, khoảng cách đó càng rộng, và bạn càng phát hiện muộn.
04Kiểu ba — bài đầu xuất sắc đặt bẫy cho bài sau
Lần đầu agent tự chạy một việc, nó ra kết quả đẹp. Bạn nâng mức tin. Lần sau giao to hơn, dặn ít hơn, duyệt lỏng hơn. Rồi tới một bài nó làm làng nhàng — và giờ bạn mắc kẹt: bạn đã hứa (với sếp, với đội, với chính mình) rằng cái này tự chạy được.
Cú này đau không phải vì output trung bình. Đau vì khoảng cách giữa cái bạn kỳ vọng và cái bạn nhận — và vì bạn là người phải giải thích khoảng cách đó. Gốc rễ: bạn đã chốt lòng tin trên cái mẫu tốt nhất, không phải mẫu trung bình.
Để ý cả ba đều không phải lỗi "agent ngu". Cả ba là lỗi cấu trúc — mà lỗi cấu trúc thì sửa được bằng cách dựng lại, không phải bằng cách trách.
05Mỗi khuôn có một câu chặn trước
Tin tốt của chuyện "có hình dạng": cái gì đoán trước được thì chặn trước được. Mỗi khuôn có một động tác phòng, làm trước khi thả dây — không cái nào làm bạn chậm đi đáng kể.
Trước khi cho chạy tự do: "Liệt kê mọi giả định mày đang dựa vào cho task này. Cái nào không chắc, dừng lại hỏi — đừng tự chọn default." Khoảng mờ nói ra thành lời thì bạn chặn được; nằm im trong đầu agent thì không.
"Sau mỗi bước lớn, dừng một dòng: bước vừa rồi ra cái gì, bước tới định làm gì." Một checkpoint giữa chuỗi bắt cái lệch lúc nó còn nhỏ — rẻ hơn nhiều so với đọc kết quả cuối rồi lần ngược sáu bước.
Đừng nâng mức tin sau một kết quả đẹp. Cho nó chạy cùng loại task ba–bốn lần rồi mới chốt mức autonomy — bạn đang đo cái sàn, không phải cái trần. Lòng tin dựng trên trung bình mới đứng vững khi gặp bài tệ.
Ba câu này không làm autonomy của bạn nhỏ lại. Chúng làm nó đáng tin hơn — vì giờ nó đứng trên đúng ba chỗ từng làm nó ngã.
06Trách agent là bỏ lỡ chỗ duy nhất bạn sửa được
Lần tới agent tự chạy bốn mươi phút rồi ra kết quả sai, câu hỏi đáng giá không phải "agent có đủ giỏi không?". Là "nó vừa ngã theo khuôn nào trong ba?".
Vì nếu lỗi nằm ở agent, bạn chỉ còn cách ngồi chờ một model tốt hơn. Còn nếu lỗi nằm ở cách bạn dựng — và gần như lần nào nó cũng nằm ở đó — thì đó là chỗ bạn sửa được, ngay hôm nay, bằng đúng một câu đặt trước.