13Bảo mật & niềm tinĐào sâu ③

Việc không thể hoàn tác: agent gõ nó thản nhiên như mọi lệnh khác

Xóa, gửi, triển khai, thanh toán — vài hành động không có nút undo, và agent không cảm được điểm không-quay-lại nằm ở đâu

Đọc5 phút đọc
Chủ đềbao-mat · autonomy · niem-tin
TL;DR

Vài hành động không có nút undo: xóa, ghi đè, gửi đi, triển khai, thanh toán. Agent gõ chúng bằng đúng sự thản nhiên như mọi lệnh khác, vì nó không cảm được đâu là điểm không-quay-lại. Cách giữ an toàn không phải để nó cẩn thận hơn, mà gài ba chốt từ bên ngoài: chạy thử trước khi làm thật, dừng xin xác nhận trước việc không hoàn tác, và ghi lại dấu vết — để khi có chuyện, bạn dựng lại được nó đã làm gì.

Cái lệnh xóa chạy trong nửa giây. Câu "khoan, không phải cái đó" của bạn bật ra sau nó chừng hai giây. Và hai giây đó là tất cả khác biệt giữa một thứ undo được và một thứ đã đi mất.

Đa số việc agent làm thì sai cũng sửa được: viết lại đoạn code, chạy lại cái test, sửa lại câu chữ. Bạn quen với cái lưới an toàn đó tới mức quên rằng nó không phải lúc nào cũng có. Một nhúm hành động không có lưới: xóa sạch một thứ, ghi đè lên bản gốc, gửi một email ra ngoài, đẩy một thay đổi lên môi trường thật, trả một khoản tiền. Làm xong là xong. Không có save-point để quay về.

01Agent không thấy cái vạch "qua đây là hết đường lùi"

Vấn đề không phải agent bất cẩn. Là nó không có cái cảm giác mà bạn có sẵn: cái rùng mình nhẹ trước khi tay bạn bấm Enter trên một lệnh hủy diệt.

Với bạn, "đổi một dòng chữ" và "xóa cả thư mục" là hai việc nằm ở hai đầu của một thang nguy hiểm. Với agent, chúng là hai lệnh dài bằng nhau, viết cùng một cú pháp, trôi qua với cùng một độ "bình thường". Nó không có một cái vạch đỏ trong đầu ghi "qua đây là hết đường lùi". Nó xử lý cái lệnh đẩy-lên-môi-trường-thật bằng đúng sự nhẹ nhõm như xử lý một lệnh in dòng chữ ra màn hình.

Tệ hơn, nó còn hay quên. Nó không nhớ rằng cái thư mục kia là thứ cả đội đang sống nhờ, rằng cái danh sách email đó là khách hàng thật, rằng cái nút "triển khai" kia đẩy thẳng ra chỗ người dùng đang dùng. Với nó, mỗi lệnh là một khoảnh khắc rời rạc, không gánh theo cái lịch sử khiến bạn phải rén tay.

02Ba cái chốt cho cái không có nút undo

Vì agent không tự dựng được cái vạch đỏ đó, bạn dựng hộ — bằng ba cái chốt gài quanh mọi hành động không-hoàn-tác:

AGENT ĐỊNH LÀM VIỆC KHÔNG UNDOLÀM AN TOÀN — HOẶC DỪNG
Chốt 1 — Chạy thử: trước khi làm thật, bắt nó cho xem nó định làm gì — sẽ xóa đúng những file nào, gửi cho đúng những ai. Một bản nháp khô của hành động, chưa chạm vào cái gì.

Chốt 2 — Dừng xin gật: trước một việc không hoàn tác, agent dừng lại chờ bạn duyệt — không tự bấm. Bạn nhìn cái bản nháp ở chốt 1, gật thì mới qua.

Chốt 3 — Ghi lại: nó đã làm gì, lúc nào, chạm vào đâu — chép vào một cuốn nhật ký. Để nếu có gì sai, bạn lần được dấu, không phải đoán mò trong bóng tối.

Để ý ba chốt này đều nằm <i>quanh</i> hành động, không nằm <i>trong</i> agent. Bạn không dạy nó sợ cái nút xóa — bạn đặt một lớp kính chắn trước cái nút đó, và một cái camera ghi lại mỗi lần nó với tay tới.

03Phân biệt cái undo được với cái không

Cái chốt sẽ thành phiền nếu bạn gài nó trước mọi hành động — agent dừng xin phép cả những việc vô hại thì còn gì là nhanh. Mẹo là phân loại trước: việc nào lùi được thì cho chạy thoải mái, việc nào không lùi được mới gài chốt.

1
Hỏi: "cái này lùi lại được không?"

Trước khi để agent tự do trên một loại việc, hỏi đúng một câu đó. Sửa code, chạy thử, nháp văn bản — lùi được, cho chạy. Xóa, gửi, triển khai, trả tiền — không lùi được, sang chốt sau.

2
Việc không lùi: chạy thử trước

"Cho tôi xem bạn sẽ xóa/gửi đúng cái gì, trước khi làm thật." Một bước dry-run biến cái không-undo-được thành cái xem-trước-được — chỗ bạn bắt lỗi khi nó còn chưa xảy ra.

3
Giữ một cuốn nhật ký

Ghi lại các hành động hệ trọng agent đã làm. Không phải để soi nó — mà để khi một thứ biến mất hay sai lệch, bạn có chỗ tra "chuyện gì đã xảy ra", thay vì dựng lại từ trí nhớ.

Cái nhật ký ở bước ba hay bị xem nhẹ nhất, nhưng nó là thứ cứu bạn lúc tệ nhất: "không biết nó đã làm gì" tự nó đã là một lỗ hổng. Có dấu vết, một sai sót thành chuyện tra ra được; không có, nó thành một bí ẩn bạn ôm mãi.

04Sự bất đối xứng tàn nhẫn nhất

Vì sao đáng gài mấy cái chốt này, khi chín mươi chín lần agent xóa đúng cái cần xóa? Vì lần thứ một trăm. Cái chốt tốn của bạn vài giây mỗi lần — liếc một bản dry-run, gõ một chữ "ừ". Cái không có chốt tốn của bạn một thứ không mua lại được, vào đúng cái lần bạn không ngờ nhất.

Đây không phải chuyện thả lỏng hay siết chặt autonomy nói chung — cái đó là một bài toán riêng về việc thả tới đâu. Đây hẹp hơn và cứng hơn: với riêng nhóm việc không-quay-lại, mặc định luôn là gài chốt, bất kể bạn tin agent tới đâu. Vì lòng tin có sai thì bạn rút lại được bằng một câu. Còn một thứ đã xóa, đã gửi, đã đẩy đi — thì hai giây "khoan đã" của bạn mãi mãi tới sau nửa giây cái lệnh đã chạy.

c
Người viết

Mỗi câu chuyện ở đây gói một bài học đã trả giá để học.

craftagentmột người vừa xây vừa học

Bạn đang xây gì với agent? Muốn trao đổi, phản biện, hay cùng làm một thứ gì đó — viết cho mình một dòng.

Viết thư hello@craftagent.cloud
58bài12cụmVI·ENsong ngữ

Nhận bài mới qua email

Ghi chép thực chiến về làm việc với AI agent — thi thoảng, không spam.