smolmachines 作为不受信任代码的沙箱

来自 Simon Willison · 期号 2026-08-20

摘要

Simon Willison 让 Claude Fable 5 评估 smolmachines.com 能否作为运行不受信任的 Python 和 JavaScript 代码的沙箱。Claude Code for web 环境没有 KVM 支持,agent 自动切换到备用方案:通过 GitHub Actions 运行测试(该环境暴露了 /dev/kvm)。 这是 Fable 主动解决问题的又一个例子。

深读

导读 Simon Willison 让 Claude Fable 5 评估 smolvm 能否作为沙箱来运行不受信任的 Python 和 JavaScript 代码。结果展示了 smolvm 在硬件隔离、资源限制等方面的成熟度,也意外暴露了 Claude Code for web 环境的嵌套虚拟化限制,以及 Fable 主动寻找替代方案的典型行为。 关键信息 - smolvm 1.8.3 使用硬件隔离的虚拟机(而非共享内核的容器)来沙箱化代码执行,冷启动约 0.6–1.5 秒,热执行约 50 毫秒。 - 测试验证的功能包括:离线本地镜像、无网络执行、CPU/RAM 限制、访客端强制的超时、存储配额、只读输入挂载、可写输出挂载,以及 --unprivileged 模式。 - Claude Code for web 环境本身是 Firecracker 虚拟机(Linux 6.18.5-fc-v20,4 vCPU,15GB RAM),没有 /dev/kvm 和 vmx/svm CPU 标志,无法运行嵌套虚拟化。 - Fable 自动切换到备用方案:利用 GitHub Actions 的 Ubuntu runner(暴露了 /dev/kvm)来执行测试。 逐节讲解 研究任务与 smolvm 的能力 Willison 给 Claude Fable 5 布置了一个研究任务:评估 smolmachines.com 能否作为快速安全的沙箱,用来运行用户提交的 Python 和 JavaScript 代码。核心要求是限制 CPU 时间和内存(防止 while true 死循环)、禁止网络访问、文件系统只能访问指定文件。smolvm 1.8.3 在测试中表现良好,上述所有功能都按预期工作,冷启动时间在 0.6 到 1.5 秒之间,热执行约 50 毫秒。 环境限制与 Fable 的主动应对 Fable 很快发现 Claude Code for web 环境无法运行 smolvm。它自己记录道:这个容器是 Linux 6.18.5-fc-v20(本身就是一个 Firecracker 虚拟机),没有 /dev/kvm,也没有 vmx/svm CPU 标志,因此无法进行嵌套虚拟化。smolvm machine run 按预期失败,报错 "kvm not available"。 Fable 没有就此放弃,而是自动切换到 Plan B:GitHub Actions 的 Ubuntu runner 暴露了 /dev/kvm,因此它直接在该 runner 上安装 smolvm 并运行了完整的测试套件。Willison 将此评价为 Fable 主动解决问题的又一个例子。 值得注意 - 原文没有展开 smolvm 的具体架构或与 Docker 等容器方案的对比,只给出了功能清单和性能数据。 - 嵌…

读原文

本站只做摘要与索引,全部内容版权归原作者所有。