你大概也撞见过这三件事:同事坚持用 Codespaces 当 agent 的窝,宿主机上连 node 都不让 agent 摸;有人写了个小脚本,每次跑 Claude Code 前先起一个 Docker 容器,跑完连根删掉;还有个家伙干脆装 Multipass,给 Cursor 开一台 Ubuntu,用完就 destroy。三件事散在三个工位里,单看都像个人洁癖。
coop 把这套动作做成了正式命令:起一台 Firecracker 虚拟机,把 Claude Code 或 Codex 扔进去,让它自己在里面 Docker、git、编译、装包随便折腾,弄完这台机器说扔就扔了。这仓库只有 84 颗星,小到几乎没人正眼瞧,可它把一块空地拍到了明面上。
我把它叫做:放风。
日常话讲,就是把它放出去透个气,但它出不了那堵墙。这事到今天满大街都是,偏偏没名字。你说“隔离”,对方以为你要聊安全沙箱;你说“容器”,下一句就是“那跟跑服务有啥区别”;你说“虚拟机”,话题直接拐去基建成本。没有名字的东西,连讨论的起点都踩不稳。
放风跟这些不是一回事。隔离、容器、虚拟机,说的是技术手段;放风说的是人和 agent 之间的那层边界——我给你一块地,你随便跑,但这块地本身是一次性的、可扔的,用完就没了。重点不在“挡”,在“能扔”。一台跑完就删的 VM,创建销毁便宜到不心疼,它才是放风的完整形态。coop 的架构就是盯准这点:每台 VM 相互独立、可复现,创建和销毁过程廉价——把“能扔”做成了默认。
这块地,是我之前吹过的“托管式 agent”的另一层。托管管的是人什么时候介入签收;放风管的是活跑在哪。写到这儿我得自己打断一下:别把放风和托管当成两个可以平起平坐的词。托管是工作流,放风是执行场。你可以在宿主机的 Userland 里托管一个 agent——我觉得那挺危险;也可以在一个放风出来的场里让它全权跑一段再回来汇报。它俩交叉,不是并列。谁拿放风去替代托管的说法,音就不准了。
vibe coding 那波轻率劲儿已经过头了,社区正在往回收。大家不是不玩 agent 了,是玩出事了,开始各自给执行环境打补丁。可加边界这事没人牵头,谁都是在自己的工位或仓库里悄悄弄。coop 是把这事摆在明面上的一个样本,问题是——84 颗星,基本没人理。
一个把放风做得这么干净的正式项目,为什么认领不动?别拿“工具太小众”搪塞。Firecracker 加 Lima 的栈是有点麻烦,但跟裸跑宿主机省下的心比,那点麻烦不算成本。问题出在:放风这个动作本身没名字,所以 coop 造出来的场子没法被一句话讲清它到底在替人守哪条线。工具可以被替代,名字不会。你让一个人去读 coop 的入门指南,他记住的是“哦,一套隔离环境的 CLI”;你让他下次被 agent 乱踩宿主机吓到的时候,脑子里能不能闪过一句“我得给它放个风”——这才是名字干的事。
所以这个词,你应该拿走。下次再看到谁开个一次性环境跑 agent,别再说“哦你起了个沙箱”,你就说“你这放风放得挺规范”。下次你自己写完需求,不敢让 Claude Code 直接在主力机上折腾依赖,你要的不是一套更强的权限系统,你要的是一块能扔的地。放风。这词用出去三次,它就开始活。
作废条件先摆这儿:半年后,“放风”要是被用成了“任何跟 AI 跑环境有关的事”的泛称,它就废了,我收回来。它必须精确指那件事——agent 跑在一个一次性、可复现、能扔的执行场里。边界守得住,这词才立得住;守不住,它就跟那个没活过三周的“换刀费”一样,回炉,不占空地。
最后多一句:别把放风理解成“AI 编程的终极安全方案”。它不是。它就是一块地,不是一堵铁墙。agent 在里面照样可能做错决定、生成有问题的代码——放风管的是宿主机不被拖下水,管不了 agent 不干蠢事。这两个边界别混。混了,词就脏了。
