• “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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น