- เครื่องมือสำหรับรัน เอเจนต์เขียนโค้ด AI ด้วยสิทธิ์ระบบเต็มรูปแบบ พร้อม ป้องกันความเสี่ยงที่โฮมไดเรกทอรีของผู้ใช้จะเสียหาย
- AI CLI หลักอย่าง Claude Code, Codex, Gemini CLI, OpenCode ถูกตั้งค่าไว้ล่วงหน้าและสามารถรันใน โหมด ‘YOLO’ ได้
- เมานต์เฉพาะไดเรกทอรีโปรเจกต์ภายใน คอนเทนเนอร์ Docker หรือ Podman และไม่เมานต์โฮมไดเรกทอรีตามค่าเริ่มต้น
- ภายในคอนเทนเนอร์มีทั้ง สิทธิ์ sudo และ persistent volume เพื่อคงเครื่องมือและการตั้งค่าข้ามเซสชัน
- มอบ สภาพแวดล้อมแซนด์บ็อกซ์แบบแยกส่วน ที่ช่วยให้นักพัฒนาทดลองฟังก์ชันอัตโนมัติของ AI ได้อย่างปลอดภัย
ภาพรวม
- Yolobox เป็นเครื่องมือที่รันเอเจนต์เขียนโค้ด AI ภายในคอนเทนเนอร์ เพื่อปกป้องระบบไปพร้อมกับให้สิทธิ์การทำงานแบบเต็มรูปแบบ
- แม้ AI จะเผลอรันคำสั่งทำลายล้างอย่าง
rm -rf ~ ระหว่างการทำงาน โฮมไดเรกทอรีก็จะไม่ได้รับผลกระทบ
- ไดเรกทอรีโปรเจกต์จะถูกเมานต์เป็น
/workspace และโฮมไดเรกทอรีจะไม่ถูกเมานต์ตามค่าเริ่มต้น
- เครื่องมือและการตั้งค่าจะถูกเก็บไว้ข้ามเซสชันผ่าน persistent volume
องค์ประกอบและความสามารถหลัก
- ภายในคอนเทนเนอร์ เอเจนต์ AI มี สิทธิ์ sudo และสามารถรันคำสั่งได้อย่างอิสระ
- อิมเมจเริ่มต้นมีสิ่งต่อไปนี้รวมอยู่แล้ว
- AI CLI: Claude Code, Gemini CLI, OpenAI Codex, OpenCode (ตั้งค่าเป็นโหมดรันอัตโนมัติทั้งหมด)
- สภาพแวดล้อมสำหรับพัฒนา: Node.js 22, Python 3, make, cmake, gcc, Git, GitHub CLI
- ยูทิลิตี: ripgrep, fd, fzf, jq, vim
- หากจำเป็น ผู้ใช้สามารถติดตั้งแพ็กเกจเพิ่มเติมเองได้ด้วย sudo
การรันและคำสั่ง
- ใช้คำสั่ง
yolobox เพื่อเข้าสู่แซนด์บ็อกซ์เชลล์
- ใช้
yolobox run เพื่อรันคำสั่งเดี่ยวได้
- มีคำสั่งจัดการอย่าง
yolobox upgrade, yolobox config, yolobox reset --force, yolobox version
- แฟล็กหลัก
--runtime: เลือก docker หรือ podman
--no-network: ปิดการใช้งานเครือข่าย
--readonly-project: เมานต์โปรเจกต์แบบอ่านอย่างเดียว
--claude-config: คัดลอกการตั้งค่า Claude จากโฮสต์เข้าไปยังคอนเทนเนอร์
โมเดลด้านความปลอดภัย
- ใช้ การแยกด้วยคอนเทนเนอร์ เป็นขอบเขตด้านความปลอดภัย
- คอนเทนเนอร์แยกไฟล์ซิสเต็ม โปรเซส และเครือข่ายผ่าน Linux namespaces
- AI มีสิทธิ์ root ภายในคอนเทนเนอร์ แต่ไม่สามารถเข้าถึงระบบภายนอกได้
- สิ่งที่ได้รับการปกป้อง
- โฮมไดเรกทอรี, SSH keys, ข้อมูลรับรอง, dotfiles, โปรเจกต์อื่น ๆ, ไฟล์ระบบของโฮสต์
- สิ่งที่ไม่ได้รับการปกป้อง
- ไดเรกทอรีโปรเจกต์ (โดยปกติอ่าน/เขียนได้)
- การเข้าถึงเครือข่าย (สามารถปิดได้ด้วยออปชัน)
- ช่องโหว่ระดับเคอร์เนลหรือการโจมตีแบบ container escape
ขั้นการเสริมความปลอดภัย
- โหมดพื้นฐาน: การแยกคอนเทนเนอร์มาตรฐาน
- ระดับ 2: ลดพื้นผิวการโจมตีด้วยตัวเลือก
--no-network --readonly-project
- ระดับ 3: ใช้ Rootless Podman เพื่อตัดสิทธิ์ root บนโฮสต์
- root ภายในคอนเทนเนอร์จะถูกแมปเป็นผู้ใช้ทั่วไปบนโฮสต์ ช่วยลดความเสียหายหากเกิดการหลุดออกจากคอนเทนเนอร์
- ระดับ 4: รันภายใน VM เพื่อตัดการแชร์เคอร์เนล
- บน macOS ใช้ UTM, Parallels, Lima และบน Linux ใช้ Podman machine หรือ VM เฉพาะทาง
การแยกเครือข่าย
- Rootless Podman ใช้เครือข่าย slirp4netns ตามค่าเริ่มต้น ซึ่งแยกออกจากเครือข่ายของโฮสต์
- สามารถบล็อกการเข้าถึงเครือข่ายภายในเครื่องได้ด้วยการตั้งค่า
allow_host_loopback=false
ไลเซนส์และอื่น ๆ
- เผยแพร่ภายใต้ MIT License
- สัดส่วนภาษาภายในรีโพซิทอรี: Go 75.9%, Dockerfile 13.6%, Shell 8.7%, Makefile 1.8%
- ชื่อ ‘Yolobox’ มาจากแนวคิด “YOLO(You Only Live Once)” หมายถึง สภาพแวดล้อมที่ให้ AI ทำงานได้อย่างอิสระแต่ยังถูกแยกอย่างปลอดภัย
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เมื่อไม่นานมานี้ฉันทำโปรเจกต์คล้ายกันชื่อ Litterbox (เว็บไซต์เดโม)
ใช้ได้เฉพาะบน Linux เพราะพึ่งพา Podman แต่ก็มีข้อดีที่เหมาะกับการใช้งานของฉัน
ฉันก็กำลังทดลองอะไรคล้าย ๆ กันอยู่เหมือนกัน
ถ้าใน README อธิบายวิธีทำงานและ ขอบเขตความเชื่อถือ (บนพื้นฐาน Docker container) ให้ชัดเจนก็น่าจะดี เพราะยังมีความเสี่ยงเรื่อง container escape หากมีการโจมตีช่องโหว่ของเคอร์เนล
ตอนนี้ฉันใช้ Rootless Podman กับ
slirp4netnsเพื่อลดการเข้าถึงเครือข่ายให้เหลือน้อยที่สุดขั้นต่อไปอยากใช้ Podman machine เพื่อแยกเคอร์เนลออกไปเลย แต่การเมานต์โวลุมยังทำงานไม่ค่อยดี
มีคนเสนอว่าควรใส่ กฎ 3 ข้อของอาซิมอฟ ลงใน
agents.mdหรือclaude.mdclaude.mdมันจะให้ผลเหมือน ยัดแนวคิดนั้นเข้าไปในใจ ของโมเดล รุ่นก่อน ๆ เคยมีพฤติกรรมแปลก ๆ เช่นพอบอกว่า “อย่าใช้คำว่าช้าง” ก็ยิ่งพยายามหลีกเลี่ยงคำนั้นจนได้ผลลัพธ์ประหลาดแนะนำให้ลองดู Shai มันรันบนเครื่องโลคัลและควบคุมสิทธิ์เข้าถึงไดเรกทอรีกับทราฟฟิกเครือข่ายได้
shai -rw .ใช้อนุญาตให้อ่าน/เขียนไดเรกทอรีปัจจุบัน และshai -u rootใช้รันด้วยผู้ใช้อีกคนได้Shai ยึดแนวคิด ปฏิเสธเป็นค่าเริ่มต้น และอนุญาตเมื่อระบุชัดเจน (opt-in) แนะนำให้แชร์
.shai/config.yamlไว้ในรีโปเพื่อให้ทั้งทีมใช้การตั้งค่าเดียวกัน--no-networkฉันกำลังพัฒนา yolo-cage ถ้า Yolobox เน้นปกป้องเครื่องโลคัล yolo-cage จะเน้น การป้องกันการรั่วไหลของความลับและการทำงานร่วมกันของหลายเอเจนต์
มันรันบน Kubernetes และ สแกนทราฟฟิกขาออกทั้งหมด เพื่อป้องกันการรั่วของ API key หรือโทเค็น
มันบังคับการแยก Git branch เพื่อไม่ให้เอเจนต์รวม PR ของตัวเองได้ — “เอเจนต์เสนอ และมนุษย์อนุมัติ”
นอกจากนี้ยังมี เฟรมเวิร์กทดสอบการหลบหนี ในตัว เพื่อกระตุ้นให้ Claude พยายามหลบหนีด้วยตัวเอง โดยพรอมป์ต์นั้นอยู่ในรีโป ทำให้ตรวจสอบได้ว่าเอเจนต์เป็นของจริงหรือไม่
ฉันสงสัยว่าทำไมต้องติดป้าย “claude” ไว้ในคอมมิตด้วย ปกติเราก็ไม่ได้ระบุ OS หรือเวอร์ชันของ vim นี่นา ท้ายที่สุด LLM ก็เป็นแค่ เครื่องมือที่คอมไพล์ภาษาอังกฤษเป็นโค้ด
ฉันก็เคยลองทำอะไรคล้าย ๆ กัน และสร้าง Toadbox ที่เพิ่ม ฟีเจอร์ด้านความสะดวก เข้าไปอีกหน่อย
มีการพูดถึง sandbox สำหรับ AI กันเยอะ แต่จริง ๆ แล้ว Claude Code, Codex, Gemini CLI มี sandbox ในตัว อยู่แล้ว
ฉันกำลังทำสิ่งคล้ายกันโดยใช้ Apple Container Framework ไม่แน่ใจว่าคุณเคยลองดูหรือยัง
แต่ยังขาด ความเข้ากันได้กับ Docker API และ ความสามารถในการประกอบใช้งานร่วมกัน ฉันสรุปประเด็นที่เกี่ยวข้องไว้ที่นี่
เดิมทีฉันจะสร้าง Shai บน Apple Container แต่ต้องล้มเลิกเพราะ ปัญหาเรื่องแพ็กเกจ
ฉันก็กำลังทำของคล้ายกัน → sandbox-codex
ยังทำอยู่ระหว่างทาง และ ความอ่านง่ายของล็อก tmux ยังไม่ค่อยดี เพราะ Docker ไม่ใช่ sandbox ที่สมบูรณ์ ฉันเลยรันบน VirtualBox