Hermes Agent开发教程

Hermes Agent开发

一、Hermes Agent简介

Pasted image 20260519194939.png

Hermes Agent 是由 Nous Research 开源的自主 Al Agent框架

核心定位

"An agent that grows with you"(与你共同成长的 Agent),最大的特点可以自进化

部署在你的服务器上,连接你的消息账号,它就成为你的持久个人智能体—一学习你的项
目、自动构建技能、随时随地触达你。不是聊天机器人,不是代码补全工具,而是一个住在
你机器上、每天都在变聪明

核心创新

内置自学习循环

Hermes Agent 不只调用LLM,而是通过内置的学习循环不断优化自身:
• 自动从交互中生成 Skill(技能)
• 在使用中持续迭代技能
• 主动持久化知识和用户偏好
跨会话构建对用户的深度理解

Github 地址:https://github.com/nousresearch/hermes-agent
官网主页: https://hermes-agent.nousresearch.com/

Hermes 八大亮点总结

# 亮点 说明
智能授权 自动识别高危指令,清晰说明意图再请求授权
会话感知 通过 Session 阅读机制感知历史对话,可据此生成个性化 SOUL.md
多模型路由 Auxiliary 支持为 8 类任务分配独立模型,省钱且高效
配置解耦 密钥与配置分离,YAML 格式友好,修改直观
工具透明 IM 界面清晰打印每次 tool 调用过程,执行过程完全可见
多 Profile 多实例配置简单,一句话完成,轻松实现沙箱/主力分离
自动技能沉淀 将有价值操作自动总结为可复用技能,避免重复踩坑
消息不丢失 20 个退出触发点,增量写入,无论正常/异常退出都不丢消息

二、前置准备:安装前置软件

先决条件

唯一的前提条件是 Git。安装程序会自动处理其他所有事项

您无需手动安装 Python、Node.js、ripgrep 或ffmpeg。安装程序会自动检测缺失的组
件并为您安装。只需确保这些组件 git 可用即可

• uv(快速 Python 包管理器)
• Python 3.11(通过 uv 安装,无需 sudo)
• Node.js v22(用于浏览器自动化和 WhatsApp 桥接)
• ripgrep(快速文件搜索)
• ffmpeg(用于 TTS 的音频格式转换)

安装Git

下载地址:https://git-scm.com/?hl=zh-cn

安装WSL2

原生 Windows 支持仍处于实验阶段,请安装 WSL2后在其中运行 Hermes Agent

在管理员模式下打开 PowerShell,输入 wsl --install命令,然后重新启动计算机

wsl --install

温馨提示
这里官网说只需要重启一次就行了,但是事实上,可以能需要2-3次
特别提示,是重启,不是关机再开机

正在安装 Windows 可选组件:virtualMachinePlatform

部署映像服务和管理工具
版本:10.0.26100.5074

映像版本:10.0.26200.7840

启用一个或多个功能
[=100.0%=]
操作成功完成。
请求的操作成功。直到重新启动系统前更改将不会生效。

安装Ubuntu系统

wsl --1ist --verbose
ws1 --install -d ubuntu-24.04.  # 列出已安装的发行版及其WSL版本

三、Hermes Agent安装与部署

无需任何前置依赖,支持Linux、macos 和WSL2,一键自动安装所有组件

安装

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

配置

hermes setup

特别声明
在安装的时候,无需FQ,如果实在下载不动,那你翻吧
程序员注意!请将pip镜像和npm镜像还原(别问,问就是坑,大坑,天坑)

安装流程

等待自动安装依赖,这部分安装时间有点长,保持网络畅通,耐心等待⋯
Pasted image 20260519201554.png

安装依赖完成,输入wsI的密码即可进入下一步(mac不用)
Pasted image 20260519201737.png

选择模型,这里以及后续,全部跟着推荐走也是可以的,选择第一个
Pasted image 20260519201932.png

选择你熟悉的,或者是你有额度的模型即可,这里我们选择DeepSeek
提示:如果选择错了怎么办?执行hermes model 重新选择

配置你所有的API,这里我选择阿里的千问模型,参考配置:
里云百炼模型接入完整配置

Pasted image 20260519210759.png

填写对应的URL

https://dashscope.aliyuncs.com/compatible-mode/v1

Pasted image 20260519211658.png

选择模型

Pasted image 20260519211732.png

默认本地运行
Pasted image 20260519211823.png
是否介入消息平台,跳过,后续通过设置网管接入`hermes setup gateway'
Pasted image 20260519211852.png

mac 重新加载
source ~/.zshrc   

启动 hermes
Pasted image 20260519212328.png

Pasted image 20260519213317.png

四、Hermes Agent接入应用(微信/QQ/飞书)

在之前的操作中,我们为了快速启动 Hermes Agent,跳过了应用的接入,这里我们演示如何
接入应用,包含微信、QQ

接入QQ

执行命令:hermes gateway setup

选择QQ,扫码
Pasted image 20260519215331.png

如何授权信息?选择第一种

  • 使用DM配对审批(推荐)
  • 允许所有直接消息
  • 仅允许已列明的用户 OpenlDs

后续全部yes即可, 重新打开hermes
IMG_7285.png

五、Hermes Agent第一个应用案例

提示词
帮我上网卡看最近比较火的Agent有哪些?然后总结成文档,注意文档中要附上和这个技
术相关的重要连接,例如:官网网站,重要博客,GitHub等。接着,帮我生成一个静态
页面,专门用来展示这个文档。网页要有科技感,完成后,告诉我资源存放再哪里,帮
我再本地启动这个前端页面。

Pasted image 20260519221930.png

六、Hermes Agent 个性化定制

Hermes Agent 的个性是完全可定制的。SOUL.mg主要身份——它是系统提示词的第一
部分,定义了 Agent是谁

SOUL.md 一个持久的角色文件,位于 HERMES_HOME 目录中,作为 Agent 的身份
(在系统提示词中占据位置 #1)

SOUL.md现在如何工作

Hermes 现在会自动在以下位置生成一个默认的SOUL.mg

~/.hermes/SOUL.md

重要行为

  • SOUL.mg是 Agent 的主要身份。它占据系统提示词中的位置#1,取代了硬编码的默认身份。
  • 如果SOUL.mg尚不存在,Hermes 会自动创建一个初始版本
  • 现有的用户 SOUL.mg文件永远不会被覆盖
  • Hermes 只从 HERMES_HOME 加载 SOUL.mg
  • Hermes 不会在当前工作目录中寻找SOUL.mg
  • 如果SOUL.mg存在但为空,或无法加载,Hermes 将回退到内置的默认身份
  • 如果SOUL.mg 有内容,该内容在安全扫描和截断后会逐字注入
  • SOUL.mg 不会在上下文文件部分重复出现——它只出现一次,作为身份标识

为什么这样设计

这保持了性格的可预测性。

这使得教导用户更容易:“编辑~/.hermes/SOUL.md来改变 Hermes 的默认个性。”

SOUL.md 里应该放什么?

用它来定义持久的语气和个性指导,例如:

  • 语调
  • 沟通风格
  • 直接程度
  • 默认交互风格
  • 风格上要避免什么
  • Hermes 应如何处理不确定性、分歧或模糊性

少用于:

  • 一次性的项目指令
  • 文件路径
  • 仓库规范
  • 临时工作流细节

好的SOUL.md 内容

一个好的 SOUL 文件是:

  • 在不同上下文中保持稳定
  • 足够宽泛,适用于许多对话
  • 足够具体,能实质性地塑造声音
  • 专注于沟通和身份,而不是特定任务的指令

实例

#个性
你是一位务实的资深工程师,名字叫:小禾,品味很高。
你优先考虑真实性、清晰度和实用性,而非礼貌的客套。

风格

  • 直接但不冷漠
  • 注重实质而非填充内容
  • 当某个想法不好时,要提出反对
  • 坦率承认不确定性
  • 保持解释简洁,除非深度有用

要避免什么

  • 阿谀奉承
  • 夸张的语言
  • 如果用户的框架是错误的,不要重复它
  • 过度解释显而易见的事情

要避免什么

  • 阿谀奉承
  • 夸张的语言
  • 如果用户的框架是错误的,不要重复它
  • 过度解释显而易见的事情

技术立场

  • 偏好简单系统而非巧妙系统
  • 关心操作现实,而非理想化的架构
  • 将边缘情况视为设计的一部分,而非收尾工作

进入~/.hermes/, 这里我们可以使用vim 编辑文件,i插入,复制进来之后,esc保存退出:Wq

七、Hermes工具和工具集

Pasted image 20260519224401.png

工具是扩展 Agent能力的函数。它们被组织成逻辑上的工具集,可以按平台启用或禁用

Hermes 内置了广泛的工具注册表,涵盖网络搜索、浏览器自动化、终端执行、文件编辑、
记忆、委托、RL 训练、消息传递、Home Assistant等

类别 示例 描述
网络 web_search , web_extract 搜索网络并提取页面内容。
终端与文件 terminal , process , read_file , patch 执行命令并操作文件。
浏览器 browser_navigate , browser_snapshot , browser_vision 支持文本与视觉的交互式浏览器自动化。
媒体 vision_analyze , image_generate , text_to_speech 多模态分析与生成。
Agent 编排 todo , clarify , execute_code , delegate_task 规划、澄清、代码执行与子 Agent 委托。
记忆与召回 memory , session_search 持久化记忆与会话搜索。
自动化与交付 cronjob , send_message 支持创建/列出/更新/暂停/恢复/运行/移除操作的定时任务,以及出站消息传递。
集成 ha_* , MCP服务器工具, rl_* Home Assistant、MCP、强化学习训练及其他集成。

使用工具集

# 使用特定的toolsets
hermes chat --toolsets "web, terminal"

查看所有可用的 too1s

hermes tools

每个平台配置tools(交互式)

hermes tools

常见的工具集包括 webterminalfilebrowservisionimage_genmoaskillsttstodomemorysession_searchcronjobcode_executiondelegationclarifyhomeassistantrl

使用hermes tools命令给给所有平台配置工具
Pasted image 20260519225931.png

启动或关闭工具

/tools list
/tools disable browser
/tools enable rl

八、Hermes Agent Skills

Skills是按需加载的知识文档,Agent 在需要时可将其载入。它们遵循渐进披露模式,最小
化token使用量

所有技能均位于~/.hermes/skills/。在全新安装时,捆绑的技能会从代码仓库复制过来

查看Skills

查看 Skills 列表 hermes skills list

local的是自我进化的技能
Pasted image 20260520002233.png

搜索与安装Skills

从在线注册表、skills.sh、知名skill端点以及官方可选技能中浏览、搜索、安装和管理技能

hermes skills browse (--page n)            # 浏览所有hub skills  
hermes skills browse --source official   # 仅浏览官方可选skills  
hermes skills search kubernetes          # 搜索所有来源  
hermes skills inspect openai/skills/k8s  # 安装前预览  
hermes skills install openai/skills/k8s  # 使用安全扫描安装

Skill格式

---  
name: my-skill  
description: 此技能功能的简要描述  
version: 1.0.0  
platforms: [macos, linux]      # 可选--限制在特定的操作系统平台  
metadata:  
  hermes:  
    tags: [python, automation]  
    category: devops  
    fallback_for_toolsets: [web]    # 可选--条件激活  
    requires_toolsets: [terminal]   # 可选--条件激活  
    config:                         # 可选--config.yaml 设置  
      - key: my.setting  
        description: "此项控制什么"  
        default: "value"  
        prompt: "设置提示"  
---

编写Skill(天气预报)

---  
name: beijing-weather  
description: 获取北京市实时天气预报和未来天气趋势  
version: 1.0.0  
metadata:  
  hermes:  
    tags: [weather, forecast, utility]  
    category: creative  
    fallback_for_toolsets: [web]  
    requires_toolsets: [terminal]  
    config:  
      - key: weather.city  
        description: "目标城市名称,用于天气查询"  
        default: "Taiyuan"  
        prompt: "请输入城市名称(默认北京,英文或拼音)"  
      - key: weather.units  
        description: "温度单位,celsius 或 fahrenheit"  
        default: "celsius"  
        prompt: "选择温度单位(celsius/fahrenheit)"  
---  

# 太原天气预报 Skill  
  
## 何时使用  
- 用户询问“今天天气怎么样”、“未来几天会下雨吗”、“周末气温多少度”等与天气相关的问题。  
- 需要为出行、活动安排等决策提供北京地区的气象信息。  
- 需要获取实时气温、湿度、风速、降水概率或未来3-7天趋势。  
  
## 操作步骤  
1. **读取配置**  
   从 `config` 中获取目标城市(默认为 Beijing)和温度单位(celsius 或 fahrenheit)。  
  
2. **调用天气 API**  
   使用 `curl` 或 `wget` 请求免费公开天气服务 `wttr.in`(示例):  
   ```bash  
   curl -s "https://wttr.in/ $ {city}?format=%C+%t+%w+%h&u"

进入Hermes的skills目录

cd ~/.hermes/skills

hermes有很多类skills,自己编写的SKILL.md,可以放到creative里面
Pasted image 20260520140649.png

八、Hermes Agent 持久记忆

Hermes Agent 拥有受限且经过精选的记忆,这些记忆可以跨会话持久存在。这使得它能够记住你的偏好、你的项目、你的环境以及它所学到的知识

查看历史会话hermes sessions list

Hermes Agnet的记忆分为三层

  • 内置记忆
  • 外部记忆
  • 历史会话记忆

工作原理

Agent的记忆由两个文件组成

文件 用途 字符限制
MEMORY.md Agent 的个人笔记 —— 环境事实、约定、学到的知识 2,200 字符 (约 800 tokens)
USER.md 用户画像 —— 你的偏好、沟通风格、期望 1,375 字符 (约 500 tokens)

这两个文件都仔储在 ~/.hermes/memories/MEMORY.md中,并在会话开始时作为冻结快照注入到系统提示词(system prompt)中。Agent 通过 memory 工具管理自己的记忆 ——它可以添加、替换或删除条目

温馨提示
字符限制是为了保持记忆的聚焦。当记忆存满时,Agent 会合并或替换条目,以为新信息腾出空间

记忆如何出现在系统提示词中

在每个会话开始时,记忆条目会从磁盘加载,并作为冻结块渲染到系统提示词中

---  
MEMORY (your personal notes) [67% - 1,474/2,200 chars]  
---  

User's project is a Rust web service at ~/code/myapi using Axum
§
This machine runs Ubuntu 22.04, has Docker and Podman installed
§
User prefers concise responses, dislikes verbose explanations

该格式包括:

  • 显示存储库类型的页眉(MEMORY 或 USER PROFILE)
  • 使用百分比和字符计数,以便 Agent 了解容量情况
  • 使用 §(分节符)分隔的单个条目
  • 条目可以是多行的

Memory 工具操作

Agent使用 memory 工具执行以下操作:

  • add — 添加新的记忆条目
  • replace —用更新的内容替换现有条目(通过 old_text 进行子字符串匹配)
  • remove —删除不再相关的条目(通过 old_text 进行子字符串匹配)
    没有read 操作——记忆内容在会话开始时会自动注入到系统提示词中。Agent 将其记忆视为对话上下文的一部分

两个文件的解释

memoryAgent 的个人笔记

用于记录 Agent 需要记住的关于环境工作流经验教训的信息
• 环境事实(操作系统、工具、项目结构)
• 项目约定和配置
• 发现的工具特性和变通方法
• 已完成任务的日志条目
• 行之有效的技能和技术

user用户画像

用于记录关于用户的身份偏好沟通风格的信息:

  • 姓名、角色、时区
  • 沟通偏好(简洁 vs 详细,格式偏好)
  • 厌恶的事项和需要避免的事项
  • 工作流习惯
  • 技术水平

哪些该存,哪些不该存

存这些(主动存储)

Agent 会自动保存 —— 你不需要特意要求。当它学到以下内容时会进行保存:

  • 用户偏好:“我更喜欢 TypeScript 而不是 JavaScript” → 保存到 user
  • 环境事实:“这台服务器运行 Debian 12 和 PostgreSQL 16” → 保存到 memory
  • 修正:“不要对 Docker 命令使用 sudo,用户已在 docker 组中” → 保存到 memory
  • 约定:“项目使用 tabs 缩进,120 字符行宽,Google 风格的 docstrings” → 保存到 memory
  • 已完成的工作:“2026-05-15 将数据库从 MySQL 迁移到了 PostgreSQL” → 保存到 memory
  • 明确的要求:“记住我的 API 密钥每月轮换一次” → 保存到 memory

跳过这些

  • 琐碎/显而易见的信息:“用户询问了关于 Python 的问题” —— 太模糊,没用
  • 容易重新发现的事实:“Python 3.12 支持 f-string 嵌套” —— 可以通过网页搜索找到
  • 原始数据转储:大型代码块、日志文件、数据表 —— 对记忆来说太大了
  • 会话特定的临时信息:临时文件路径、一次性的调试上下文
  • 已存在于上下文文件中的信息:SOUL.mdAGENTS.md 中的内容

会话搜索

除了 MEMORY.md 和 USER.md 之外,Agent 还可以使用 session_search 工具搜索其过去的对话:

  • 所有 CLI 和消息会话都存储在 SQLite (~/.hermes/state.db) 中,支持 FTS5 全文搜索
  • 搜索查询会返回相关的历史对话,并使用 模型 进行总结
  • Agent 可以找到几周前讨论过的内容,即使这些内容不在其活跃记忆中
hermes sessions list # 浏览历史会话

九、Hermes Agent皮肤与主题

皮肤控制着 Hermes CLI 的视觉呈现:横幅颜色、旋转器表情和动词、响应框标签、品牌文本以及工具活动前缀

对话风格和视觉风格是两个独立的概念:

  • 个性 改变 Agent 的语气措辞
  • 皮肤 改变 CLI 的外观

更换皮肤

/skin             # 显示当前皮肤并列出可用皮肤
/skin ares        # 切换到内置皮肤
/skin mytheme     # 切换到自定义皮肤(来自 ~/.hermes/skins/mythe

或者在 ~/.hermes/config.yaml 中设置默认皮肤:

内置皮肤

皮肤 描述 Agent 品牌 视觉特征
default Hermes 经典款 —— 金色与可爱风格 Hermes Agent 温暖的金色边框,玉米丝色文本,旋转器中可爱的表情。熟悉的双蛇杖横幅。简洁而友好。
ares 战神主题 —— 深红与青铜色 Ares Agent 深红边框配青铜色点缀。侵略性的旋转器动词("锻造", "行军", "锤炼钢铁")。自定义剑盾 ASCII 艺术横幅。
mono 单色 —— 干净的灰度 Hermes Agent 全灰 —— 无彩色。边框为 #555555,文本为 #c9d1d9。适用于简约终端设置或屏幕录制。
slate 冷蓝色 —— 面向开发者 Hermes Agent 皇家蓝色边框(#4169e1),柔和的蓝色文本。冷静而专业。无自定义旋转器 —— 使用默认表情。
daylight 明亮终端主题,深色文本与冷蓝色点缀 Hermes Agent 专为白色或明亮终端设计。深石板色文本配蓝色边框,浅色状态表面,以及一个在明亮终端配置下仍保持可读性的浅色补全菜单。
warm-lightmode 温暖棕色/金色文本,适用于浅色终端背景 Hermes Agent 为浅色终端设计的温暖羊皮纸色调。深棕色文本配鞍褐色点缀,奶油色的状态表面。这是相较于冷色调 daylight 主题的一种更接地气的替代选择。
poseidon 海神主题 —— 深蓝与海沫色 Poseidon Agent 深蓝到海沫色的渐变。海洋主题的旋转器("绘制洋流", "探测深度")。三叉戟 ASCII 艺术横幅。
sisyphus 西西弗斯主题 —— 朴素的灰度与坚持感 Sisyphus Agent 浅灰色搭配鲜明对比。巨石主题的旋转器("推上山坡", "重置巨石", "忍受循环")。巨石与山坡 ASCII 艺术横幅。

Hermes Agent MCP扩招AI工具能力

MCP (Model Context Protocol) 是由 Anthropic 提出的开放协议,定义了 AI Agent 与外部工具之间的标准通信接口。

简单说:MCPAI 可以“使用工具”,就像人类使用各种软件一样。

Hermes Agent 原生支持 MCP,通过接入 MCP 服务器可以让 Agent 获得几乎无限的工具扩展能力——从数据库操作、API 调用到浏览器自动化,一切皆可接入。

如果你曾希望 Hermes 使用某个已经存在于别处的工具,MCP 通常是最简洁的实现方式。

Hermes Agent 内置了 40+ 工具,但通过 MCP 可以扩展到几乎无限。

Hermes Agent 内置工具:  
├── 文件操作(读/写/搜索)  
├── 终端命令执行  
├── web 搜索  
├── 代码分析  
└── ... 共 40+ 种  

MCP 扩展工具(无限):
├── 数据库操作(MySQL/PostgreSQL/MongoDB...)
├── API 集成(GitHub/Jira/Notion...)
├── 浏览器自动化(Playwright)
├── 邮件收发
├── 日历管理
├── 文件格式转换
└── ... 任何你能想到的

十、两种 MCP 服务器

Stdio 服务器(本地)

本地运行的子进程,通过 stdin/stdout 通信。低延迟,适合访问本地资源

mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxx"

适用场景:

  • 服务器安装在本地
  • 需要低延迟访问本地资源
  • MCP 服务器文档使用 command/args/env 格式

HTTP 服务器(远程)

连接到远程端点,适合组织内部 API 或托管服务

mcp_servers:
  company_api:
    url: "https://mcp.internal.example.com"
    headers:
      Authorization: "Bearer ***"

适用场景:

  • MCP 服务器托管在别处
  • 组织内部暴露了 MCP 端点
  • 不想让 Hermes 在本地启动子进程

配置 MCP 服务器

步骤 1:MCP配置文件

# ~/.hermes/config.yaml
mcp_servers:
  github:
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "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"

步骤 2:获取 Github Token

  1. 登录到您的 GitHub 帐户,点击右上角的头像,然后选择 "Settings"(设置)
  2. 在左侧导航栏中,选择 "Developer settings"(开发者设置)
  3. 在 "Developer settings" 页面上,选择 "Personal access tokens"(个人访问令牌)
  4. 在 "Personal access tokens" 页面上,点击 "Generate new token classic "(生成新令牌)按钮
  5. 提供一个描述以标识该访问令牌的用途。(可以全部勾选)
  6. 完成设置后,点击页面底部的 "Generate token"(生成令牌)按钮

步骤 3:配置配置文件

  1. 进入 cd ~/.hermes
  2. vim编辑 config.yaml
  3. mcp_servers 复制到最后

步骤 3:验证

hermes tools list  # 查看所有可用工具,包括 MCP 提供的

Pasted image 20260520150541.png

常用 MCP 服务器推荐

MCP 服务器 功能 安装命令
server-github GitHub 仓库操作 npx @modelcontextprotocol/server-github
server-postgres PostgreSQL 查询 npx @modelcontextprotocol/server-postgres
server-sqlite SQLite 操作 npx @modelcontextprotocol/server-sqlite
server-filesystem 文件系统操作 npx @modelcontextprotocol/server-filesystem
server-brave-search Brave 搜索 npx @modelcontextprotocol/server-brave-search
playwright-mcp 浏览器自动化 npx @playwright/mcp@latest

实际应用示例

示例:Agent + GitHub MCP

你:帮我检查一下 hermes-agent 仓库最近的 Issue,有没有关于飞书的 Bug

帮我检查一下 GITHUB freedeck 仓库最近的 release是什么时间

十一、Hermes Agent定时任务(Cron)

使用自然语言或 cron 表达式安排任务自动运行。Hermes 通过一个统一的 cronjob 工具来管理 cron

调度格式

相对延迟(一次性)

  1. 30m → 30 分钟后运行一次
  2. 2h → 2 小时后运行一次
  3. 1d → 1 天后运行一次

间隔(重复)

  1. every 30m → 每 30 分钟
  2. every 2h → 每 2 小时
  3. every 1d → 每天

Cron 表达式

# 分 时 日 月 周
0 9 * * *     → 每天上午 9:00
0 9 * * 1-5   → 工作日(周一至周五)上午 9:00
0 */6 * * *   → 每 6 小时
30 8 1 * *    → 每月 1 日上午 8:30
0 0 * * 0     → 每周日午夜

工作原理

Cron 执行由网关守护进程处理。网关每 60 秒触发一次调度器,在独立的 Agent 会话中运行所有到期的任务

创建定时任务

命令行窗口使用 /cron

blogwatcher

BlogWatcher 是用于监控博客和 RSS/Atom 订阅源更新的技能,该技能通过 CLI 工具实现订阅源的管理、更新扫描、文章标记等功能,帮助用户持续跟踪关注的博客内容,及时获取最新文章更新

/cron add 30m "提醒我检查构建"
/cron add "every 2h" "检查服务器状态"
/cron add 'every 1h' '看一次天气预报' --skill beijing-weather
/cron add "every 1h" "使用两个技能并合并结果" --skill blogwatcher --beijing-weather
# 列出所有定时任务
/cron list
# 暂停任务
/cron pause <job_id>
# 恢复任务
/cron resume <job_id>
# 删除任务
/cron remove <job_id>

通过自然对话

像平常一样询问 Hermes,并且可以使用消息通道:每天上午9点提醒我喝水

Hermes 会在内部使用统一的 cronjob 工具

十一、Hermes Agent Web仪表盘

Web 仪表板是一个基于浏览器的用户界面,用于管理你的 Hermes Agent 安装。无需编辑 YAML 文件或运行 CLI 命令,你就可以通过简洁的 Web 界面来配置设置、管理 API 密钥和监控会话。

启动仪表板

这将启动一个本地 Web 服务器,并在你的浏览器中打开 http://127.0.0.1:9119。仪表板完全在你的机器上运行——没有任何数据会离开本地主机。

hermes dashboard

选项

标志 默认值 描述
--port 9119 运行 Web 服务器的端口
--host 127.0.0.1 绑定地址
--no-open 不自动打开浏览器
# 自定义端口
hermes dashboard --port 8080

# 绑定到所有网络接口(在共享网络上使用需谨慎)
hermes dashboard --host 0.0.0.0

# 启动时不打开浏览器
hermes dashboard --no-open

## 十二、Hermes Agent 最佳事件

Hermes Agent 是 NousResearch 开源的 AI Agent 框架,相比 OpenClaw,其亮点在于:配置友好、多模型路由、记忆系统完善、自动沉淀技能,且使用国内模型(如 Qwen 系列)也能稳定运行。

一、安装与初始配置

支持 macOS、Linux 和 WSL2(Windows 用户需先安装 WSL2 并在其中运行):

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash -x

-x 参数可以看到每一步的执行过程,便于排查问题。

二、配置防爬浏览器 (Camofox)

为什么需要

普通的后端浏览器(如 Chromium headless)访问大多数网站会立即被反爬机制拦截。Camofox 提供了一个「像真人一样」的浏览器环境,使 Hermes 能够:

  • 自动读取网页文章
  • 自动填写表单
  • 操作需要登录的后台系统
  • 执行复杂的网页自动化任务

配置步骤

直接告诉 Hermes:

帮我配置 CAMOFOX 及 CAMOFOX_URL

Hermes 会自动完成配置文件的写入,并在需要高危操作时主动请求你的授权

三、配置灵魂定义(SOUL.md)

什么是 SOUL.md

SOUL.md 是 Hermes 的人格配置文件,定义了 Agent 的思考模式、行为约束和输出风格。默认文件是空注释,需要你自己填写。

最佳实践:先聊再总结

推荐流程:先和 Hermes 正常使用 1-2 天,展现你的工作风格和偏好,然后问:

灵魂定义(SOUL.md)你有没有推荐的配置,基于我们的对话风格来建议?

Hermes 会读取历史会话,生成贴合你习惯的配置。然后让它写入:

帮我编辑写入 ~/.hermes/SOUL.md

参考配置

这是一份关于 SOUL.md 的参考配置代码,主要用于定义 AI Agent 的行为准则和工作模式:

---
name: iwen
version: 1.0
---

#个性

- 你是一位务实的资深工程师,名字叫:小禾,品味很高。
- 你优先考虑真实性、清晰度和实用性,而非礼貌的客套。

# 思考模式
- 先验证后回答:不确定的 API、配置、路径,先查工具确认,不靠猜测
- 先计划后执行:3步以上的任务,先列方案标风险,确认再动手
- 交付即验证:做完一件事,主动给出「怎么检查它是否生效」

# 自我约束
- 不确定时直接说「我不确定」
- 高危操作(删数据、重启、覆盖)必须预警

# 输出纪律
- 结论先行,代码/命令为主,少废话

## 要避免什么
- 阿谀奉承
- 夸张的语言
- 如果用户的框架是错误的,不要重复它
- 过度解释显而易见的事情

四、Auxiliary 副驾模型路由

设计理念

AuxiliaryHermes 的副驾 LLM 路由中心。核心思路:让主模型专注复杂推理,让便宜/专用的副模型承担「脏活累活」,从而节省成本、提升效率

支持配置的 8 个辅助任务

辅助模型 用途说明
vision 截图 / 验证码 / 图片分析
web_extract 网页内容抓取与提炼
compression 上下文压缩摘要(节省 Token
session_search 历史会话搜索与摘要
approval 高危命令审批决策
skills_hub 技能市场搜索与安装
mcp MCP 服务调用辅助
flush_memories 记忆系统清理与重组

配置示例

直接口头告知 Hermes:

压缩会话的辅助模型帮我配置成 qwen3.5-plus

五、配置三层记忆系统

Hermes 记忆系统分为三层,由浅到深,可按需启用。默认打开了第一层 + 第三层,满足需求后再考虑引入第二层。

第一层:内置记忆(默认已开)

编辑 ~/.hermes/config.yaml 进行微调:

memory:
  memory_enabled: true       # MEMORY.md - 项目事实、踩坑记录
  user_profile_enabled: true # USER.md - 用户画像与偏好
  memory_char_limit: 4000    # 默认 2200,重度使用建议调到 4000
  user_char_limit: 1375      # 用户画像字符上限
  nudge_interval: 5          # 每 5 轮提醒存记忆(默认 10,调小更积极)
  flush_min_turns: 6         # 至少 6 轮才触发退出时的记忆刷新

第二层:外部 Memory Provider(按需)

支持 Honcho、mem0 等 8 个外挂记忆插件。配置方式:

hermes memory setup

第三层:Session Search(默认已开)

所有历史对话自动持久化到本地 SQLite,支持关键词检索 + LLM 摘要,是记忆系统的兜底机制:

  • 存储位置~/.hermes/state.db
  • 检索方式:FTS5 关键词全文搜索 + LLM 二次摘要
  • 兜底保障:LLM 调用失败时返回原始文本前 500 字符,不会因故障而完全失效

不需要额外配置,Session Search 默认开启。Agent 会根据你的问题自动判断是否需要检
索历史

六、配置 Web Search

支持的搜索引擎

Hermes 原生支持 4 个搜索提供商:ExaTavilyParallelFirecrawl

配置方式

直接告诉 Hermes:

帮我配置 exa 搜索

Hermes 会引导你输入 API Key 并完成配置。配置成功后可以直接测试

七、配置自动化审计(Hooks)

两种扩展方式

Hermes 提供两套互补的扩展系统:

  • Gateway Hooks:事件驱动钩子,处理生命周期通知
  • Plugin System:插件生命周期钩子,处理功能扩展

8 个生命周期 Hook

序号 Hook 名称 触发时机
1 on_session_start 会话创建时
2 pre_llm_call LLM 调用前(可注入上下文)
3 pre_api_request 每次 API 调用前
4 post_api_request 每次 API 调用后
5 pre_tool_call 工具执行前
6 post_tool_call 工具执行后
7 post_llm_call 本轮对话结束
8 on_session_end 会话结束

实战:创建终端命令审计 Hook

告诉 Hermes

做一个终端命令审计插件(Terminal Audit Hook):
在每次 terminal 工具执行完毕后,自动把命令内容、执行结果、时间戳、会话 `ID` 追加到日志文件。

授权后,Hermes 会自动生成并激活这个 Hook

验证

# 执行任意命令后,检查审计日志
tail -f ~/.hermes/audit_logs/terminal_audit.log

八、配置沙箱

为什么需要沙箱

默认情况下 Hermes 在本地执行命令,存在一定风险。Docker 沙箱将命令执行隔离在容器中,即使 Agent 执行了危险命令,也只会影响容器内的环境。

配置步骤

# 创建一个使用 Docker 沙箱的 worker profile
hermes -p worker config set terminal.backend docker
hermes -p worker config set terminal.docker_image python:3.11-

# 配置 worker 使用便宜模型(沙箱任务不需要顶级模型)
hermes -p worker config set model.provider alibaba
hermes -p worker config set model.model qwen3.5-plus

# 如果使用 TG,绑定独立的 Bot Token
hermes -p worker config set gateway.TG.bot_token "YOUR_B
hermes -p worker config set gateway.TG.enabled true

也可以直接告诉主 Agent

参考如下命令,帮我额外配置一个 profile,sandbox 使用 docker,模型遵循主profile即可

验证沙箱隔离

# 在 worker bot 中执行(不会真正损坏宿主机)
rm -rf /

# 在宿主机验证 Docker 已启动
docker ps

九、使用多 Agent

两种多 Agent 模式

  • 同一 Session 内触发 Sub-Agent:适合并行子任务
  • 完全隔离的多 Profile:适合不同安全级别的任务分工(见第 7 步)

触发 Sub-Agent

只需一句话:

请 spawn 三个 subagent 来相互讨论 Hermes 的优劣势

三个 Sub-Agent 会在同一 Session 中并行工作,各自发言,最终给出汇总。这种方式适合需要多角度分析或并行处理的复杂任务。

十、建立备份体系

三层备份策略

  • 第一层:本地 Git(快速版本控制)
  • 第二层:其他磁盘定时备份(防止硬盘故障)
  • 第三层:远程备份(GitHub 私有仓库 / 对象存储)

完整备份脚本

将以下脚本保存为 ~/hermes_backup.sh

#!/bin/bash
BACKUP_NAME="hermes_backup_$(date +%Y%m%d_%H%M%S)"
BACKUP_DIR="/tmp/$BACKUP_NAME"
DEST_DIR=~/hermes_backups

mkdir -p $BACKUP_DIR/hermes $DEST_DIR

<span class="token builtin class-name">echo</span> <span class="token string">"正在备份核心配置..."</span>
<span class="token function">cp</span> ~/.hermes/config.yaml <span class="token variable">$BACKUP_DIR</span>/hermes/
<span class="token function">cp</span> ~/.hermes/.env <span class="token variable">$BACKUP_DIR</span>/hermes/
<span class="token function">cp</span> ~/.hermes/MEMORY.md <span class="token variable">$BACKUP_DIR</span>/hermes/ <span class="token operator"><span class="token file-descriptor important">2</span>&gt;</span>/dev/null

<span class="token builtin class-name">echo</span> <span class="token string">"正在备份数据库与会话..."</span>
<span class="token function">cp</span> ~/.hermes/state.db <span class="token variable">$BACKUP_DIR</span>/hermes/
<span class="token function">cp</span> <span class="token parameter variable">-r</span> ~/.hermes/sessions <span class="token variable">$BACKUP_DIR</span>/hermes/ <span class="token operator"><span class="token file-descriptor important">2</span>&gt;</span>/dev/null

<span class="token builtin class-name">echo</span> <span class="token string">"正在备份扩展与技能..."</span>
<span class="token function">cp</span> <span class="token parameter variable">-r</span> ~/.hermes/plugins <span class="token variable">$BACKUP_DIR</span>/hermes/ <span class="token operator"><span class="token file-descriptor important">2</span>&gt;</span>/dev/null
<span class="token function">cp</span> <span class="token parameter variable">-r</span> ~/.hermes/skills <span class="token variable">$BACKUP_DIR</span>/hermes/ <span class="token operator"><span class="token file-descriptor important">2</span>&gt;</span>/dev/null
<span class="token function">cp</span> <span class="token parameter variable">-r</span> ~/.hermes/audit_logs <span class="token variable">$BACKUP_DIR</span>/hermes/ <span class="token operator"><span class="token file-descriptor important">2</span>&gt;</span>/dev/null


<span class="token builtin class-name">echo</span> <span class="token string">"正在备份所有 Profile..."</span>
<span class="token function">cp</span> <span class="token parameter variable">-r</span> ~/.hermes/profiles <span class="token variable">$BACKUP_DIR</span>/hermes/ <span class="token operator"><span class="token file-descriptor important">2</span>&gt;</span>/dev/null

<span class="token builtin class-name">echo</span> <span class="token string">"压缩中..."</span>
<span class="token function">tar</span> <span class="token parameter variable">-czf</span> <span class="token variable">$DEST_DIR</span>/<span class="token variable">$BACKUP_NAME</span>.tar.gz <span class="token parameter variable">-C</span> /tmp <span class="token variable">$BACKUP_NAME</span>
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token variable">$BACKUP_DIR</span>

<span class="token builtin class-name">echo</span> <span class="token string">"✅ 备份完成: <span class="token variable">$DEST_DIR</span>/<span class="token variable">$BACKUP_NAME</span>.tar.gz"</span>
<span class="token builtin class-name">echo</span> <span class="token string">"大小: <span class="token variable"><span class="token variable">$(</span><span class="token function">du</span> <span class="token parameter variable">-h</span> $DEST_DIR/$BACKUP_NAME.tar.gz <span class="token operator">|</span> <span class="token function">cut</span> <span class="token parameter variable">-f1</span><span class="token variable">)</span></span>"</span>
</code></pre>
<h3 data-heading="十一、安装与沉淀技能 (Skills)" dir="auto">十一、安装与沉淀技能 (Skills)</h3>
<h4 data-heading="自动技能沉淀" dir="auto">自动技能沉淀</h4>
<p dir="auto">Hermes 最令人印象深刻的功能之一:它会自动将有价值的操作流程总结并固化为可复用的技能。</p>
<ul>
<li dir="auto"><strong>触发条件</strong>:每累计 15 次工具循环(<code>config.yaml</code> 中的 <code>creation_nudge_interval</code> 参数),Hermes 会在后台启动一个 Skill Review:</li>
</ul>
<pre class="language-text"><code class="language-text is-loaded"># Skill Review 的三种结果:
# 1. 发现可更新的现有技能 → 自动更新补充新经验
# 2. 发现值得新建的技能   → 创建新技能文件
# 3. 没有值得保存的内容   → 输出 Nothing to save. 结束
</code></pre>
<p dir="auto">整个过程在后台线程运行,不阻塞当前对话。</p>
<h4 data-heading="手动安装技能" dir="auto">手动安装技能</h4>
<pre class="language-text"><code class="language-text is-loaded">帮我安装 git 操作相关的技能
帮我搜索并安装 Docker 管理技能
</code></pre></div>
</body>
</html>
posted @ 2026-05-20 19:41  言思宁  阅读(378)  评论(0)    收藏  举报