Wiggle 是一个运行代码的沙盒
概览
这是Claude(claude.ai)运行代码的沙盒工作副本。 当 Claude 执行命令、读取文件、转换文档或截图时,它并不是在 Web 服务器上运行。它运行在一个小型虚拟机中,每个对话都运行一个。这个仓库就是那台机器:相同的文件、工具、包和指令,打包后你可以自己在 Docker、e2b、Modal 或任何 Linux 主机上运行。 代号Wiggle是Anthropic内部对这个虚拟机的称呼。 想要精确的字节而不是重建?GitHub 版本包含了一次实时会话的完整文件系统(8.9 GB,经过净化): 完整下载和验证步骤请参见 ROOTFS.md。 - Claude 决定运行某项任务,并通过私有通道将命令发送到虚拟机内的主管进程。- 监督程序在固定环境(参见 meta/env-contract.md)启动命令,并将输出流回。- 命令以 root 身份运行,无 seccomp 和用户沙箱。
概述(AI 翻译)
这是Claude(claude.ai)运行代码的沙盒工作副本。
当 Claude 执行命令、读取文件、转换文档或执行 截图,它不是运行在一个小型服务器上。它运行在一个小型服务器里 虚拟机,每个对话一个。这个仓库就是那台机器:the 相同的文件、工具、包和指令,打包好后你可以运行 你自己在Docker、端对端、Modal或任何Linux主机上。
代号wiggle是Anthropic内部对这个虚拟机的称呼。
快速开始
想要完全相同的字节而不是重建?这个 GitHub 发布 承载一个实时会话的完整文件系统(8.9 GB,已净化):
完整下载和验证步骤请参见 ROOTFS.md。
它是如何运作的
- Claude 决定运行某项任务,并将命令发送给一名私人 通道连接到虚拟机内部的监督进程。
- 监督者在固定环境下启动命令(参见 meta/env-contract.md)并将输出流回。
- 命令以root方式运行,没有seccomp和用户沙箱。在此内部 虚拟机,根节点是正常的。关键的隔离性在于虚拟机边界本身。
- 用户文件以挂载文件夹的形式出现在
/mnt/user-data下。生产环境
本页由 AI 翻译,技术细节请以原文为准。
README
以下为原文 README 节选,完整内容请查看原文。
Wiggle
A working copy of the sandbox that Claude (claude.ai) runs code in.
When Claude executes a command, reads a file, converts a document, or takes a screenshot, it is not running on a web server. It is running inside a small virtual machine, one per conversation. This repository is that machine: the same files, tools, packages, and instructions, packaged so you can run it yourself on Docker, e2b, Modal, or any Linux host.
Codename wiggle is what Anthropic calls this VM internally.
Quick start
docker build -t wiggle .
docker run -it wiggle bash
# inside:
soffice --version # LibreOffice 24.2
python3 -c "import pandas" # full data science stack
ls /mnt/skills # the 40 playbooks Claude follows
Want the exact bytes instead of a rebuild? The GitHub release carries the full filesystem of a live session (8.9 GB, sanitized):
cat wiggle-part-aa wiggle-part-ab > wiggle.tar.zst
zstd -d -c wiggle.tar.zst | docker import - wiggle:live
See ROOTFS.md for the full download and verification steps.
How it works
- Claude decides to run something and sends the command over a private channel to a supervisor process inside the VM.
- The supervisor starts the command with a fixed environment (see meta/env-contract.md) and streams the output back.
- The command runs as root with no seccomp and no user sandbox. Inside this VM, root is normal. The isolation that matters is the VM boundary itself.
- User files arrive as mounted folders under
/mnt/user-data. In production those are remote storage; here they are plain directories.
Machine spec to match if you care about parity: 1 vCPU, 3.9 GiB RAM, no swap. Details in meta/box-spec.md.
What is inside
| Capability | What gives you that |
|---|---|
| Documents (docx, xlsx, pptx, pdf) | LibreOffice 24.2, pandoc, python-docx, openpyxl |
| OCR (make scans searchable) | tesseract 5 with English models, byte-identical to the public Google release |
| File-type detection | magika (Google model, public build) |
| Web automation and screenshots | Playwright 1.56 with a pinned Chromium at /opt/pw-browsers, plus puppeteer with Chrome-headless-shell |
| Diagrams and charts | mermaid-cli, matplotlib, graphviz |
| Numbers and data | pandas, numpy, scipy, scikit-learn, Jupyter |
| Typesetting and PDFs | TeX Live 2023, poppler, qpdf, ImageMagick, wkhtmltopdf |
| Media | ffmpeg |
| The playbooks Claude follows | mnt-skills/, 40 skills, verbatim |
The skills are the interesting part. They are plain Markdown instruction files that Claude reads before doing certain jobs: how to fill a PDF form, how to run deep research (including the sub-agent prompts), how to drive the desktop with computer use, how to build a skill. Public ones cover office documents and file reading; example ones cover deep-research, morning
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add razshy/wiggle