从"龙虾"到"爱马仕":Hermes 进化,全自动自进化 Harness 的架构革命
摘要 :2025 年底,OpenClaw("龙虾")以 30 万 + GitHub Stars 刷新了开源软件历史纪录。然而仅仅两个月后,Hermes("爱马仕")凭借自进化(Self-Evolving) 能力横空出世,连续数周霸榜 GitHub Trending,十周狂揽 11 万星。Hermes 凭什么接棒 OpenClaw?因为它在同一套底层功能之上,实现了全自动的 Harness Engineering------从记忆、约束、编排到反馈,全部开箱自动运转。本文深度拆解 Hermes 的核心架构:学习循环 + 三层记忆 + Honcho 建模,揭示它如何实现全自动 Harness;通过与 OpenClaw 的全方位对比,呈现"连接型"与"进化型"的本质差异;最后提供生产级部署配置与实践建议。这是 Harness 理论的终极落地,也是 AI Agent 从"工具"进化为"数字同事"的里程碑。
📑 目录
- [Hermes 定位:Harness 理论的终极实现](#Hermes 定位:Harness 理论的终极实现)
- [Hermes 核心架构:学习循环 + 三层记忆 + Honcho 建模](#Hermes 核心架构:学习循环 + 三层记忆 + Honcho 建模)
- 2.1 学习循环------自我进化的心脏
- 2.2 三层记忆------从"金鱼"变"老友"
- 2.3 Honcho 建模------认知你的"另一半"
- [Hermes 如何实现全自动 Harness](#Hermes 如何实现全自动 Harness)
- [与 OpenClaw 深度对比:连接型 vs 进化型](#与 OpenClaw 深度对比:连接型 vs 进化型)
- [一张图看懂 Hermes 进化之路](#一张图看懂 Hermes 进化之路)
- 生产级部署与最佳实践
- 6.1 快速部署(本地/Docker)
- 6.2 安全沙箱配置:47 条危险命令规则
- 6.3 三层记忆配置
- 6.4 自改进开关与安全边界
- 总结与展望
1. Hermes 定位:Harness 理论的终极实现
2025 年底,OpenClaw("龙虾")掀起了 AI Agent 的开源浪潮,但它有一个根本性问题:无状态。每次任务独立执行,做完即结束。除非你手动配置 AGENTS.md、SOUL.md、USER.md 等四层配置文件,否则它不会记住上次的偏好。
Hermes 解决的正是这个问题。2026 年 2 月,Nous Research 正式开源 Hermes Agent,短短两个月内 GitHub Stars 突破 27,000+。官方定位非常直白:"The agent that grows with you."(一个会随着使用不断成长的 Agent)。
真正的突破不在于"它能做什么",而在于"它做完之后会发生什么"。Hermes 实现了 Harness Engineering 的终极形态------五大组件全部内置并自动运转:
| Harness 五大组件 | 传统手动实现 | Hermes 内置方案 |
|---|---|---|
| 约束层 | 人工编写规则 + 手动配置沙箱 | 47 条危险命令检测 + 持续演化的威胁建模 |
| 记忆层 | 手动维护知识库 | 三层记忆 + FTS5 全文检索 + Honcho 用户建模 |
| 反馈层 | 人工审查 | 自改进学习循环(任务完成后自动复盘) |
| 编排层 | 自建多 Agent 流水线 | 子 Agent 委派 + cron 定时调度 |
| 工具层 | 手动安装/编写 Skill | Agent 自动从经验中创建 + 自动进化 Skill |
一句话总结:手动 Harness 靠"配置",自动 Harness 靠"进化"------Hermes 是后者。
2. Hermes 核心架构:学习循环 + 三层记忆 + Honcho 建模
2.1 学习循环------自我进化的心脏
学习循环是 Hermes 实现自进化的核心引擎 ,本质是一个由五个环节组成的持续运转的自我改进飞轮。
#mermaid-svg-xXixmUDsWzNfuvfU{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-xXixmUDsWzNfuvfU .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-xXixmUDsWzNfuvfU .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-xXixmUDsWzNfuvfU .error-icon{fill:#552222;}#mermaid-svg-xXixmUDsWzNfuvfU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xXixmUDsWzNfuvfU .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-xXixmUDsWzNfuvfU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xXixmUDsWzNfuvfU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xXixmUDsWzNfuvfU .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-xXixmUDsWzNfuvfU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xXixmUDsWzNfuvfU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xXixmUDsWzNfuvfU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xXixmUDsWzNfuvfU .marker.cross{stroke:#333333;}#mermaid-svg-xXixmUDsWzNfuvfU svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xXixmUDsWzNfuvfU p{margin:0;}#mermaid-svg-xXixmUDsWzNfuvfU .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xXixmUDsWzNfuvfU .cluster-label text{fill:#333;}#mermaid-svg-xXixmUDsWzNfuvfU .cluster-label span{color:#333;}#mermaid-svg-xXixmUDsWzNfuvfU .cluster-label span p{background-color:transparent;}#mermaid-svg-xXixmUDsWzNfuvfU .label text,#mermaid-svg-xXixmUDsWzNfuvfU span{fill:#333;color:#333;}#mermaid-svg-xXixmUDsWzNfuvfU .node rect,#mermaid-svg-xXixmUDsWzNfuvfU .node circle,#mermaid-svg-xXixmUDsWzNfuvfU .node ellipse,#mermaid-svg-xXixmUDsWzNfuvfU .node polygon,#mermaid-svg-xXixmUDsWzNfuvfU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xXixmUDsWzNfuvfU .rough-node .label text,#mermaid-svg-xXixmUDsWzNfuvfU .node .label text,#mermaid-svg-xXixmUDsWzNfuvfU .image-shape .label,#mermaid-svg-xXixmUDsWzNfuvfU .icon-shape .label{text-anchor:middle;}#mermaid-svg-xXixmUDsWzNfuvfU .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-xXixmUDsWzNfuvfU .rough-node .label,#mermaid-svg-xXixmUDsWzNfuvfU .node .label,#mermaid-svg-xXixmUDsWzNfuvfU .image-shape .label,#mermaid-svg-xXixmUDsWzNfuvfU .icon-shape .label{text-align:center;}#mermaid-svg-xXixmUDsWzNfuvfU .node.clickable{cursor:pointer;}#mermaid-svg-xXixmUDsWzNfuvfU .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-xXixmUDsWzNfuvfU .arrowheadPath{fill:#333333;}#mermaid-svg-xXixmUDsWzNfuvfU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xXixmUDsWzNfuvfU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xXixmUDsWzNfuvfU .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xXixmUDsWzNfuvfU .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-xXixmUDsWzNfuvfU .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xXixmUDsWzNfuvfU .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-xXixmUDsWzNfuvfU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xXixmUDsWzNfuvfU .cluster text{fill:#333;}#mermaid-svg-xXixmUDsWzNfuvfU .cluster span{color:#333;}#mermaid-svg-xXixmUDsWzNfuvfU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xXixmUDsWzNfuvfU .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-xXixmUDsWzNfuvfU rect.text{fill:none;stroke-width:0;}#mermaid-svg-xXixmUDsWzNfuvfU .icon-shape,#mermaid-svg-xXixmUDsWzNfuvfU .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xXixmUDsWzNfuvfU .icon-shape p,#mermaid-svg-xXixmUDsWzNfuvfU .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-xXixmUDsWzNfuvfU .icon-shape rect,#mermaid-svg-xXixmUDsWzNfuvfU .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xXixmUDsWzNfuvfU .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-xXixmUDsWzNfuvfU .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-xXixmUDsWzNfuvfU :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 深化阶段
复用阶段
进化阶段
沉淀阶段
执行阶段
反馈循环
执行任务
自主创建Skill
Skill自改进
跨会话召回
用户建模
Honcho
环节一:自主创建 Skill
当 Agent 完成复杂任务后,会自动将解决方案提炼成独立的 Markdown 技能文件存储起来。触发条件包括:
- 任务中间调用了 5 次以上工具;
- 任务出错后又自己把流程救回来了;
- 用户直接纠正了它的输出。
这套机制完全静默运行,很多时候你根本不知道 Agent 又给自己写了个新技能。
环节二:Skill 自改进
Skill 不是一成不变的。根据用户的使用反馈,Agent 会自动回头修改对应的 Skill 文件,优化其执行步骤。某金融团队的应用案例显示,其风险评估技能经过 27 次自动迭代后,准确率从 79% 提升至 94%。
环节三:跨会话召回
通过 FTS5 全文检索引擎,Agent 能在新对话中按需检索并加载相关的历史记忆片段,而非全量加载,从而保持上下文窗口恒定。
环节四:Honcho 用户建模
Honcho 系统能分析交互行为,推断用户深层的偏好、习惯与身份特征。下文会详细介绍。
#mermaid-svg-Y01sgj1gPBAwERYY{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Y01sgj1gPBAwERYY .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Y01sgj1gPBAwERYY .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Y01sgj1gPBAwERYY .error-icon{fill:#552222;}#mermaid-svg-Y01sgj1gPBAwERYY .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Y01sgj1gPBAwERYY .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Y01sgj1gPBAwERYY .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Y01sgj1gPBAwERYY .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Y01sgj1gPBAwERYY .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Y01sgj1gPBAwERYY .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Y01sgj1gPBAwERYY .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Y01sgj1gPBAwERYY .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Y01sgj1gPBAwERYY .marker.cross{stroke:#333333;}#mermaid-svg-Y01sgj1gPBAwERYY svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Y01sgj1gPBAwERYY p{margin:0;}#mermaid-svg-Y01sgj1gPBAwERYY defs #statediagram-barbEnd{fill:#333333;stroke:#333333;}#mermaid-svg-Y01sgj1gPBAwERYY g.stateGroup text{fill:#9370DB;stroke:none;font-size:10px;}#mermaid-svg-Y01sgj1gPBAwERYY g.stateGroup text{fill:#333;stroke:none;font-size:10px;}#mermaid-svg-Y01sgj1gPBAwERYY g.stateGroup .state-title{font-weight:bolder;fill:#131300;}#mermaid-svg-Y01sgj1gPBAwERYY g.stateGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-Y01sgj1gPBAwERYY g.stateGroup line{stroke:#333333;stroke-width:1;}#mermaid-svg-Y01sgj1gPBAwERYY .transition{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-Y01sgj1gPBAwERYY .stateGroup .composit{fill:white;border-bottom:1px;}#mermaid-svg-Y01sgj1gPBAwERYY .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#mermaid-svg-Y01sgj1gPBAwERYY .state-note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-Y01sgj1gPBAwERYY .state-note text{fill:black;stroke:none;font-size:10px;}#mermaid-svg-Y01sgj1gPBAwERYY .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-Y01sgj1gPBAwERYY .edgeLabel .label rect{fill:#ECECFF;opacity:0.5;}#mermaid-svg-Y01sgj1gPBAwERYY .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Y01sgj1gPBAwERYY .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Y01sgj1gPBAwERYY .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Y01sgj1gPBAwERYY .edgeLabel .label text{fill:#333;}#mermaid-svg-Y01sgj1gPBAwERYY .label div .edgeLabel{color:#333;}#mermaid-svg-Y01sgj1gPBAwERYY .stateLabel text{fill:#131300;font-size:10px;font-weight:bold;}#mermaid-svg-Y01sgj1gPBAwERYY .node circle.state-start{fill:#333333;stroke:#333333;}#mermaid-svg-Y01sgj1gPBAwERYY .node .fork-join{fill:#333333;stroke:#333333;}#mermaid-svg-Y01sgj1gPBAwERYY .node circle.state-end{fill:#9370DB;stroke:white;stroke-width:1.5;}#mermaid-svg-Y01sgj1gPBAwERYY .end-state-inner{fill:white;stroke-width:1.5;}#mermaid-svg-Y01sgj1gPBAwERYY .node rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Y01sgj1gPBAwERYY .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Y01sgj1gPBAwERYY #statediagram-barbEnd{fill:#333333;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Y01sgj1gPBAwERYY .cluster-label,#mermaid-svg-Y01sgj1gPBAwERYY .nodeLabel{color:#131300;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-cluster rect.outer{rx:5px;ry:5px;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-state .divider{stroke:#9370DB;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-state .title-state{rx:5px;ry:5px;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-cluster.statediagram-cluster .inner{fill:white;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-cluster.statediagram-cluster-alt .inner{fill:#f0f0f0;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-cluster .inner{rx:0;ry:0;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-state rect.basic{rx:5px;ry:5px;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#f0f0f0;}#mermaid-svg-Y01sgj1gPBAwERYY .note-edge{stroke-dasharray:5;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-note text{fill:black;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram-note .nodeLabel{color:black;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagram .edgeLabel{color:red;}#mermaid-svg-Y01sgj1gPBAwERYY #dependencyStart,#mermaid-svg-Y01sgj1gPBAwERYY #dependencyEnd{fill:#333333;stroke:#333333;stroke-width:1;}#mermaid-svg-Y01sgj1gPBAwERYY .statediagramTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Y01sgj1gPBAwERYY :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Agent启动
收到用户请求
执行结束
工具调用≥5次/自修复/用户纠错
无需提炼
存入~/.hermes/skills/
FTS5索引
等待下次任务
监听
任务执行
完成判断
提炼Skill
Skill存放
后续检索
2.2 三层记忆------从"金鱼"变"老友"
传统 AI 存在"金鱼记忆"问题------每次对话结束,一切归零。Hermes 通过三层记忆架构彻底突破了这一瓶颈。
#mermaid-svg-CGwL1LRl63kAIMxC{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CGwL1LRl63kAIMxC .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CGwL1LRl63kAIMxC .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CGwL1LRl63kAIMxC .error-icon{fill:#552222;}#mermaid-svg-CGwL1LRl63kAIMxC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CGwL1LRl63kAIMxC .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CGwL1LRl63kAIMxC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CGwL1LRl63kAIMxC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CGwL1LRl63kAIMxC .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CGwL1LRl63kAIMxC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CGwL1LRl63kAIMxC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CGwL1LRl63kAIMxC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CGwL1LRl63kAIMxC .marker.cross{stroke:#333333;}#mermaid-svg-CGwL1LRl63kAIMxC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CGwL1LRl63kAIMxC p{margin:0;}#mermaid-svg-CGwL1LRl63kAIMxC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-CGwL1LRl63kAIMxC .cluster-label text{fill:#333;}#mermaid-svg-CGwL1LRl63kAIMxC .cluster-label span{color:#333;}#mermaid-svg-CGwL1LRl63kAIMxC .cluster-label span p{background-color:transparent;}#mermaid-svg-CGwL1LRl63kAIMxC .label text,#mermaid-svg-CGwL1LRl63kAIMxC span{fill:#333;color:#333;}#mermaid-svg-CGwL1LRl63kAIMxC .node rect,#mermaid-svg-CGwL1LRl63kAIMxC .node circle,#mermaid-svg-CGwL1LRl63kAIMxC .node ellipse,#mermaid-svg-CGwL1LRl63kAIMxC .node polygon,#mermaid-svg-CGwL1LRl63kAIMxC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CGwL1LRl63kAIMxC .rough-node .label text,#mermaid-svg-CGwL1LRl63kAIMxC .node .label text,#mermaid-svg-CGwL1LRl63kAIMxC .image-shape .label,#mermaid-svg-CGwL1LRl63kAIMxC .icon-shape .label{text-anchor:middle;}#mermaid-svg-CGwL1LRl63kAIMxC .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CGwL1LRl63kAIMxC .rough-node .label,#mermaid-svg-CGwL1LRl63kAIMxC .node .label,#mermaid-svg-CGwL1LRl63kAIMxC .image-shape .label,#mermaid-svg-CGwL1LRl63kAIMxC .icon-shape .label{text-align:center;}#mermaid-svg-CGwL1LRl63kAIMxC .node.clickable{cursor:pointer;}#mermaid-svg-CGwL1LRl63kAIMxC .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CGwL1LRl63kAIMxC .arrowheadPath{fill:#333333;}#mermaid-svg-CGwL1LRl63kAIMxC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CGwL1LRl63kAIMxC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CGwL1LRl63kAIMxC .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CGwL1LRl63kAIMxC .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CGwL1LRl63kAIMxC .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CGwL1LRl63kAIMxC .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CGwL1LRl63kAIMxC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CGwL1LRl63kAIMxC .cluster text{fill:#333;}#mermaid-svg-CGwL1LRl63kAIMxC .cluster span{color:#333;}#mermaid-svg-CGwL1LRl63kAIMxC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CGwL1LRl63kAIMxC .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CGwL1LRl63kAIMxC rect.text{fill:none;stroke-width:0;}#mermaid-svg-CGwL1LRl63kAIMxC .icon-shape,#mermaid-svg-CGwL1LRl63kAIMxC .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CGwL1LRl63kAIMxC .icon-shape p,#mermaid-svg-CGwL1LRl63kAIMxC .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CGwL1LRl63kAIMxC .icon-shape rect,#mermaid-svg-CGwL1LRl63kAIMxC .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CGwL1LRl63kAIMxC .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CGwL1LRl63kAIMxC .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CGwL1LRl63kAIMxC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 第一层: 会话记忆
第二层: 持久记忆
第三层: 技能记忆
高频使用/知识蒸馏
经验提炼
后续任务
~/.hermes/skills/
可复用方法论
自动进化
向量数据库
用户偏好/习惯/画像
Honcho深度建模
SQLite + FTS5
完整对话记录
毫秒级检索
用户输入
第一层:会话记忆(Session Memory)
最基础的记忆层------所有对话都被完整保存到 SQLite 数据库,并通过 FTS5 建立全文索引。支持毫秒级检索,独特的上下文压缩算法可在保持 95% 信息完整性的前提下,将存储空间压缩至传统方案的 1/8。
第二层:持久记忆(Persistent Memory)
通过向量数据库存储用户偏好与习惯数据,实现个性化服务。其创新的"记忆固化"机制通过定期知识蒸馏,将高频使用的会话记忆转化为持久记忆,使知识检索效率提升 15 倍。一位用户连续使用 3 周后,系统自动优化了其代码风格偏好设置。
第三层:技能记忆(Skill Memory)
以 Markdown 格式存储方法论知识,每个 Skill 包含执行逻辑与效果评估函数,支持版本控制与协作编辑。测试数据显示,技能文档的复用率达到 83%。
2.3 Honcho 建模------认知你的"另一半"
Honcho 是一个开源的原生 AI 记忆库,专门为构建有状态 Agent 而设计。
其核心理念是 Peer-Centric Architecture:Peers 代表空间内的用户、Agent 或任何实体,支持任意组合的多 Agent 或群聊场景。
#mermaid-svg-3JZ4KtF3gtZ8E7c5{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .error-icon{fill:#552222;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .marker.cross{stroke:#333333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 p{margin:0;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .cluster-label text{fill:#333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .cluster-label span{color:#333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .cluster-label span p{background-color:transparent;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .label text,#mermaid-svg-3JZ4KtF3gtZ8E7c5 span{fill:#333;color:#333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node rect,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node circle,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node ellipse,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node polygon,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .rough-node .label text,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node .label text,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .image-shape .label,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .icon-shape .label{text-anchor:middle;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .rough-node .label,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node .label,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .image-shape .label,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .icon-shape .label{text-align:center;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node.clickable{cursor:pointer;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .arrowheadPath{fill:#333333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .cluster text{fill:#333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .cluster span{color:#333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 rect.text{fill:none;stroke-width:0;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .icon-shape,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .icon-shape p,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .icon-shape rect,#mermaid-svg-3JZ4KtF3gtZ8E7c5 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3JZ4KtF3gtZ8E7c5 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Reasoning Layer
推理层
事实推导
生成摘要
生成Peer卡
Dreaming
Honcho数据模型
Workspace
顶级隔离容器
Peer: 用户Alice
Peer: 客服Agent
Peer: 分析Agent
Session: 对话1
Session: 对话2
Honcho 在 Agent 使用中提供两大核心功能:
-
辩证分析------不仅记录用户所言,更能推断其未明说的偏好甚至言行矛盾之处,从而构建更深入的用户画像。
-
推理层(Reasoning Layer) ------持续处理接入数据,进行事实推导、生成摘要、生成 Peer 卡(一段关于该 Peer 的紧凑描述),暴露给 Agent 作为上下文。
Honcho 的 Dreaming 功能可以基于已接入的消息自动生成新的事实和见解,相当于 Agent 的"潜意识思考"。
3. Hermes 如何实现全自动 Harness
对比手动 Harness 与 Hermes 的五大组件,差异一目了然:
| 组件 | 手动 Harness | Hermes 全自动方案 |
|---|---|---|
| 指令层 | 人工编写 AGENTS.md | 内置工具权限 + 沙箱 |
| 约束层 | 手动配置高危命令列表 | 47 条危险命令规则 + 持续更新的威胁建模 |
| 反馈层 | 人工审查日志 | 自改进学习循环(任务完成后自动复盘) |
| 记忆层 | 手动维护知识库 | 三层记忆(会话/持久/Skill)+ FTS5 全文检索 |
| 编排层 | 自建多 Agent 流水线 | 子 Agent 委派 + cron 定时调度 |
左边的"手工活"需要深耕工程经验才能搭建起来;右边的 Hermes 则是开箱即用,装好就能跑。这才是它能够在两个月内接棒 OpenClaw 的核心原因。
4. 与 OpenClaw 深度对比:连接型 vs 进化型
OpenClaw 与 Hermes 代表两种截然不同的技术哲学:前者以"连接一切"为设计目标,后者聚焦于"自主进化"。
| 对比维度 | OpenClaw(连接型/手动 Harness) | Hermes(进化型/全自动 Harness) |
|---|---|---|
| 核心哲学 | 全能助手,插件生态 | 自我进化,越用越强 |
| 记忆能力 | 无状态,需手动配置四层文件 | 三层持久记忆,全自动 |
| 技能管理 | 用户手动安装/编写 Skill | Agent 自动从经验中创建 + 自动进化 |
| 学习方式 | 不学习 | 内置闭环学习系统 |
| 插件生态 | 数千个(ClawHub) | 较少,但官方 40+ 工具 + MCP 协议可扩展 |
| 部署门槛 | 中等 | 极低(5 美元 VPS) |
| 迭代成本 | 高(依赖人工编写配置) | 低(自动化闭环) |
| 适用场景 | 一次性任务、多平台集成 | 长期使用、个性化需求 |
| 安全机制 | 外部规则配置 | 内置 47 条危险命令规则 + 持续进化 |
| 用户画像 | 无 | Honcho 深度建模,辩证分析 |
OpenClaw 更像一个"配置即行为"系统------你写 SOUL.md,它按你的配置调整。记忆系统确实完善(Daily Logs + MEMORY.md + 语义搜索),Skill 生态也庞大,但核心依赖人工编写和维护。
Hermes 则把复杂度和维护成本转移到系统内部,让用户在无需手动干预的情况下获得更好的使用体验。
一个关键洞察 :其实 Hermes 和 OpenClaw 的基础功能高度重合 ------定时调度、子 Agent 委派、浏览器自动化、20+ 平台消息集成,两边全都有。唯一真正的底层结构差异就是 Skill 的自动进化闭环。恰恰是这一个差异,精准踩中了"干预递减"的自动化趋势,为 Agent 向"伙伴"进化抢占了关键生态位。
5. 一张图看懂 Hermes 进化之路
#mermaid-svg-TOs5bhJZ7tvuuyIb{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-TOs5bhJZ7tvuuyIb .error-icon{fill:#552222;}#mermaid-svg-TOs5bhJZ7tvuuyIb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-TOs5bhJZ7tvuuyIb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .marker.cross{stroke:#333333;}#mermaid-svg-TOs5bhJZ7tvuuyIb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-TOs5bhJZ7tvuuyIb p{margin:0;}#mermaid-svg-TOs5bhJZ7tvuuyIb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .cluster-label text{fill:#333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .cluster-label span{color:#333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .cluster-label span p{background-color:transparent;}#mermaid-svg-TOs5bhJZ7tvuuyIb .label text,#mermaid-svg-TOs5bhJZ7tvuuyIb span{fill:#333;color:#333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .node rect,#mermaid-svg-TOs5bhJZ7tvuuyIb .node circle,#mermaid-svg-TOs5bhJZ7tvuuyIb .node ellipse,#mermaid-svg-TOs5bhJZ7tvuuyIb .node polygon,#mermaid-svg-TOs5bhJZ7tvuuyIb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-TOs5bhJZ7tvuuyIb .rough-node .label text,#mermaid-svg-TOs5bhJZ7tvuuyIb .node .label text,#mermaid-svg-TOs5bhJZ7tvuuyIb .image-shape .label,#mermaid-svg-TOs5bhJZ7tvuuyIb .icon-shape .label{text-anchor:middle;}#mermaid-svg-TOs5bhJZ7tvuuyIb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-TOs5bhJZ7tvuuyIb .rough-node .label,#mermaid-svg-TOs5bhJZ7tvuuyIb .node .label,#mermaid-svg-TOs5bhJZ7tvuuyIb .image-shape .label,#mermaid-svg-TOs5bhJZ7tvuuyIb .icon-shape .label{text-align:center;}#mermaid-svg-TOs5bhJZ7tvuuyIb .node.clickable{cursor:pointer;}#mermaid-svg-TOs5bhJZ7tvuuyIb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .arrowheadPath{fill:#333333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-TOs5bhJZ7tvuuyIb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-TOs5bhJZ7tvuuyIb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-TOs5bhJZ7tvuuyIb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-TOs5bhJZ7tvuuyIb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-TOs5bhJZ7tvuuyIb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-TOs5bhJZ7tvuuyIb .cluster text{fill:#333;}#mermaid-svg-TOs5bhJZ7tvuuyIb .cluster span{color:#333;}#mermaid-svg-TOs5bhJZ7tvuuyIb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-TOs5bhJZ7tvuuyIb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-TOs5bhJZ7tvuuyIb rect.text{fill:none;stroke-width:0;}#mermaid-svg-TOs5bhJZ7tvuuyIb .icon-shape,#mermaid-svg-TOs5bhJZ7tvuuyIb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-TOs5bhJZ7tvuuyIb .icon-shape p,#mermaid-svg-TOs5bhJZ7tvuuyIb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-TOs5bhJZ7tvuuyIb .icon-shape rect,#mermaid-svg-TOs5bhJZ7tvuuyIb .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-TOs5bhJZ7tvuuyIb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-TOs5bhJZ7tvuuyIb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-TOs5bhJZ7tvuuyIb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 第四代: 全自动Harness
第三代: 手动Harness
第二代: 上下文工程
第一代: 提示词工程
信息更丰富
增加行为约束
自动化闭环
手工编写 Prompt
单轮被动响应
RAG检索 + 上下文压缩
但无行为约束
OpenClaw
配置即行为
人工编写知识库/Skill
Hermes
自主学习 + 自动进化
三层记忆 + Honcho建模
Hermes 的演进并非凭空出现,而是 AI 工程化从"单点优化"向"系统设计"层层递进的必然产物。它不改变模型能力本身,却能让模型的智能从"不可控的天赋"转化为"可落地的生产力"。
LangChain 的实验极具说服力:不更换模型,仅优化 Harness 部分,编码基准测试排名就从 30 名开外冲进前 5。Harness Engineering 让"用好模型的能力"比"提高模型的能力"更加重要。
6. 生产级部署与最佳实践
6.1 快速部署(本地/Docker)
本地直接部署
bash
# 1. 安装 Hermes
pip install hermes-agent
# 2. 初始化配置
hermes init
# 3. 设置 API Key
export OPENAI_API_KEY="your-key"
export ANTHROPIC_API_KEY="your-key"
# 4. 启动 Agent
hermes run
Docker 部署(推荐生产环境)
yaml
# docker-compose.yml
version: '3.8'
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
ports:
- "18789:18789"
volumes:
- ~/.hermes:/root/.hermes # 配置 + 技能 + 记忆
- /var/run/docker.sock:/var/run/docker.sock
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- HERMES_LOG_LEVEL=info
restart: unless-stopped
6.2 安全沙箱配置:47 条危险命令规则
Hermes 的安全设计不是静态规则集,而是一套持续演化的威胁建模。截至 v0.11.0,tools/approval.py 内置了 47 条危险命令检测规则(v0.8.0 时仅为 33 条,半个月净增 14 条)。
部分核心规则示例:
| 类别 | 检测模式 | 处理方式 |
|---|---|---|
| 删除根目录 | rm -rf / |
阻断 + 审批 |
| 提权操作 | sudo, su, chmod 777 |
阻断 |
| 数据库破坏 | DROP TABLE, TRUNCATE |
阻断 |
| 管道执行 | ` | sh, curl |
| 磁盘填满 | dd if=/dev/zero |
阻断 |
| Fork 炸弹 | `:(){ : | :& };:` |
| 内网扫描 | nmap, masscan |
需审批 |
配置文件示例
yaml
# ~/.hermes/config.yaml
security:
sandbox:
enabled: true
type: docker
workspaceAccess: ro # 只读工作区
maxCommandsPerMinute: 10
timeoutSeconds: 30
approval:
requireUserApproval: true # 所有高风险命令需审批
dangerousPatterns: |
- "rm\\s+-rf\\s+"
- "DROP\\s+(TABLE|DATABASE)"
- "sudo"
- "chmod\\s+777"
- "\\|\\s*sh|curl.*\\|.*bash"
- "dd\\s+if=/dev/zero"
- "\\bnmap\\b"
6.3 三层记忆配置
yaml
# ~/.hermes/config.yaml
memory:
# 会话记忆
session:
backend: sqlite
dbPath: ~/.hermes/session.db
fts5Enabled: true
maxTurnsPerSession: 50
# 持久记忆(向量数据库)
persistent:
backend: chromadb
path: ~/.hermes/persistent
embeddingModel: all-MiniLM-L6-v2
# 技能记忆
skill:
path: ~/.hermes/skills
autoLearnEnabled: true
minToolCallsToCreateSkill: 5
skillVersionControl: git
6.4 自改进开关与安全边界
yaml
# ~/.hermes/config.yaml
evolution:
enabled: true
# 自改进触发条件
triggers:
failureRateThreshold: 0.1 # 失败率 >10% 触发
userFeedbackThreshold: 2 # 低分反馈 ≥2 次触发
autoSkillCreation: true # 自动创建 Skill
autoSkillEvolution: true # 自动进化 Skill
# 安全边界------AI 不可修改的区域
immutableConfigs:
- "security.sandbox.*" # 沙箱配置
- "security.approval.dangerousPatterns" # 危险命令规则
- "evolution.immutableConfigs" # 边界配置本身
- "multiTenancy.isolationMode" # 多租户隔离
# 可修改但需审批的区域
requireApprovalFor:
- "memory.persistent.embeddingModel"
- "tools.whitelist.*"
# 熔断机制
circuitBreaker:
enabled: true
maxFailedImprovements: 3 # 连续失败 3 次后熔断
cooldownMinutes: 30 # 熔断冷却时间
7. 总结与展望
Hermes 的出现标志着 AI Agent 从"工具"进化为"数字同事"的里程碑。通过学习循环 + 三层记忆 + Honcho 建模三位一体的全自动架构,它让"越用越强"从口号变成了现实。
| 维度 | 核心能力 | 与 OpenClaw 的差异 |
|---|---|---|
| 学习循环 | 五环节自我改进飞轮 | OpenClaw 无自动学习 |
| 三层记忆 | 会话 + 持久 + Skill | OpenClaw 需手动配置 |
| Honcho 建模 | 辩证用户画像 + 推理层 | OpenClaw 无此能力 |
| 全自动 Harness | 五大组件自动运转 | OpenClaw 靠人工配置 |
| 安全机制 | 47 条规则 + 持续演化 | OpenClaw 靠外部规则 |
未来的演进方向:
- 更激进的 RL 路径:在自动 Skill 生成之外,Hermes 还支持通过强化学习从根本上改变模型能力(两条升级路径并行);
- 联邦自进化:多个 Hermes 实例共享进化经验;
- 自改进边界扩展:在安全可控前提下扩大 AI 可自主优化的范围。
给开发者的选择建议:
- 追求极致的自动化和长期使用体验:选 Hermes;
- 追求极致的生态广度和一次性任务效率:选 OpenClaw;
- 两者并非替代关系,而是层层递进,共同构成了 AI Agent 的完整生态组合。
参考资料
- Hermes Agent 官方文档
- Honcho 官方文档
- Hermes Agent vs OpenClaw:AI Agent 框架的「开源之王」与「硅谷新星」
- Hermes Agent 技术全解析:构建自主进化的智能体系统
- 自主进化型 AI Agent 全解析:Hermes Agent 技术架构与实践指南
- Hermes Agent 安全架构深度拆解:47 条危险命令规则
- 深度拆解 HermesAgent(五):记忆系统与用户建模
版权声明:本文为 CSDN 博主原创,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
如果觉得本文对你有帮助,请点赞、收藏、关注,支持后续更多干货!