Architecture For Power Users

Hermes Agent 的 7 个沙箱后端:什么时候用哪个

Hermes Agent

Hermes Agent

@hermesagents

2026年5月17日

9 分钟阅读

每一份 Hermes Agent 安装都有一个 sandbox 设置,它决定shell 命令到底跑在哪儿。这件事的后果挺重的:决定一条坏命令的爆炸半径有多大、agent 用起来的体感有多快、以及你每个活跃小时要花多少钱。

Hermes 一共带七个后端。README 把它们列得整整齐齐:localdockersshsingularitymodaldaytonavercel。v0.14.0 把 Vercel Sandbox 补进来,凑成现在这一套。下面是决策树。

一张表看完七个后端

后端隔离强度延迟成本持久化适合谁
local没有<10 ms免费有(你的磁盘)自己一个人在一台用完即扔的 VM 上写
Docker容器约 50 ms免费按容器任何开发机的默认选项
SSH远端是什么强度就是什么远端延迟远端费用agent 在别人的机器上跑
SingularityHPC 容器约 100 ms免费按容器HPC 集群、科学计算
Modalserverless 容器冷启动约 200 ms按活跃秒收费可 snapshot突发计算、GPU 活儿
Daytonaserverless 工作区冷启动约 300 ms按活跃秒收费闲置时休眠长跑的 agent 环境、闲置成本几乎为零
Vercel Sandboxserverless 容器冷启动约 200 ms按活跃秒收费临时Web 工具链、JS 重度场景

localdocker 免费,跑在你机器上。剩下五个跑在别处——延迟、钱都得付,但换回来一些东西。

一个一个看,什么时候挑哪个

local——"在这台机器上我信这个 agent"

agent 直接在你的文件系统上、用你这个 user 的权限跑命令。零隔离。 agent 要是决定 rm -rf ~/code,就真的删了。tool 输出里夹带了一条 prompt injection,那条注入的命令也照跑。

什么时候这一档是对的:你在一台用完即扔的 VM 上写东西,agent 干的事情爆炸半径反正跟你自己手动干差不多,延迟低到 0 比安全余量更重要。

什么时候这一档是错的:基本上其他所有时候。

docker——对的默认值

跑在你机器上的一个容器,用 Linux namespace 做隔离。agent 看到的文件系统是容器视角;你真实的 /home 看不见——除非你自己挂进来。

hermes config set sandbox docker 然后 hermes setup,镜像就会拉好、配好。之后每一次 shell 工具调用都走容器。

这是 80% 用户的对的默认值。 延迟开销(每条命令约 50 ms)在聊天体感里看不出来。隔离强度足够——agent 跑 rm -rf / 也只能炸掉容器视角,容器本身是一次性的。需要 debug 的话你可以 docker exec 进去。

ssh——"agent 住在另一台机器上"

agent 的 shell 工具通过 SSH 在一台远端机器上执行。本地这边的 Hermes 进程是客户端;活儿都发生在远端那台。

这一档对的场景:agent 干的就是那种本该在远端干的基础设施活儿——部署到服务器、debug 生产日志、跑 migration。你不需要本地沙箱,因为远端那台就是沙箱。

远端那台机器,你得能接受 agent 拿到 shell 权限。SSH 凭据要按生产凭据来对待,因为它本来就是。

singularity——HPC 集群

Singularity(现在叫 Apptainer)是 HPC 集群真在用的容器 runtime——Docker 在 host 上要 root,HPC 环境给不了。你在一个研究集群上跑 Hermes——SLURM 调度、没有 Docker、一堆 GPU——这一档就对了。

不认识 "HPC" 或 "Singularity" 这两个词的话,跳过这一节。

modal——突发计算,尤其是 GPU

Modal 是个 serverless 容器平台。Hermes 每条命令(或者每个会话,可复用)起一个 Modal 容器,跑完命令再拆掉。按活跃计算秒数付费。GPU 档位有。

什么时候它强过 Docker:agent 需要 GPU,或者计算资源超出你本地机器能给的。什么时候它强过其他 serverless:冷启动约 200 ms,对聊天节奏的工具调用是可以接受的;snapshotting 也够好,会话中途的状态留得住。

daytona——长跑、闲置近零

Daytona 的杀手锏是休眠。你 agent 的环境闲下来就睡,要用的时候几百毫秒里醒过来。你付的是活跃秒数,不是闲置秒数。

实际效果是:你可以拥有一个"我的 Hermes"环境,带着你的 dotfiles、你的 skills、你跑到一半的活儿,它能在那几个月几乎不要钱,因为你只在用的时候付。

这一档适合:你想要一个 agent "住在某个地方"——但不想让它住你笔记本上。长时间闲置之后第一条请求约 300 ms 唤醒;之后请求就是容器速度。

vercel——Vercel Sandbox(v0.14.0)

最新加的一个后端,v0.14.0 进来的。和 Modal 一样的 serverless 容器模型,跑在 Vercel 的基建上。你本来就以 Vercel 作为部署目标的话,这是把 agent 沙箱也放到同一家 provider 上摩擦最小的选项。

最适合:JS 重度的场景,你希望 agent 的环境跟你生产部署环境一模一样。

怎么切换

bash
hermes config set sandbox docker
# 或者:local、ssh、singularity、modal、daytona、vercel

需要凭据的后端(ssh / modal / daytona / vercel)——hermes setup 会问你要;也可以直接按文档用 hermes config set 设。

需要的话还能按 session 临时覆盖:hermes --sandbox modal 单跑一次需要 GPU 的活儿,之后回到你默认的 sandbox。

完全不要沙箱行不行

你可以完全关掉沙箱(local 后端),但 Hermes 还会在这之上盖一层命令审批流程:危险命令——rm -rfcurl | sh、动 /etc 的——都会在执行前明确弹审批。v0.14.0 把这一层加固了一遍,关掉三个 dangerous-command 绕过、加了 sudo 暴力破解阻断(#23736, #26829)。所以即便是 local 也不是"什么都没有"——它是"隔离更轻,但还有真审批"。逐层拆解可以看安全模型那篇

实际给的建议

绝大多数人、绝大多数时候:Docker。

想让 agent 住在一台不是你笔记本的服务器上:Daytona(闲置就睡这件事真的挺神奇,成本算下来也对)。

有 GPU 活儿、或者 agent 在做真正的计算:Modal

在集群里搞研究的:Singularity

local —— 你得清楚这个 tradeoff 再用。SSH——只在活儿"本该"在远端发生的时候用。Vercel——你本来就在 Vercel 上的话。

延伸阅读

订阅更新

Hermes Agent 的版本更新、新 skill、新集成——社区第一手消息。不发垃圾邮件,随时可以退订。