Hermes Agent代码执行工具详解:execute_code沙箱与多后端终端(2026最新)

维护咨询 大模型部署 问题解决 技能定制 大模型训练

站长交流微信: aixbwz

普通的AI聊天机器人只能跟你说话,Hermes Agent不一样——它能在沙箱里直接跑代码、执行命令、读写文件,而且结果会返回给AI做进一步推理。

这个能力来自两个核心工具:execute_code(代码执行)和terminal(终端)。理解它们能做什么、怎么配置,是用好Hermes的关键。

## execute_code:让AI自己写代码并执行

execute_code是Hermes内置的沙箱代码执行工具。它的核心逻辑是:AI生成一段Python脚本,脚本在沙箱里运行,脚本里可以调用Hermes的工具(读文件、写文件、搜索、终端等),最终只有脚本的stdout返回给AI。

架构上分两种模式:

本地模式(Unix Domain Socket)

在你的机器上直接运行AI写的脚本,通过Unix域套接字把工具调用传回主进程处理。速度快,但只在Linux/macOS上可用。

# 本地执行示意
AI生成脚本 → 沙箱进程运行脚本
脚本调用工具 → UDS传回主进程
主进程执行工具 → 结果写回套接字
脚本读取结果 → 继续执行
最终stdout返回AI上下文

远程模式(文件RPC)

脚本和工具通过文件传递。Hermes把脚本和工具存根打包,发送到远程环境(Docker容器、SSH远程机器、Modal云沙箱等),脚本在那里运行,通过轮询文件跟主进程通信。

# 远程执行示意
AI生成脚本 → Hermes打包脚本+工具存根
上传到远程环境 → 脚本在远程运行
工具调用写入请求文件 → 主进程轮询读取
执行结果写入响应文件 → 远程脚本轮询读取
脚本继续执行 → 最终结果返回

## execute_code的7个内置工具

沙箱里AI能调用的工具是固定的,只有7个:

web_search      # 网页搜索
web_extract     # 抓取网页内容
read_file       # 读取文件
write_file      # 写文件
search_files    # 搜索文件内容
patch           # 文本替换
terminal        # 执行Shell命令

这7个工具的交集决定哪些工具存根会被注入到脚本里。比如你的会话启用了web_search和read_file,沙箱里AI就只能调用这两个。

## 资源限制

execute_code有硬性资源上限,防止AI在沙箱里跑失控任务:

超时时间:      300秒(5分钟)
最大工具调用:  50次
stdout上限:    50KB(超出截断)
stderr上限:    10KB(超出截断)

这些默认值可以通过config.yaml里的code_execution配置项覆盖。

# config.yaml 示例
code_execution:
  timeout: 600        # 10分钟
  max_tool_calls: 100
  max_stdout_bytes: 102400   # 100KB

## terminal:多后端命令执行

terminal工具是Hermes执行Shell命令的入口,支持多种后端:

本地执行(local)

直接在宿主机上执行,最快。默认模式。

Docker容器

在隔离容器里执行,宿主机不受影响。需要本地安装Docker。

TERMINAL_ENV=docker hermes chat

Modal云沙箱

在Modal的云沙箱里执行,适合需要GPU或者不想占本地资源的任务。

TERMINAL_ENV=modal hermes chat

SSH远程

通过SSH连到远程机器执行,适合已经有服务器的人。

TERMINAL_ENV=ssh hermes chat

Singularity容器

HPC环境用的容器技术,跟Docker类似但更适合科学计算场景。

Daytona

云端开发环境,支持完整的IDE集成。

## 终端工具的实用功能

后台进程

terminal("python server.py", background=True)

启动后台进程,不会阻塞AI的操作。可以用process工具查看输出、等待完成、或者杀死进程。

工作目录指定

terminal("ls", workdir="/path/to/project")

指定命令在哪个目录执行,方便项目文件操作。

PTY模式

terminal("python -i", pty=True)

启用伪终端,适合需要交互的CLI工具(Codex、Claude Code等)。

输出监听

terminal("tail -f /var/log/app.log", background=True, watch_patterns=["ERROR", "FATAL"])

后台运行时指定关键词监听,出现匹配词会主动通知。适合监控日志、等特定事件。

## 磁盘空间管理

terminal工具会自动监控Hermes的工作目录占用空间。

默认警告阈值:500GB

当hermes相关目录占用超过500GB,terminal工具会在日志里输出警告。建议运行清理:

hermes cleanup

这会清理所有已停止的沙箱环境、临时文件和过期会话。

## 危险命令拦截

terminal工具内置危险命令检测。执行以下操作前会要求确认:

rm -rf /          # 递归删除根目录
dd if=... of=/dev  # 磁盘写入
>: /dev/sda        # 块设备写入
mkfs.*             # 格式化
passwd             # 改密码
useradd/userdel    # 用户管理

如果你在Docker后端里运行,危险命令会被降级到容器内部执行,不会影响宿主机。

## 在沙箱里使用Python代码

execute_code的核心使用方式是在对话里让AI写并执行Python脚本:

# AI会生成类似这样的脚本
from hermes_tools import read_file, search_files, write_file, terminal

# 读取项目文件
files = search_files(pattern="def.*", target="content", path=".")
print(f"找到 {len(files['matches'])} 个函数定义")

# 写一个报告
report = "\n".join([f["content"] for f in files["matches"]])
write_file("/tmp/report.txt", report)
print("报告已生成")

脚本里不需要import工具,hermes_tools.py存根是自动生成的。

## 常见问题

Q:execute_code和terminal有什么区别?

A:execute_code是AI生成Python脚本在沙箱里执行,脚本可以调用多个工具,结果以stdout返回。terminal是直接执行一条Shell命令,功能更简单但更直接。execute_code适合复杂多步任务,terminal适合单条命令操作。

Q:execute_code在Windows上能用吗?

A:不能。execute_code依赖Unix域套接字,只能在Linux/macOS上可用。Windows用户可以用Docker后端绕过这个限制。

Q:沙箱里能访问网络吗?

A:能。web_search和web_extract工具在沙箱里可用,可以访问互联网。但沙箱跟宿主机是隔离的,不能直接访问宿主机上的其他服务。

Q:脚本运行超时了怎么办?

A:增加timeout配置,或者把长任务拆成多个短任务。每个任务最多5分钟,超时会被强制终止。

Q:后台进程忘杀了,占资源怎么办?

A:用process list查看所有后台进程,process kill杀掉的进程。或者直接hermes cleanup清理所有过期状态。

## 相关文章

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

七天热门