Hermes Agent:186K Star,这个「会自我进化的 AI Agent」做对了什么

发布于 2026年06月08日 13:22 #Agents 原文链接

Hermes Agent:186K Star,这个「会自我进化的 AI Agent」做对了什么 封面图

186K Star。19,000+ Open Issues。3000+ Contributors。

这不是某个大厂旗舰项目,这是一个成立不到一年、名叫 Hermes Agent 的开源 AI Agent。它的创建者 Nous Research 给它一句标语:

The agent that grows with you. 与你一起成长的 Agent。

在 Claude Code、OpenAI Codex、Cursor 这些工具横扫开发者桌面的时候,Hermes Agent 走了一条完全不同的路:它不是给程序员写的代码助手,而是一个面向所有人的、会自我学习和进化的个人 AI Agent

它跑在 $5 的 VPS 上,你通过 Telegram 跟它说话,它在云端帮你干活。它能记住你是谁、你喜欢什么、你上次让它做了什么。它会从经验中自动生成新技能,在使用中不断改进这些技能。

这篇文章,我想拆解 Hermes Agent 到底做对了什么,以及它给 Agent 开发者带来了哪些启发。

一个 Agent 应该长什么样

先说清楚 Hermes Agent 是什么、不是什么。

不是什么:它不是另一个 Claude Code。Claude Code 是一个终端里的编程助手,你给它代码上下文,它帮你写代码。Hermes Agent 不限于编程。

是什么:它是一个通用的个人 AI 助手平台,核心能力包括:

能力说明
对话全功能 TUI 终端界面,支持多行编辑、自动补全、对话历史
工具调用40+ 内置工具,覆盖文件操作、浏览器控制、代码执行、搜索等
多平台一个网关进程同时服务 Telegram、Discord、Slack、WhatsApp、Signal
定时任务内置 cron 调度器,用自然语言描述定时任务
记忆跨会话持久记忆,会话搜索,用户画像建模
技能系统从经验中自动生成可复用的技能,技能会自我改进
子代理可以为并行工作流生成隔离的子代理

如果你用过 OpenClaw(OpenAI 的开源 Agent 框架),Hermes Agent 还提供了一键迁移:hermes claw migrate。这个命名本身就有意思——用“claw”(爪子)来指代 OpenClaw,暗含一种温和的挑衅。

核心设计:闭环学习循环

Hermes Agent 最独特的设计是它的闭环学习循环(Closed Learning Loop)。这是它区别于市面上几乎所有 Agent 的关键特征。

普通的 Agent 工作流程是线性的:

用户输入 → LLM 推理 → 工具调用 → 返回结果 → 结束

下次对话,一切从零开始。Agent 不记得你,不记得上次做了什么,更不会从上次的经验中学到任何东西。

Hermes Agent 的闭环是这样的:

用户输入 → LLM 推理 → 工具调用 → 返回结果
    ↓                                    ↓
    ← ← 持久化记忆 ← ← 会话搜索 ← ←

            自动生成技能 ← 定期自我提示

            技能在使用中改进

            用户画像持续深化

这个闭环有三个关键组件:

1. Agent 策展的记忆(Agent-Curated Memory)

Hermes Agent 不只是把对话原封不动地存下来。它有一个记忆管理器memory_manager.py),会主动决定哪些信息值得记住。

具体机制:Agent 在对话过程中会收到定期提示(nudge),提醒它把重要信息写入记忆。这些提示不是用户触发的,而是系统自动注入的。Agent 会自主判断:这个用户的偏好是什么?这个任务有什么值得记录的模式?上次解决类似问题的方案是什么?

记忆存储在 MEMORY.mdUSER.md 文件中,使用 Markdown 格式,人可读、可编辑。

2. 自主技能创建(Autonomous Skill Creation)

这是 Hermes Agent 最有野心的特性。当 Agent 完成一个复杂任务后,它会自动将解决过程抽象成一个可复用的“技能”。

什么是技能?技能本质上是一个结构化的 prompt + 工具调用序列。比如你让 Agent 帮你分析一份财报,它可能会创建一个名为 earnings-analysis 的技能,包含:

  1. 从指定 URL 抓取财报 PDF
  2. 提取关键财务指标
  3. 与上一季度对比
  4. 生成分析摘要
  5. 发送到你的 Telegram

下次你只需要说“分析这份财报”,Agent 就会直接调用这个技能。

技能的存放位置是 ~/.hermes/skills/,每个技能是一个独立的 Markdown 文件。技能还遵循 agentskills.io 开放标准,意味着不同 Agent 之间可以共享技能。

3. 用户建模(User Modeling)

Hermes Agent 集成了 Honcho,一个辩证式用户建模系统。这不是简单的”用户喜欢什么”,而是试图理解用户的思维方式、决策模式、知识结构。

具体来说,Honcho 通过对话中的交互模式,逐步构建一个用户的心理模型。这个模型会影响 Agent 的回复风格、解释深度、工具选择偏好等。比如,如果它发现你是一个资深开发者,它会跳过基础概念解释,直接给出技术细节。如果它发现你对某个领域不太熟悉,它会主动补充背景知识。

这种能力在当前的开源 Agent 中几乎是独一无二的。

架构拆解:模块化的力量

Hermes Agent 的代码结构体现了一种“大而清晰”的架构哲学。项目很大(agent 目录下有 100+ 文件),但每个文件的职责非常明确。

Agent 层(agent/

这是核心推理引擎,关键文件包括:

  • conversation_loop.py — 对话主循环,管理用户输入、LLM 调用、工具执行的编排
  • chat_completion_helpers.py — 与各种 LLM 后端的适配(OpenAI、Anthropic、Gemini 等)
  • context_engine.py — 上下文管理,决定哪些信息进入当前对话窗口
  • context_compressor.py — 上下文压缩,在接近 token 限制时智能摘要
  • prompt_builder.py — 系统提示词构建,将记忆、技能、工具定义组装成 prompt
  • system_prompt.py — 系统提示词模板
  • tool_executor.py — 工具执行引擎
  • tool_guardrails.py — 工具调用安全护栏
  • memory_manager.py — 记忆管理
  • skill_utils.py / skill_commands.py — 技能系统

工具层(tools/

40+ 工具,按功能分类:

开发工具file_tools.py(文件操作)、code_execution_tool.py(代码执行)、terminal_tool.py(终端命令)、patch_parser.py(代码补丁)

浏览器工具browser_tool.pybrowser_camofox.py(隐私浏览器)、browser_cdp_tool.py(CDP 协议)、computer_use_tool.py(桌面控制)

通信工具discord_tool.pysend_message_tool.pyfeishu_doc_tool.py(飞书文档)、microsoft_graph_client.py(微软 Graph)

AI 工具image_generation_tool.pyvideo_generation_tool.pytts_tool.pytranscription_tools.pyweb_tools.py(搜索)

管理工具memory_tool.py(记忆管理)、skills_tool.py(技能管理)、session_search_tool.py(会话搜索)、delegate_tool.py(子代理委派)、cronjob_tools.py(定时任务)

安全工具approval.py(审批机制)、path_security.py(路径安全)、tirith_security.py(安全审计)、threat_patterns.py(威胁模式检测)

技能层(skills/

预置技能按领域组织:

skills/
├── apple/              # Apple 生态集成
├── creative/           # 创意写作、内容生成
├── data-science/       # 数据分析
├── devops/             # DevOps 自动化
├── github/             # GitHub 操作
├── productivity/       # 生产力工具
├── research/           # 研究辅助
├── software-development/  # 软件开发
└── ...

网关层(gateway/

多平台消息网关,一个进程同时处理 Telegram、Discord、Slack、WhatsApp、Signal 的消息。这意味着你的 Agent 不是被困在终端里——你在地铁上用 Telegram 跟它说一句话,它就能在云端开始执行任务。

几个值得深挖的技术决策

依赖精确锁定(Exact Pinning)

Hermes Agent 的 pyproject.toml 有一个非常值得注意的设计决策:所有依赖都是精确版本锁定openai==2.24.0,不是 openai>=2.24.0)。

注释里写得很直白:

Ranges allow PyPI to ship a fresh version of a transitive at any time without a code review on our side. Exact pins mean the only way a new package version reaches a user is via an intentional update on our end.

(范围允许 PyPI 随时发布新版本而不经过我们的代码审查。精确锁定意味着新版本到达用户的唯一途径是我们主动更新。)

注释还提到了一个具体的安全事件:Mini Shai-Hulud 蠕虫攻击了 PyPI 上的 mistralai 2.4.6。如果当时用的是范围锁定而不是精确锁定,所有安装了这个版本的用户都会中招。

这不是过度谨慎——这是从供应链攻击中学到的血淋淋的教训。

懒加载依赖(Lazy Dependencies)

不是所有用户都需要所有功能。有人只用 Telegram,有人需要浏览器控制,有人需要飞书集成。

Hermes Agent 的解决方案是懒加载:核心依赖只有十几个,特定功能的依赖(如 anthropicfirecrawl-pyedge-tts)放在 extras 里,用户首次使用对应工具时才自动安装。

tools/lazy_deps.py 负责这个逻辑。这大幅减少了初始安装的体积和供应链攻击面。

上下文压缩(Context Compression)

长对话是所有 Agent 的噩梦。Token 限制是硬约束,但用户不希望 Agent 忘记之前的对话。

context_compressor.py 实现了智能上下文压缩:当对话接近 token 限制时,不是简单地截断旧消息,而是用 LLM 对历史对话做摘要,保留关键信息,丢弃冗余。用户还可以通过 /compress 手动触发。

轨迹压缩(Trajectory Compression)

trajectory_compressor.py 是一个面向研究者的功能:它可以批量生成 Agent 的执行轨迹(trajectory),然后压缩这些轨迹用于训练下一代工具调用模型。

这意味着 Hermes Agent 不仅是一个用户工具,还是一个数据工厂——它产生的真实使用轨迹可以用来训练更好的 Agent 模型。

对 Agent 开发者的启发

1. Agent 的竞争力不在推理,在记忆

当前所有主流 LLM 的推理能力都在快速趋同。GPT-5.5、Claude Opus、Gemini Ultra——在纯推理质量上的差距正在缩小。

真正拉开差距的是什么?记忆和持续学习

一个能记住你是谁、你的偏好、你上次做了什么的 Agent,和一个每次都从零开始的 Agent,体验上的差距是数量级的。Hermes Agent 的闭环学习循环虽然实现上并不复杂(Markdown 文件 + 定期提示 + LLM 总结),但它解决了一个真实存在的痛点:Agent 的遗忘问题。

这个启示是:不要把所有精力都花在推理优化上,记忆和个性化是更容易建立护城河的地方。

2. 多平台不是锦上添花,是核心特性

大多数 Agent 工具要么是终端应用(Claude Code),要么是网页应用(ChatGPT),要么是特定平台机器人。Hermes Agent 的网关架构让同一个 Agent 实例同时服务多个平台。

为什么这很重要?因为用户的上下文是分散的。你在电脑前用终端,在地铁上用 Telegram,在办公室用 Slack。如果 Agent 只存在于一个平台,它就丢失了大部分上下文。多平台接入让 Agent 有机会看到一个更完整的用户画像。

3. 技能系统是 Agent 的“肌肉记忆”

把解决过程抽象为可复用技能,本质上是给 Agent 建立“肌肉记忆”。第一次解决一个问题需要推理和尝试,但一旦形成技能,下次就是条件反射般的快速响应。

这个设计的精妙之处在于:技能的创建不需要用户显式操作。Agent 自己决定什么时候创建技能、技能包含什么内容。这降低了用户的使用门槛——你不需要学会“教”Agent,Agent 会自己“学”。

4. 安全不能是事后补丁

Hermes Agent 的安全设计是从第一天就内建的:

  • approval.py — 危险操作需要用户审批
  • tool_guardrails.py — 工具调用安全护栏
  • path_security.py — 文件路径安全检查
  • tirith_security.py — 安全审计工具
  • threat_patterns.py — 威胁模式检测
  • url_safety.py — URL 安全检查
  • file_safety.py — 文件安全检查

这不是安全团队事后加的——这是架构层面的设计决策。对于一个能执行代码、控制浏览器、操作文件的 Agent 来说,安全不是可选项,是生存前提。

5. 模块化意味着可贡献性

Hermes Agent 的 3000+ 贡献者不是偶然的。它的模块化架构让新增一个工具(一个 Python 文件)、一个技能(一个 Markdown 文件)、一个平台适配器变得非常简单。

这是一种刻意的设计选择:降低贡献门槛,让社区能快速扩展能力。每个工具都是一个独立的 Python 文件,遵循统一的注册接口。新增工具不需要理解整个系统的架构,只需要实现标准接口。

局限性和值得思考的问题

客观地说,Hermes Agent 也不是完美的。

19,000+ Open Issues 说明项目在快速迭代中面临巨大的维护压力。对于一个有野心的开源项目来说,社区增长的脚步总是快于核心团队的消化能力。

记忆的可靠性。用 LLM 来决定记住什么、忘记什么,本质上是在用一个概率系统管理确定性数据。什么时候记忆是准确的?什么时候产生了幻觉?这些问题目前没有完美的答案。

隐私问题。一个能记住你一切、理解你思维方式的 Agent,掌握的信息量是惊人的。这些记忆存储在本地 Markdown 文件中虽然透明,但也意味着一旦泄露就是全部。Honcho 的用户建模更是一个敏感区域——谁来保证这个模型不被滥用?

技能质量的不确定性。自动生成的技能不一定总是正确的。如果 Agent 从一次错误的解决过程中生成了技能,这个错误就会被固化并在未来反复执行。需要有技能验证和纠错机制。

写在最后

Hermes Agent 之所以能在一年内获得 186K Star,不是因为它有最强的推理能力,也不是因为它有最多的功能。而是因为它触及了一个更深的问题:

Agent 到底应该是一种工具,还是一个伙伴?

大多数 Agent 项目把 AI 当工具——你给它指令,它执行,然后你收拾。Hermes Agent 试图让 AI 成为一个有记忆、会学习、懂你的存在。不管这个尝试最终成功与否,它提出的问题——记忆、学习、个性化、持续进化——都是 Agent 领域必须回答的问题。

对于正在构建 Agent 的开发者来说,Hermes Agent 的代码库是一本教科书。它不一定有最优雅的实现,但它覆盖了一个完整的 Agent 需要面对的所有问题:对话管理、工具调用、记忆持久化、技能系统、安全护栏、多平台适配、上下文压缩。

建议按这个顺序阅读源码:

  1. agent/conversation_loop.py — 对话主循环
  2. agent/prompt_builder.py — 提示词构建
  3. agent/tool_executor.py — 工具执行
  4. agent/memory_manager.py — 记忆管理
  5. agent/skill_utils.py — 技能系统
  6. tools/ — 挑几个感兴趣的工具看看实现
  7. gateway/ — 多平台网关

MIT 协议,随便看,随便用。

评论互动

© 2026 王若风的技术博客 · Powered by Astro