01Điều khiển agentĐào sâu ②

Đừng dặn nó đừng — làm cho nó không thể

Forcing function: biến hành vi xấu từ 'không nên' thành 'không đi được'

Đăng2026-05-31
Đọc3 phút đọc
LoạiGhi chép thực chiến
TL;DR

Dặn "đừng làm linh tinh" gần như vô dụng: nó là lời khuyên, mà lời khuyên thua thói quen. Cái ăn được là forcing function — một ràng buộc khiến đường tắt xấu không đi được, chứ không phải không nên đi. Mỗi lần định viết "nhớ đừng…", hãy hỏi: làm sao để nó không thể.

"Đừng đổi nhiều file nhé, sửa đúng cái bug thôi." Agent gật: "Rõ rồi." Rồi nó đổi tám file. Không phải vì nó không nghe — mà vì giữa chừng nó thấy một hàm "nên" gọn lại, một cái tên "nên" nhất quán, và lời dặn của bạn lúc đó chỉ còn là một câu nói mờ nhạt từ ba bước trước.

Bạn không gặp một đứa bướng. Bạn gặp một thói quen — và bạn vừa thử chặn nó bằng một lời nhắc.

01Lời khuyên thua thói quen

Agent có những mặc định mạnh đến mức nói suông không lại: tiện tay refactor, thêm thư viện cho "đẹp", đổi tên cho "nhất quán", viết một tràng giải thích thay vì làm. Đây là cái phổ biến nhất trong dữ liệu nó học; nó trượt về đó mỗi khi bạn không chặn đường.

Nên "đừng đổi linh tinh" hỏng không phải vì bạn nói chưa rõ, mà vì một lời dặn cạnh tranh rất yếu với một thói quen. Bạn đặt một tờ giấy nhắc trước mặt một dòng nước, rồi ngạc nhiên khi nước vẫn chảy.

02"Không nên" so với "không đi được"

Khác biệt nằm gọn ở đó. Cùng một ý định, hai cách diễn đạt cho hai kết quả khác hẳn:

Lời dặn — thua thói quen

"Đừng đổi nhiều file nhé"
"Nhớ test kỹ trước khi báo xong"
Nó gật, rồi vẫn trượt về mặc định

Forcing function — chặn đường

"Chỉ được sửa file x; đụng file khác phải DỪNG, xin phép"
"Dán lệnh test bạn đã chạy + output thật vào đây"
Đường tắt xấu giờ phải gõ cửa

"Đừng đổi nhiều file" là lời dặn. "Chỉ được sửa đúng file này; muốn đụng chỗ khác thì dừng lại xin phép" là forcing function — nó biến cái việc-đổi-bừa thành một cánh cổng phải gõ cửa. "Hãy test kỹ" là lời dặn. "Dán vào đây lệnh test đã chạy và output thật" là forcing function — không có output thì mặc nhiên coi như chưa xong.

03Ba khuôn forcing function

Gần như mọi forcing function rơi vào một trong ba khuôn, và bạn lắp được ngay:

  • Một bước bắt buộc — chèn một việc nó phải làm trước khi tới đường tắt. "Trước khi sửa, liệt kê chỗ đang gọi tới cái này."
  • Một định dạng bắt buộc — đòi kết quả ở dạng chỉ có làm-thật mới điền nổi. "Cho tôi diff, không cho tôi đoạn văn tả."
  • Một cái dừng bắt buộc — đặt một vạch nó không được vượt nếu chưa có bạn. "Xong chặng một thì DỪNG, chờ tôi gật."

Quy tắc để tự bắt mình: *mỗi lần ngón tay định gõ "nhớ đừng…", dừng lại và hỏi làm sao để nó không thể.* Biến câu dặn thành một bước, một định dạng, hay một cái dừng. Một lời khuyên thì agent có thể quên giữa chừng; một cái cổng thì nó phải đi qua.

Hết bàiCụm 01 · 3/4
Người viết

craftagent là ghi chép của một người đang xây — kể bằng giọng cà phê, mỗi câu chuyện gói một bài học đã trả giá để học.