@OpenRouter:关于如何在 Hermes 中设置 Pareto Code 的 @NousResearch 文档:https://hermes-agent.nousresearch.com/docs/user-guide/c…
摘要
NousResearch 的文档解释了如何配置 Hermes AI 代理,重点在于通过 OpenRouter 设置 Pareto Code 路由以及管理配置文件。
查看缓存全文
缓存时间: 2026/05/11 02:33
来自 @NousResearch 的文档,介绍如何在 Hermes 中设置 Pareto Code:https://hermes-agent.nousresearch.com/docs/user-guide/configuration#openrouter-routing–pareto-code-for-auxiliary-tasks…
配置 | Hermes Agent
来源:https://hermes-agent.nousresearch.com/docs/user-guide/configuration
所有设置均存储在 ~/.hermes/ 目录下,以便轻松访问。
目录结构
~/.hermes/
├── config.yaml # 设置(模型、终端、TTS、压缩等)
├── .env # API 密钥和机密信息
├── auth.json # OAuth 提供商凭证(Nous Portal 等)
├── SOUL.md # 主要代理身份(系统提示中的第 1 个槽位)
├── memories/ # 持久化记忆(MEMORY.md, USER.md)
├── skills/ # 代理创建的技能(通过 skill_manage 工具管理)
├── cron/ # 计划任务
├── sessions/ # 网关会话
└── logs/ # 日志(errors.log, gateway.log — 自动隐藏机密信息)
管理配置
hermes config # 查看当前配置
hermes config edit # 在编辑器中打开 config.yaml
hermes config set KEY VAL # 设置特定值
hermes config check # 检查缺少的选项(更新后)
hermes config migrate # 交互式添加缺少的选项
# 示例:
hermes config set model anthropic/claude-opus-4
hermes config set terminal.backend docker
hermes config set OPENROUTER_API_KEY sk-or-... # 保存到 .env
提示:
hermes config set命令会自动将值路由到正确的文件——API 密钥保存到.env,其他所有内容保存到config.yaml。
配置优先级
设置按以下顺序解析(优先级从高到低):
- CLI 参数——例如,
hermes chat --model anthropic/claude-sonnet-4(每次调用的覆盖) ~/.hermes/config.yaml——所有非机密设置的主要配置文件~/.hermes/.env——环境变量的后备;必需用于机密信息(API 密钥、令牌、密码)- 内置默认值——当其他未设置时的硬编码安全默认值
经验法则:机密信息(API 密钥、机器人令牌、密码)放入 .env。其他所有内容(模型、终端后端、压缩设置、内存限制、工具集)放入 config.yaml。当两者都设置时,对于非机密设置,config.yaml 优先。
环境变量替换
您可以在 config.yaml 中使用 ${VAR_NAME} 语法引用环境变量:
auxiliary:
vision:
api_key: ${GOOGLE_API_KEY}
base_url: ${CUSTOM_VISION_URL}
delegation:
api_key: ${DELEGATION_KEY}
单个值中的多个引用有效:url: "${HOST}:${PORT}"。如果引用的变量未设置,占位符将原样保留(${UNDEFINED_VAR} 保持原样)。仅支持 ${VAR} 语法——裸 $VAR 不会展开。
有关 AI 提供商设置(OpenRouter、Anthropic、Copilot、自定义端点、自托管 LLM、备用模型等),请参阅 AI Providers。
提供商超时
您可以为提供商设置 providers.<name>.request_timeout_seconds 以进行全范围的请求超时,以及 providers.<name>.models.<model>.timeout_seconds 以进行模型特定的覆盖。
这适用于每次传输(OpenAI-wire、原生 Anthropic、Anthropic 兼容)上的主轮次客户端、备用链、凭证轮换后的重建,以及(对于 OpenAI-wire)每个请求的超时 kwarg——因此配置的值的优先级高于旧的 HERMES_API_TIMEOUT 环境变量。
您还可以为流式调用的陈旧检测器设置 providers.<name>.stale_timeout_seconds,以及 providers.<name>.models.<model>.stale_timeout_seconds 以进行模型特定的覆盖。这优先于旧的 HERMES_API_CALL_STALE_TIMEOUT 环境变量。
保持这些设置未设置会保留旧的默认值(HERMES_API_TIMEOUT=1800s, HERMES_API_CALL_STALE_TIMEOUT=300s, 原生 Anthropic 900s)。
目前未与 AWS Bedrock 连接(bedrock_converse 和 AnthropicBedrock SDK 路径均使用 boto3,其有自己的超时配置)。
参见 cli-config.yaml.example 中的注释示例:https://github.com/NousResearch/hermes-agent/blob/main/cli-config.yaml.example
终端后端配置
Hermes 支持七种终端后端。每种后端决定代理的 shell 命令实际执行的位置——您的本地机器、Docker 容器、通过 SSH 的远程服务器、Modal 云沙箱(直接或通过 Nous 管理的网关)、Daytona 工作区、Vercel Sandbox 或 Singularity/Apptainer 容器。
terminal:
backend: local # local | docker | ssh | modal | daytona | vercel_sandbox | singularity
cwd: "." # 网关/计划任务工作目录(CLI 始终使用启动目录)
timeout: 180 # 每个命令的超时(秒)
env_passthrough: [] # 转发到沙箱执行的环境变量名称(终端 + execute_code)
singularity_image: "docker://nikolaik/python-nodejs:python3.11-nodejs20" # Singularity 后端的容器镜像
modal_image: "nikolaik/python-nodejs:python3.11-nodejs20" # Modal 后端的容器镜像
daytona_image: "nikolaik/python-nodejs:python3.11-nodejs20" # Daytona 后端的容器镜像
对于 Modal、Daytona 和 Vercel Sandbox 等云沙箱,container_persistent: true 意味着 Hermes 将尝试在沙箱重建之间保留文件系统状态。它不保证相同的实时沙箱、PID 空间或后台进程仍在运行。
后端概述
| 后端 | 命令运行位置 | 隔离性 | 最佳用途 |
|---|---|---|---|
| local | 直接在您的机器上 | 无 | 开发、个人使用 |
| docker | 单个持久 Docker 容器(跨会话、/new、子代理共享) | 完全(命名空间、cap-drop) | 安全沙箱、CI/CD |
| ssh | 通过 SSH 的远程服务器 | 网络边界 | 远程开发、强大硬件 |
| modal | Modal 云沙箱 | 完全(云 VM) | 临时云计算、评估 |
| daytona | Daytona 工作区 | 完全(云容器) | 托管云开发环境 |
| vercel_sandbox | Vercel Sandbox | 完全(云 microVM) | 具有快照支持文件系统持久化的云执行 |
| singularity | Singularity/Apptainer 容器 | 命名空间(–containall) | HPC 集群、共享机器 |
Local 后端
默认选项。命令直接在您的机器上运行,无隔离。无需特殊设置。
警告:代理具有与您用户帐户相同的文件系统访问权限。使用
hermes tools禁用不需要的工具,或切换到 Docker 进行沙箱隔离。
Docker 后端
在具有安全加固(所有功能丢弃、无权限提升、PID 限制)的 Docker 容器内运行命令。
单个持久容器,而非每个命令一个。 Hermes 在首次使用时启动一个长寿命容器,并通过 docker exec 将每个终端、文件和 execute_code 调用路由到该同一容器——跨越会话、/new、/reset 和 delegate_task 子代理——直至 Hermes 进程的生命周期结束。工作目录更改、安装的包和 /workspace 中的文件从一个工具调用延续到下一个,就像本地 shell 一样。容器在关闭时停止并移除。
详见下面的容器生命周期。
terminal:
backend: docker
docker_image: "nikolaik/python-nodejs:python3.11-nodejs20"
docker_mount_cwd_to_workspace: false # 将启动目录挂载到 /workspace
docker_run_as_host_user: false # 见下文“以主机用户身份运行容器”
docker_forward_env: # 转发到容器的环境变量
- "GITHUB_TOKEN"
docker_volumes: # 主机目录挂载
- "/home/user/projects:/workspace/projects"
- "/home/user/data:/data:ro" # :ro 表示只读
# 资源限制
container_cpu: 1 # CPU 核心数 (0 = 无限制)
container_memory: 5120 # MB (0 = 无限制)
container_disk: 51200 # MB (需要 XFS+pquota 上的 overlay2)
container_persistent: true # 跨会话保留 /workspace 和 /root
要求:安装并运行 Docker Desktop 或 Docker Engine。Hermes 探测 $PATH 以及常见的 macOS 安装位置 (/usr/local/bin/docker, /opt/homebrew/bin/docker, Docker Desktop 应用包)。Podman 开箱即用:设置 HERMES_DOCKER_BINARY=podman(或完整路径)以在两者都安装时强制使用。
容器生命周期:Hermes 重用单个长寿命容器(docker run -d ... sleep 2h)用于所有终端和文件工具调用,跨越会话、/new、/reset 和 delegate_task 子代理,直至 Hermes 进程的生命周期结束。命令通过具有登录 shell 的 docker exec 运行,因此工作目录更改、安装的包和 /workspace 中的文件都从一个工具调用延续到下一个。容器在 Hermes 关闭(或空闲扫描回收它时)停止并移除。通过 delegate_task(tasks=[...]) 生成的并行子代理共享这一个容器——并发的 cd、环境变量突变和写入同一路径会发生冲突。如果子代理需要隔离的沙箱,它必须通过 register_task_env_overrides() 注册每任务镜像覆盖,RL 和基准环境(TerminalBench2、HermesSweEnv 等)会自动为其每任务 Docker 镜像执行此操作。
安全加固:
--cap-drop ALL,仅重新添加DAC_OVERRIDE,CHOWN,FOWNER--security-opt no-new-privileges--pids-limit 256- 大小限制的 tmpfs 用于
/tmp(512MB),/var/tmp(256MB),/run(64MB)
凭证转发:docker_forward_env 中列出的环境变量首先从 shell 环境解析,然后从 ~/.hermes/.env 解析。技能还可以声明 required_environment_variables,它们会自动合并。
SSH 后端
通过 SSH 在远程服务器上运行命令。使用 ControlMaster 进行连接重用(5 分钟空闲保持活动)。默认启用持久 shell——状态(cwd、环境变量)在命令之间存活。
terminal:
backend: ssh
persistent_shell: true # 保持长寿命 bash 会话(默认:true)
必需的环境变量:
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=ubuntu
可选:
| 变量 | 默认值 | 描述 |
|---|---|---|
TERMINAL_SSH_PORT | 22 | SSH 端口 |
TERMINAL_SSH_KEY | (系统默认) | SSH 私钥路径 |
TERMINAL_SSH_PERSISTENT | true | 启用持久 shell |
工作原理:在初始化时使用 BatchMode=yes 和 StrictHostKeyChecking=accept-new 连接。持久 shell 在远程主机上保持单个 bash -l 进程存活,通过临时文件通信。需要 stdin_data 或 sudo 的命令自动回退到一次性模式。
Modal 后端
在 Modal 云沙箱中运行命令。每个任务获得一个隔离的 VM,具有可配置的 CPU、内存和磁盘。文件系统可以在会话之间快照/恢复。
terminal:
backend: modal
container_cpu: 1 # CPU 核心数
container_memory: 5120 # MB (5GB)
container_disk: 51200 # MB (50GB)
container_persistent: true # 快照/恢复文件系统
必需:MODAL_TOKEN_ID + MODAL_TOKEN_SECRET 环境变量,或 ~/.modal.toml 配置文件。
持久性:启用时,沙箱文件系统会在清理时快照,并在下次会话时恢复。快照记录在 ~/.hermes/modal_snapshots.json 中。这保留了文件系统状态,而不是实时进程、PID 空间或后台作业。
凭证文件:自动从 ~/.hermes/ 挂载(OAuth 令牌等)并在每个命令之前同步。
Daytona 后端
在 Daytona 托管工作区中运行命令。支持停止/恢复以实现持久性。
terminal:
backend: daytona
container_cpu: 1 # CPU 核心数
container_memory: 5120 # MB → 转换为 GiB
container_disk: 10240 # MB → 转换为 GiB (最大 10 GiB)
container_persistent: true # 停止/恢复而不是删除
必需:DAYTONA_API_KEY 环境变量。
持久性:启用时,沙箱在清理时停止(不删除),并在下次会话时恢复。沙箱名称遵循 hermes-{task_id} 模式。
磁盘限制:Daytona 强制执行 10 GiB 最大限制。超过此值的请求会被截断并带有警告。
Vercel Sandbox 后端
在 Vercel Sandbox 云 microVM 中运行命令。Hermes 使用标准的终端和文件工具表面;没有 Vercel 特定的面向模型的工具。
terminal:
backend: vercel_sandbox
vercel_runtime: node24 # node24 | node22 | python3.13
cwd: /vercel/sandbox # 默认工作区根目录
container_persistent: true # 快照/恢复文件系统
container_disk: 51200 # 共享默认值;不支持自定义磁盘
必需安装:安装可选的 SDK 额外包:
pip install 'hermes-agent[vercel]'
必需认证:配置访问令牌认证,包含 VERCEL_TOKEN、VERCEL_PROJECT_ID 和 VERCEL_TEAM_ID。这是 Render、Railway、Docker 和类似主机上部署和正常长时间运行的 Hermes 进程的受支持设置。对于一次性本地开发,Hermes 也接受短寿命 Vercel OIDC 令牌:
VERCEL_OIDC_TOKEN="$(vc project token )" hermes chat
从链接的 Vercel 项目目录,您可以省略项目名称:
VERCEL_OIDC_TOKEN="$(vc project token)" hermes chat
OIDC 令牌短寿命,不应用作记录的部署路径。
运行时:terminal.vercel_runtime 支持 node24、node22 和 python3.13。如果未设置,Hermes 默认为 node24。
持久性:当 container_persistent: true 时,Hermes 在清理期间快照沙箱文件系统,并为同一任务从该快照恢复后来的沙箱。快照内容可以包括 Hermes 同步的凭证、技能和复制到沙箱中的缓存文件。这仅保留文件系统状态;它不保留实时沙箱身份、PID 空间、shell 状态或运行的后台进程。
后台命令:terminal(background=true) 使用 Hermes 的通用非本地后台进程流。您可以通过正常的进程工具在沙箱存活时生成、轮询、等待、查看日志和杀死进程。Hermes 不提供清理或重启后的原生 Vercel 分离进程恢复。
磁盘大小:Vercel Sandbox 目前不支持 Hermes 的 container_disk 资源旋钮。保持 container_disk 未设置或为共享默认值 51200;非默认值会导致诊断和后端创建失败,而不是被静默忽略。
Singularity/Apptainer 后端
在 Singularity/Apptainer 容器中运行命令。专为 Docker 不可用的 HPC 集群和共享机器设计。
terminal:
backend: singularity
singularity_image: "docker://nikolaik/python-nodejs:python3.11-nodejs20"
container_cpu: 1 # CPU 核心数
container_memory: 5120 # MB
container_persistent: true # 可写覆盖层在会话之间持久化
要求:`apptainer
相似文章
@NousResearch: Hermes Agent 现已位居全球 @OpenRouter 代币排行榜第一。虽然我们的旅程才刚刚开始,但我们想借此机会感谢所有贡献者、支持者和用户一路上的付出。
NousResearch 的 Hermes Agent 已攀升至 OpenRouter 全球代币排行榜首位,这对于这款 AI Agent 来说是一个重要的里程碑。
@nateherk: https://x.com/nateherk/status/2053308681299616125
本文详细介绍了 Hermes——由 Nous Research 构建的一个开源 AI Agent 框架,它专注于内存、技能以及用于即时自动化的自我改进循环。
在过去 24 小时的 OpenRouter 全球 Token 指标中,Hermes Agent 已成为全球使用量排名第一的模型,超越 Claude Code 和 OpenClaw。
在过去 24 小时内,Hermes Agent 已成为 OpenRouter 上全球使用量最多的智能体,其 Token 处理量超过了 Claude Code 和 OpenClaw。
@Teknium:我们在 OpenRouter 所有 AI 应用中成功登顶全球第一。由衷感谢近 1000 位贡献者们……
Hermes Agent 模型凭借近 1000 名开发者的贡献,在 OpenRouter 全平台 AI 应用中荣登全球榜首。创作者感谢社区支持,并邀请大家为后续改进提供建议。
@zeroxkyle: 我最近在使用 Claude Code 一年多之后安装了 Hermes。在工作中试用过,没觉得有必要个人部署……
一位用户分享了从 Claude Code 转向 Hermes AI 的积极体验,称赞该智能体具备学习能力、能处理长时间任务,并显著提升了生产力。