docs/notes/sandboxing_comparison_table.mdXem bản gốc Bản dịch đầy đủ theo đúng cấu trúc tài liệu; code, liên kết và định danh kỹ thuật được giữ nguyên.
Phương pháp hộp cát - decode so với khai thác tham chiếu (+ Codex)
Sự giao thoa giữa các phương pháp hộp cát được vận chuyển của bộ decode với các phương pháp của wiki nghiên cứu
phân loại, đóng khung trên mỗi harness. Wiki giảm "hộp cát" thành hai trục trực giao
(wiki/notes/execution-isolation-models.md):
- Trục A — nơi lệnh chạy: máy này so với máy khác.
- Trục B — có ranh giới hạt nhân: raw
spawnso với tù hệ điều hành (Dây an toàn / bong bóng / container / microVM).
Mọi phương pháp dưới đây là một bước di chuyển trên lưới đó. Ba điểm trên đó: ① trực tiếp (không có ranh giới), ② hộp cát cục bộ (ranh giới cùng nằm trên máy chủ của bạn), ③ từ xa (máy khác) — trong đó ③ tiếp tục chia thành ③a di dời agent, ③b di dời máy chủ, ③c hoán đổi phần phụ trợ.
Sơ lược — phương pháp × khai thác
| Phương pháp | mã Claude | mã mở | pi | Codex | decode (của chúng tôi) |
|---|---|---|---|---|---|
| 1. Chính sách và thực thi | chính sách (canUseTool) ******* Hệ điều hành tù | chỉ chính sách (không có lớp thực thi) | tool_call móc ****** tù bên ngoài | quy tắc nhắc nhở ++ phê duyệt Máy chủ ứng dụng hai chiều | cổng cấp phép (chính sách) ++ container (thực thi) |
| 2. không có/cục bộ/thang từ xa | ② mặc định · ① từ chối · ③a | ① chỉ · ② không có · ③b | ① mặc định · ② chọn tham gia · ③c | ② + ③ (thùng chứa đám mây cho mỗi tác vụ) | SANDBOX_MODE = none(①) / docker(②) / modal(③c) |
| 3. Cược cưỡng chế | PHÒNG NGỪA (nhà tù) | PHỤC HỒI (ảnh chụp nhanh git-shadow / hoàn tác) | BÊN NGOÀI (nono/container) | ngăn ngừa bằng container + phục hồi bằng PR | BÊN NGOÀI + PHỤC HỒI (container là nhà tù; tàu chở git) |
| 4. Vị trí I/O | MẶT NẠ (bash tù; tập tin vẫn ở phía máy chủ) | (không có tù; trực tiếp) | ĐỔI BỘ (ExecutionEnv = FS & Vỏ) | tất cả các công cụ đều chạy trong vùng chứa | ĐỔI BỘ (SandboxBackend đường may, nhiệm vụ 081) |
| 5. Gia đình ở xa | ③a di dời agent | ③b di dời máy chủ | ③c hoán đổi phụ trợ | ③di dời (Máy chủ ứng dụng trên đám mây) | ③c trao đổi phần phụ trợ (phương thức) |
| 6. Góc phần tư từ xa không tin cậy | — (khoảng trống mở của wiki) | — (khoảng trống mở) | — (khoảng trống mở) | ĐIỀN: hộp cát đám mây + bản sao repo + PR | ĐIỀN: docker/modal + --repo + bàn giao git phía máy chủ |
| (đi ra / bí mật) | lọc proxy + danh sách cho phép + hỏi khi bỏ lỡ | — | danh sách cho phép tên miền chỉ mở rộng | (chứa bên trong đám mây) | không có sự hòa giải đầu ra; Hỗ trợ git phía máy chủ (không có tín dụng trong hộp cát) + chọn tham gia SANDBOX_GIT_TOKEN được tiêm trực tiếp, cả hai phần phụ trợ (ADR-0016) |
Đọc nó: thứ nguyên ② là nơi các kho tham chiếu phân kỳ khó nhất (mã claude làm cho nó mặc định, pi chọn tham gia, mã mở sẽ từ chối nó). Góc phần tư từ xa không đáng tin cậy (hàng 6) là khoảng trống mà wiki nói lên tất cả ba để mở - Codex và decode là hai phần bổ sung của nó.
Chi tiết theo từng phương pháp
1. Tách chính sách khỏi việc thực thi
Bài học rút ra từ công cụ xây dựng số 1 của wiki: cho phép/từ chối/yêu cầu là lời khuyên; nhà tù là ranh giới. mã Claude nói
nó ở dạng mã -- excludedCommands "là sự tiện lợi, KHÔNG phải là ranh giới an ninh."
- mã claude: Lớp 1
canUseTool(chính sách) + Lớp 2wrapWithSandbox(Thực thi hệ điều hành). - opencode: chỉ chính sách (yêu cầu/cho phép/từ chối + danh sách đường dẫn được bảo vệ TCC); không có lớp thực thi.
- pi:
tool_callhook = chính sách (có thể chặn); việc thực thi được đưa ra ngoài cốt lõi. - Codex: quy tắc cấp phép hộp cát thực hiện trong lời nhắc; Máy chủ ứng dụng tạm dừng giữa tác vụ và yêu cầu khách hàng cho phép/từ chối. Chính sách rõ ràng; vùng chứa đám mây đang được thực thi.
- decode: cổng cấp phép (chế độ cho phép/yêu cầu/từ chối, ADR-0002) = chính sách; container = thực thi.
2. Thang không có/cục bộ/từ xa
- claude-code: ① chỉ chọn không tham gia · ② mặc định (Seatbelt/bwrap) · ③a điều khiển từ xa.
- opencode: ① mặc định & chỉ · ② không có theo thiết kế · ③b từ xa.
- pi: ① mặc định · ② chọn tham gia (
nono/ sandbox ext) · ③c từ xa. - Codex: ② + ③ — vùng chứa cloud cho mỗi tác vụ (ranh giới hạt nhân trên một máy khác).
- decode: bậc thang dưới dạng cấu hình —
SANDBOX_MODE=none(①) /docker(② container địa phương) /modal(③c container từ xa).
3. Đặt cược thực thi: ngăn chặn, phục hồi và ngoại tác
Cột sống của wiki/comparisons/isolation-claude-code-vs-opencode.md.
- claude-code = PREVENT: OS jail chặn thao tác không thể đảo ngược (trích xuất, ghi ngoài repository) ở kernel.
- opencode = RECOVER: git-shadow snapshots hoàn tác các chỉnh sửa xấu — nhưng "hoàn tác đảo ngược việc ghi cục bộ, không bao giờ thoát ra."
- pi = EXTERNALIZE: không có jail trong lõi; chạy vào trong
nono/a container - env triển khai là nhà tù. - Codex = PREVENT-by-container + RECOVER-by-git: hộp cát đám mây là ranh giới; nó đề xuất PR mà bạn xem xét trước khi hợp nhất.
- decode = EXTERNALIZE + RECOVER: giống như pi, container là nhà tù (chúng tôi không gửi seccomp); Giống như ý tưởng git của opencode, chúng tôi thêm chất nền phục hồi git — nhưng được chuyển đổi mục đích từ "hoàn tác" thành "ship" (
decode/<id>trao tay lại; sự hợp nhất là cổng thực).
4. Vị trí I/O: che giấu một fs so với trao đổi toàn bộ phần phụ trợ "dưới dạng một bộ"
Phương pháp được nâng cao trực tiếp nhất - cái nhìn sâu sắc về tiêu đề của pi (wiki/repos/pi/SANDBOX.md §3).
- claude-code = MASK: nhà tù kết thúc quá trình bash;
read/write/editở trên máy chủ - một fs, đeo mặt nạ. Remote chỉ di chuyển agent để mặt nạ cùng định vị. - opencode: không có tù; trực tiếp trên máy chủ.
- pi = HOÁN ĐỔI BỘ:
ExecutionEnv = FileSystem & Shell; ghi đèread+write+edit+bashcùng nhau. Cảnh báo của wiki: "việc chỉ xóa bash khiến agent đọc các tệp cục bộ về một cây từ xa." - Codex: tranh luận — bộ công cụ toàn bộ chạy bên trong vùng chứa (đã được di dời), do đó không có sự phân chia máy chủ/hộp cát để điều hòa.
- decode = SWAP THE SET: mẫu của pi, đã được triển khai. của chúng tôi
SandboxBackendđường may mang tập tin thực thi ++; tuyến đường nhiệm vụ 081read/write/edit/glob/grepthông qua nó vào Không gian làm việc. Chúng tôi từ chối một cách rõ ràng giải pháp thay thế "phản chiếu fs hộp cát tới máy chủ" — lỗ mù xóa.
5. Gia đình từ xa: di dời người thực thi và hoán đổi phần phụ trợ
execution-isolation-models.md §③ chia cắt từ xa thành hai gia đình.
- claude-code = ③a di dời agent (vòng lặp headless trên hộp điều khiển từ xa; chuyến đi tù).
- opencode = ③b di dời MÁY CHỦ (chia tách máy khách/máy chủ; không bị bỏ tù ở phía xa).
- pi = ③c hoán đổi BACKEND (agent cục bộ;
BashOperations/ExecutionEnvnhắm mục tiêu lại qua SSH/container). - Codex = ③a-family di dời: Máy chủ ứng dụng (tất cả logic cốt lõi) chạy trong vùng chứa đám mây; VS Code/máy khách web mỏng.
- decode = ③c swap (họ pi) cho modal — khai thác vẫn ở trên máy của bạn, thực thi + vận hành tệp được ủy quyền cho hộp cát từ xa. Sự tương phản: Codex di chuyển bộ não vào đám mây; decode giữ bộ não cục bộ và hoán đổi tay.
6. Góc phần tư từ xa không đáng tin cậy: container + repo clone + git hand-back
Wiki nói rõ rằng cả ba kho tham chiếu đều để mở - "không phải mỗi lệnh Các ảnh chụp nhanh dây an toàn/bwrap cũng như chỉ hoàn tác cách ly hoàn toàn máy chủ mà bạn không tin cậy — đó là nơi chứa các vùng chứa (Docker), microVM (Firecracker), gVisor enter."
- claude-code / opencode / pi: không gửi nó.
- Codex HOÀN TOÀN NÓ: "mỗi tác vụ chạy trong hộp cát đám mây riêng biệt, được tải sẵn repository của bạn"; một nhân viên cung cấp repository đã được kiểm tra cho vùng chứa, chạy Máy chủ ứng dụng, truyền phát tới trình duyệt, trạng thái trên máy chủ → đề xuất PR.
- decode ĐIỀN NÓ: vùng chứa (docker/modal) +
--reponhân bản vào/workspace+ bàn giao git phía máy chủ (decode/<id>chi nhánh). Chế độ modal của chúng tôi tương tự trực tiếp với hộp cát đám mây của Codex.- Sự khác biệt: Codex chạy agent bên trong đám mây và đề xuất PR từ đó; decode hoán đổi phần phụ trợ để tiếp cận vùng chứa (kiểu pi) và thực hiện git Push phía máy chủ - chuyển giao lại không đặt thông tin xác thực nào vào hộp cát (ADR-0012 §8). Chúng tôi đã gửi một proxy thông tin xác thực (mitmproxy tiêm token sau egress — một họ hàng của tính năng dàn xếp proxy egress lọc của claude-code, được đảo ngược từ filter thành inject) và đã xóa nó trong ADR-0016: nó chỉ hoạt động ở một trong ba chế độ sandbox, egress vẫn hợp tác và modal đã được chèn trực tiếp cùng một token. decode hiện không có tính năng dàn xếp đầu ra ** - gần nhất với ô "được chứa bên trong đám mây" của Codex. Để mô hình tự đẩy là chọn tham gia
SANDBOX_GIT_TOKEN, được đưa trực tiếp vào Worker env trong cả hai phần phụ trợ và mô hình có thể đọc nó (PAT có phạm vi, có thể hủy bỏ).
- Sự khác biệt: Codex chạy agent bên trong đám mây và đề xuất PR từ đó; decode hoán đổi phần phụ trợ để tiếp cận vùng chứa (kiểu pi) và thực hiện git Push phía máy chủ - chuyển giao lại không đặt thông tin xác thực nào vào hộp cát (ADR-0012 §8). Chúng tôi đã gửi một proxy thông tin xác thực (mitmproxy tiêm token sau egress — một họ hàng của tính năng dàn xếp proxy egress lọc của claude-code, được đảo ngược từ filter thành inject) và đã xóa nó trong ADR-0016: nó chỉ hoạt động ở một trong ba chế độ sandbox, egress vẫn hợp tác và modal đã được chèn trực tiếp cùng một token. decode hiện không có tính năng dàn xếp đầu ra ** - gần nhất với ô "được chứa bên trong đám mây" của Codex. Để mô hình tự đẩy là chọn tham gia
Tổng hợp
Wiki đã dự đoán một góc phần tư mà ba khai thác tham chiếu của nó không đạt tới — ranh giới hạt nhân + một góc phần tư khác máy + mã không đáng tin cậy. Codex và decode là hai phần bổ sung cho khoảng trống đó và chúng phân chia thành chính xác hai trục tên wiki:
- Gia đình từ xa — Codex di dời (③a) toàn bộ agent vào vùng chứa đám mây; decode hoán đổi phụ trợ (③c, pi-style) vào docker/modal.
- Vai trò Git — Codex đề xuất PR từ bên trong đám mây; decode đẩy một nhánh phía máy chủ vì vậy bí mật không bao giờ vào hộp cát.
Mọi thứ khác được decode được xây dựng là sự kết hợp lại của các khai thác tham chiếu: "hoán đổi tập hợp" của pi (Phương pháp 4)
- "chính sách ≠ thực thi" của claude-code (Phương pháp 1) + "git làm chất nền an toàn" của opencode (Phương pháp 3), với các thùng chứa/phương thức lấp đầy góc phần tư từ xa không đáng tin cậy.