返回资讯中心
外部精选
软件工程
#开发者实时流

Devvm.dev 推出开发工具:为每个项目分配独立虚拟机沙箱

来源标题:Devvm.dev: One VM for every project

Devvm.dev 发布 devvm 工具,可为每个项目创建带完整工具链的隔离虚拟机沙箱,供开发者或编码 agent 直接使用。该工具支持 macOS 和 Linux,通过 Homebrew 或安装脚本部署,首次运行会自动识别项目所需工具链并生成 VM,再次进入同一目录时复用同一 VM。

Hacker News 最新luispa2026/11/6 · 今天19 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

为每个项目提供一个独立虚拟机

一个隔离的沙箱环境,内置项目所需的工具链,你和编码 agent 都可以直接开始写代码。

快速开始 macOSLinux

安装 devvm 及其依赖的 Lima

brew trust --formula devvmhq/tap/devvm brew install devvmhq/tap/devvm Linux 标签页里的安装脚本在 macOS 上同样可用,安装选项见 Installing 一节。

安装 devvm 及其依赖

curl -fsSL https://github.com/devvmhq/devvm/releases/latest/download/install.sh | bash 脚本在安装 Lima、QEMU 或申请 /dev/kvm 访问权限之前会先询问你。

  1. 进入你的项目 打开终端,cd 到任意项目文件夹。

  2. 运行 devvm devvm 会展示新 VM 将获得哪些配置。确认即可创建,也可以自定义。

  3. 启动你的 agent devvm 会在 VM 中打开一个 shell,提示符以 (devvm) 开头,在那里启动你的 agent 即可。 Claude Code 首次启动前需要你的 Claude 登录信息,devvm agent login claude 会在 VM 中完成登录,并将凭据保存在你的机器上(针对你的第一个 VM)。下次在同一文件夹运行 devvm 时会打开同一个 VM;devvm tools 可以为已有 VM 添加 agent。

支持的功能 工具链 devvm 会根据项目文件自动选择所需的工具链,你也可以在自定义新 VM 时额外选择,或用 --tools(工具链)指定。 nodepython编码 agent Claude Code、Codex 和 opencode 都在 VM 中运行。自定义新 VM 时可以选择其中一个,也可以在 devvm setup(编码 agent)中为所有新 VM 统一选择。

层 devvm 自带 docker、nix 和 desktop 层,在自定义新 VM 时可以选择;devvm layer new 可以创建你自己的自定义层,并应用到任意 VM(层)。

为什么使用 devvm? 开发者每天都在面对各种攻击,例如供应链攻击、密钥泄露、prompt injection 和失控的 agent。 沙箱能把攻击的影响范围限制在沙箱内部。 你知道应该在沙箱中运行代码和 agent,但大多数工具需要复杂的配置和搭建,很难做对。 devvm 自带合理的默认配置,一条命令就能在沙箱中开始写代码。

没有 devvm 时,prompt injection、密钥泄露、供应链攻击和失控的 agent 会接连侵入你的机器,每一个都会危及它触及的东西:先是项目 /web,然后是 /.aws、/.ssh,再到另一个项目 /api。有了 devvm,项目运行在 VM 中,同样的四种攻击只会到达 VM。每条通往你机器的路径都终止于 VM 的边界,因此 /.ssh、/.aws 和 /api 都不会被波及。无 devvm你的机器prompt injection密钥泄露供应链失控 agent/web/.aws/.ssh~/api有 devvm你的机器VM~/web~/.ssh~/.aws~/apiprompt injection密钥泄露供应链失控 agent××××

开箱即用,零配置 基础镜像包含可选组件,由你选择,例如 oh-my-bash、fzf、zoxide(z)、tree 和 tldr。 每个 VM 都会获得你的 git 用户名和邮箱,因此在 VM 中提交的 commit 作者是你或你的 agent。 端口自动转发,VM 中监听 :5173 的开发服务器会直接在你的机器上通过 localhost:5173 打开(端口)。 devvm code 通过 Remote-SSH 在 VS Code 中打开 VM(devvm code)。 在 VM devvm-web 中,npm run dev 已在 :5173 上就绪,你机器上的浏览器可通过 localhost:5173 访问。devvm code 通过 SSH 在你的编辑器中打开 VM。在 VM 中提交的 commit 作者是你。你的机器localhost:5173▓▓▓▓ ░░░░░░░░devvm codeSSH: devvm-web←───ports───────ssh────→devvm-web❯npm run devready on:5173❯git commitAuthor:you❯█

隔离的沙箱 VM 会以相同路径挂载你的项目文件夹。除了从 devvm 自有存储中以只读方式获取的 agent 配置外,它看不到你主目录中的任何其他内容(VM 能访问什么)。 新 VM 默认使用 allowlist 网络层级,只能通过你机器上的代理访问白名单中的主机。你也可以选择更宽松的层级(internet 或 open)或更严格的层级(none)。 在 macOS 上,devvm 会锁定 .git 的 hooks 和 config,VM 无法改变你机器上 git 执行的内容(.git 保护)。 使用 --clone 时,VM 会在仓库的克隆副本上工作,而不是你的文件夹,因此其中的任何操作都无法触碰你的工作区或 .git,只有你 fetch 时它的改动才会进入你的仓库。 没有沙箱能堵住所有漏洞,attack vectors 列出了仍然开放的入口,staying safe 列出了能堵住大部分漏洞的习惯。 在你的机器上,/.ssh、/.aws 和 ~/Documents 不会被挂载。只有项目文件夹 ~/web 会以读写方式进入 VM,其中的 .git 被锁定。VM 的网络经过你机器上的代理,代理只放行白名单允许的互联网流量。你的机器× ~/.ssh× /.aws× /Documents/webVM/webrw.gitlockedproxyallowlist

秒级就绪 第一个 VM 会构建基础镜像,之后每个 VM 都是它的副本,几秒内即可启动(镜像)。 devvm 对每个工具链版本只构建一次并以只读方式共享,所有 VM 使用同一份副本(共享工具)。 基础镜像只构建一次。每个 VM(devvm-web、devvm-api 和 devvm-cli)都是它的副本,几秒内启动。node、python、go、rust 和 claude 在它们之间以只读方式共享。base▓▓▓▓▓▓▓▓░▒devvm-web■ updevvm-api■ updevvm-cli■ upnodepythongorustclauderead-only

为编码 agent 而生 agent 在 VM 中运行,因此针对它的攻击会被限制在沙箱内。它能获得你的设置、skills 和 MCP servers,但永远拿不到你的历史记录(编码 agent)。 无论哪个网络层级,它们的密钥(例如你的 Claude Code token 和 Codex 登录信息)都留在你的机器上,因为 VM 拿到的是占位符,devvm 的代理会在请求发出时把真实凭据填入。你的 agent 的 skills 以只读方式挂载进 VM,其设置和 MCP servers 被复制进去,适用于 claude、codex 和 opencode。你的历史记录留在你的机器上。你的 token 留在你的机器上:VM 中只有占位符,代理在请求发往 API 时添加真实 token。你的机器skillssettingsMCP serverstoken─────ro────→────copy───→────copy───→historystays────×proxy↓APIVMclaudecodexopencode░░░░░░░

按你的需求定制

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →