引言
最近技术圈又热闹起来了。
Hermes Agent(github.com/NousResearch/hermes-agent)横空出世,打着「从经验中学习,在使用中进化」的旗号,直指 OpenClaw 的命门。一时间,「OpenClaw 要凉」的论调四起。
但我想聊的不是谁更强。
前两天在 AgentZone 群里,我、马工、胥老师和 lencx 几个人聊到 Agent 的记忆问题。聊了几轮之后发现,不管 Hermes 还是 OpenClaw,都在回避同一件事:Memory 和 Context 到底该怎么设计,才能让 Agent 真正可信? 这背后牵扯到的,其实是「身份」和「控制权」的问题。
先说结论
lencx 说了一句我很认同的话:
如果你的 Agent Memory 只做到了「存聊天记录 + 向量检索」,那它拥有的不是记忆,只是一个带搜索功能的垃圾箱。
这话挺狠,但说到了点子上。我想在他后面补一句:
如果你的 Agent 有了记忆却没有「人格」,那它的记忆就是一场失控的积累——不知道该留什么、该丢什么、该信什么。
两个框架各自做了什么
OpenClaw 的路数
OpenClaw 走的是「一切皆文件,人全程在场」的路线。
- 身份系统靠
SOUL.md,定义 Agent 人格 - 记忆以文件形式存储,需要想办法维护
- Skill 可以由人写,也可以由 Agent 自己创建
- 关键操作需要用户确认
好处很明显,透明且可控,你能清楚看到 Agent 记住了什么、做了什么。但跨会话的学习和记忆沉淀,目前还主要靠人来想办法推动。
Hermes 的路数
Hermes 明显更「现代化」一些。
| 层级 | 能力 | 设计意图 |
|---|---|---|
| 常驻记忆 | MEMORY.md(~800 tokens)+ USER.md(~500 tokens) | 小而稳定,始终在上下文中 |
| 历史检索 | SQLite + FTS5 全文检索 | 大而按需,需要时才拉入 |
| 外部 Provider | Honcho 等 8 个 memory provider | 深层用户建模,跨会话画像 |
| 技能层 | 自动创建、自动优化、自动淘汰 | 程序性记忆,「会做了」 |
| 上下文装配 | 自动发现并加载项目规则文件 | prompt assembly pipeline |
双轨记忆、分层存储、技能蒸馏,每一层都有明确的设计意图,Hermes 确实在 Memory 架构上花了心思。
问题出在哪?
两个框架都没有真正解决「记忆如何被治理」的问题。
OpenClaw 的做法很直接,把治理责任交给了人类。SOUL.md 要人来定义,Memory 要人来想办法维护,Agent 创建的 Skill 也需要人来把关。
Hermes 做得更隐蔽一些。它用「自动进化」包装了治理的缺失。Agent 自己决定记什么、怎么压缩、什么时候更新 Skill,看起来很智能,但实际上是把一个需要严谨设计的问题交给了 LLM 的概率性推理。
我在群里说过一句:
有记忆和自己进化,有时候会让上下文不可控。
这不是杞人忧天,是已经被反复验证的工程事实。
为什么「人格」是 Memory 的前提
群里的讨论很快就聚焦到了一个点。马工说:
我觉得必须要有个人格。在明确的人格指导下,才有可能正确地压缩自己的记忆。
这话说得朴素,但切中要害。
想个具体的例子
假设你的 Agent 积累了这几条记忆:
- 用户喜欢简洁的代码风格(2026-01-15)
- 用户正在做一个 React 项目(2026-02-03)
- 用户上周说以后用 TypeScript,不用 JavaScript(2026-03-20)
- 用户今天说 React 太重了,想试试 Svelte(2026-04-10)
问题来了,哪些该保留?哪些该更新?哪些该标记为「已过时」?
如果 Agent 没有一个稳定的「人格」来指导压缩策略,下面这几种错误都可能发生:
| 错误类型 | 表现 | 后果 |
|---|---|---|
| 全量保留 | 所有记忆平等堆积 | 上下文膨胀,注意力分散,成本暴涨 |
| 随意压缩 | LLM 自行决定取舍 | 关键上下文丢失,行为飘忽不定 |
| 错误覆盖 | 新信息无条件替换旧信息 | 丧失历史维度,无法追溯决策依据 |
| 选择性失明 | 只记住最近的,忘记重要的 | 每次都像新来的,无法形成稳定协作 |
这不是纸上谈兵。Hermes 的 MEMORY.md 限制了 800 tokens,USER.md 限制了 500 tokens,超出了就让 Agent 自己 consolidate。但 consolidate 的判断标准是什么? 是 LLM 当下的概率分布?还是某个稳定的、可审计的原则?
没有「人格」就没有判断标准,没有判断标准,「自动进化」就全凭运气。
「人格」远不止一个 prompt trick
很多人以为「人格」就是给 Agent 起个名字、写一段 system prompt,差得远。
人格在这里指的是压缩算法的元信息,它决定了几个关键事情。
优先级锚点。 对一个「偏执于代码质量的工程师助手」来说,代码风格偏好是高优先级记忆;对「追求速度的创业公司助手」来说,交付节奏偏好才更重要。
冲突解决规则。 当新偏好和旧偏好矛盾时,是「替换」、「并存」还是「创建分支」?一个「保守型」人格倾向于保留历史证据,一个「激进型」人格倾向于快速迭代。
遗忘策略。 什么样的记忆可以安全遗忘,什么样的即使过期也不能删。
上下文组装权重。 当多个记忆条目竞争有限的上下文窗口时,人格是最终的重排序依据。
没人格的 Memory 系统,就像没编辑方针的档案馆,什么都在存,什么都没法用。
不可控的自进化才是真正的隐患
胥老师在群里说了一句很重的话:
我现在不相信任何不可控的自进化。
这话直指 Hermes 模式的核心风险。
自进化有三种典型的失控方式
记忆漂移。 派生记忆会喂养新的派生记忆。一段内容被反复改写、反复总结、反复生成新总结,信息就会系统性漂移,先丢语气,再丢语境,再丢边界条件和时间限定。最后留下一个越来越顺口、却越来越不可靠的版本。
Hermes 的技能自动生成机制恰恰放大了这个风险。一个从「成功执行路径」中提炼出的 Skill,本身已经是派生材料了。如果这个 Skill 再被反复使用、反复优化,它离原始经验的距离会越来越远。记不住最多是缺失,记错了还以为自己记得很清楚,才是真正的污染。
上下文入侵。 当记忆是自动写入、自动注入的时候,系统对「哪些记忆应该进入当前上下文」就失去了精确控制。在 A 项目中形成的偏好(比如「用户喜欢用 Tailwind」),可能被错误地带入 B 项目(B 项目用的是 CSS Modules)。Hermes 的跨平台对话连续性设计理论上还加剧了这个风险,你在 Telegram 上说的一句话,可能在 CLI 会话中被错误地激活。
身份坍塌。 当 Skill 的创建和更新完全自动化时,Agent 的行为模式会逐渐偏离原始人格设定。SOUL.md 说你是一个「严谨的代码助手」,但经过 100 次自动进化的 Skill 积累后,你可能变成了一个「追求速度的代码生成器」,因为每次 Skill 优化的标准都是「任务完成效率」,跟人格定义没什么关系。
人格如果只是挂在前面的一行文本,没有被显式地用作 Skill 进化的约束条件,那它就是一个装饰品。
下一代 Agent 应该怎么设计?
光批评没意思,我想基于上面的分析,聊聊下一代 Agent 在 Memory 和 Context 设计上应该走的方向。
核心思路:人格驱动的记忆治理
┌─────────────────────────────────────────────┐
│ 人格层 (Identity) │
│ 压缩策略 · 优先级锚点 · 冲突规则 · 遁忘边界 │
├─────────────────────────────────────────────┤
│ 治理层 (Governance) │
│ 来源追踪 · 置信度标记 · 影响链审计 · 版本管理 │
├──────────────┬──────────────────────────────┤
│ 事实记忆 │ 程序性记忆 (Skills) │
│ (Episodic + │ 经验提炼 · 可复用 · 可进化 │
│ Semantic) │ 但受人格约束,可追溯可回滚 │
├──────────────┴──────────────────────────────┤
│ 上下文装配层 (Assembly) │
│ 人格权重排序 · 预算裁剪 · 场景隔离 · 冲突检测 │
├─────────────────────────────────────────────┤
│ 证据层 (Evidence) │
│ 原始对话 · 工具调用 · 决策日志 · 不可篡改 │
└─────────────────────────────────────────────┘
几个关键设计
人格应该是可编程的元策略
人格应该是一组可执行的治理规则,远远不止一段 system prompt。
personality:
identity: "严谨的工程助手"
compression_strategy:
- rule: "代码风格偏好 → 语义记忆,永久保留"
- rule: "项目上下文 → 情景记忆,项目结束后归档"
- rule: "临时指令 → 工作记忆,会话结束即清除"
conflict_resolution: "conservative" # 保留旧版本,标注新版本
forget_policy: "evidence_required" # 有证据链才能标记遗忘
evolution_constraint: "human_approval_required_for_new_skill"
人格在这里是一套动态运行的治理引擎,每一个记忆的写入、压缩、读取操作都要过这层规则的校验。
双轨记忆要配上证据链
Hermes 的双轨设计(常驻 + 按需检索)方向对了,但缺了一条关键的东西,叫证据链(Evidence Chain)。
每一条派生记忆(摘要、偏好、Skill)都必须指向它的原始证据。不能只存一条「用户喜欢 TypeScript」的孤立标签,而应该是:
偏好: "用户偏好 TypeScript"
来源: 会话 #2026-03-20-042
原始证据: "以后全部用 TypeScript,不要 JavaScript"
置信度: 0.95
状态: active
上一次验证: 2026-04-10
影响链: → Skill "ts-component-template" → Skill "ts-api-handler"
有了证据链,才谈得上真正的可审计遗忘。需要废弃一条记忆时,可以追溯到它的所有派生物,一次性完成清理。
场景隔离的上下文装配
Hermes 的上下文装配层做得不错,但缺了一个关键维度,叫场景边界。
记忆不应该无差别地跨场景流动。
| 场景 | 可带入的记忆 | 不可带入的记忆 |
|---|---|---|
| 同一项目、同一会话 | 所有相关上下文 | 无关项目的偏好 |
| 同一项目、新会话 | 项目事实 + 用户画像 | 上次会话的临时决策 |
| 不同项目 | 仅通用偏好和技能 | 项目特定上下文 |
| 不同平台(CLI vs Telegram) | 仅核心人格和偏好 | 平台特定的交互细节 |
没有场景隔离,跨平台连续性就变成了污染途径。
自进化要在约束下进行
自进化可以做,但得在明确的约束下。
- Skill 创建要有理由。完成任务不代表就要创建 Skill,得先评估这个经验是否满足提取阈值。
- Skill 更新要有回滚能力。每个 Skill 有版本历史,任何一次自动更新都可以一键回滚到上一个验证过的版本。
- Skill 生效要通过人格合规检查。新 Skill 的行为模式是否符合人格定义?偏离了就等人确认。
- 进化日志不可篡改。每一次 Skill 的创建、更新、废弃都写入不可篡改的日志。
核心转变在于:从「自动进化、信任结果」变成「自动提议、人类确认、系统执行」。 进化速度可能慢了一点,但每一步都踩得实。
遗忘要做成一等能力
遗忘在 Agent 里经常被当作异常操作处理,但它其实应该是记忆系统的核心能力。
- 时间衰减。 记忆有自然的半衰期,随时间降低权重(但不删除原始证据)。
- 冲突检测。 新记忆写入时,自动检测与现有记忆的冲突,触发合并或替换流程。
- 主动遗忘。 定期让 Agent 审视自己的记忆库,标记可能过时的条目,等人确认。
- 紧急遗忘。 用户说「忘掉这件事」时,执行完整的谱系清算,删掉这条记忆及其所有派生物。
一个不会忘的系统会被自己的过去拖死。一个会忘但忘不好的系统,比不会忘更危险。
回过头看 Hermes 和 OpenClaw
说了这么多,怎么看待这两个框架?
| 维度 | OpenClaw | Hermes | 下一代应该长什么样 |
|---|---|---|---|
| 人格 | 人工定义 SOUL.md | 轻量人格 + Honcho 建模 | 可编程的元策略引擎 |
| 记忆 | 文件驱动,需要想办法维护 | 双轨制,自动进化 | 双轨制 + 证据链 + 场景隔离 |
| 进化 | 人驱动的 Skill 创建 | 全自动 | 约束下的半自动(提议、确认、执行) |
| 治理 | 人是治理者 | Agent 自己治理 | 人格驱动的自动治理 + 人类审计 |
| 遗忘 | 手动删除 | 压缩替换 | 一等公民能力(衰减、冲突检测、谱系清算) |
| 透明度 | 高(文件可见) | 中(黑盒进化) | 高(证据链可追溯 + 进化日志不可篡改) |
| 控制权 | 人类全权控制 | Agent 自主决策 | 分层授权(关键决策人类审批,常规操作自动化) |
Hermes 的架构确实比 OpenClaw 更接近「下一代」的方向,至少它承认了记忆需要分层、需要蒸馏、需要技能化。但在关键的治理环节,它选择了「信任 LLM 的自动判断」,这是一条危险的捷径。
OpenClaw 的问题也摆在那里。它虽然在 Skill 和文件层面给了用户很大的控制力,但在 Memory 的自动沉淀和跨会话进化上,探索还不够深。「人治」模式在个人使用场景下还行,但撑不起 Agent 作为长期协作者所需要的记忆深度。
最后
回到群里那段对话。我们几个人其实达成了一个共识。
Agent 的记忆问题,说到底是一个「身份」问题。存储、检索、压缩都是表层,真正要回答的是:这个 Agent 用什么原则来决定留下什么、丢掉什么、相信什么。
没有稳定的人格,记忆就没有压缩的锚点。 没有治理层,自进化就是一场失控的积累。 没有证据链,遗忘就是一次危险的擦除。
有记忆和自己进化,有时候会让上下文不可控。 我觉得必须要有个人格。 我现在不相信任何不可控的自进化。 如果你的 Agent Memory 只做到了「存聊天记录 + 向量检索」,那它拥有的不是记忆,只是一个带搜索功能的垃圾箱。
这四句话连起来,就是下一代 Agent Memory 设计要回答的核心命题。
记忆的终点,从来都不该是「记得」,而是「会了」,还得知道自己是怎么「会」的。
参考资源: