smolvm 被测试为不可信代码沙箱

Simon Willison··作者 Simon Willison

关键信息

最初的 Claude Code for web 环境无法运行 smolmachines,因为它没有 /dev/kvm,也没有 vmx/svm CPU 标志,因此不支持嵌套虚拟化。解决办法是改用暴露了 /dev/kvm 的 GitHub Actions ubuntu runner,在那里安装 smolvm 并直接运行测试套件。

资讯摘要

Simon Willison 的这篇研究笔记探讨了 smolmachines 和 smolvm 是否可以作为一个快速且安全的沙箱,用来运行不可信的 Python 和 JavaScript。为此,他让运行在 Claude Code for web 中的 Claude Fable 5 研究:如何支持用户提供的数据转换任务,同时限制 CPU 和内存占用、阻止无限循环、禁止网络访问,并且只允许访问指定文件。智能体很快发现,Claude Code for web 本身无法运行 smolmachines,因为该容器没有 /dev/kvm,而且也没有 vmx/svm CPU 标志,因此无法使用嵌套虚拟化。笔记还记录到,`smolvm machine run` 也按预期失败,并报出“kvm not available”。

没有就此停止,而是提出了 Plan B:利用暴露了 /dev/kvm 的 GitHub Actions ubuntu runner,在分支上创建一个临时工作流来执行真实测试。该工作流在 runner 中安装 smolvm,并直接运行仓库中的测试脚本,最后可以在最终提交中删除该工作流。Willison 把这种做法称为对环境限制的一种创造性应对,也再次体现了 Fable“积极主动到近乎执着”的特点。

资讯正文

研究:<a href="https://github.com/simonw/research/tree/main/smolmachines-untrusted-sandbox#readme">将 smolmachines / smolvm 作为不受信任的 Python 和 JavaScript 的沙箱</a>

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

<code>把 https://smolmachines.com 全面测试一遍,看看它作为一个快速且安全的沙箱能做到什么程度。探索要使用它来运行不受信任的 Python 和 JavaScript 代码,需要做到哪些事情,要求它只能占用受限的 RAM 和 CPU 时间(防止“while true”),不能访问网络,并且只能访问被指定的文件。</code>

<code>目标是能够用它来执行用户提供的任务,例如数据转换。</code>

它很快就遇到了一个问题:Claude Code for web 环境无法运行 <a href="https://smolmachines.com">smol machines</a>。引用它写下的<a href="https://github.com/simonw/research/blob/5e6861e54441472d194de96b49b901fd99ebc153/smolmachines-untrusted-sandbox/notes.md#environment-check">说明</a>:

<blockquote>

<ul>

<li>这个 Claude Code 容器:Linux 6.18.5-fc-v20(本身就是一个 Firecracker guest),4 vCPU,15GB RAM。<strong>没有 /dev/kvm,也没有 vmx/svm CPU 标志</strong> → 不支持嵌套虚拟化。</li>

<li><code>smolvm machine run</code> 按预期失败:“kvm not available”。</li>

<li>备用方案 B:GitHub Actions 的 ubuntu runner 确实提供了 /dev/kvm → 在这个分支上通过一个临时工作流运行真正的测试套件,收集日志,并在最终提交中删除该工作流。</li>

</ul>

</blockquote>

而备用方案 B 正是<a href="https://github.com/simonw/research/blob/5e6861e54441472d194de96b49b901fd99ebc153/.github/workflows/smolvm-sandbox-test.yml">它所做的</a>:安装 smolvm,并在 GitHub Actions runner 中直接针对该分支运行<a href="https://github.com/simonw/research/blob/5e6861e54441472d194de96b49b901fd99ebc153/smolmachines-untrusted-sandbox/run-tests.sh">这些测试</a>。

这是一种针对 Claude Code for web 所施加环境限制的创造性解决方案。又一个体现 Fable <a href="https://simonwillison.net/2026/Jun/11/fable-is-relentlessly-proactive/">不遗余力地主动推进</a>的例子。

来源与参考

  1. 原始链接
  2. Research: smolmachines / smolvm as a sandbox for untrusted Python & JavaScript

收录于 2026-08-21