Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

15.7 借鉴哲学:从 Hermes 学到的"自进化"工程原则

"自进化不是 feature,是 Agent 在长跑中胜出的唯一办法。"


一、把 Hermes 看作"系统级方法论"

如果你读完 15.4–15.6 之后只学到一个东西,那应该是:"自进化"不是一个 feature,它是 Agent 在真实长跑中胜出的唯一办法

因为:

  • 短期:谁都能写出"能跑"的 Agent——前几天我们一起搭的"小付手"已经能完成邮件摘要、查日程、保存笔记;
  • 长期:能跑 ≠ 能用。能用 ≠ 能用1 年
  • 真正的差异在于:30 天后、90 天后、1 年后,你的 Agent 到底是停在原地的工具,还是变成了你的私人版本

本节把这个差异拆成 5 条可迁移的工程原则。


二、原则 1:把"长跑"当作默认假设

2.1 为什么"长跑"是大问题

短期 Agent 和长期 Agent 的工程差异是数量级的:

维度短期 Agent长期 Agent(Hermes 视角)
状态保存RAM 内即可必须落盘 + 可回滚
崩溃恢复无所谓必须能接上
依赖管理freeze 即可频发更新 + 灰度发布
可观测debug 日志指标 + 日志 + 追踪 + 反馈
安全本机权限即可凭证轮换 + 权限审计 + 远程控制
备份无所谓周期 + 增量 + 跨机
演进不演进持续自迭代

2.2 借到自己的系统:把"长跑"作为第一天的设计目标

如果你要让一个 Agent 真的在生产环境用超过 30 天,从第一天就考虑这些:

  1. 状态必须落盘:所有 session / 记忆 / 任务进度都进数据库(Hermes 默认 SQLite);
  2. 凭证走 Keyring:不要写在 config.yaml
  3. 启动自动恢复:当前 session 中断时,下次启动时能从断点继续;
  4. 能力可演进:把"添加新能力"的接口从"改源码"降到"改配置"或"加 Skill";
  5. 自我可观测:能 5 分钟内知道"我的 Agent 这一刻在做什么、为什么"。

大多数"Agent 上线一个月就废"的项目都死在上面任意一条没做对。


三、原则 2:把"可持续沉淀"作为核心能力

3.1 三种"持续沉淀"方式

Hermes 在做的事,本质上是把"经验"变成"沉淀物"的三种循环:

输入沉淀物机制
对话 → Skill自进化技能闭环(提炼 + 迭代)
对话 → USER.md用户建模增量(每次对话补充一点)
对话 → MEMORY.md事实 + 经验增量

每种"沉淀物"都满足两个特征:

  1. 机器可读(LLM 能用、文件系统能索引);
  2. 人类可读(你可以直接打开看、改、合并)。

3.2 借到自己的系统:设计你自己的"沉淀物"

如果你做的 Agent 不是用 Hermes(不享受它的 self-evolving),也要至少设计以下 3 种"沉淀物":

沉淀物内容更新方式
memory.json长期事实、用户偏好、项目约定显式(用户告知)或半显式(人工审计)
feedback.md用户对每个失败的反馈人工或自动
skill/可复用流程 / 工具人工

要点:哪怕每次只增加 1 行,时间会给你回报。


四、原则 3:把"反馈"做成闭环

4.1 反馈的 3 种形态

Hermes 实际上有 3 种"反馈回路"——单独任何一种都不够,组合起来才是闭环:

反馈形态信号处理
用户显式"这个 skill 不好"标记 deprecated
"这个 skill 应该这样改"写进 FEEDBACK.md
任务结果成功评估为"可提炼"
失败评估为"需要改进"
用户行为模式总在晚上 22:00 复盘提炼成 USER.md
偏好直接给代码提炼成 USER.md

4.2 借到自己的系统:让你的 Agent 也有 3 种反馈

不管你是否做 self-evolving,至少要给 Agent 一种"反馈机制":

class FeedbackLoop:
    def on_task_done(self, trajectory):
        # 形态 2:基于结果
        if trajectory.success:
            self.record_positive_example(trajectory)
        else:
            self.record_failure(trajectory)
    
    def on_user_message(self, msg):
        # 形态 3:用户行为信号
        if self.looks_like_preference(msg):
            self.update_user_model(msg)
    
    # 形态 1 用户显式 feedback 是你写代码时就预留接口
    def on_user_explicit_feedback(self, feedback):
        self.handle(feedback)

五、原则 4:跨渠道 ≠ 重复数据

4.1 Hermes 的"一份 USER.md,多渠道共享"

OpenClaw 默认每个渠道独立 session;Hermes 默认合并为同一真人。这是个有意识的工程取舍——

  • 不合并的好处:每个渠道独立、隔离、互不干扰;
  • 合并的好处:跨渠道人格一致、记忆一致、长期使用体验连贯。

Hermes 选择后者。

4.2 借到自己的系统:明确你想要的"跨渠道策略"

如果你做一个跨渠道 Agent,必须先想清楚:

策略实现风险
完全隔离每个渠道独立 session + 记忆用户体验差(每个渠道是不同人格)
完全合并同一真人 = 同一 session安全风险(家人 / 同事能不能看到你的信息?)
部分合并同"个人偏好"维度合并;不同"工作上下文"维度隔离实现复杂,但最稳
按身份/项目分同身份 → 同个人记忆;不同项目 → 不同项目记忆复杂度最高

Hermes 默认"完全合并"——如果你做新的 Agent,可以根据你的场景选择不同策略。


六、原则 5:可换内核(plugin / extension)= 长期可控

5.1 Hermes 的可换程度

Hermes 暴露的可换点:

可换默认实现替换
LLM ProviderOpenAI / Anthropic任意主流模型(数量以仓库为准)
Tool BackendlocalDocker / SSH / Singularity / Modal / Daytona
Memory StoreSQLite + FTS5Redis / Postgres / MongoDB
Skill Formatagentskills.io 兼容自定义
Voice TranscriberOpenAI WhisperParaformer / whisper.cpp

5.2 借到自己的系统:把可换性作为长期可控的前提

如果你的 Agent 跑在生产里,它一定会被换——可能换模型、可能换存储、可能换某个工具。不让换 = 后期痛苦

把"换"做得便宜的设计准则:

  1. 接口稳定:定义"插件协议"而不是"具体实现";
  2. 配置覆盖:每个可换点都能被 config.yaml 一行配置修改;
  3. 失败可降级:默认实现挂了,不要让整个 Agent 挂——只降级那一块;
  4. 可观测:每个"插件加载"和"插件调用"都进指标;
  5. 可写:插件 API 文档化,让第三方能写。

七、原则 6(隐藏):把"Agent 当成产品"来运营

7.1 Hermes 团队的运营哲学

读了 Hermes 的官方文档、Issue tracker、Discord 公告后,我发现他们有几个很产品化的做法:

  • 每周 release notes —— 列改动 / 行为兼容性;
  • MCP / 技能生态 —— 与其他 OpenClaw 系产品兼容,避免生态孤岛;
  • 明确 deprecation 政策 —— "v2 将废弃某个 API",给出替代 + 迁移路径;
  • 教程与示例 —— 通过 hermes init --example 跑一遍"我能做什么";
  • 可关闭的开关 —— self-evolving 关掉就是"普通 Agent",不强制用户接受新特性。

7.2 借到自己的系统

如果你做的不只是"个人项目",而是"团队 / 公司"用的 Agent:

  • release notes:每次升级都写得清楚,不要"silent update";
  • deprecation 政策:给用户至少一个版本的过渡;
  • 示例 / 教程:让 5 分钟内能跑出一个"能 demo"的版本;
  • 可关闭的特性:保守用户能逐步启用,不是一上来就要接受新范式。

八、把 6 条原则压成一句

如果上面 6 条太多难记,最后压成一句——

让你的 Agent 像一个"长跑型服务 + 持续学习系统 + 可换内核的产品"一样设计。

如果只能挑一条做,就做"状态必须落盘 + 凭证走 Keyring"——这是 30 天后不出问题的最低门槛。


九、本部分小结(Harness 谱系 + Hermes)

读完整章,你应该已经能回答:

  • 什么是"自进化 Agent":任务后提炼 Skill + Skill 离线自迭代 + 主动反思。
  • 三层记忆是什么:长期语义(MEMORY/USER/Skills)+ 工作记忆 + 情景日志。
  • Nudge Engine 做什么:每隔一段时间主动问自己"我学到了什么"。
  • 自进化的风险与边界:草稿机制 + 安全审计 + 回滚 + 用户显式关闭。
  • 可迁移原则:长跑假设、持续沉淀、反馈闭环、跨渠道策略、可换内核、Agent 当成产品。

读 Hermes 不只是"学会一个框架",而是学会一种把 Agent 视为"长跑系统 + 学习系统"的设计思维——这才是 Hermes 给 AI 工程的最大启示。


十、接下来读什么

  • 想立刻就用:跟着 14.6(OpenClaw 实战)+ 15.6(Nudge),在自己机器上跑一个 多渠道 + 跨会话学习的 Agent;
  • 想研究工业级 Harness 的实现细节:第 16 章 Claude Code 深度解析——你看 Hermes 的"6 种执行后端"思想,会发现 Claude Code 在"工业 IDE 场景"中走了另一条路;
  • 想理解"插件化元框架":第 17 章 DeepSeek Harness——和 Hermes 的 Plugin 子系统同源思想,但走到极致后是非常不同的工程表达。

下一章:第16章 Claude Code 深度解析