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