CLI commands
CLI แซนด์บ็อกซ์
จัดการรันไทม์แซนด์บ็อกซ์สำหรับการเรียกใช้เอเจนต์แบบแยกโดดเดี่ยว
ภาพรวม
OpenClaw สามารถเรียกใช้เอเจนต์ในรันไทม์แซนด์บ็อกซ์แบบแยกโดดเดี่ยวเพื่อความปลอดภัยได้ คำสั่ง sandbox ช่วยให้คุณตรวจสอบและสร้างรันไทม์เหล่านั้นใหม่หลังจากอัปเดตหรือเปลี่ยนแปลงการกำหนดค่า
ปัจจุบันโดยทั่วไปหมายถึง:
- คอนเทนเนอร์แซนด์บ็อกซ์ของ Docker
- รันไทม์แซนด์บ็อกซ์ SSH เมื่อ
agents.defaults.sandbox.backend = "ssh" - รันไทม์แซนด์บ็อกซ์ OpenShell เมื่อ
agents.defaults.sandbox.backend = "openshell"
สำหรับ ssh และ OpenShell remote การสร้างใหม่สำคัญกว่าเมื่อเทียบกับ Docker:
- พื้นที่ทำงานระยะไกลเป็นแหล่งอ้างอิงหลักหลังจาก seed ครั้งแรก
openclaw sandbox recreateจะลบพื้นที่ทำงานระยะไกลที่เป็นแหล่งอ้างอิงหลักนั้นสำหรับขอบเขตที่เลือก- การใช้งานครั้งถัดไปจะ seed ใหม่อีกครั้งจากพื้นที่ทำงานภายในเครื่องปัจจุบัน
คำสั่ง
openclaw sandbox explain
ตรวจสอบโหมด/ขอบเขต/การเข้าถึงพื้นที่ทำงานของแซนด์บ็อกซ์ที่ มีผลจริง นโยบายเครื่องมือแซนด์บ็อกซ์ และด่านยกระดับสิทธิ์ (พร้อมพาธคีย์การกำหนดค่าสำหรับแก้ไข)
openclaw sandbox explainopenclaw sandbox explain --session agent:main:mainopenclaw sandbox explain --agent workopenclaw sandbox explain --jsonopenclaw sandbox list
แสดงรายการรันไทม์แซนด์บ็อกซ์ทั้งหมดพร้อมสถานะและการกำหนดค่า
openclaw sandbox listopenclaw sandbox list --browser # List only browser containersopenclaw sandbox list --json # JSON outputผลลัพธ์ประกอบด้วย:
- ชื่อและสถานะของรันไทม์
- แบ็กเอนด์ (
docker,openshellและอื่น ๆ) - ป้ายกำกับการกำหนดค่าและว่าตรงกับการกำหนดค่าปัจจุบันหรือไม่
- อายุ (เวลาตั้งแต่สร้าง)
- เวลาว่าง (เวลาตั้งแต่ใช้งานครั้งล่าสุด)
- เซสชัน/เอเจนต์ที่เกี่ยวข้อง
openclaw sandbox recreate
ลบรันไทม์แซนด์บ็อกซ์เพื่อบังคับให้สร้างใหม่ด้วยการกำหนดค่าที่อัปเดตแล้ว
openclaw sandbox recreate --all # Recreate all containersopenclaw sandbox recreate --session main # Specific sessionopenclaw sandbox recreate --agent mybot # Specific agentopenclaw sandbox recreate --browser # Only browser containersopenclaw sandbox recreate --all --force # Skip confirmationตัวเลือก:
--all: สร้างคอนเทนเนอร์แซนด์บ็อกซ์ทั้งหมดใหม่--session <key>: สร้างคอนเทนเนอร์สำหรับเซสชันเฉพาะใหม่--agent <id>: สร้างคอนเทนเนอร์สำหรับเอเจนต์เฉพาะใหม่--browser: สร้างเฉพาะคอนเทนเนอร์เบราว์เซอร์ใหม่--force: ข้ามพรอมป์ยืนยัน
กรณีการใช้งาน
หลังจากอัปเดตอิมเมจ Docker
# Pull new imagedocker pull openclaw-sandbox:latestdocker tag openclaw-sandbox:latest openclaw-sandbox:bookworm-slim # Update config to use new image# Edit config: agents.defaults.sandbox.docker.image (or agents.list[].sandbox.docker.image) # Recreate containersopenclaw sandbox recreate --allหลังจากเปลี่ยนการกำหนดค่าแซนด์บ็อกซ์
# Edit config: agents.defaults.sandbox.* (or agents.list[].sandbox.*) # Recreate to apply new configopenclaw sandbox recreate --allหลังจากเปลี่ยนเป้าหมาย SSH หรือข้อมูลยืนยันตัวตน SSH
# Edit config:# - agents.defaults.sandbox.backend# - agents.defaults.sandbox.ssh.target# - agents.defaults.sandbox.ssh.workspaceRoot# - agents.defaults.sandbox.ssh.identityFile / certificateFile / knownHostsFile# - agents.defaults.sandbox.ssh.identityData / certificateData / knownHostsData openclaw sandbox recreate --allสำหรับแบ็กเอนด์หลัก ssh การสร้างใหม่จะลบรากพื้นที่ทำงานระยะไกลรายขอบเขต
บนเป้าหมาย SSH การรันครั้งถัดไปจะ seed ใหม่อีกครั้งจากพื้นที่ทำงานภายในเครื่อง
หลังจากเปลี่ยนแหล่งที่มา นโยบาย หรือโหมดของ OpenShell
# Edit config:# - agents.defaults.sandbox.backend# - plugins.entries.openshell.config.from# - plugins.entries.openshell.config.mode# - plugins.entries.openshell.config.policy openclaw sandbox recreate --allสำหรับโหมด OpenShell remote การสร้างใหม่จะลบพื้นที่ทำงานระยะไกลที่เป็นแหล่งอ้างอิงหลัก
สำหรับขอบเขตนั้น การรันครั้งถัดไปจะ seed ใหม่อีกครั้งจากพื้นที่ทำงานภายในเครื่อง
หลังจากเปลี่ยน setupCommand
openclaw sandbox recreate --all# or just one agent:openclaw sandbox recreate --agent familyสำหรับเอเจนต์เฉพาะเท่านั้น
# Update only one agent's containersopenclaw sandbox recreate --agent alfredเหตุผลที่ต้องใช้สิ่งนี้
เมื่อคุณอัปเดตการกำหนดค่าแซนด์บ็อกซ์:
- รันไทม์ที่มีอยู่จะยังคงทำงานด้วยการตั้งค่าเดิม
- รันไทม์จะถูก prune หลังจากไม่มีการใช้งาน 24 ชั่วโมงเท่านั้น
- เอเจนต์ที่ใช้งานเป็นประจำจะทำให้รันไทม์เดิมคงอยู่ต่อไปอย่างไม่มีกำหนด
ใช้ openclaw sandbox recreate เพื่อบังคับลบรันไทม์เดิม รันไทม์เหล่านั้นจะถูกสร้างใหม่โดยอัตโนมัติด้วยการตั้งค่าปัจจุบันเมื่อจำเป็นต้องใช้งานครั้งถัดไป
การย้ายรีจิสทรี
OpenClaw จัดเก็บเมตาดาต้ารันไทม์แซนด์บ็อกซ์ในฐานข้อมูลสถานะ SQLite แบบใช้ร่วมกัน การติดตั้งเก่าอาจยังมีไฟล์รีจิสทรีแซนด์บ็อกซ์แบบเดิม:
~/.openclaw/sandbox/containers.json~/.openclaw/sandbox/browsers.json
การอัปเกรดบางรายการอาจมีชาร์ด JSON หนึ่งไฟล์ต่อคอนเทนเนอร์/เบราว์เซอร์ภายใต้ ~/.openclaw/sandbox/containers/ หรือ ~/.openclaw/sandbox/browsers/ ด้วย การอ่านรันไทม์แซนด์บ็อกซ์ตามปกติจะไม่เขียนแหล่งข้อมูลเดิมเหล่านั้นใหม่ ให้รัน openclaw doctor --fix เพื่อย้ายรายการเดิมที่ถูกต้องเข้า SQLite ไฟล์เดิมที่ไม่ถูกต้องจะถูกกักกัน เพื่อไม่ให้รีจิสทรีเก่าที่เสียเพียงรายการเดียวซ่อนรายการรันไทม์ปัจจุบันได้
การกำหนดค่า
การตั้งค่าแซนด์บ็อกซ์อยู่ใน ~/.openclaw/openclaw.json ภายใต้ agents.defaults.sandbox (การ override รายเอเจนต์อยู่ใน agents.list[].sandbox):
{ "agents": { "defaults": { "sandbox": { "mode": "all", // off, non-main, all "backend": "docker", // docker, ssh, openshell "scope": "agent", // session, agent, shared "docker": { "image": "openclaw-sandbox:bookworm-slim", "containerPrefix": "openclaw-sbx-", // ... more Docker options }, "prune": { "idleHours": 24, // Auto-prune after 24h idle "maxAgeDays": 7, // Auto-prune after 7 days }, }, }, },}ที่เกี่ยวข้อง
- ข้อมูลอ้างอิง CLI
- การทำแซนด์บ็อกซ์
- พื้นที่ทำงานของเอเจนต์
- Doctor: ตรวจสอบการตั้งค่าแซนด์บ็อกซ์