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.md 和 USER.md 文件中,使用 Markdown 格式,人可读、可编辑。
2. 自主技能创建(Autonomous Skill Creation)
这是 Hermes Agent 最有野心的特性。当 Agent 完成一个复杂任务后,它会自动将解决过程抽象成一个可复用的“技能”。
什么是技能?技能本质上是一个结构化的 prompt + 工具调用序列。比如你让 Agent 帮你分析一份财报,它可能会创建一个名为 earnings-analysis 的技能,包含:
- 从指定 URL 抓取财报 PDF
- 提取关键财务指标
- 与上一季度对比
- 生成分析摘要
- 发送到你的 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— 系统提示词构建,将记忆、技能、工具定义组装成 promptsystem_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.py、browser_camofox.py(隐私浏览器)、browser_cdp_tool.py(CDP 协议)、computer_use_tool.py(桌面控制)
通信工具:discord_tool.py、send_message_tool.py、feishu_doc_tool.py(飞书文档)、microsoft_graph_client.py(微软 Graph)
AI 工具:image_generation_tool.py、video_generation_tool.py、tts_tool.py、transcription_tools.py、web_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 的解决方案是懒加载:核心依赖只有十几个,特定功能的依赖(如 anthropic、firecrawl-py、edge-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 需要面对的所有问题:对话管理、工具调用、记忆持久化、技能系统、安全护栏、多平台适配、上下文压缩。
建议按这个顺序阅读源码:
agent/conversation_loop.py— 对话主循环agent/prompt_builder.py— 提示词构建agent/tool_executor.py— 工具执行agent/memory_manager.py— 记忆管理agent/skill_utils.py— 技能系统tools/— 挑几个感兴趣的工具看看实现gateway/— 多平台网关
MIT 协议,随便看,随便用。
评论互动