Hướng dẫn · Tác tử AI · · tác giả Stefan Tsezarov
Cho tác tử của bạn một ý kiến thứ hai trước khi nó hành động
Bạn nhờ tác tử lập trình sửa lỗi build. Nó đọc README, xem một luồng issue và tìm thấy một gợi ý:
Một cách sửa hợp lý. Một thay đổi nhỏ. Tác tử chuẩn bị lệnh cài đặt.
Nhưng dấu gạch nối bị thiếu đó lại quan trọng. crossenv từng là một gói độc hại có thật, bị gỡ khỏi npm năm 2017 sau khi bị phát hiện đánh cắp biến môi trường—nơi lập trình viên thường lưu khóa và token.
Cuộc trao đổi ở trên là một ví dụ. Còn gói thì có thật.
01Khi một gợi ý trở thành mệnh lệnh
Tác tử lập trình đọc rất nhiều văn bản mà bạn có thể không bao giờ thấy: tài liệu, bình luận issue, trang web và thông báo lỗi. Ngữ cảnh đó giúp chúng giải quyết vấn đề. Nó cũng có thể dẫn chúng đến một phụ thuộc xấu.
Việc cài một gói cần đặc biệt cẩn thận. Gói npm có thể chứa script chạy trong lúc cài, nên mã có thể được thực thi trước khi bạn kịp xem xét.
Lớp bảo vệ trước khi cài của SaveSaveSaveSave thêm một bước kiểm tra tại thời điểm đó. Trước khi một lệnh cài được hỗ trợ chạy, nó tra cứu gói và áp dụng chính sách bạn đã chọn.
02Điều gì xảy ra với một lệnh cài?
Hãy xem ba lệnh mà một tác tử có thể đề xuất.
Một gói trên registry không gây ra cờ nào
npm install cross-env
Lớp bảo vệ cho phép lệnh tiếp tục. Lời nhắc phê duyệt thông thường của bạn vẫn áp dụng. Điều này có nghĩa là các bước kiểm tra không tìm thấy lý do để phản đối; nó không phải bảo đảm rằng gói an toàn.
Một gói bị báo cáo là độc hại
cd app && npm install --save-dev crossenv
Lớp bảo vệ từ chối lệnh và cho tác tử biết lý do. Nó nhận ra lệnh cài ngay cả khi lệnh đó đi sau một lệnh khác.
Mã được lấy trực tiếp từ GitHub
npx github:someone/setup-script
Ở chế độ mặc định, lớp bảo vệ yêu cầu con người xem xét. Một URL Git nằm ngoài phạm vi kiểm tra registry npm của nó, nên nó không thể đưa ra đánh giá tương tự.
Các lệnh được hỗ trợ bao gồm lệnh cài qua npm, pnpm, yarn và bun, cùng với npx, npm ci, chuỗi lệnh dùng &&, và lệnh được bọc trong bash -c "…".
03Bạn chọn quy tắc
Lần quét cung cấp bằng chứng: nó đã kiểm tra gì, tìm thấy gì, và không đánh giá được gì. Một chính sách chạy trên máy của bạn quyết định điều gì xảy ra tiếp theo.
Chọn một trong ba chế độ:
| Chế độ | Bị báo cáo độc hại | Cảnh báo hoặc không đủ dữ liệu | Kiểm tra thất bại hoặc nguồn nằm ngoài registry |
|---|---|---|---|
| observe | Cho phép và báo cáo | Cho phép | Cho phép |
| guard · mặc định | Từ chối | Hỏi con người | Hỏi con người |
| strict | Từ chối | Từ chối | Từ chối |
Dùng observe để xem lớp bảo vệ hoạt động thế nào trong quy trình của bạn. Chọn guard để chặn các gói độc hại đã biết và xem xét các trường hợp chưa chắc chắn. Chọn strict khi một kết quả không kết luận được cần dừng việc cài.
Một kết quả sạch không bao giờ bỏ qua một bước phê duyệt mà tác tử của bạn vốn cần.
04Thêm nó vào quy trình của bạn
Với Claude Code, hãy thêm hook này vào .claude/settings.json của dự án. Nếu tệp đã có cài đặt, hãy gộp hook vào đó.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "npx -y savesavesavesave@0.1.5 hook claude-code --mode observe"
}
]
}
]
}
}
Hook kiểm tra các lệnh Bash được đề xuất. Các lệnh không chứa lệnh cài được nhận diện sẽ đi qua.
Với một tác tử hoặc script khác, hãy đặt lớp bảo vệ trước lệnh cài:
npx savesavesavesave@0.1.5 guard --mode guard -- npm install some-package
Mã thoát của nó cho phần tích hợp của bạn biết cách tiếp tục:
0: cho phép1: yêu cầu con người xem xét2: từ chối
Phần tích hợp của bạn cần tuân theo các kết quả đó.
Tác tử hỗ trợ MCP cũng có thể yêu cầu kiểm tra trực tiếp. Hướng dẫn thiết lập client có trên trang Dành cho tác tử.
Không cần tài khoản hay khóa API. Các ví dụ cố định một phiên bản để bạn có thể xem xét một bản phát hành cụ thể trước khi dùng.
05Biết bước kiểm tra bao gồm những gì
Lớp bảo vệ đọc thông tin do registry npm và OSV.dev công bố. Nó không tải xuống hay thực thi gói, và hiện chỉ bao gồm gói npm, không phải các hệ sinh thái như PyPI hay crates.io.
Điều đó để lại một vài giới hạn thực tế:
- Nó kiểm tra các lệnh được hỗ trợ mà nó nhận được. Lệnh cài ẩn trong tệp script, trình quản lý gói không được hỗ trợ hay tệp nhị phân được tải về có thể nằm ngoài tầm nhìn của nó. Hạn chế mạnh hơn cần kiểm soát quyền truy cập mạng và hệ thống tệp của tác tử.
- Một mối đe dọa chưa bị báo cáo có thể lọt qua. “Không phản đối” nghĩa là các bước kiểm tra hiện có không tìm thấy rủi ro đã biết nào.
- Hook phải chạy thì chính sách mới hoạt động. Nếu bạn dùng chế độ strict, hãy làm theo hướng dẫn trong README của gói để chặn lệnh khi chính hook không khởi động được.
Một tác tử lập trình có thể sửa lỗi build nhanh chóng. Nó cũng có thể nhanh chóng hành động theo một gợi ý thuyết phục từ người bạn không quen biết.
Trước khi gợi ý đó có được quyền truy cập máy của bạn, hãy cho nó một ý kiến thứ hai.
Bước tiếp theo của bạn: thêm hook ở chế độ observe, xem lại kết quả của nó, và chọn chính sách phù hợp với quy trình của bạn.