必须完成浏览器插件与代码执行器的协同配置:一、配置camofox防爬浏览器插件;二、启用本地python沙箱;三、配置docker容器化执行器;四、启用jupyter内核桥接;五、统一设置timeout_seconds和max_memory_mb等资源限制。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望 Hermes Agent 能够执行网页自动化任务并安全运行代码片段,则必须完成浏览器插件与代码执行器的协同配置。以下是完成该工具链配置的具体步骤:
一、配置防爬浏览器插件(Camofox)
Camofox 是 Hermes Agent 官方推荐的防反爬浏览器环境,它模拟真实用户行为,绕过大多数网站的 bot 检测机制,为网页抓取、表单填写和后台操作提供可信上下文。
1、确保系统已安装 Camofox 浏览器或通过 Hermes 自动下载:执行 hermes browser install camofox 命令触发自动部署。
2、在 ~/.hermes/config.yaml 中确认 browser 配置区块包含以下字段:
browser:
type: camofox
enabled: true
headless: false
3、验证 Camofox 是否就绪:运行 hermes browser test --url https://httpbin.org/user-agent,响应中应包含 Camofox 字样而非 Chromium 或 HeadlessChrome。
二、启用本地 Python 沙箱执行器
本地 Python 沙箱是 Hermes Agent 默认启用的安全代码执行层,它禁用网络访问、文件系统写入及危险系统调用,仅允许纯计算类代码在隔离环境中运行。
1、打开 ~/.hermes/config.yaml,定位到 execution 区块。
2、将 enabled 设为 true,并显式指定 python_path:
execution:
enabled: true
python_path: /usr/bin/python3 # Linux/macOS 示例
# 或 Windows 示例:
# python_path: C:\Python311\python.exe
3、保存配置后重启 Hermes Agent:执行 hermes restart 并观察日志中是否出现 [EXEC] Python sandbox initialized。
三、配置 Docker 容器化代码执行器
Docker 模式提供更强的资源隔离与环境一致性,适用于需依赖特定库版本、避免污染宿主机 Python 环境,或执行潜在高风险脚本的场景。
1、确认 Docker Engine 已运行:执行 docker info --format '{{.ServerVersion}}',输出应为 24.0+ 版本号。
2、拉取官方沙箱镜像:docker pull hermesai/code-sandbox:latest。
3、在 config.yaml 的 execution 区块中添加:
sandbox_type: docker
docker_image: hermesai/code-sandbox:latest
docker_options:
mem_limit: "256m"
cpu_quota: 50000
四、启用 Jupyter 内核桥接执行器
Jupyter 模式支持变量持久化、多步交互式执行与内省调试,适用于数据分析、模型验证等需状态延续的任务场景。
1、启动独立 Jupyter kernel:jupyter kernel --ip=127.0.0.1 --port=55555 --no-browser,记录控制台输出的 connection file 路径。
2、在 config.yaml 中配置:
jupyter_mode: true
jupyter_connection_file: ~/.local/share/jupyter/runtime/kernel-*.json
3、确保 Hermes Agent 启动时加载 ZeroMQ 依赖:若报错提示 zmq module not found,则需在虚拟环境中执行 pip install pyzmq。
五、统一设置执行资源限制
所有执行器类型均需强制约束超时与内存上限,防止失控代码导致服务挂起或 OOM 崩溃,该设置对安全性与稳定性具有决定性作用。
1、在 config.yaml 的 execution 区块下添加:
timeout_seconds: 30
max_memory_mb: 256
2、若同时启用 Docker 模式,必须额外在 docker_options 中重复声明内存限制,否则 cgroups 不生效。
3、测试资源限制是否生效:向 Hermes 提交以下代码并观察是否被强制终止:
import time; time.sleep(40)











