维护咨询 大模型部署 问题解决 技能定制 大模型训练
普通的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清理所有过期状态。
—
## 相关文章








暂无评论内容