Agent trả về một thứ sai. Bạn nhìn nó vài giây, rồi làm cái phản xạ ai cũng làm: bắt đầu sửa. Sửa output. Không ăn. Sửa lại prompt. Vẫn lệch. Viết thêm một câu dặn dò. Lần thứ ba bạn nhận ra mình đã loay hoay nửa buổi mà chưa từng dừng lại hỏi: cái này đang hỏng kiểu gì?
Đó là cái bẫy. Không phải bạn thiếu nỗ lực — bạn thừa nỗ lực, đổ vào sai chỗ. Bạn đang chữa triệu chứng mà chưa chẩn được bệnh.
01Mỗi kiểu hỏng có một dáng riêng — và bạn nhận ra được
Bác sĩ giỏi không kê đơn ngay khi bệnh nhân vừa kêu đau. Họ hỏi: đau ở đâu, đau kiểu gì, lúc nào đau. Vì cùng một chữ "đau" trỏ tới mười cái bệnh khác nhau, và mỗi bệnh một thuốc.
Agent fail cũng vậy. "Nó sai" là tiếng kêu đau — vô dụng để chữa. Nhưng cách nó sai thì không vô số. Sau đủ lần vấp, bạn sẽ thấy nó luôn rơi vào một trong bốn dáng: nó bịa một thứ không có để tỏ ra đã làm; nó kẹt trong một vòng lặp mà vẫn trông như đang làm việc; nó báo xong rồi dừng nhưng kết quả lặng lẽ sai; hoặc nó nhả một output sai mà chẳng có dòng lỗi nào chỉ chỗ hỏng. Bốn dáng, bốn triệu chứng tách bạch — nhìn là gọi được tên.
Để ý: ba câu hỏi tách được cả bốn. Có dấu chân thật không? Nó có dừng không? Nó có báo gì không? Trả lời ba câu đó là bạn đã khoanh đúng loại — chưa cần sửa dòng nào.
02Vì sao bốn dáng này lặp lại, không phải mười dáng ngẫu nhiên
Bốn cái này không phải tôi gom cho gọn. Chúng lặp lại vì chúng bắt nguồn từ cùng một bản chất: agent là một thứ đoán phần tiếp theo khả dĩ nhất, không có cái khó chịu sinh lý của con người khi gặp việc quá sức. Thiếu cái phanh đó, nó trượt theo bốn hướng tự nhiên.
Khi thiếu công cụ hay quyền, hướng khả dĩ nhất là dựng một thứ trông-như-xong — ra dáng bịa. Khi việc mơ hồ và mỗi bước nhỏ đều trông hợp lý, nó cứ đi tiếp mà không thấy mình quay vòng — ra dáng kẹt. Khi nó tin mình đã xong, nó tuyên bố xong với cùng độ tự tin lúc nó đúng — ra dáng câm tĩnh. Và khi một giả định sớm bị lệch, cái lệch đó chảy xuôi xuống tận output cuối mà không kêu — ra dáng cần định vị. Bốn hướng trượt, bốn dáng. Hiểu cái gốc chung này thì bạn thôi bị bất ngờ: lần sau thấy sai, bạn không hỏi "nó bị gì lạ vậy", bạn hỏi "trong bốn hướng quen, đây là hướng nào".
03Gọi đúng tên rồi, mỗi tên có một đường thoát
Chẩn xong, việc còn lại nhẹ tênh: mỗi loại có một câu probe để xác nhận và một đường thoát riêng — và quan trọng là chúng khác nhau. Sửa loại này bằng cách của loại kia là lý do bạn loay hoay nửa buổi.
Probe: "Cho tôi xem lệnh thật bạn đã chạy và output thật của nó." Đường thoát: đòi dấu chân, mở cho nó nói "tôi thiếu X". → bài về agent diễn.
Probe: "Ba bước vừa rồi khác nhau ở đâu?" Nếu giống nhau → loop. Đường thoát: ngắt sớm, reset context sạch, giao lại kèm điều kiện dừng. → bài kết-vòng-lặp.
Probe: "'Xong' này có gì để tôi đối chiếu với đời thật?" Đường thoát: kiểm ở ranh giới, coi im lặng là đáng nghi. → bài "Done!" là một lời khai.
Probe: "Bước nào là bước đầu tiên kết quả đã lệch?" Đường thoát: chia đôi vùng nghi, bisect ngược về điểm hỏng. → bài đọc-ngược-từ-output-sai.
Bốn câu probe trên đều ngắn, và đều làm một việc: ép agent — hoặc ép chính bạn — lộ ra dữ kiện mà cái nhìn thoáng qua giấu đi. Chẩn đúng là nửa phần chữa.
Bạn không cần thuộc lòng cách chữa từng loại ngay hôm nay — bốn bài kia ở đó cho lúc bạn cần đào sâu. Cái cần thuộc là động tác dừng lại: trước khi gõ phím sửa, hỏi "đây là dáng nào trong bốn". Một câu hỏi, vài giây. Nhưng nó là cái ngã ba quyết định bạn sửa trúng hay sửa mò nửa buổi.
Cái hỏng nào cũng có tên. Lần tới agent trả về một thứ sai, đừng vội chữa — gọi tên nó trước. Khi đã gọi đúng, con đường tự hiện ra.