← 文章 / 云原生与基础设施
Simon Willison 1天前 · 2026-08-20 08:38:32 · 5 阅读

使用 smolmachines / smolvm 作为不可信 Python & JavaScript 的沙箱

研究 使用 smolmachines / smolvm 沙箱运行不受信任的 Python & JavaScript — 测试 smolvm 1.8.3 后发现,它非常适合通过硬件隔离的 VM(而非共享内核的容器)来沙箱化运行不受信任的 Python 和 JavaScript 数据转换任务。离线本地镜像、无网络执行、CPU/RAM 限制、由 guest 强制执行的超时、存储配额、只读输入挂载、可写输出挂载,以及 `--unprivileged` 均按预期工作;冷启动约需 0.6–1.5 秒,热执行约需 50 毫秒。

我让运行在 Claude Code for web 中的 Claude Fable 5 完成了以下研究任务:

全面测试 https://smolmachines.com,评估它能否作为快速、安全的沙箱,用于运行不受信任的 Python 和 JavaScript 代码。代码可占用的 RAM 和 CPU 时间必须受到限制(以防出现“while true”死循环),不能访问网络,并且只能访问指定文件。

目标是能够使用它执行用户提供的任务,例如数据转换。

它很快遇到了一个问题:Claude Code for web 环境无法运行 smol machines。它写道:

  • 这个 Claude Code 容器运行的是 Linux 6.18.5-fc-v20(本身也是 Firecracker guest),配备 4 个 vCPU 和 15GB 内存。没有 /dev/kvm,也没有 vmx/svm CPU 标志,因此无法进行嵌套虚拟化。
  • smolvm machine run 按预期失败,并提示:“kvm not available”。
  • 备用方案:GitHub Actions 的 Ubuntu runner 提供 /dev/kvm,因此可在该分支上通过临时工作流运行完整的测试集,收集日志,并在最终提交中删除该工作流。

它采用了备用方案:在 GitHub Actions runner 中直接安装 smolvm,并针对该分支运行这些测试

这是 Claude Code for web 在环境限制方面给出的巧妙解法,也是 Fable 持续主动出击的又一个例证。

原始来源: Simon Willison

评论 (0)