Rhai 沙箱脚本 — agent 自己写脚本、跑脚本
Rhai 是什么
Rhai 是 Rust 写的嵌入式脚本语言——语法类 JavaScript,但默认没有文件系统、网络、标准库权限,是一个安全的沙箱环境。
在 ZeroAI 里的用法
ZeroAI README 里提到的 eval_script 工具就是 Rhai 沙箱:
agent writes and runs scripts during its own reasoning
意思是——智能体在推理过程中发现"这个任务需要写个脚本来处理",它会:
- 自己写一段 Rhai 脚本
- 请求执行权限
- 在沙箱里运行
- 拿到结果继续后续步骤
24 项安全开关
这是 ZeroAI 安全模型最精细的部分。沙箱里的每个能力都是一个独立开关:
| 类别 | 能力 |
|---|---|
| 文件系统 | 读文件、写文件、创建目录、删除文件 |
| 网络 | HTTP 请求、WebSocket |
| 进程 | 启动子进程、杀死子进程 |
| 系统 | 读取环境变量、执行 shell 命令 |
| 其他 | 生成随机数、时间获取、数学库 |
默认只开最基础的(数学、时间、随机数),其他全部关掉。你手动开哪些,agent 才能用哪些。
什么时候需要开更多
- 文件操作——让 agent 处理本地数据文件(CSV 清洗、JSON 转换)
- 网络请求——让脚本直接发 HTTP(代替 HTTP 工具,灵活度更高)
- 进程启动——让 agent 调用你手机上的其他应用(实验性功能)
为什么不直接让 agent 跑 shell
ZeroAI 选择 Rhai 而不是 shell,核心原因就是安全:
- shell 命令无法做细粒度权限控制(
rm -rf /就是rm -rf /) - Rhai 沙箱里每个能力都是独立开关——想让它读文件但不许写,一个开关就搞定
- Agent 自己写的脚本在受控环境里跑,不会意外伤到手机
ClawBoy 彩蛋
Rhai 沙箱里有一个彩蛋——ClawBoy,一个 AI 自己玩的 Game Boy 模拟器。在 Terminal 里说一句 play pokemon,就能在 Hub 查看器里看它实时操作。
资料来源:GitHub ZeroAI README、Rhai 官方文档