Hermes Agent 配合 Ollama:记忆、工具和 limites
是的:Nous Research 的 Hermes Agent 可以通过声明一个带有 http://127.0.0.1:11434 地址和空 API 密钥的自定义提供商来连接到本地 Ollama。但本地推理默认不会使代理离线:只要不禁用它们,网络搜索、语音合成和云浏览器仍然是第三方服务。请选择一个宣布支持工具调用的模型,否则它会描述一个动作而不是执行它。
Hermes Agent 是 Nous Research 发布的自主智能体框架,配备终端、持久化记忆和即时通信连接器。本指南介绍如何将其连接到本地 Ollama、如何选择能够调用工具的模型、它的记忆实际会保留哪些内容,以及日常使用前需要了解的安全性和可靠性限制。
#Hermes Agent 是什么
Hermes Agent(仓库:NousResearch/hermes-agent)是一款在命令行中运行的自主智能体,配有 TUI 界面、消息网关(Telegram、Discord、Slack、WhatsApp、Signal),以及可在使用过程中自行创建和改进技能的系统。它并不替代 Hermes 4,后者是一个语言模型:Hermes Agent 是负责协调工具调用、记忆和终端操作的软件,无论其后端接入的是哪种模型。
代码仓库更新节奏很快:带有 v2026.9.24 标签的版本(Hermes Agent v0.21.5)于 2026 年 9 月 24 日发布,汇集了自上一版本以来的数百项修复。Nous Research 以 MIT 许可证发布该项目,允许将其用于专业用途而无需支付许可使用费,包括部署修改后的版本。
智能体在单个网关进程中运行,可同时服务多个渠道:本地终端、Telegram、Discord、Slack、WhatsApp 和 Signal 共享同一份记忆和对话历史。因此,您可以在工作电脑上启动任务,再通过手机跟进,而无需在各个渠道之间重复配置模型和记忆。
#连接本地 Ollama
在你的机器上执行操作的智能体:具备智能体能力的 Cline、MCP、n8n + Ollama、本地自动化。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
Hermes Agent 使用各提供方自己的 provider 名称,为自托管的 OpenAI 兼容服务(Ollama、vLLM、llama.cpp)进行路由。官方文档明确说明了所需格式:一个指向服务器的 base_url,以及一个仅用作占位符的空 API 密钥。
一个仅包含主机和端口的 base_url(无需 /v1)会自动接收到兼容 OpenAI 的 API 所需的后缀,因此无需手动添加。此机制在 vLLM 和 llama.cpp 中同样适用,只需更改提供者名称和端口即可。
同一个配置块可以用于不同角色:主对话模型、上下文压缩模型,或生成会话标题的模型。每个角色都可以指向不同的服务提供商——例如,对话使用本地 Ollama 模型,而辅助任务专用一个更快的云端模型——这样既能让大部分交流内容保持私密,又能避免本地小模型拖慢次要任务。
#调用工具应使用哪个模型
Hermes Agent 提供超过 40 个工具(终端、文件、浏览器、记忆、cron 定时任务),模型必须通过结构化调用来使用它们,而不能只用文字描述。通过 Ollama 运行的模型如果没有接受过工具调用训练,或者同一模型被过度量化,往往会给出解释,而不是触发调用。
- 主对话模型
- 优先选择明确列为兼容工具(ollama.com/library 上的 tools 标签)的 Ollama 变体,而非通用的聊天模型。
- 辅助模型(标题、压缩)
- 可以保持轻量:使用只有一个请求处理槽位的本地服务提供方时,Hermes Agent 会在主轮次的回复完成后再调用它,而不会并行调用,以免单槽位服务器混合处理这两个请求。
- 标识格式
- 已命名的服务提供方可以在模型标识前添加前缀,例如 ollama-local/qwen3.6:27b-q4_k_m;即使到达服务器的只有原始请求(不带前缀),这个前缀仍然适用。
有一个细节值得密切关注:使用自定义本地提供商时,对标题模型的调用请求是在本轮回答到达之后才发出的,而不是与回答同时进行。在一次只能处理一个请求的本地服务器上,这可以避免采用结构化 JSON 的标题请求打断回答本身的生成——这是一个在其他地方很少有文档说明的调度细节。
#记忆:哪些内容真正会保留下来
Hermes Agent 的记忆基于简单的文本文件,可直接阅读和修改:这些文件是配置档案目录中的 MEMORY.md 和 USER.md。模型通过专用工具决定哪些内容值得写入其中——偏好、长期有效的事实以及学到的操作流程。
该项目自身文档中指出的一个弱点是:小型本地模型可能声称“已保存”,却并未真正调用写入工具。官方文档建议,对于参数少于约 300 亿或工具调用不可靠的本地模型,应明确要求使用记忆工具,然后检查文件,而不是在提示词中不断增加指令。
#安全:八层防护,而非一道墙
Nous Research 在文档中介绍了一个八层安全模型:用户授权、危险命令的人工批准、文件写入防护、容器隔离(Docker、Singularity、Modal)、对传递给 MCP 服务器的身份凭据进行过滤、检测上下文文件中的提示词注入、会话间隔离,以及验证终端工具的工作路径。
危险命令的审批通过配置文件中的approvals.mode设置,有三种模式可供选择:自动、手动或智能(推荐的默认模式,自动通过低风险操作,其他操作需人工审核)。
#小型本地模型用于此智能体时的局限性
像 Hermes Agent 这样拥有丰富工具的智能体,对模型的指令遵循能力提出了很高的要求:记忆、规划、连续工具调用,有时还包括并行子智能体。使用采用 Q4_K_M 量化、参数量为 70 亿至 140 亿的模型时,应预期会出现工具调用失败、确认但未实际执行,以及长会话中更频繁的上下文压缩。
| 功能 | 典型症状 |
|---|---|
| 记忆(专用工具) | 口头确认,无实际文件写入 |
| 连续调用工具 | 模型描述下一步操作,而非实际执行 |
| 并行子代理 | 指令传输错误,结果需手动核对 |
| 长会话 | 上下文压缩更频繁,导致旧信息细节丢失 |
这些问题都不是 Hermes Agent 所特有的:这是小型量化模型处理结构化输出格式时的已知局限。项目文档给出的解决办法不是增加指令,而是至少在初始配置阶段使用更可靠的模型。记忆条目建立后,就可以让更轻量的模型重新读取,且不会有问题,因为这些条目会直接放入系统提示。
子智能体和通过 RPC 调用工具的 Python 脚本——项目重点介绍的两项用于并行执行任务的功能——依赖于与简单工具调用相同的指令遵循能力。如果一个模型连单次工具调用都难以处理,那么要协调多个子智能体,同时避免混淆它们各自的上下文,就会更加困难:最好先验证基础行为,再启用这些高级功能。
#MCP 服务器:目录和权限
Hermes Agent 集成了 Nous Research 团队审核并合并的 MCP 服务器目录(包括 Linear、GitHub、Figma、Asana 等),但每个服务器默认均处于关闭状态:需手动安装后才能被代理访问。配置好凭证后,Hermes Agent 会向服务器发起查询,列出其提供的工具,并显示可勾选的工具列表,从而避免一次性激活尚不熟悉的第三方服务器的所有功能。
少数教程会提及的细节:对于以stdio模式运行的MCP服务器,Hermes Agent不会将主机的完整shell环境传递给子进程。仅传递服务器配置中显式声明的变量,以及一组基础环境变量(如PATH、HOME、USER、LANG、TERM、SHELL等);其他环境变量,包括API密钥和令牌,均被过滤。正是这一机制降低了第三方MCP服务器因审计不严而窃取shell中敏感信息的风险。
#子智能体:任务委派能实现什么
delegate_task 工具让 Hermes Agent 可以将任务交给子智能体:每个子智能体都会开启自己的对话,并拥有独立的终端会话,而且只继承父智能体已经启用的工具——它不能自行获得父智能体本身不具备的额外能力。只有子智能体的最终摘要会进入主智能体的上下文;中间的工具调用始终不会进入其中。这样既能限制长任务的上下文消耗,也能避免执行细节充斥主对话。
默认情况下,最多可并行运行十个子智能体——这一限制可以配置,软件本身不设硬件上限——但默认的委派深度仍设为 1:除非在配置中明确启用相应功能,否则子智能体不能再创建其他子智能体。使用 7–14B 的本地模型时,最好将这一深度保持为 1:每增加一层委派,需要正确串联的工具调用数量就会成倍增加,而这恰恰是前文指出的小型量化模型的薄弱环节。
#故障排除:症状、原因、修复方法
使用本地 Ollama 端点时遇到的大多数阻碍可归结为四类症状,每类症状的原因都能从官方文档中查明,无需靠猜测摸索。
| 问题表现 | 可能原因 | 修正 |
|---|---|---|
| 长上下文场景下的流中断或超时 | 默认的读取超时时间不足以应对大型本地模型的响应延迟 | 在配置中增加 HERMES_STREAM_READ_TIMEOUT(例如 1800 秒) |
| 模型只是描述操作,而没有执行 | 模型未声明支持工具调用,或对同一模型采用了过于激进的量化 | 在模型的ollama.com/library页面上,选择标注为“tools”的变体 |
| 声称已记住信息,却未写入文件 | 参数规模低于约 30B、工具调用不可靠的本地模型 | 每次请求后请检查 MEMORY.md/USER.md;必要时可暂时切换至更强大的模型 |
| 第三方MCP服务器未检测到预期变量 | 环境变量过滤:仅将已声明的环境变量和最基本的一组环境变量传递给子进程 | 在该MCP服务器的配置中显式声明变量 |
Hermes Agent 会自动检测本地端点,并相应地放宽读取超时时限,但在较慢的 Ollama 模型上处理较大的上下文时,仍可能超过默认超时时限;官方文档建议调整 HERMES_STREAM_READ_TIMEOUT 变量,而不是随意缩减发送给模型的上下文。
#实际安装步骤
- 01安装 Hermes Agent在 Linux、macOS 或 WSL2 上:执行 curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash,然后重新加载 shell 并启动 hermes。
- 02准备Ollama模型在将其配置为 provider 之前,确认 Ollama 在 11434 端口运行,且所选模型已被标明兼容工具调用。
- 03配置本地服务提供方使用 hermes config set 将 provider 设为 ollama,填写模型名称,并将 base_url 设为 http://127.0.0.1:11434,API 密钥留空。
- 04测试一个简单的工具调用请求执行可验证的操作(列出目录、读取文件),并在终端中确认工具确实已执行,而不只是用文字描述了该操作。
- 05检查记忆明确要求智能体记住某项内容,然后打开MEMORY.md,确认其中已有对应条目,再相信它在这件事上确实完成了记忆。
Hermes Agent 在连接到 Ollama 后,是否可以离线运行?+
在 Ollama 中选择哪个模型用于 Hermes Agent?+
Hermes Agent 与 Hermes 4 模型是一样的吗?+
如何确认 Hermes Agent 的记忆功能确实有效?+
容器隔离是否自动启用?+
如何在 Hermes Agent 中启用 MCP 服务器?+
Hermes Agent 最多可以并行启动多少个子智能体?+
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。