Docs/ AI 助手/ AI 沙箱

AI 沙箱

一个功能完整的 Alpine Linux 容器,让 AI 助手能够直接访问您的应用环境进行调试、测试和分析。

什么是 AI 沙箱

AI 沙箱是一个与您的应用并行运行的专用 Alpine Linux 容器。它共享应用的网络命名空间,意味着它可以通过 localhost 访问您的应用,并且可以访问应用挂载的卷。这给了 AI 助手一个真实的工作环境——不是模拟。

在沙箱中,AI 可以安装包、克隆仓库、构建和运行应用、检查文件、测试网络连通性和执行任意命令。这就是一个只读日志猜测的 AI 和一个可以实际探测您运行服务的 AI 之间的区别。

启用沙箱

沙箱默认禁用。要启用它,请在控制台的应用 Settings 页面中切换 AI Sandbox 开关。或者使用 API:

Terminal
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 但从未使用沙箱工具,则不会创建容器。

容器规格

每个沙箱容器按以下规格配置:

属性值
ImageAlpine 3.19
Userroot
RAM1 GB
CPU2 核
Network与应用共享(容器网络模式)
Volumes应用卷已挂载(可写)
Command timeout5 分钟
Output limit100 KB
Pre-installed toolscurl, wget, dig, nc, jq, git, node, npm, python3, pip, bash

AI 能做什么

通过沙箱访问,AI 助手可以进行实际的调试和分析:

调试应用端点

由于沙箱共享应用的网络,AI 可以直接调用您的应用:

Sandbox
curl localhost:3000/health
curl -v localhost:8080/api/users | jq .

分析源代码和依赖

克隆仓库,安装依赖,检查项目:

Sandbox
git clone https://github.com/user/app.git /tmp/app
cd /tmp/app && npm install
npm audit

测试连通性

验证服务之间可以相互通信:

Sandbox
nc -zv db 5432
dig redis.internal
curl -s http://api:8000/healthz

检查文件和日志

读取已挂载卷中的配置文件、环境文件和日志输出:

Sandbox
cat /app/config/production.json
ls -la /app/logs/
tail -100 /app/logs/error.log

运行代码和测试修复

执行脚本并在应用到实际应用之前验证修复:

Sandbox
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_execMedium在沙箱容器中执行命令curl localhost:3000/health
sandbox_read_fileLow从沙箱文件系统读取文件/app/config.json
sandbox_write_fileHigh向沙箱文件系统写入文件/tmp/test-script.sh
sandbox_statusLow检查沙箱是否正在运行且健康--
sandbox_resetMedium销毁并重新创建沙箱容器--

生命周期

沙箱容器遵循其父应用的生命周期:

  • 创建:在第一个沙箱工具被调用时按需创建。创建是非阻塞的,在部署后异步进行。
  • 启动:当父应用启动时自动启动。只要应用在运行,沙箱就保持运行。
  • 停止:当父应用停止时。沙箱容器随之停止。
  • 销毁:当父应用被删除时。沙箱容器及其所有数据被永久移除。

沙箱没有重启策略。如果崩溃,它将保持停止状态,直到下一次沙箱工具调用触发重新创建。

命令验证

沙箱应用最小黑名单以防止灾难性操作。以下命令会被拒绝:

  • rm -rf /——文件系统销毁
  • mkfs——磁盘格式化
  • shutdown / reboot——主机级操作
  • Fork 炸弹(例如 :() 模式)

其他一切都是允许的。沙箱有意保持宽松,因为其目的是给 AI 与人类开发者调试时相同的能力。容器本身就是安全边界,而非命令过滤器。

安全模型

沙箱的安全模型依赖于容器隔离而非命令过滤:

  • 隔离文件系统:沙箱有自己的根文件系统。只有明确挂载的卷与应用共享。
  • 资源限制:内存 (1 GB) 和 CPU (2 核) 的硬性上限防止主机资源耗尽。
  • 可丢弃:容器可以随时销毁和重新创建,不会影响应用。
  • 无重启策略:崩溃的沙箱不会自动重启,防止无限崩溃循环。
  • 命令超时:每个命令有 5 分钟超时,防止失控进程。
  • 输出上限:命令输出在 100 KB 时截断,防止 MCP 传输中的内存耗尽。
Warning
沙箱对您应用的卷有写入权限。虽然这对 AI 正确调试和测试是必要的,但请注意 AI 可以修改已挂载卷中的文件。