Agent 的命令在哪里执行
当 Hermes Agent 说「我来执行一下 ls -la」,这条命令具体在哪台机器、哪个环境里跑?
答案是:取决于你配置了什么执行后端(Backend)。
执行后端是 Hermes Agent 架构中的关键一层——它决定了 Agent 操作的边界和安全等级。你可以让 Agent 直接操作你的本地终端,也可以把它限制在 Docker 容器里,甚至让它在远程服务器或 Serverless 平台上执行命令。
Hermes Agent 目前支持六种后端:Local、Docker、SSH、Daytona、Singularity、Modal。每种有不同的适用场景和安全特性。这篇文章逐个讲清楚。
Local:最直接的方式
什么情况用
这是默认后端。Agent 的命令直接在你当前登录的终端环境中执行,和你自己手动敲命令没区别。
配置
不需要配置,开箱即用。如果要显式指定:
1 | backend: |
适用场景
- 个人开发机上的日常使用
- 你完全信任 Agent 要执行的操作
- 需要访问本地资源(文件、进程、网络)
风险
Agent 拥有和你一样的权限。如果你用 root 账号跑,Agent 也是 root 权限。这意味着一条错误的 rm -rf 可能造成灾难性后果。
我个人在本地后端下会开启操作确认:
1 | backend: |
开启后,涉及删除、权限修改、服务管理等操作,Agent 会先问你确认。稍微打断一下工作流,但多了一层安全网。
Docker:推荐的安全选择
什么情况用
你想让 Agent 干活,但不想让它碰你的宿主机环境。Docker 后端把 Agent 的执行环境限制在一个容器里,容器内搞什么都不影响外面。
配置
1 | backend: |
几个关键配置:
- image:使用的 Docker 镜像。官方提供了
hermes-sandbox基础镜像,包含常用开发工具 - auto_remove:任务完成后自动删除容器
- volumes:把需要 Agent 操作的目录挂载进容器。不挂载的目录 Agent 看不到
- memory_limit / cpu_limit:资源限制,防止 Agent 把机器拖垮
安全隔离效果
Docker 后端提供了进程级隔离:
- Agent 无法访问宿主机的文件系统(除了你挂载的部分)
- Agent 无法影响宿主机的进程
- 网络访问可以通过 Docker 网络策略限制
- 资源使用有上限
这对于不太可控的任务特别有用。比如你让 Agent 分析一份来源不明的代码——在 Docker 里跑,即使代码有恶意行为也出不去。
镜像管理
官方基础镜像比较精简。如果你的任务需要特定工具,建一个自定义镜像:
1 | FROM hermes-sandbox:latest |
不同类型的任务用不同的镜像,做到环境隔离的同时不丢功能。
SSH:远程服务器操作
什么情况用
你想让 Agent 操作一台远程服务器,而不是本地机器。运维场景下用得最多。
配置
1 | backend: |
配置项和你平时用 SSH 连服务器一样。建议用密钥认证,不要用密码。
多服务器场景
如果你管理多台服务器,可以配多个 SSH 后端,在使用时指定:
1 | backends: |
使用时指定后端:
1 | hermes --backend web-server "检查 Nginx 状态" |
这在日常运维中非常实用。你不需要自己 SSH 上去一台台看,让 Agent 帮你串行或并行检查多台服务器。
安全考量
SSH 后端的安全取决于你给 Agent 用的那个账号的权限。强烈建议:
- 给 Agent 创建专用账号,不要用 root
- 通过 sudoers 精确控制这个账号能执行哪些 sudo 命令
- 限制账号的文件访问范围
具体的安全配置方案,可以参考 Hermes Agent 安全指南。
Daytona:开发环境即服务
什么情况用
Daytona{rel=”nofollow”} 是一个开发环境管理平台,能快速创建标准化的开发环境。Hermes Agent 的 Daytona 后端让 Agent 在 Daytona 创建的开发环境中执行命令。
适用场景
- 团队需要统一的开发环境
- 你想让 Agent 在一个干净的、可重现的环境中工作
- 项目有 devcontainer 配置
配置
1 | backend: |
Daytona 后端的优势是环境一致性。不管 Agent 在什么机器上运行,它操作的开发环境都是从同一个模板创建的,消除了「在我机器上能跑」的问题。
Singularity:HPC 场景
什么情况用
Singularity{rel=”nofollow”}(现在叫 Apptainer)是高性能计算(HPC)领域常用的容器技术。和 Docker 不同,Singularity 不需要 root 权限运行,更适合共享计算集群。
适用场景
- 在大学或研究机构的计算集群上使用 Agent
- 需要访问 GPU 等硬件资源
- 集群管理员不允许用 Docker
配置
1 | backend: |
Singularity 的 bind_paths 类似 Docker 的 volumes,指定宿主机目录映射。gpu: true 开启 GPU 直通,适合需要 GPU 计算的场景。
说实话这个后端比较小众,主要面向 HPC 用户。如果你不在学术或科研环境,大概率用不到。
Modal:Serverless 执行
什么情况用
Modal{rel=”nofollow”} 是一个 Serverless 计算平台。选择 Modal 后端意味着 Agent 的命令不在任何固定服务器上执行,而是在 Modal 的云端按需分配的容器里执行。
适用场景
- 你不想维护任何服务器
- 任务执行频率不高,按需付费更划算
- 需要弹性伸缩(比如偶尔需要大量计算资源)
配置
1 | backend: |
成本考虑
Modal 按实际使用的计算时间收费。如果你每天只是偶尔让 Agent 跑几个命令,费用可能比维护一台 VPS 便宜。但如果你频繁使用,VPS 的固定月费可能更划算。
另外 Modal 有冷启动延迟——第一次调用需要几秒钟启动容器。后续调用如果间隔不长,会复用已有容器。
六种后端对比
| 后端 | 隔离性 | 延迟 | 成本 | 适合谁 |
|---|---|---|---|---|
| Local | 无 | 极低 | 无额外成本 | 个人开发者 |
| Docker | 容器级 | 低 | 无额外成本 | 安全意识强的用户 |
| SSH | 取决于账号 | 网络延迟 | 需要远程服务器 | 运维人员 |
| Daytona | 环境级 | 中等 | Daytona 费用 | 团队开发 |
| Singularity | 容器级 | 低 | 集群资源 | HPC 用户 |
| Modal | 容器级 | 冷启动较高 | 按用量 | 无服务器用户 |
混合使用
你不一定只用一种后端。Hermes Agent 支持配置多个后端,根据任务类型自动或手动选择。
自动路由
1 | backend_routing: |
这样当你说「检查服务器的 Nginx 状态」,Agent 自动走 SSH 后端;说「修改本地的配置文件」,走 Local 后端。
手动指定
任何时候都可以在命令中覆盖:
1 | hermes --backend docker "跑一下这段 Python 脚本" |
自定义后端
如果六种内置后端都不满足你的需求,Hermes Agent 支持自定义后端插件。你需要实现一个标准接口:
1 | class CustomBackend: |
注册后就能和内置后端一样使用。cocoloop 社区有人写了 Kubernetes 后端插件,让 Agent 直接在 K8s Pod 里执行命令。
选择建议
如果你刚开始用 Hermes Agent,我的建议是:
- 先用 Local,快速上手,不需要额外配置
- 然后切到 Docker,加一层安全网,尤其是你开始让 Agent 做不太可控的操作时
- 有远程服务器需求再加 SSH
- 其他三个按需选择
不管用什么后端,技能系统和记忆系统的工作方式都是一样的。后端的选择只影响命令在哪里执行,不影响 Agent 的推理和学习能力。
延伸阅读:OpenClaw 社区资源
本文由 CocoLoop 中文社区出品。如果你在研究 AI Agent 与主流模型的工程化落地,姊妹站 OpenClaw 中文社区 也许会有帮助: