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

Một câu lệnh mơ hồ không ngắn — nó để ngỏ

Ba phần khiến agent chỉ còn một cách hiểu đúng: mục tiêu, ranh giới, dạng kết quả

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

Câu lệnh mơ hồ không phải vì ngắn, mà vì để ngỏ ba thứ agent buộc phải biết: nó nhắm tới đâu (mục tiêu đo được), được đụng tới đâu (ranh giới), và bạn muốn nhận lại gì để kiểm (dạng kết quả). Trả lời sẵn ba câu đó, bạn không còn để chỗ nào cho nó đoán.

"Tối ưu cái hàm này giúp tôi." Bốn chữ, nghe rõ ràng. Mười phút sau agent quay lại, hớn hở: nó đã viết lại sạch sẽ cả module, đổi luôn kiểu dữ liệu trả về, thêm một thư viện cache mới "cho gọn". Hàm chạy nhanh hơn thật. Và ba chỗ khác trong codebase vừa gãy.

Nó không làm sai lời bạn. Nó làm sai cái bạn định nói — và cả hai cùng khớp với bốn chữ bạn gõ. Vấn đề không nằm ở chỗ bạn nói ít. Nó nằm ở chỗ bạn nói mở.

01Mơ hồ là thiếu quyết định, không phải thiếu chữ

Một đoạn dài dòng vẫn mơ hồ y nguyên nếu nó để ngỏ đúng mấy chỗ quan trọng. "Tối ưu cái hàm này" bỏ ngỏ ba câu hỏi mà agent buộc phải có lời đáp mới làm được: tối ưu theo chiều nào? được phép đụng tới đâu? xong thì trông ra sao? Bạn không trả lời, nó vẫn làm — bằng cách tự điền ba chỗ đó theo cái nó hay gặp nhất.

Cấu trúc lệnh, nói gọn, là bạn trả lời ba câu đó trước, thay nó.

02Ba phần đóng kín một câu lệnh

1
Mục tiêu

Đo được, không phải tính từ. "Nhanh hơn" là cảm giác; "giảm thời gian chạy trên cùng một input" là cái kiểm được.

2
Ranh giới

Cái gì được đụng, cái gì cấm. Một dòng "KHÔNG đổi chữ ký, KHÔNG đụng đồ dùng chung" chặn được nửa số tai nạn.

3
Dạng kết quả

Bạn muốn nhận về gì để kiểm? "Cho tôi xem before/after" buộc nó giao bằng chứng, không phải lời kể.

Quay lại cái hàm lúc nãy. Cũng ý định đó, viết lại cho kín: "Giảm thời gian chạy hàm xử-lý-đơn. KHÔNG đổi chữ ký, KHÔNG đụng cache dùng chung. Xong cho tôi xem before/after trên cùng một input." Vẫn một câu — còn ngắn hơn đoạn bạn định giải thích vòng vo. Nhưng giờ ba cái nhánh từng để ngỏ đã đóng: nó biết nhắm đâu, biết vạch nào không vượt, biết phải nộp gì.

Ba phần này không phải khuôn cứng đọc như robot. Chúng là một checklist trong đầu: trước khi gửi, liếc qua — mình đã nói nó nhắm đâu chưa, chặn đâu chưa, muốn nhận gì chưa. Thiếu phần nào, đó đúng là chỗ nó sắp tự điền.

03Tả cái nó cần, đừng tả cái bạn đang nghĩ

Cái bẫy tinh vi nhất là gõ ra dòng suy nghĩ của mình thay vì thông tin nó cần. "Tôi thấy chỗ này hơi chậm, chắc do vòng lặp" — đó là bạn đang nghĩ to, không phải đang giao việc. Agent sẽ bám lấy chữ "vòng lặp" và bỏ qua chỗ chậm thật.

Mẹo tự bắt mình: đọc lại câu lệnh và hỏi "nếu là người mới, không đọc được suy nghĩ trong đầu mình, họ có làm đúng không?". Nếu phải đoán — bạn viết thiếu. Và mỗi chỗ phải đoán là một nhánh bạn vừa lặng lẽ giao quyền quyết cho nó.

Hết bàiCụm 01 · 2/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.