Sandbox
Cách sandbox hoạt động trên các ứng dụng ChatGPT và Codex
Sandbox là ranh giới cho phép tác nhân hoạt động tự chủ mà không cấp cho tác nhân quyền truy cập không hạn chế vào máy của bạn. Khi một cuộc trò chuyện cục bộ chạy lệnh trong ứng dụng ChatGPT dành cho máy tính, Codex CLI hoặc tiện ích mở rộng IDE, các lệnh đó chạy bên trong một môi trường bị giới hạn thay vì mặc định chạy với toàn quyền truy cập.
Môi trường đó xác định những gì tác nhân có thể tự thực hiện, chẳng hạn như các tệp mà tác nhân có thể sửa đổi và liệu các lệnh có thể sử dụng mạng hay không. Khi một tác vụ nằm trong các ranh giới đó, tác nhân có thể tiếp tục làm việc mà không phải dừng lại để xin xác nhận. Khi tác nhân cần vượt ra ngoài các ranh giới này, quy trình phê duyệt sẽ tiếp quản.
Sandbox làm gì
Sandbox áp dụng cho các lệnh được khởi chạy, không chỉ cho các thao tác tệp
tích hợp sẵn. Nếu tác nhân chạy các công cụ như git, trình quản lý gói hoặc trình chạy kiểm thử,
các lệnh đó sẽ kế thừa cùng các ranh giới sandbox.
Codex sử dụng cơ chế thực thi gốc của nền tảng trên từng hệ điều hành. Cách triển khai khác nhau giữa macOS, Linux, WSL2 và Windows gốc, nhưng ý tưởng nhất quán trên mọi bề mặt: cung cấp cho tác nhân một không gian làm việc có giới hạn để các tác vụ thường lệ có thể chạy tự chủ trong các giới hạn rõ ràng.
Vì sao điều này quan trọng
Sandbox giúp giảm sự mệt mỏi do phải phê duyệt. Thay vì yêu cầu bạn xác nhận mọi lệnh có rủi ro thấp, tác nhân có thể đọc tệp, thực hiện chỉnh sửa và chạy các lệnh dự án thường lệ trong ranh giới mà bạn đã phê duyệt.
Sandbox cũng mang lại cho bạn một mô hình tin cậy rõ ràng hơn cho công việc có tính tác nhân. Bạn không chỉ đặt niềm tin vào ý định của tác nhân; bạn còn tin rằng tác nhân đang hoạt động trong các giới hạn được thực thi. Nhờ đó, bạn có thể dễ dàng để tác nhân làm việc độc lập mà vẫn biết khi nào tác nhân sẽ dừng lại và yêu cầu trợ giúp.
Bắt đầu
Chế độ quyền mặc định tự động áp dụng sandbox.
Điều kiện tiên quyết
Trên macOS, sandbox hoạt động ngay lập tức nhờ framework Seatbelt tích hợp sẵn.
Trên Windows, Codex sử dụng sandbox Windows gốc khi bạn chạy trong PowerShell và sử dụng cách triển khai sandbox Linux khi bạn chạy trong WSL2.
Trên Linux và WSL2, trước tiên hãy cài đặt bubblewrap bằng trình quản lý gói của bạn:
Ubuntu/Debian
sudo apt install bubblewrapFedora
sudo dnf install bubblewrapCodex sử dụng tệp thực thi bwrap đầu tiên tìm thấy trên PATH. Nếu không có tệp thực thi bwrap
nào, Codex sẽ chuyển sang một trình trợ giúp đi kèm, nhưng trình trợ giúp đó
yêu cầu hỗ trợ tạo không gian tên người dùng không đặc quyền. Việc cài đặt
gói của bản phân phối cung cấp bwrap giúp cấu hình này hoạt động ổn định.
Codex hiển thị cảnh báo khi khởi động nếu thiếu bwrap hoặc nếu trình trợ giúp
không thể tạo không gian tên người dùng cần thiết. Trên các bản phân phối hạn chế cài đặt
AppArmor này, hãy ưu tiên tải hồ sơ AppArmor bwrap để bwrap có thể
tiếp tục hoạt động mà không phải tắt hạn chế trên toàn hệ thống.
Cách quyền hoạt động
Sử dụng tùy chọn kiểm soát quyền trên bề mặt bạn đang dùng để thay đổi cách Codex xử lý các hành động cục bộ.
Quy trình phê duyệt xác định khi nào Codex tạm dừng trước một hành động, còn sandbox xác định những tệp và tài nguyên mạng mà lệnh có thể truy cập. Khi một yêu cầu phê duyệt cung cấp nhiều phạm vi khác nhau, chẳng hạn như phê duyệt một lần hoặc cho cả phiên, hãy chọn phạm vi hẹp nhất cho phép tác vụ tiếp tục. Giữ ranh giới dự án làm mặc định; sử dụng các dự án hoặc worktree riêng biệt thay vì mở rộng quyền truy cập trên các kho lưu trữ không liên quan.
Trong ứng dụng ChatGPT dành cho máy tính, hãy sử dụng tùy chọn kiểm soát quyền bên dưới vùng soạn thảo. Tùy theo cấu hình của bạn, menu có thể bao gồm Yêu cầu phê duyệt, Phê duyệt thay tôi đối với các yêu cầu phê duyệt đủ điều kiện, Toàn quyền truy cập và các hồ sơ quyền được đặt tên hoặc tùy chỉnh.
Cấu hình mặc định
Để luôn bắt đầu với cùng một hành vi, hãy đặt giá trị mặc định trong config.toml.
Kiến thức cơ bản về cấu hình giải thích cách hoạt động, còn
Tài liệu tham khảo cấu hình mô tả chính xác các khóa cho
sandbox_mode, approval_policy, approvals_reviewer và
sandbox_workspace_write.writable_roots. Hãy sử dụng các cài đặt đó để quyết định mức độ
tự chủ mặc định của tác nhân, những thư mục tác nhân có thể ghi vào, khi nào tác nhân
nên tạm dừng để xin phê duyệt và ai sẽ xem xét các yêu cầu phê duyệt đủ điều kiện.
Ở cấp độ tổng quan, các chế độ sandbox phổ biến là:
read-only: Tác nhân có thể kiểm tra tệp nhưng không thể chỉnh sửa tệp hoặc chạy lệnh khi chưa được phê duyệt.workspace-write: Tác nhân có thể đọc tệp, chỉnh sửa trong workspace và chạy các lệnh cục bộ thường lệ bên trong ranh giới đó. Đây là chế độ mặc định ít gián đoạn dành cho công việc cục bộ.danger-full-access: Tác nhân chạy mà không bị hạn chế bởi sandbox. Chế độ này loại bỏ các ranh giới hệ thống tệp và mạng, vì vậy chỉ nên sử dụng khi bạn muốn tác nhân hoạt động với toàn quyền truy cập.
Các chính sách phê duyệt phổ biến là:
untrusted: Tác nhân hỏi trước khi chạy các lệnh không thuộc tập lệnh đáng tin cậy của tác nhân.on-request: Theo mặc định, tác nhân làm việc bên trong sandbox và sẽ hỏi khi cần vượt ra ngoài ranh giới đó.never: Tác nhân không dừng lại để hiển thị lời nhắc phê duyệt.
Khi quy trình phê duyệt có tính tương tác, bạn cũng có thể chọn người xem xét bằng
approvals_reviewer:
user: lời nhắc phê duyệt được hiển thị cho người dùng. Đây là chế độ mặc định.auto_review: lời nhắc phê duyệt đủ điều kiện được chuyển đến một tác nhân xét duyệt (xem xét duyệt tự động).
Toàn quyền truy cập nghĩa là sử dụng sandbox_mode = "danger-full-access" cùng với
approval_policy = "never". Ngược lại, cấu hình sẵn tự động hóa cục bộ có rủi ro thấp hơn
là sandbox_mode = "workspace-write" cùng với
approval_policy = "on-request" hoặc các cờ CLI tương ứng
--sandbox workspace-write --ask-for-approval on-request. Sau đó, bạn có thể giữ
approvals_reviewer = "user" để phê duyệt thủ công hoặc đặt
approvals_reviewer = "auto_review" để tự động xét duyệt yêu cầu phê duyệt.
Nếu cần tác nhân làm việc trên nhiều thư mục, các thư mục gốc có thể ghi cho phép bạn mở rộng những nơi tác nhân có thể sửa đổi mà không phải loại bỏ hoàn toàn sandbox. Nếu cần một ranh giới tin cậy rộng hơn hoặc hẹp hơn, hãy điều chỉnh chế độ sandbox mặc định và chính sách phê duyệt thay vì dựa vào các ngoại lệ dùng một lần.
Khi một quy trình làm việc cần ngoại lệ cụ thể, hãy sử dụng quy tắc. Quy tắc cho phép bạn cho phép, yêu cầu xác nhận hoặc cấm các tiền tố lệnh bên ngoài sandbox; cách này thường phù hợp hơn so với việc mở rộng quyền truy cập trên phạm vi lớn. Để biết các điểm truy cập cài đặt dành riêng cho IDE, hãy xem cài đặt tiện ích mở rộng Codex IDE.
Khi có sẵn, tính năng xét duyệt tự động không thay đổi ranh giới sandbox. Đây là
một tùy chọn approvals_reviewer cho các yêu cầu phê duyệt tại ranh giới đó, chẳng hạn như
nâng quyền sandbox, quyền truy cập mạng bị chặn hoặc các lệnh gọi công cụ gây tác dụng phụ
vẫn cần được phê duyệt. Các hành động đã được cho phép bên trong sandbox sẽ chạy
mà không cần xét duyệt thêm. Để tìm hiểu vòng đời của tác nhân xét duyệt, các loại kích hoạt, ngữ nghĩa
khi từ chối và chi tiết cấu hình, hãy xem
xét duyệt tự động.
Chi tiết nền tảng nằm trong tài liệu dành riêng cho từng nền tảng. Để biết cách thiết lập, hành vi và khắc phục sự cố trên Windows gốc, hãy xem Windows. Để biết các yêu cầu đối với quản trị viên và các ràng buộc cấp tổ chức về sandbox và quy trình phê duyệt, hãy xem Quy trình phê duyệt tác nhân và bảo mật.