sandbox

沙箱执行提供了额外的安全隔离层,防止命令影响主系统。

设计理念

即使通过了权限检查,某些命令仍然可能:

  • 产生意外副作用

  • 消耗过多资源

  • 影响系统稳定性

沙箱执行提供隔离环境。

实现方式

Docker 容器

async function executeSandboxed(
  command: string,
  cwd: string
): Promise<ExecResult> {
  const sandboxCommand = `
    docker run --rm \
      -v ${cwd}:/workspace:ro \
      -w /workspace \
      --network none \
      --memory 512m \
      --cpus 1 \
      alpine:latest \
      sh -c "${escapeCommand(command)}"
  `;
  
  return executeCommand(sandboxCommand);
}

限制:

  • 只读文件系统

  • 无网络访问

  • 内存限制 512MB

  • CPU 限制 1 核

VM 隔离

触发条件

自动沙箱

某些命令自动在沙箱中执行:

用户选择

资源限制

时间限制

内存限制

CPU 限制

文件系统隔离

只读挂载

写时复制

网络隔离

禁用网络

白名单主机

性能影响

开销

  • Docker 启动: ~500ms

  • 文件挂载: ~100ms

  • 命令执行: 正常时间

  • 总开销: ~600ms

优化

配置选项

用户配置

下一步