Hermes Agent Architecture

Hermes Agent 是一款本地优先、配置驱动、技能可插拔的 AI Agent 框架。它把“模型网关 + 工具执行引擎 + 技能系统 + 持久化记忆”全部跑在你自己的机器上,配一个 YAML 就能把 Telegram、终端、浏览器、MCP 服务器、Cloudflare Workers 全串起来。这篇文章把新手最容易卡的配置、技能、工具、自动化四大块拆开讲,配一张全景架构图帮你建立心智模型。

一、核心心智模型:五层架构

打开文章顶部的架构图(或在浏览器打开 /images/posts/hermes-architecture.html),你会看到五层:

层级职责关键词
UI LayerTelegram / Web UI / CLI统一入口,同一会话多端同步
Gateway & Routing模型路由、Fallback 链、Config/Profile/Session/Memory 管理config.yaml 是唯一真理来源
Provider LayerNVIDIA / OpenRouter / Anthropic / Cloudflare AI / ZAI / Custom统一 OpenAI 兼容接口,支持任意厂商
Tool EngineTerminal / File / Browser / Web Search / Skills / MCP全部本地执行,沙箱隔离,支持后台+通知
ExtensionsCron Jobs / Delegation / Platform Bridges / CF Workers / MCP Servers定时、并行、跨平台、边缘计算

一句话心法config.yaml 定义**“用什么模型、怎么路由、开什么工具、加什么技能”**,剩下的 Hermes 全自动帮你接线。


二、安装与首发配置(5 分钟跑通)

1. 一键安装

curl -fsSL https://hermes-agent.dev/install.sh | bash
# 或手动:下载对应平台的二进制,放入 PATH

安装后会在 ~/.hermes/ 生成:

~/.hermes/
├── config.yaml          # 主配置(必改)
├── profiles/            # 多工作区隔离
├── skills/              # 技能目录(drop-in 安装)
├── plugins/             # 插件目录
├── cron/                # 定时任务
└── sessions.db          # SQLite + FTS5 全文检索

2. 编辑 ~/.hermes/config.yaml —— 只改三处

model:
  default: nvidia/nemotron-3-ultra-550b-a55b
  provider: nvidia
  base_url: https://integrate.api.nvidia.com/v1

# 关键:fallback 链(主模型挂了自动切)
fallback_providers:
  - provider: nvidia
    model: nvidia/nemotron-3-ultra-550b-a55b
    base_url: https://integrate.api.nvidia.com/v1
  - provider: openrouter
    model: nvidia/nemotron-3-ultra-550b-a55b:free
    base_url: https://openrouter.ai/api/v1
    api_mode: chat_completions

# 关键:把常用工具集打开
toolsets:
  - hermes-cli
  - terminal
  - file
  - browser
  - web
  - skills
  - cronjob
  - delegation

3. 填 Key(环境变量优先,不写进 YAML)

# ~/.bashrc 或 ~/.zshrc
export NVIDIA_API_KEY="nvap...port OPENROUTER_API_KEY="sk-o...port ANTHROPIC_API_KEY=***  # 可选
export CLOUDFLARE_API_TOKEN=***  # 可选,用于 CF Workers 部署
export ZAI_API_KEY=***                # 可选

安全提示config.yaml 里只写 base_urlmodel 名,绝不写 key。Key 全靠环境变量注入,进程退出即失效。

4. 验证跑通

hermes chat "你好,给我讲个笑话"   # CLI 快测
hermes tui                         # 交互式 TUI(推荐日常用)

看到回复即成功。hermes tui 里敲 /help 能看到所有内置命令。


三、技能系统:把“会的事”变成“可复用的包”

技能就是 ~/.hermes/skills/<skill-name>/SKILL.md + 可选的 references/ templates/ scripts/。安装方式极简:

# 方式 1:手动建目录
mkdir -p ~/.hermes/skills/my-skill/{references,templates,scripts}
# 写 SKILL.md,参考已有技能

# 方式 2:用技能管理命令(如果有)
hermes skill install github:user/repo#skill-name

新手必装的 5 个官方技能

技能名用途典型场景
hugo-blogHugo 博客全流程写文章、配图、部署 CF Pages
architecture-diagram生成暗黑风架构图画系统图、云拓扑、数据流
native-mcp原生 MCP 客户端接入任意 MCP Server(stdio/HTTP)
delegation子任务并行大任务拆解给多个 Subagent 同时跑
cronjob定时 Agent每日早报、监控告警、定时部署

技能加载是按需的:对话里提到相关关键词,Hermes 会自动建议加载;也可手动 skill_view(name="xxx") 拉取。

自己写技能的最小模板

~/.hermes/skills/我的技能/
├── SKILL.md          # 必须:YAML frontmatter + markdown 说明
├── references/       # 可选:参考文档、API 规范
├── templates/        # 可选:代码/配置模板
├── scripts/          # 可选:可执行脚本
└── assets/           # 可选:图片、二进制

SKILL.md 头部示例:

---
name: my-skill
description: "一句话描述技能能做什么"
version: 1.0.0
author: Your Name
tags: [tag1, tag2]
metadata:
  hermes:
    triggers: ["关键词1", "关键词2"]  # 对话触发自动加载
---

后面跟 Markdown 说明:触发条件、分步操作、避坑指南、验证步骤。写得越细,Agent 用得越准。


四、工具链实战:Terminal / Browser / File / MCP

1. Terminal Tool —— 本地 Shell 的完全控制权

# 在 Agent 里(或通过 hermes chat 触发)
terminal(command="cd /root/project && npm run build", timeout=300)
# 后台长任务(编译、部署、测试)
terminal(command="./long-build.sh", background=true, notify_on_complete=true)
# 交互式 REPL(python、node、psql)
terminal(command="python3", pty=true)

新手必知三招

  • background=true + notify_on_complete=true = 启动即忘,完成自动通知
  • process(poll) / process(wait) = 查后台进程输出
  • pty=true = 交互式 CLI(Claude Code、psql、python REPL)

2. File Tool —— 比 cat/grep/sed 更安全的文件操作

read_file(path="~/project/main.py", offset=1, limit=50)
write_file(path="~/project/new.py", content="...")
patch(path="~/project/main.py", old_string="foo", new_string="bar")
search_files(pattern="TODO", target="content", file_glob="*.py")

别再用 sed/awk——patch 模糊匹配、自动语法检查、不破坏缩进。

3. Browser Tool —— 真浏览器自动化(Camofox / CDP)

# 导航、点击、提取、截图
browser_navigate(url="https://example.com")
browser_click(selector="button.submit")
browser_extract(selector=".content")
browser_screenshot(path="/tmp/page.png")

避坑:私有页面要先登录,用 browser_navigate 进登录页,再手动或脚本填表单,Cookie 会在会话内保持。

4. 原生 MCP Client —— 零配置接入 MCP Server

config.yaml 里直接声明:

mcp:
  servers:
    - name: github
      command: npx
      args: ["-y", "@modelcontextprotocol/server-github"]
      env:
        GITHUB_PERSONAL_ACCESS_TOKEN: ${GITHUB_TOKEN}
    - name: filesystem
      command: npx
      args: ["-y", "@modelcontextprotocol/server-filesystem", "/root/workspace"]

重启 Hermes,mcp.github.list_reposmcp.filesystem.read_file 直接变成可用工具,无需额外进程管理


五、自动化进阶:Cron + Delegation + Subagents

1. Cron Job:定时跑 Agent 任务

# 创建一个每天早 8 点跑的“每日技术早报” Agent
hermes cron create \
  --name "daily-tech-brief" \
  --schedule "0 8 * * *" \
  --prompt "抓取 GitHub Trending + Hacker News 前 10,生成中文摘要发到 Telegram" \
  --skills "web,github,telegram"

两种模式

  • no_agent=false(默认):完整 Agent 循环,能推理、调工具、写文件
  • no_agent=true:纯脚本模式,stdout 直接推送,适合监控告警、心跳检测

2. Delegation / Subagents:大任务拆解并行跑

# 在主 Agent 里调用
delegate_task(tasks=[
    {"goal": "调研竞品 A 定价", "context": "...", "toolsets": ["web"]},
    {"goal": "调研竞品 B 定价", "context": "...", "toolsets": ["web"]},
    {"goal": "汇总对比表", "context": "前两个结果见上", "toolsets": ["file"]},
])
  • 每个 task 独立会话、独立终端、独立上下文
  • 并发上限默认 3(delegation.max_concurrent_children
  • 结果以消息形式回传主会话,不污染主上下文

适用场景:多源调研、多文件重构、多环境测试、并行部署。


六、多 Profile 隔离:一个机器跑多个项目互不干扰

# 创建新 profile
hermes profile create work
hermes profile create personal

# 切换
hermes profile use work
# 此时 ~/.hermes/profiles/work/ 下有独立的 skills、plugins、cron、memory

典型用法

  • work:公司项目,加内网 MCP、私有 GitHub、Jira 技能
  • personal:博客、副业、公开 API
  • experiment:乱跑实验,炸了删掉不心疼

七、避坑速查表(新手最常踩的 10 个坑)

现象原因解决
模型返回 401/429Key 没进环境变量、或配额用尽`export XXX_API_KEY=*** 重启 shell
Fallback 不生效fallback_providers 缩进错、或缺 api_mode对照文档 YAML 缩进,补全字段
Terminal 卡住长任务没加 background=true长任务必加后台+通知
Browser 登录态丢会话隔离、或 Camofox 未持久化同一 browser 会话内完成登录+操作
Skill 不自动加载triggers 关键词没写、或目录名不对目录名 = skill name,SKILL.md 里写 triggers
Cron 不执行时区不对、或 no_agent 模式脚本无输出检查 cronjob 文档,加时区、保证有输出
Subagent 返回乱码子任务没传 context 里的关键信息context 里塞完整:路径、报错、约束
Memory 爆满存了太多临时事实只存偏好、环境、纠偏;进度用 session_search
MCP Server 连不上command/args 路径错、或缺 npx -y用绝对路径,参数数组逐项写
配置改了不生效没重启 Hermes / TUI 缓存hermes restart 或重进 TUI

八、从“会用”到“会改”:把工作流沉淀为 Skill

当你重复做第三遍同样的操作时,立刻写成 Skill。模板:

# ~/.hermes/skills/我的工作流/SKILL.md
---
name: my-workflow
description: "每次发版前:跑测试 → 构建 → 部署 CF Pages → 校验域名"
triggers: ["发版", "部署", "deploy"]
---

## 步骤
1. `terminal: cd /root/project && npm test`
2. `terminal: hugo --gc --minify` (background + notify)
3. `terminal: wrangler pages deploy public/ --project-name=xxx`
4. `web: curl https://xxx.pages.dev/health` 校验

## 避坑
- Hugo 必须清理 `public/` `resources/`
- CF Pages 首次部署需在 Dashboard 绑自定义域
- 部署后 30s 内可能 522,再试一次

下次对话里说“帮我发版”,Hermes 就会自动加载这个 Skill、按步骤跑。


九、资源速查

资源地址
官方文档https://hermes-agent.nousresearch.com/docs
GitHubhttps://github.com/NousResearch/hermes-agent
技能市场(社区)https://github.com/hermes-skills/awesome
架构图源码本文顶部 /images/posts/hermes-architecture.html
配置 Schema~/.hermes/config.yaml 顶部注释

十、结语

Hermes Agent 的核心哲学只有八个字:本地优先,配置驱动

  • 没有 SaaS 绑定,数据不出机房
  • 没有魔法黑盒,config.yaml 全白盒
  • 没有 vendor lock-in,技能随时删、改、换

新手建议路径:装好 → 改配置 → 装 5 个官方技能 → 跑通 Terminal/Browser/MCP → 写第一个 Cron → 把重复工作流做成私有 Skill。大概两三天,你就能把“手动操作”变成“自动化流水线”,真正把 Agent 当成可编程的队友而不是聊天机器人。

下一步想试什么?直接在 Telegram 里喊一声,我陪你跑通。