圈内人叫它"养马"——Hermes Agent,Nous Research 的开源智能体项目,靠跨会话记忆和自我进化这两板斧,在 Agent 场景里攒了不少口碑。6 月 3 日,它把最关键的一步补上了:桌面端应用 Hermes Desktop 正式公测,Windows、macOS、Linux 三平台全覆盖。
从"命令行里跑脚本"到"桌面图标双击启动",这个变化不只是包装形式的升级,而是把 Agent 的使用门槛从开发者群体往下拉了一层。下面拆开看。
跨会话记忆:Agent 不再是"金鱼脑"
大多数对话式 AI 每次开新会话就归零——你昨天教它的事,今天它全忘了。Hermes Agent 的核心差异在于持久化记忆:它会把你在多轮交互中喂给它的偏好、纠正、技能规则写进自己的记忆存储,下次启动时直接加载。
这意味着几件具体的事:
- 你告诉它"我写 Python 习惯用 Black 格式化、测试用 pytest",它不会在下个 session 重新问你。
- 你纠正过它三次"不要用
print调试,给我写 logging",第四次它自己就改了。 - 它能把你过去多个 session 里积累的项目上下文串联起来,而不是每次从零推断。
这种机制让 Agent 从"工具"往"长期搭档"的方向挪了一步——你花时间调教它,调教结果不会蒸发。
自我进化:用得越多,能力越窄但越精准
"自我进化"听起来像营销词,但在 Hermes 的语境里它有具体含义:Agent 会根据历史交互记录自动提炼出可复用的技能片段,并在后续对话中主动匹配调用。
打个比方:你第一次让它帮你写一个 FastAPI 项目骨架,花了五轮对话才把目录结构、依赖版本、Dockerfile 约定谈清楚。第二次你只说"再来一个类似的项目",它就能把上次磨合出的模板直接套用——因为那段交互已经被压缩成了一个"技能"。
这和单纯的"对话历史回放"不同。回放是原样复述,进化是提炼+泛化:它提取的是模式,不是原文。
桌面端:把 Agent 从终端搬到日常环境
之前用 Hermes Agent,你得自己拉代码、配环境、跑 Python 进程。Desktop 版做了三件事:
- 一键安装——三平台原生安装包,不用碰 pip 和 virtualenv。
- 本地运行——Agent 进程跑在你自己机器上,对话数据和记忆存储都在本地,不经过云端。
- 系统级集成——桌面端可以挂文件系统访问、剪贴板读取等本地能力,Agent 不再被关在聊天窗口里。
这对两类人最有价值:不想折腾环境的非专业开发者,以及在意数据不出本地的安全敏感团队。
实操:从零跑起来一个带记忆的 Agent
下面给两个层面的上手路径——先装桌面端快速体验,再用开源仓库做程序化调用。
方案一:桌面端安装(最快路径)
到 Nous Research 的 GitHub Releases 页面或官网下载对应平台安装包:
# macOS 也可以用 Homebrew Cask(如果已上架)
brew install --cask hermes-desktop
# Linux 用户如果提供 AppImage,下载后直接运行
chmod +x Hermes-Desktop-x86_64.AppImage
./Hermes-Desktop-x86_64.AppImage
启动后首次配置界面会让你选模型后端——可以指向本地 Ollama 实例,也可以填远程 API endpoint。建议先用本地模型试记忆功能,避免网络延迟干扰体验。
方案二:程序化调用 Hermes Agent(开发者路径)
Hermes Agent 是开源项目,核心逻辑在 Python 层。如果你想在自己的工具链里嵌入它,可以这样起步:
# 克隆仓库并安装依赖
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
pip install -e ".[all]"
下面是一个最小可运行的调用脚本,演示如何初始化一个带持久记忆的 Agent 并进行多轮对话:
from hermes.agent import HermesAgent
from hermes.memory import PersistentMemoryStore
# 指定本地记忆存储路径——这就是跨 session 的关键
memory_store = PersistentMemoryStore(
storage_dir="./hermes_memory",
# 记忆分两层:短期(当前会话)和长期(跨会话提炼)
enable_long_term=True,
# 长期记忆提炼阈值:累计 5 次相似交互后自动压缩为技能
skill_extraction_threshold=5,
)
# 初始化 Agent,挂上记忆后端
agent = HermesAgent(
model_backend="ollama", # 使用本地 Ollama
model_name="hermes3-llama3-8b", # Nous 训练的 Hermes 模型
memory_store=memory_store,
system_prompt="你是一个 Python 后端开发助手,偏好 FastAPI 和 pytest。",
)
# 第一轮:教它一个项目约定
response1 = agent.chat("帮我建一个 FastAPI 项目,目录结构按 src layout 来,测试放 tests/ 下。")
print(response1)
# 第二轮:验证记忆是否生效——不再重复说明
response2 = agent.chat("再建一个类似的用户服务项目。")
print(response2)
# 保存记忆,下次启动自动加载
memory_store.save()
运行前确保:
- Ollama 已安装且
hermes3-llama3-8b模型已拉取(ollama pull hermes3-llama3-8b)。 ./hermes_memory目录有写权限。- 如果模型名称与实际可用模型不一致,按你本地 Ollama 列表修改
model_name参数。
跨两次运行这个脚本(中间 memory_store.save() 后退出),第二次启动时 Agent 会直接读取上次积累的偏好和技能,不需要你重新描述项目约定——这就是"养马"的直观效果。
记忆存储的目录结构长这样
hermes_memory/
├── sessions/ # 每次会话的原始交互记录
│ ├── 2024-06-03-01.json
│ └── 2024-06-03-02.json
├── skills/ # 自动提炼的技能片段
│ ├── fastapi_scaffold.json
│ └── pytest_config.json
└── preferences/ # 用户偏好(格式化工具、命名风格等)
└── coding_style.json
你可以直接查看 skills/ 下的 JSON 文件,看 Agent 把你的反复指令压缩成了什么结构——这也是调试进化逻辑的入口。
什么时候该用,什么时候先观望
适合上手的情况:
- 你有重复性的开发任务模式(比如经常搭相似项目骨架、写同类配置文件),希望 Agent 记住你的约定后自动套用。
- 你对数据本地化有硬性要求,不想对话内容走云端 API。
- 你已经在用 Ollama 跑本地模型,想给模型加一层"记忆+进化"的能力壳。
先观望的情况:
- 你的任务高度一次性、没有重复模式——记忆和进化功能发挥不了多少价值,普通聊天 AI 就够。
- 你需要多 Agent 协作或复杂工具链编排——目前 Hermes 单 Agent 架构,还没走到多 Agent 调度那一步。
- 团队环境里需要集中管理记忆存储——Desktop 版的记忆是本地的,还没看到共享记忆后端的方案。
一个实用检查清单:
| 检查项 | 你的情况 |
|---|---|
| 有没有 3+ 种重复出现的任务模式? | 有 → 值得试 |
| 本地有 GPU 能跑 8B+ 模型吗? | 有 → 体验流畅;没有 → 先用小模型或 API 后端 |
| 能接受 Agent 偶尔记错偏好需要手动纠正吗? | 能 → 正常使用;不能 → 等记忆管理 UI 完善 |
| 需要多 Agent 协作? | 需要 → 目前不支持,等后续版本 |
Hermes Desktop 把一个有想法的 Agent 项目推到了"普通人能双击打开"的阶段。记忆和进化这两个能力是否真的在日常开发中省下你的时间,装上跑两三天就有答案——比在命令行里折腾半天然后放弃,成本低多了。