- “Bash for Agents” ที่สร้างโดย Vercel
- สภาพแวดล้อม Bash เสมือนที่พัฒนาด้วย TypeScript ซึ่งออกแบบมาสำหรับ AI เอเจนต์ที่ต้องการสภาพแวดล้อม bash ที่ปลอดภัยและมีการแซนด์บ็อกซ์
- ทำงานบน ระบบไฟล์เสมือนในหน่วยความจำ (InMemoryFs) และเป็น สภาพแวดล้อมการรันแบบแซนด์บ็อกซ์ ที่ไม่สามารถเข้าถึงดิสก์จริงได้
- โดยค่าเริ่มต้น จะบล็อกการเข้าถึงเครือข่าย และหากจำเป็น รองรับ คำขอเครือข่ายอย่างปลอดภัยตาม URL ที่อนุญาตผ่าน
curl
- เข้าถึงได้เฉพาะระบบไฟล์ที่ให้มาเท่านั้น และมีฟังก์ชัน ป้องกันลูปไม่สิ้นสุดและการรันแบบเรียกซ้ำ
- ไม่รองรับการรันไบนารีหรือ WASM
- เมื่อ ใช้งาน API จะมีการแยกกันในระดับ
exec() ทำให้ตัวแปรสภาพแวดล้อม ฟังก์ชัน หรือไดเรกทอรีทำงานจะไม่ถูกคงไว้ระหว่างแต่ละการเรียกใช้ (มีเพียงสถานะของระบบไฟล์เท่านั้นที่คงอยู่)
- ตั้งค่ารายละเอียดได้ผ่าน อาร์กิวเมนต์ตอนสร้าง เช่น ไฟล์เริ่มต้น ตัวแปรสภาพแวดล้อม ไดเรกทอรีทำงาน ข้อจำกัดการรัน ฯลฯ
- รองรับ Lazy file loading ทำให้สามารถสร้างเนื้อหาไฟล์เมื่อจำเป็นด้วยฟังก์ชันแบบ synchronous/asynchronous
- มีความสามารถ คำสั่งกำหนดเอง (defineCommand) ที่ช่วยเพิ่มคำสั่งคัสตอมบน TypeScript ได้
- ผ่าน
CommandContext สามารถเข้าถึง fs, cwd, env, stdin, exec ได้
- มี implementation ของระบบไฟล์ให้ 4 แบบ
- InMemoryFs: ทำงานบนหน่วยความจำล้วน
- OverlayFs: อ่านจากดิสก์ เขียนลงหน่วยความจำ
- ReadWriteFs: อ่านและเขียนดิสก์จริงได้
- MountableFs: เมานต์หลายระบบไฟล์ตามพาธเพื่อสร้าง namespace แบบรวม
- รองรับ
bash-tool เป็น เครื่องมือเชื่อมต่อกับ AI SDK
- ออกแบบให้ใช้ร่วมกับ
generateText() เพื่อให้ โมเดล AI รันคำสั่ง Bash ได้อย่างปลอดภัย
- มี API ที่เข้ากันได้กับ Vercel Sandbox
- ใช้งานผ่านคลาส
Sandbox ได้ด้วย อินเทอร์เฟซเดียวกับ @vercel/sandbox
- หากจำเป็น สามารถเปลี่ยนไปใช้แซนด์บ็อกซ์จริงที่อิง VM ได้ง่าย
- มี CLI เป็นคำสั่ง
just-bash
- รันบนพื้นฐาน OverlayFS และหลังรันเสร็จ การเขียนทั้งหมดจะถูกทิ้งในหน่วยความจำ
- รองรับ การแสดงผลลัพธ์แบบโปรแกรมผ่านตัวเลือก
--json
- มี โหมดเชลล์แบบโต้ตอบ (
pnpm shell)
- โดยค่าเริ่มต้นอนุญาตการเข้าถึงอินเทอร์เน็ต และสามารถปิดได้ด้วย
--no-network
- คำสั่งที่รองรับ
- ครอบคลุม คำสั่ง Bash มาตรฐานส่วนใหญ่ เช่น การจัดการไฟล์ การประมวลผลข้อความ การประมวลผลข้อมูล การบีบอัด และเครือข่าย
- รองรับคำสั่งประมวลผลข้อมูลเพิ่มเติมแบบเลือกใช้ เช่น
jq, sqlite3, python3 (อิง Pyodide)
- ในส่วนของ ฟีเจอร์เชลล์ ได้ implement ไวยากรณ์ Bash ส่วนใหญ่ เช่น pipe, redirection, เงื่อนไข, ลูป, ฟังก์ชัน, ตัวแปร, glob pattern เป็นต้น
- โครงสร้างไดเรกทอรีเริ่มต้น มี
/home/user, /bin, /usr/bin, /tmp เป็นต้น ให้ สภาพแวดล้อมคล้าย Unix
- การควบคุมการเข้าถึงเครือข่าย ใช้วิธี whitelist ตาม URL และ HTTP method
- สามารถอนุญาตทั้งหมดได้ด้วยตัวเลือก
dangerouslyAllowFullInternetAccess
- การรองรับ Python และ SQLite เปิดใช้งานแบบเลือกได้
- ใช้ Python บน Pyodide และ SQLite บน WASM (sql.js) เพื่อ รับประกันการรันแบบแซนด์บ็อกซ์อย่างสมบูรณ์
- มี ฟีเจอร์ป้องกันระหว่างการรัน ที่ตั้งขีดจำกัดได้ เช่น ความลึกของฟังก์ชัน จำนวนคำสั่ง จำนวนรอบของลูป ฯลฯ
- ไลเซนส์ Apache-2.0
ยังไม่มีความคิดเห็น