原文:https://mp.weixin.qq.com/s?__biz=MzAwMTYwNzE2Mg==&mid=2651039748&idx=1&sn=5c9fd01e83959faa836d332f9b601ebf&chksm=81201c91b6579587b1c4e8886f639508210c735d39a3708a636f00900c63e690c51a8a8f7d0e&cur_album_id=4469690989619855360&scene=189#wechat_redirect

工具终将被遗忘,但会成长的伙伴会被记住。

Claude Code 有 Memory,Cursor 有 .cursorrules,各类 Agent 框架都有自己的记忆文件——2026 年的 AI Agent 都有记忆了。但"记住"和"学会"是两回事。今天我们聊一个把这条线跨过去的项目:它不只是记住你告诉它的东西,而是从工作经验中自主创建技能、持续改良技能、越用越强。当 Agent 从"有记忆的工具"变成"会进化的伙伴",游戏规则就变了。


一个让我重新思考 Agent 的瞬间

三月初的一个晚上,我在测试一个开源项目。

任务很简单:让 Agent 帮我把一个 Go 项目的日志库从 logrus 迁移到 slog。十几个文件,涉及日志格式、级别映射、上下文字段传递。对人来说大概半天的活。

我先用了 Claude Code。前几个文件改得干净利落——分析导入、替换调用、调整格式化字符串,甚至还自动处理了 WithFields 到 slog.With 的语义映射。但到第六个文件,风格开始漂移:前面统一用的 slog.String("user_id", uid) 风格,这里突然变成了 slog.Any("user_id", uid)。到第九个文件,错误日志里约定的 slog.String("trace_id", traceID) 也丢了。

公平地说,Claude Code 有 Memory 功能,我也把迁移规范钉在了 CLAUDE.md 里。它确实"记住"了这些规范——如果你问它"我们的日志迁移规范是什么",它能准确回答。但"记住规范"和"从实战中形成肌肉记忆"是两回事。

我做了上下文工程该做的一切:压缩历史对话,用摘要替代完整的修改记录,把关键约定反复强调。有改善,但问题没有根治。因为问题的本质不是"Agent 没看到规范",而是 Agent 没有能力从前面的成功经验中提炼出一套可复用的操作方法,并在后续任务中自动应用。

记忆存的是"知识"——你告诉它的事实和规则。但十几个文件的迁移任务需要的是"技能"——从实战中抽象出的模式、决策树、边界情况处理。这两者之间有一道鸿沟。

同一周,我在测试另一个项目时,遇到了一个不同的体验。

我让它做类似的迁移任务。前三个文件,它跟 Claude Code 一样,靠系统提示词和上下文来完成。但在做了几轮任务后,它做了一件我没见过的事:它自己创建了一个技能文件。

这个文件叫 logrus-to-slog-migration.md(一个 SKILL.md 技能文件),里面记录了它在前面几轮中总结出的迁移模式——字段映射表、错误处理约定、格式化风格。从下一个文件开始,它先加载这个技能文件,然后再动手改。十几个文件,风格从头到尾一致。

这个项目,就是 Hermes Agent。

那一刻我意识到:这不是一个更好的编码工具。这是一个不同类别的东西。


一个值得关注的开源项目

Hermes Agent 由 Nous Research 开源(LICENSE 文件头写明 Copyright (c) 2025 Nous Research,MIT 协议)。Nous Research 就是那个以训练 Hermes 系列开源语言模型闻名的团队。

这个项目的增速在 Agent 圈内引起了相当的关注。根据公开报道,它在开源后很短时间内就冲上了数万 GitHub Star。这个数字本身来自外部信息源,不是我们今天要验证的重点;真正值得拆开的,是它背后的产品形态和工程机制。

小声提醒:Nous 自家的 Hermes-3/4 系列语言模型并不是为 Agent 场景训练的——Hermes Agent 自己的 CLI 在加载这些模型时会主动警告你 "NOT agentic"。这是本专栏后面会详细展开的一个有趣的细节:叫 Hermes 的模型 ≠ 叫 Hermes 的 Agent 框架。Hermes Agent 本身是一个"模型无关"的框架,把任何一款 agentic 模型(Claude、GPT、Gemini、DeepSeek 等)接进来都能跑。

创始人 Teknium 在早期定位 Hermes Agent 时用过一句话:"A very good blend between coding agents like Claude Code and generalist agents." 这句话定义了 Hermes Agent 的方向——它不是一个纯粹的编码助手,也不是一个通用聊天机器人。更准确地说,它是一套既能在 CLI 中直接工作、也能通过 Gateway 长期在线接入多渠道的 Agent runtime。

但 Star 数只是表象。真正有意思的问题是:Hermes Agent 到底跟别的 Agent 不一样在哪儿?


两代 Agent 的分水岭

要理解 Hermes Agent 为什么值得深入看,你得先看清一个正在发生的范式转移。

过去两年,AI Agent 工具经历了两代:

第一代:会话型 Agent(2024-2025)

代表产品:ChatGPT、Claude。

特征:你问它答,一问一答。对话结束,什么都不留下。下次打开,从头开始。它不知道你是谁、你在做什么项目、上次聊到哪里。

本质上,它是一个无状态的函数f(prompt) → response

第二代:工具型 Agent(2025-2026 上半年)

代表产品:Claude Code、Cursor、Codex CLI、Devin,以及各类跨平台 Agent 框架。

巨大的进步。它们能读文件、写代码、跑测试、提 PR。它们不只是"回答问题",而是"完成任务"。而且它们都有了某种形式的记忆——Claude Code 有 Memory 和 CLAUDE.md,Cursor 有 .cursorrules,Codex CLI 有 AGENTS.md,跨平台 Agent 通常用 MEMORY.md 这类约定。

这些记忆确实有用。它们能记住你的偏好、项目规范、编码风格。其中一些已经做到了主动保存——Claude Code 的 auto memory 会在对话中自动识别值得记住的用户偏好和纠正反馈,不需要你说"请记住这个"。

但即使是最先进的第二代记忆,存的仍然是事实——"用户偏好 Python 3.12"、"项目用 pyproject.toml 管理依赖"、"用户不喜欢 verbose 输出"。Agent 不会从一次复杂的调试中提炼出一个可复用的调试策略,也不会在十次类似的日志迁移后自己形成一套标准操作流程。它记住的是"知道什么",不是"怎么做"。

用一个类比:第二代 Agent 就像一个有笔记本的高级实习生——能力很强,也会记笔记(有的甚至能自己判断该记什么),但它不会把十次类似任务的经验抽象成一套可复用的工作方法论。笔记本里写的是事实和偏好,不是从实战中提炼的操作手册。

第三代:进化型 Agent(2026-)

Hermes Agent 代表的,是第三代。

核心差异只有一个词:进化。

不是"记住用户告诉它的东西"——前两代都能做到。而是主动从工作经验中提炼可复用的技能,持久化为文件,在未来的工作中自动加载和应用,并在每次使用中持续改良

记忆存的是"知道什么"(知识)。技能存的是"怎么做"(方法)。前两代 Agent 有记忆,但没有自动涌现的技能系统。Hermes Agent 两者都有——而且技能是Agent 主动创建、主动改良的。

这个差异听起来微妙,实际上是天壤之别。


闭环学习:Hermes Agent 的核心引擎

让我用一张图来解释 Hermes Agent 最核心的机制:

┌──────────────────────────────────────────────────────────────┐
│                       闭环学习系统                             │
│                                                              │
│   ┌──────────┐    ┌───────────┐    ┌───────────┐            │
│   │ 执行任务  │───→│ 定期 Nudge │───→│ 后台审查   │            │
│   └────┬─────┘    │(评估会话) │    │(非阻塞)   │           │
│        │          └───────────┘    └─────┬─────┘            │
│        │                                  │                  │
│        │   ┌────────────────┐             │                  │
│        └──→│ MEMORY/技能写入 │←────────────┘                  │
│            └────────┬───────┘                                │
│                     │                                        │
│                     ▼                                        │
│            下次执行更快、更准                                  │
└──────────────────────────────────────────────────────────────┘

四个齿轮:

齿轮一:Agent 主动策展的记忆。 不是"自动保存一切"——那会导致记忆膨胀和噪音污染。也不是"等用户说请记住这个"——那会丢失大量有价值的信息。Hermes Agent 有一个定期 nudge 机制run_agent.py 里的 _memory_nudge_interval = 10_memory_flush_min_turns = 6 这类阈值,会驱动系统在合适的时机回看刚才的对话,判断**"哪些信息值得持久化"**,再把条目写入 ~/.hermes/memories/MEMORY.md 或 USER.md

齿轮二:自主技能创建。 与记忆 nudge 并行的还有 _skill_nudge_interval = 10 的技能 nudge——系统定期提示 Agent 反思最近的工作,如果确实形成了可复用的模式,就抽象成一个技能文件(SKILL.md)。就像开头那个日志迁移的例子——Agent 把解决方案沉淀成一个技能文件。下次遇到类似任务,加载技能,直接执行。

齿轮三:技能渐进式改良。 技能不是创建了就完事了。每次使用,Agent 可以对技能做补丁式更新——优先打补丁,避免完全重写。技能在使用中越来越精确,越来越高效。

齿轮四:后台审查线程。 源码中的 _spawn_background_review() 会在命中记忆或技能 nudge 条件后,fork 出一个隔离的 **AIAgent** 实例,传入 _MEMORY_REVIEW_PROMPT / _SKILL_REVIEW_PROMPT 审查当前会话,直接写入共享的记忆/技能存储。它发生在主响应完成之后,不阻塞主会话,也不产生用户可见输出——你在干活,它在后台默默学习。

这四个齿轮咬合在一起,形成了一个正反馈循环

  • Agent 做的任务越多 → 技能越丰富 → 下次做得越快

  • 记忆越积累 → 上下文越丰富 → 决策越准确

  • 技能改良次数越多 → 技能质量越高 → 出错越少

用了一个月的 Hermes Agent,和刚装上的 Hermes Agent,是两个不同的东西。

至少在我实际对比过的主流 coding agent 里,这种"把经验沉淀成技能文件,并在后续任务里持续复用和改良"的机制并不常见。也正因为如此,Hermes Agent 值得单独开一整个专栏来拆。


不只是"会学习"——全景差异

闭环学习是 Hermes Agent 最核心的差异,但不是唯一的差异。

差异一:多入口、共享状态与能力

Claude Code 是很典型的单入口体验:你在终端里启动它,当前工作主要围绕这一个入口展开。

Hermes Agent 更像两套入口共用一套 runtime:CLI 可以直接本地对话,Gateway 则适合长期在线、接入多渠道。它共享的是同一套 AIAgent 能力层、工具层、状态目录、记忆和技能机制,而不是简单的"一个终端工具加几个外壳"。

源码的 gateway/platforms/ 目录下已经落地了近二十个平台适配器:telegramdiscordslackwhatsappsignalmatrixmattermostfeishudingtalkwecomweixinqqbotbluebubblessmsemailhomeassistantwebhookapi_server 等。README 重点强调的主打平台是 Telegram、Discord、Slack、WhatsApp、Signal + CLI,语音备忘录转写、图片理解、home channel 投递这些能力也都已经进入体系。

这里有一个很关键的工程细节:跨平台共享的不是"同一段活跃会话历史",而是状态和能力。 Gateway 的会话键会按 platform / chat / thread / user 组合隔离;但一个渠道里沉淀下来的记忆和技能,可以在另一个渠道的新会话里继续发挥作用。早上你在 CLI 里沉淀了一个技能,晚上在 Telegram 里遇到类似任务,它就可能已经会用了。这才是多渠道 Agent 从"共享配置"升级到"共享进化"的关键一步。

差异二:模型无关

Claude Code 主要围绕 Anthropic 模型设计。Codex CLI 主要围绕 OpenAI 模型设计。

Hermes Agent 支持 200+ 模型——通过 OpenRouter(覆盖 200+ 模型)、Nous Portal、OpenAI、Anthropic、Google、xAI、Ollama、Kimi、MiniMax、智谱、小米、HuggingFace,以及任何 OpenAI 兼容的端点。你可以用 Claude 做复杂推理,用 GPT 做代码生成,用免费的开源模型做辅助任务。模型之间可以实时切换,甚至可以配置故障转移——主模型限速了,自动切到备用模型,用户无感。

这不只是"支持多模型"的技术花活。这是一个经济学优势:你可以把简单任务交给便宜模型(源码 smart_model_routing 模块会按消息复杂度自动路由),只有复杂任务用旗舰模型。Token 成本可以显著下降。

第 02 讲我们会把这个机制拆到源码级。

差异三:六种执行环境

大多数 Agent 只能在本地执行命令。Hermes Agent 支持六种终端后端(源码 tools/environments/ 目录):

后端

源码文件

场景

Local

local.py

本地开发

Docker

docker.py

隔离沙箱

SSH

ssh.py

远程服务器

Daytona

daytona.py

无服务器开发环境

Modal

modal.py

无服务器 GPU 计算

Singularity

singularity.py

HPC 集群

你可以让 Agent 在本地写代码,在 Docker 里跑测试,在 Modal 上训练模型——同一次对话,不同的执行环境。Daytona 和 Modal 两个无服务器后端在空闲时自动休眠,几乎零成本。

差异四:安全深度

当 Agent 可以自主创建技能文件时,技能文件本身就成了攻击面

想象一下:一个被提示词注入攻击的 Agent,写了一个包含后门的技能文件。如果这个文件被持久化,下次加载时——攻击就从一次性的变成了持久性的

Hermes Agent 处理这个问题的方式,分两个维度:

安全整体架构(7 层防线)。源码文档 website/docs/user-guide/security.md 明确列出:

  1. 用户授权——谁能跟 Agent 对话(允许名单、DM 配对)

  2. 危险命令审批——destructive 操作的 human-in-the-loop

  3. 容器隔离——Docker / Singularity / Modal 沙箱

  4. MCP 凭证过滤——MCP 子进程的环境变量隔离

  5. 上下文文件扫描——项目文件中的 prompt injection 检测

  6. 跨会话隔离——session 之间互相不可访问,cron 存储路径防穿越

  7. 输入净化——工作目录参数白名单校验,防 shell 注入

技能扫描专用机制tools/skills_guard.py 针对"外部来源的技能"设计了专门的扫描器:

  1. 结构检查:遍历技能目录,识别可扫描文件类型

  2. 120 条威胁正则模式THREAT_PATTERNS 数组)——覆盖 exfiltration、injection、destructive、persistence、network、obfuscation、execution、traversal、mining、supply_chain、privilege_escalation、credential_exposure 共 12 大类威胁

  3. 不可见 Unicode 检测INVISIBLE_CHARS 集合)——识别 zero-width space、bidi override 等 17 种隐藏字符

  4. 基于来源的信任级别策略INSTALL_POLICY)——builtin / trusted(openai/skills、anthropics/skills)/ community / agent-created 四档,每档对 safe/caution/dangerous 裁决有不同的允许或拒绝规则

注意:这是纯静态分析,不涉及 LLM 语义审计——skills_guard.py 的模块文档明确写着 "regex-based static analysis"。好处是零额外成本、确定性结果;代价是只能覆盖已知威胁模式。

这些是其他 Agent 不太需要面对的问题——因为它们没有"Agent 自动生成可执行技能文件"这个场景。


一张表看懂竞争格局

维度

Claude Code

Codex CLI

Cursor

Hermes Agent

学习能力

auto memory(事实级)

无自主学习

无自主学习

闭环学习(记忆 + 技能创建 + 渐进改良)

跨会话记忆

Memory + CLAUDE.md

AGENTS.md

.cursorrules + 记忆

MEMORY.md + USER.md + FTS5 会话搜索 + 可插拔 Provider

部署模式

本地 CLI

本地 CLI

桌面应用

CLI + Gateway 双入口,可本地也可服务化部署

访问渠道

终端

终端

IDE

CLI + 近二十消息平台

模型支持

Anthropic

OpenAI

多模型

200+ 模型(OpenRouter 聚合 + 直连)

执行环境

本地

本地

本地

6 种后端(含 Docker / SSH / Modal / Daytona / Singularity)

安全架构

权限 + 确认

沙箱

IDE 隔离

7 层防线 + 技能扫描器(120+ 规则)

开源协议

部分开源

开源

闭源

MIT 全开源

定时任务

内置 Cron 调度器(cron/scheduler.py

技能系统

自动创建 + 渐进改良 + 安全扫描

这张表值得仔细看。

Claude Code 和 Cursor 在各自的维度上仍然是最强的——Claude Code 的代码理解深度和 auto memory 的精准度、Cursor 的 IDE 集成体验,目前没有谁能替代。Claude Code 的 auto memory 已经能主动识别用户偏好和纠正反馈并持久化,这是"事实级"自主学习的标杆。

但 Hermes Agent 打开了一个新维度。看最后一行:技能系统——在主流编码代理里,很少有产品把"从工作经验中自动提炼可复用的操作方法"做成内建的、持续运转的机制。记忆存的是"用户喜欢什么",技能存的是"遇到这类问题该怎么做"。这不是一个"多了一个功能"的差异,而是一个层次差异——从记住事实,到提炼方法。


多层次的记忆系统:不是一个 MEMORY.md 就完事了

文章前面我说"Hermes Agent 有自己的 MEMORY.md"——准确地说,Hermes Agent 的记忆系统是由多个独立子系统组合起来的:

子系统

存储位置

作用

MEMORY.md

(Agent 个人笔记)

~/.hermes/memories/MEMORY.md

环境事实、约定、学到的东西,上限 2,200 字符

USER.md

(用户画像)

~/.hermes/memories/USER.md

用户偏好、沟通风格、期望,上限 1,375 字符

会话搜索

(FTS5 全文索引)

SQLite 会话库

跨会话检索 "我们之前怎么处理这个问题的"

可插拔 Memory Provider plugins/memory/

8 种可选集成:Honcho、mem0、Supermemory、ByteRover、Hindsight、Holographic、OpenViking、RetainDB

前两个是 Hermes Agent 自己的"核心记忆"——以frozen snapshot 的方式注入到 session 启动时的 system prompt 里,在 session 中由 memory 工具动态增删改查。Agent 自己是它的策展人。

会话搜索和 Memory Provider 是"长期记忆与外部脑"——解决 "我一个月前是不是讨论过这个" 这种跨会话问题,以及对接成熟的开源记忆系统。

这四个子系统加起来,才是完整的"Hermes Agent 记忆"。简化成一句"MEMORY.md"容易误导人。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐