Hermes Agent开发教程
一、Hermes Agent简介
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镜像还原(别问,问就是坑,大坑,天坑)
安装流程
等待自动安装依赖,这部分安装时间有点长,保持网络畅通,耐心等待⋯
安装依赖完成,输入wsI的密码即可进入下一步(mac不用)
选择模型,这里以及后续,全部跟着推荐走也是可以的,选择第一个
选择你熟悉的,或者是你有额度的模型即可,这里我们选择DeepSeek
提示:如果选择错了怎么办?执行hermes model 重新选择
配置你所有的API,这里我选择阿里的千问模型,参考配置:阿
里云百炼模型接入完整配置
填写对应的URL
https://dashscope.aliyuncs.com/compatible-mode/v1
选择模型
默认本地运行
是否介入消息平台,跳过,后续通过设置网管接入`hermes setup gateway'
mac 重新加载
source ~/.zshrc
启动 hermes
四、Hermes Agent接入应用(微信/QQ/飞书)
在之前的操作中,我们为了快速启动 Hermes Agent,跳过了应用的接入,这里我们演示如何
接入应用,包含微信、QQ
接入QQ
执行命令:hermes gateway setup
选择QQ,扫码
如何授权信息?选择第一种
- 使用DM配对审批(推荐)
- 允许所有直接消息
- 仅允许已列明的用户 OpenlDs
后续全部yes即可, 重新打开hermes
五、Hermes Agent第一个应用案例
提示词
帮我上网卡看最近比较火的Agent有哪些?然后总结成文档,注意文档中要附上和这个技
术相关的重要连接,例如:官网网站,重要博客,GitHub等。接着,帮我生成一个静态
页面,专门用来展示这个文档。网页要有科技感,完成后,告诉我资源存放再哪里,帮
我再本地启动这个前端页面。
六、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工具和工具集
工具是扩展 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
常见的工具集包括 web、terminal、file、browser、vision、image_gen、moa、skills、tts、todo、memory、session_search、cronjob、code_execution、delegation、clarify、homeassistant 和 rl。
使用hermes tools命令给给所有平台配置工具
启动或关闭工具
/tools list
/tools disable browser
/tools enable rl
八、Hermes Agent Skills
Skills是按需加载的知识文档,Agent 在需要时可将其载入。它们遵循渐进披露模式,最小
化token使用量
所有技能均位于~/.hermes/skills/。在全新安装时,捆绑的技能会从代码仓库复制过来
查看Skills
查看 Skills 列表 hermes skills list
local的是自我进化的技能
搜索与安装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里面
八、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 将其记忆视为对话上下文的一部分
两个文件的解释
memory 一 Agent 的个人笔记
用于记录 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.md和AGENTS.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 与外部工具之间的标准通信接口。
简单说:MCP 让 AI 可以“使用工具”,就像人类使用各种软件一样。
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
- 登录到您的
GitHub帐户,点击右上角的头像,然后选择 "Settings"(设置) - 在左侧导航栏中,选择 "
Developer settings"(开发者设置) - 在 "
Developer settings" 页面上,选择 "Personal access tokens"(个人访问令牌) - 在 "
Personal access tokens" 页面上,点击 "Generate new token classic"(生成新令牌)按钮 - 提供一个描述以标识该访问令牌的用途。(可以全部勾选)
- 完成设置后,点击页面底部的 "
Generate token"(生成令牌)按钮
步骤 3:配置配置文件
- 进入
cd ~/.hermes - vim编辑
config.yaml - 将
mcp_servers复制到最后
步骤 3:验证
hermes tools list # 查看所有可用工具,包括 MCP 提供的
常用 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
调度格式
相对延迟(一次性)
30m→ 30 分钟后运行一次2h→ 2 小时后运行一次1d→ 1 天后运行一次
间隔(重复)
every 30m→ 每 30 分钟every 2h→ 每 2 小时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 副驾模型路由
设计理念
Auxiliary 是 Hermes 的副驾 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 个搜索提供商:Exa、Tavily、Parallel、Firecrawl
配置方式
直接告诉 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>></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>></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>></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>></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>></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>></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>




















浙公网安备 33010602011771号