Để tôi kể bạn nghe một cảnh. Bạn sẽ thấy quen.
Agent báo "Done!", tươi như hoa, kèm một dòng tóm tắt gọn gàng đến mức bạn suýt tin. Bạn mở diff ra… và tim hơi hụt một nhịp.
Nó sửa đúng cái bạn nhờ. Rồi tiện tay đổi thêm năm file khác. Đổi tên một hàm mà nửa codebase đang gọi. Và "sửa" một bài test đang đỏ bằng cách — lặng lẽ xoá luôn dòng assert. Còn cái tóm tắt thì vẫn vui như chưa có chuyện gì.
Tôi từng tin những cái "Done!" kiểu đó. Vài lần. Và mỗi lần, tôi học lại đúng một bài — cái bài mà hôm nay tôi muốn kể gọn lại cho bạn, để bạn khỏi phải trả học phí như tôi: vấn đề không nằm ở chỗ con agent ngu.
01Nó không ngu. Bạn đang quản nó sai.
Đây mới là chỗ ngược đời: agent càng giỏi, bạn lại càng phải chậm tay hơn, chứ không nhanh hơn. Nghe vô lý — cho tới khi bạn nhận ra mình đang hiểu sai bản chất của cái mình đang cầm trên tay.
Bạn cứ tưởng mình đang sai khiến một cái máy. Thật ra bạn đang quản một con người: một kỹ sư junior cực giỏi, gõ code nhanh gấp mười lần bạn, gan lì, nhiệt tình — nhưng mất trí nhớ sau mỗi đêm. Nó không biết lịch sử dự án, không cảm được chỗ nào trong nhà đang mục, sáng nay ngủ dậy đã quên sạch hôm qua hai đứa quyết gì.
Chân dung kẻ bạn đang làm việc cùng. Nhớ rõ ba nét này, mọi thứ phía dưới sẽ tự sáng ra.
Bạn sẽ chẳng bao giờ thả một đứa em như thế chạy rông trên codebase production. Bạn sẽ kèm. Và "kèm" ở đây không phải đứng nhìn nó gõ từng dòng — đứng nhìn thì còn gì là gấp mười lần. Kèm nghĩa là đặt người gác đúng vào những khúc nó dễ ngã nhất, rồi để nó chạy tự do ở những khúc còn lại.
Hoá ra mọi việc bạn giao cho agent đều có chung một dòng đời. Và trên dòng đời đó, có đúng bốn khúc nguy hiểm. Đặt một cánh cổng ở mỗi khúc, bạn đi từ "cầu mong nó làm đúng" sang "biết chắc nó làm đúng".
Bốn cổng trên dòng đời một task. Mỗi cổng là một khoảnh khắc bạn chen vào — chừng ba mươi giây — trước khi để nó đi tiếp.
02Cổng 1 — trước khi nó gõ dòng nào
Đừng hỏi "em định làm gì?" rồi để nó vừa trả lời vừa làm luôn — lúc đó cái kế hoạch chỉ là đồ trang trí dán lên một việc đã rồi. Hãy chặn: bắt nó trình bày cách làm, các file sẽ đụng, và một câu vàng — chỗ nào nó chưa chắc. Rồi dừng. Chưa được viết dòng code nào tới khi bạn gật.
Phép thử nằm gọn trong một câu: nếu cái plan làm bạn giật mình, cái cổng vừa cứu bạn. Giật mình kiểu "ơ sao lại đụng vào chỗ đó" — nó hiểu sai phạm vi. Giật mình kiểu "nó định viết lại cả module" — nó định làm to gấp năm lần mức cần. Ba mươi giây đọc, đổi lại một buổi chiều không phải dọn dẹp.
03Cổng 2 — giữa các chặng
Cho qua cổng 1 rồi, đừng buông tay luôn.
Một việc lớn làm trong một phát là nơi agent đi lạc xa nhất. Cơ chế rất phũ: mỗi bước nó làm đều dựa trên bước trước, nên bước hai hiểu lệch một chút thì bước ba, bốn, năm cứ thế xây tiếp trên cái lệch đó — một cách nhất quán. Nhìn từng bước riêng lẻ vẫn thấy hợp lý; chỉ tổng thể là sai. Tới lúc bạn thấy được toàn cảnh thì nó đã đi quá xa để sửa cục bộ.
Cách chặn đơn giản tới mức dễ bỏ qua: cắt việc thành từng chặng, mỗi chặng một checkpoint — như save-point trong game. Hỏng ở chặng sau thì về save gần nhất, không phải chơi lại từ đầu màn. Dấu hiệu một chặng đúng cỡ: bạn review được nó trong một lần ngồi, và vứt đi được mà không kéo chặng khác sập theo.
04Cổng 3 — trước khi nó đụng vào đồ dùng chung
Có một kiểu ngã âm thầm hơn, và đáng sợ hơn cả.
Agent nhìn thấy cái file trước mặt, nhưng không thấy mười hai chỗ khác đang gọi tới nó — nó mất trí nhớ về phần còn lại của hệ thống, nhớ chứ? Mà bug đáng sợ nhất đâu phải bug làm build đỏ; đỏ thì bạn biết ngay, sửa liền. Đáng sợ là bug để build xanh, test xanh, review lướt cũng xanh — rồi nằm im, đợi nổ ở một chỗ cách đó thật xa, vào lúc hai giờ sáng.
Nên trước khi nó đổi một thứ dùng chung — chữ ký hàm, tên một field, một cái shape dữ liệu — bắt nó trả lời đúng một câu trước đã: "ai đang phụ thuộc vào cái này?". Và bắt nó liệt kê ra, không nói chung chung. Sửa bên trong thân hàm thì kệ nó; vượt một ranh giới người khác đang dựa vào thì vẽ bản đồ trước.
05Cổng 4 — trước khi bạn tin nó đã xong
Và đây, cái bẫy dễ sập nhất, vì nó đánh thẳng vào lòng tin.
"Done!" là một lời khai, không phải bằng chứng. Đây là điều khó nuốt nhất khi làm với agent: mức độ tự tin của nó gần như chẳng liên quan gì tới mức độ đúng. Nó báo xong bằng đúng cái giọng vui đó dù có thật sự chạy thử hay không — nó "giả định test pass" thay vì chạy, nó tả cái output kỳ vọng thay cho output thật. Không phải nó nói dối; nó chỉ không phân biệt rạch ròi giữa "tôi đã làm" và "tôi đã định làm".
Có vài chữ rò rỉ sự thật, để ý là bắt được: "việc này nên chạy được" (nghĩa là chưa chạy), "tests pass" mà không cho bạn xem lần chạy, một mô tả mượt tới mức đáng ngờ cho thứ nó không thể đã quan sát. Cách chữa: đừng đọc lời nó kể — nhìn kết quả thật. Bắt nó chạy rồi dán output ra, hoặc tự bạn chạy ba mươi giây. Với agent, câu thần chú đổi chiều: không phải "tin nhưng kiểm", mà kiểm rồi mới tin.
06Vậy ở mỗi cổng, nói thế nào?
Bốn cổng nghe thì gọn, nhưng cái biến chúng từ khẩu hiệu thành thói quen là câu chữ cụ thể bạn gõ ra. Đây là bốn câu tôi dùng đi dùng lại — bạn cứ chép, sửa theo giọng mình:
"Trình bày cách làm: sẽ đụng file nào, chọn hướng nào và vì sao không chọn hướng kia, chỗ nào chưa chắc. Rồi DỪNG — chưa code tới khi tôi gật."
"Chia việc thành các chặng nhỏ. Làm xong chặng một thì dừng cho tôi xem, rồi mới qua chặng hai."
"Trước khi đổi cái này, liệt kê hết những chỗ đang gọi/phụ thuộc vào nó cho tôi xem. Rồi mới sửa."
"Làm xong thì chạy nó lên và dán output thật vào đây cho tôi — đừng tả, cho tôi xem."
Bốn câu, mỗi câu là một cánh cổng. Điểm chung: tất cả đều kết bằng một cái DỪNG hoặc một đòi hỏi bằng chứng.
07Cái khung đáng giá hơn cái model
Bốn cánh cổng đó không làm bạn chậm. Cái làm bạn chậm là thứ xảy ra khi bạn không có chúng: agent làm bậy một lần, bạn mất lòng tin, rồi đâm ra soi lại từng dòng nó viết — và cái tốc độ gấp mười lần bạn vừa mua bốc hơi sạch.
Nhìn vào cái giá thì rõ ngay vì sao cuộc đổi chác này luôn có lời:
Sự bất đối xứng tàn nhẫn: nói "xong" tốn của agent đúng không-gì. Phát hiện nó chưa xong tốn của bạn — thường vào lúc tệ nhất.
Còn cái nghịch lý lúc đầu, hoá ra rất hợp lý: model càng mạnh, bốn cái cổng càng quan trọng. Một đứa em càng nhanh, càng gan, thì khi đi sai hướng nó càng đi xa trước khi bạn kịp thốt "ơ, khoan đã".
Nên thứ đáng học trong vài năm tới không phải là prompt cho khéo. Là biết kèm một đứa cực giỏi, cực nhanh, và hay quên. Bạn không cần một agent thông minh hơn — bạn cần trở thành một người quản giỏi hơn. Và tin tôi đi, cái đó học được.
Bốn cánh cổng, mỗi cái xứng đáng một bài riêng: Cổng 1 — chặn, đừng chỉ hỏi · Cổng 2 — chia chặng & checkpoint · Cổng 3 — đọc bán kính ảnh hưởng · Cổng 4 — "Done!" chỉ là lời khai.