AI 沙箱
一个功能完整的 Alpine Linux 容器,让 AI 助手能够直接访问您的应用环境进行调试、测试和分析。
什么是 AI 沙箱
AI 沙箱是一个与您的应用并行运行的专用 Alpine Linux 容器。它共享应用的网络命名空间,意味着它可以通过 localhost 访问您的应用,并且可以访问应用挂载的卷。这给了 AI 助手一个真实的工作环境——不是模拟。
在沙箱中,AI 可以安装包、克隆仓库、构建和运行应用、检查文件、测试网络连通性和执行任意命令。这就是一个只读日志猜测的 AI 和一个可以实际探测您运行服务的 AI 之间的区别。
启用沙箱
沙箱默认禁用。要启用它,请在控制台的应用 Settings 页面中切换 AI Sandbox 开关。或者使用 API:
curl -X PATCH https://your-server:9000/api/v1/apps/:id \
-H "Authorization: Bearer $SH0_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sandbox_enabled": true}' Tip
沙箱在第一个沙箱工具被调用时按需创建。如果您切换了
sandbox_enabled 但从未使用沙箱工具,则不会创建容器。容器规格
每个沙箱容器按以下规格配置:
| 属性 | 值 |
|---|---|
| Image | Alpine 3.19 |
| User | root |
| RAM | 1 GB |
| CPU | 2 核 |
| Network | 与应用共享(容器网络模式) |
| Volumes | 应用卷已挂载(可写) |
| Command timeout | 5 分钟 |
| Output limit | 100 KB |
| Pre-installed tools | curl, wget, dig, nc, jq, git, node, npm, python3, pip, bash |
AI 能做什么
通过沙箱访问,AI 助手可以进行实际的调试和分析:
调试应用端点
由于沙箱共享应用的网络,AI 可以直接调用您的应用:
curl localhost:3000/health
curl -v localhost:8080/api/users | jq .分析源代码和依赖
克隆仓库,安装依赖,检查项目:
git clone https://github.com/user/app.git /tmp/app
cd /tmp/app && npm install
npm audit测试连通性
验证服务之间可以相互通信:
nc -zv db 5432
dig redis.internal
curl -s http://api:8000/healthz检查文件和日志
读取已挂载卷中的配置文件、环境文件和日志输出:
cat /app/config/production.json
ls -la /app/logs/
tail -100 /app/logs/error.log运行代码和测试修复
执行脚本并在应用到实际应用之前验证修复:
python3 -c "import json; print(json.loads(open('/app/config.json').read()))"
node -e "const db = require('./db'); db.ping().then(console.log)"沙箱工具
AI 通过五个专用 MCP 工具与沙箱交互:
| 工具 | 风险 | 描述 | 示例 |
|---|---|---|---|
sandbox_exec | Medium | 在沙箱容器中执行命令 | curl localhost:3000/health |
sandbox_read_file | Low | 从沙箱文件系统读取文件 | /app/config.json |
sandbox_write_file | High | 向沙箱文件系统写入文件 | /tmp/test-script.sh |
sandbox_status | Low | 检查沙箱是否正在运行且健康 | -- |
sandbox_reset | Medium | 销毁并重新创建沙箱容器 | -- |
生命周期
沙箱容器遵循其父应用的生命周期:
- 创建:在第一个沙箱工具被调用时按需创建。创建是非阻塞的,在部署后异步进行。
- 启动:当父应用启动时自动启动。只要应用在运行,沙箱就保持运行。
- 停止:当父应用停止时。沙箱容器随之停止。
- 销毁:当父应用被删除时。沙箱容器及其所有数据被永久移除。
沙箱没有重启策略。如果崩溃,它将保持停止状态,直到下一次沙箱工具调用触发重新创建。
命令验证
沙箱应用最小黑名单以防止灾难性操作。以下命令会被拒绝:
rm -rf /——文件系统销毁mkfs——磁盘格式化shutdown/reboot——主机级操作- Fork 炸弹(例如
:()模式)
其他一切都是允许的。沙箱有意保持宽松,因为其目的是给 AI 与人类开发者调试时相同的能力。容器本身就是安全边界,而非命令过滤器。
安全模型
沙箱的安全模型依赖于容器隔离而非命令过滤:
- 隔离文件系统:沙箱有自己的根文件系统。只有明确挂载的卷与应用共享。
- 资源限制:内存 (1 GB) 和 CPU (2 核) 的硬性上限防止主机资源耗尽。
- 可丢弃:容器可以随时销毁和重新创建,不会影响应用。
- 无重启策略:崩溃的沙箱不会自动重启,防止无限崩溃循环。
- 命令超时:每个命令有 5 分钟超时,防止失控进程。
- 输出上限:命令输出在 100 KB 时截断,防止 MCP 传输中的内存耗尽。
Warning
沙箱对您应用的卷有写入权限。虽然这对 AI 正确调试和测试是必要的,但请注意 AI 可以修改已挂载卷中的文件。