2026年7月14日 2 分钟阅读

Clawk 实战:给 AI 编码 Agent 一台专属的 Linux 虚拟机,隔离你的开发环境

tinyash 0 条评论

你的 Claude Code 或 Codex 正在运行——它在安装包、启动服务器、执行未信任的构建脚本。你面临两个选择:每几秒审批一次命令(然后抱怨效率太低),或者加上 --dangerously-skip-permissions 祈祷不会出事。

Clawk(198 pts / 360⭐ / Apache-2.0)给出了第三个选项:给你的代码仓库配一台独立的一次性 Linux 虚拟机,让 Agent 在里面自由操作,而你的文件、密钥链和整个宿主机完全不受影响。本文将带你从安装到实战,完整体验这个用 Go 编写的 Agent 沙箱工具。

为什么需要一台 VM?

安全提示(--dangerously-skip-permissions)的本质是用文字规则约束 Agent——它们可以绕过,而且一旦放过就会造成真正的破坏。容器虽然提供了文件系统隔离,但仍然共享宿主机的内核,一个 mount 配置失误就可能暴露整个主机。

Clawk 的做法完全不同:

  • 独立内核:Guest 运行自己的 Linux 内核,宿主机的文件系统从未被挂载过,不存在”隐藏得不够好”的问题
  • Guest 内 root 权限:Agent 可以安装系统包、编辑 /etc、加载内核模块、绑定特权端口——它拥有整台机器的控制权
  • 一次性生命周期clawk destroy && clawk 一秒钟恢复干净环境,仓库和历史对话完好无损
  • 网络白名单机制:出站流量默认全部拒绝,只有白名单内的域名可以访问,且过滤在 Guest 之下的用户空间执行——Guest 内的 root 也无法绕过

结果是:Agent 可以在 --dangerously-skip-permissions 模式下全速工作,但造成的任何破坏都局限在一台可以随手销毁的 VM 内。

安装 Clawk

macOS(Apple Silicon)

brew install clawkwork/tap/clawk

安装完成后没有额外的宿主机依赖:不需要 Docker、不需要 QEMU、不需要 sudo。Hypervisor 是 Apple 的 Virtualization.framework,直接链接在二进制中。

从源码安装

需要 Go 1.26+:

git clone https://github.com/clawkwork/clawk
cd clawk
make install

首个运行:第一次启动会检测缺失的组件并提供修复。

卸载

clawk destroy
rm -rf ~/.clawk
brew uninstall clawk

没有留下任何 launchd 任务或系统级残留。

实战场景:给项目配一台沙箱

一、快速启动

进入你的仓库目录,一条命令启动沙箱并挂载 Claude Code:

cd ~/code/my-project
clawk

这行命令做了几件事:

  1. 拉取默认的 OCI 镜像并构建根文件系统(首次需拉取镜像,后续秒级启动)
  2. 启动一个独立的 Linux VM
  3. 将当前目录通过 virtio-fs 实时挂载到 Guest
  4. 在 Guest 内启动 Claude Code,自动传入 --dangerously-skip-permissions 标志

二、日常操作命令

clawk run shell            # 进入同一个沙箱的 shell
clawk run codex            # 在同一沙箱中运行 Codex
clawk down                 # 停止 VM(仓库和 Agent 状态持久化)
clawk attach               # 重新连接——如果 VM 已停止会自动启动
clawk destroy              # 删除 VM 磁盘(历史对话保留在宿主机)

三、多仓库工单模式

当工单跨多个仓库时,创建一个包含所有子仓库的沙箱:

cd ~/code/my-workspace
clawk work PROJ-123       # 每个子仓库创建一个 git worktree
clawk pr PROJ-123         # 推送分支并打开跨仓库 PR

四、配置 clawk.mod

不需要配置文件也能工作,但需要自定义时,只需在项目根目录创建 clawk.mod

sandbox my-project (
    vm (
        cpu    4
        memory 8GiB
        image  golang:1.25
    )
    network ( allow api.example.com )
    forwards ( 3000 )
    env ( DATABASE_URL )
    on create ( "go mod download" )
    agent (
        instructions "Ask before running destructive commands."
    )
)

配置块是模板——创建时快照,运行时不会意外变化。

安全体系全解析

VM 边界

层面Clawk 的做法相比容器的优势
内核独立 Linux 内核内核漏洞不影响宿主机
文件系统virtio-fs 只挂载指定目录密钥链和 SSH 密钥从不可见
网络用户空间 TCP/IP 栈 + DNS 白名单Guest 内 root 无法绕过

网络白名单

默认拒绝所有出站流量。npm、PyPI、crates.io、GitHub、Anthropic 等常用注册表已预置在白名单中。

clawk network allow my-project api.stripe.com *.internal.mycorp.com

clawk network denials my-project

clawk forward add my-project 3000

网络过滤在 VM daemon 进程内部执行(基于 gvisor-tap-vsock),Guest 内的 root 无法修改这些规则。

持久化规则

数据clawk downclawk destroy
仓库代码(worktree)✅ 保留✅ 保留
Agent 对话历史✅ 保留✅ 保留
VM 磁盘(安装的包、缓存)❌ 磁盘重建❌ 完全删除

Agent 的状态(~/.claude/projects/~/.claude/memory/~/.codex/)通过宿主机挂载持久化,即使 destroy 后重建也能通过 --resume 恢复对话。

真实场景:破解你的第一个沙箱

试试在一个 Clawk 沙箱中运行潜在危险操作:

$ curl https://tracker.evil.example
curl: (7) Failed to connect to tracker.evil.example port 443 after 2 ms: Connection refused

$ cat ~/.ssh/id_rsa
cat: /home/agent/.ssh/id_rsa: No such file or directory

$ sudo rm -rf / --no-preserve-root

$ git push   # SSH agent 转发使推送正常工作
Enumerating objects: 5, done.

对比其他方案

  • Docker / Devcontainer:共享宿主机内核,挂载 Docker socket 即可控制整个宿主机 daemon。Clawk 独立内核 + 无 daemon socket。
  • OS 级 Agent 沙箱(如 Anthropic sandbox-runtime):进程级限制,策略配置错误可直接暴露密钥链。Clawk 的 VM 边界更坚固。
  • 通用 VM 管理器(如 Lima):给你一个 Linux VM,但不提供 Agent 集成、网络白名单、会话持久化、工单管理等工作流。Clawk 在这些之上的工作流是它真正的差异化。
  • 云端沙箱:代码离开宿主机,按小时计费。Clawk 完全本地,无计费,编辑器里的 worktree 就是 Agent 在编辑的目录。

总结

Clawk 解决了一个真实的两难困境:让 AI 编码 Agent 高效工作 vs 保护宿主机安全。它的核心思路是把信任从代码和提示词层面转移到虚拟化边界——不是”Agent 应该怎么做”,而是”Agent 能做什么有物理限制”。

对于日常使用 Claude Code、Codex 或 OpenCode 的开发者,Clawk 提供了一个一旦用上就很难回去的体验:Agent 全速运行,而你不用担心 rm -rf /、API 密钥泄露或恶意包安装。加上 Apache-2.0 许可证和 360+ GitHub Stars,项目成熟度和社区活跃度都值得信赖。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。