初识 Hermes 及工作中的简单应用
Hermes Agent --- "The self-improving AI agent."
运行越久 → 学习越多 → 能力越强
什么是 Hermes Agent
Hermes Agent 是由 Nous Research 推出的开源 AI Agent 框架 ------ 不是聊天机器人,也不是 IDE Copilot,而是:
能够长期运行、持续学习、可部署到任意环境中的自主智能体。
传统 AI vs Hermes 模式
❌ 传统 AI 产品
用户输入 → Prompt → LLM → 结果
单向、无记忆、无成长。
✅ Hermes 模式
用户输入 → 构建上下文 → LLM 决策 → 调用工具 → 获得结果
→ 更新记忆 → 沉淀技能 → 输出
Hermes 更接近: AI 员工、AI 运维助手、AI 研发代理、自动化执行系统 ------ 而非简单的聊天工具。
核心特性
① 自学习(Learning Loop)
这是 Hermes 最大特色 ------ 运行越久,学习越多,能力越强。
能力来源:
- 自动记录经验
- 创建可复用技能(Skill)
- 使用中持续优化
- 跨会话记忆
- 用户建模
闭环流程:
执行 → 记录 → 提炼 → 形成技能 → 再次使用 → 能力增强
正向反馈循环 ------ 用越久越聪明。
② Memory(长期记忆)
| 普通 Chat | Hermes |
|---|---|
| 上下文结束 → 遗忘 | 会话结束 → 持久保存 → 下次继续 |
支持与价值:
- 用户偏好 / 历史任务 / 工作上下文 / 长期知识
- 减少重复 Prompt
- 个性化交互
- 支撑长周期任务(数天~数周)
③ Skills(技能系统)
Skill = Agent 的程序性记忆,将反复操作沉淀为可复用资产。
生成周报
→ 收集数据
→ 分析变化
→ 输出 Markdown
未来:调用技能 → 一句话自动完成。
技能来源:
- 📁 本地定义 :项目级或用户级
SKILL.md - 🌐 社区共享:复用他人沉淀的技能
- 🤖 自动生成:从反复操作中自动提炼
④ Tool Calling(工具系统)
| 类别 | 示例 |
|---|---|
| Web | web_search |
| 文件 | read_file |
| Shell | terminal |
| 浏览器 | browser |
| 自动化 | process |
| Agent | subagent |
| Memory | memory |
| 通信 | message |
工具组合 → 完整闭环:
搜索 → 分析 → 写代码 → 运行 → 修复 → 提交
Hermes 可自主组合工具,从搜索到提交形成完整工作闭环。
⑤ Multi-Agent(多 Agent 协作)
架构:
Master Agent
│
├── Research Agent
├── Coding Agent
├── Review Agent
└── Deploy Agent
特点:
- ⚡ 并行执行:多个 Agent 同时工作,互不阻塞
- 🔒 隔离上下文:每个 Agent 独立上下文,互不干扰
- 📈 提升吞吐:复杂任务拆解为并行子任务
常见运行模式
终端模式:
bash
hermes # CLI 交互
hermes --tui # 图形终端
消息平台接入: Telegram · Discord · Slack · Teams · WhatsApp · ...
消息平台 → Hermes Gateway → 工具执行 ------ 在常用聊天工具中直接使用 AI Agent。
安装与启动
安装:
bash
# Linux / macOS
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# Windows
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
初始化 & 启动:
bash
hermes setup --portal # 初始化
hermes # 启动
也支持通过 OpenCode 安装,与 Claude Code 协同工作。
常用 Slash Commands
会话管理
| 命令 | 功能 |
|---|---|
/new |
新建会话 |
/clear |
清空上下文 |
/retry |
重试上次操作 |
/undo |
撤销操作 |
/title |
命名会话 |
/resume |
恢复历史会话 |
/sessions |
查看历史会话 |
Agent 控制
| 命令 | 功能 |
|---|---|
/agents |
查看后台任务 |
/background |
后台执行任务 |
/queue |
查看任务队列 |
/goal |
设定长期目标 |
/stop |
停止当前任务 |
配置命令
| 命令 | 功能 |
|---|---|
/config |
查看/修改配置 |
/model |
切换模型 |
/personality |
切换人格 |
/reasoning |
设置推理等级 |
/voice |
语音模式 |
/yolo |
关闭确认提示 |
上下文优化
| 命令 | 功能 |
|---|---|
/compress |
压缩上下文 |
/snapshot |
创建上下文快照 |
/rollback |
回滚到快照 |
/steer |
插入控制指令 |
/learn ------ 把生成技能的控制权交给用户
Hermes 1.17 新增
通过明确的学习指令,用户可以决定从哪里学习、学习什么、沉淀成什么技能。
/learn <要学习的内容>
不带参数时,默认从当前对话流程中学习。
五种使用方式:
| 方式 | 示例 |
|---|---|
| 从目录/代码库学习 | /learn 从 ~/projects/my-api 学习这个项目的代码风格和架构 |
| 从 URL 学习 | /learn 学习 https://example.com/api-docs 的 API 设计模式 |
| 从当前工作流学习 | /learn 把刚才修复数据库连接超时的步骤保存为技能 |
| 从粘贴的笔记学习 | /learn 从上面的笔记创建一个部署检查清单技能 |
| 从对话历史学习 | /learn 把这次对话中解决 CI 构建失败的方法保存下来 |
Hermes vs 普通 AI Agent
| 能力 | 普通 Agent | Hermes |
|---|---|---|
| Tool Use | ✓ | ✓ |
| 长期记忆 | ✗ | ✓ |
| 技能沉淀 | ✗ | ✓ |
| 多 Agent | 部分 | ✓ |
| 自学习 | ✗ | ✓ |
| 消息平台 | 部分 | ✓ |
| MCP | 部分 | ✓ |
核心差异:成长。 Memory + Skills + Self-Learning = 越用越强。
为什么值得关注
真正的变化: 不只是"让模型调用工具",而是让 Agent 拥有成长能力。
能力沉淀演化路径:
Prompt → Workflow → Agent → Learning Agent
未来不是写 Prompt,而是训练自己的 Agent。
实战:基于 Hermes 构建业务知识助手
安装与路径配置
bash
# 安装
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# 或交给 OpenCode 执行
# 创建副本(profile)
hermes profile create my-profile
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
配置模型信息
bash
my-profile setup
(配置过程中会要求填写模型端点地址、模型名称、鉴权 Token 等信息,请按你的实际环境填写,此处不展示具体配置值。)
配置内存(Memory)& 项目初始化
配置内存:
text
$ my-profile memory setup
Configuring holographic:
SQLite database path [~/.hermes/profiles/my-profile/memory_store.db]:
Default trust score for new facts [0.5]:
HRR vector dimensions [1024]:
Memory provider: holographic
Activation saved to config.yaml
Provider config saved
Start a new session to activate.
项目初始化:
- Git 拉取项目
- 切换至固定分支
claude init初始化项目- 将触发关键字等信息填写到
project.md中
创建技能 & 构建知识库
自建技能:
| 技能 | 说明 |
|---|---|
🎫 order-ticket-parser |
解析工单数据并存储到外挂内存 |
📊 my-order |
统计工单工作台处理完成的工单,生成周报 |
📦 my-add-module |
自动添加业务模块 Git 仓库 |
📚 my-knowledge |
统一的知识查询框架,三层查询策略 |
构建知识库的三种方式:
- 通过
auto.py生成的文件沉淀知识库 - 通过
order关键字将 QA 沉淀知识库 - 通过代码查询知识沉淀至知识库
技能一:order-ticket-parser ------ 工单数据解析
目标: 解析工单数据并存储到外挂记忆,构建可复用的工单知识库。
解析流程
用户消息以 order 开头
↓
解析工单数据
↓
提取工单号(格式: OPEN...)
↓
<格式规范?>
├─ 规范 ─→ 提取问题描述(OPEN 开头的行)
│ ↓
│ 提取解决方案(以 # 开头的行)
│ ↓
│ 配对问答 → 形成工单记录
│ ↓
│ 调用 fact_store(action=add, category=project)
│ ↓
│ 设置标签(tags=工单)
│
└─ 不规范 ─→ 跳过该工单,继续下一个
↓
<还有更多工单?>
├─ 是 ─→ 提取下一个工单号
└─ 否 ─→ 反馈处理结果,统计存储数量 → 结束
技能二:my-order ------ 工单统计与周报生成
目标: 统计本周处理完成的工单,自动生成周报 Markdown。
工单统计与周报生成流程
用户请求:"统计我本周处理完成的工单数"
↓
<API 可用?>
├─ 推荐: API 方式 ──────────────┐
│ 获取 OAuth Token (password grant)
│ ↓
│ 获取用户信息 /iam/.../users/self
│ ↓
│ 拉取 Workbench 数据(按 solutionUserId 过滤)
│ ↓
│ 并行拉取:解决方案文档 | 交流记录
│ │
└─ Fallback: 浏览器方式 ─────────┤
登录开放平台 │
↓ │
切换到"我处理的" │
↓ │
切换到"其他"tab │
↓ │
逐页提取工单编号 │
↓ │
逐个打开详情页 ────────────┘
↓
生成周报 Markdown
↓
┌──────────────┬──────────────┬──────────────┐
│ 📝 问题描述 │ ✅ 解决方案 │ 💬 处理过程 │
│ AI 总结 │ 原文提取 │ 全参与者总结 │
└──────────────┴──────────────┴──────────────┘
↓
输出: 周报-日期范围.md
(总数 + 明细表格 + 状态分类)
技能三:my-add-module ------ 添加业务模块
目标: 根据用户提供的 Git URL,自动添加业务模块仓库并完成配置。
添加模块流程
用户提供 Git URL
↓
收集必要信息(服务名 / 关键词 / 分支)
↓
<信息完整?>
├─ 缺服务名 ─→ 自动从 URL 提取
├─ 缺关键词 ─→ 询问用户
├─ 缺分支 ─→ 询问用户
└─ 已完整 ─→ 提取仓库名称
↓
编辑 project.md 添加服务配置
↓
mkdir -p 创建目录
↓
git clone 克隆仓库
↓
git checkout 切换分支
↓
<验证结果>
├─ 成功 ─→ 完成,返回摘要
├─ 分支不存在 ─→ 列出可用分支,用户选择后重试
└─ 克隆失败 ─→ 报告错误
技能四:my-knowledge ------ 知识查询框架
目标: 统一的知识查询入口,采用三层查询策略,命中后自动沉淀。
三层查询策略(总览)
用户查询
↓
读取 project.md,关键词匹配
↓
识别目标服务
↓
<三层查询策略>
│
├─ 第 1 层:fact_store probe(精准查询)
│ <命中?> ─ 是 → 整理回答
│ └ 否 → 进入第 2 层
│
├─ 第 2 层:fact_store search(关键词搜索)
│ <命中?> ─ 是 → 整理回答
│ └ 否 → 进入第 3 层
│
└─ 第 3 层:代码库查询
获取答案 → 自动存储到 fact_store
↓
返回用户答案
(通用查询 → "我也不知道")
代码库查询详情(第 3 层)
触发代码库查询
↓
强制使用 Claude Code
↓
claude -p 执行查询
(--allowed-tools Read
--max-turns 15)
↓
<查询成功?>
├─ 成功 ─→ 获取答案
└─ 失败 ─→ 回退:传统文件搜索(search_files / read_file)→ 获取答案
↓
自动存储到 fact_store(action=add / tags=服务实体标签)
↓
返回用户答案
前提条件: 已确认特定服务 → 路径:
/<工作目录>/<服务名>/<仓库名>
参考:
Q & A