目 录CONTENT

文章目录

Hermes Agent:自进化AI Agent——越用越聪明的秘密

PySuper
2026-02-28 / 0 评论 / 0 点赞 / 0 阅读 / 0 字
温馨提示:
本文最后更新于2026-05-22,若内容或图片失效,请留言反馈。 所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

作者:PySuper | 来源:zhengxingtao.com

135K+ GitHub 星标,2026 年增速最快的 Agent 框架。Hermes Agent 的核心创新不是更快、不是更便宜,而是"越用越聪明"——每完成一个任务,就提炼一个 Skill;每犯一次错误,就修补一个漏洞。这不是营销话术,是架构决定的必然。

目录

  1. Hermes 是什么:自进化 AI Agent 框架

  2. 核心创新:闭环学习(Closed Learning Loop)

  3. 三大子系统:Memory / Skill / Nudge Engine

  4. 实战1:本地部署 Hermes Agent

  5. 实战2:体验自进化闭环

  6. SKILL.md 自生成机制

  7. Skill Curator:后台自动评分与修剪

  8. 持久记忆:多后端与跨会话召回

  9. SOUL.md:活的身份文档

  10. 多执行后端:本地 / Docker / SSH / Modal / Daytona

  11. 与 OpenClaw 哲学分歧

  12. 踩坑记录

  13. 总结与展望

1. Hermes 是什么:自进化 AI Agent 框架

1.1 一句话定义

据 Hermes Agent 官方网站(https://www.hermes-agent.org/):

Hermes Agent is an open-source autonomous AI agent built by Nous Research. It's not a coding copilot tethered to an IDE or a chatbot wrapper around a single API. Hermes lives on your server, remembers what it learns, and gets more capable the longer it runs.

翻译:Hermes Agent 是一个开源的自主 AI Agent,由 Nous Research 构建。它不是一个绑定 IDE 的编码助手,也不是一个套壳 API 的聊天机器人。Hermes 住在你服务器上,记住它学到的,运行越久越强大。

1.2 Nous Research 背景

plaintext

Nous Research
├── 创立:2023年,加州 Saratoga
├── 创始人:Jeffrey Quesnelle
├── A 轮融资:$50M,Paradigm 领投
├── 估值:$1B(独角兽)
├── 首发产品:Hermes Agent(2026.02.25)
└── 核心理念:聊天机器人范式已触顶

1.3 关键数据

表格

指标

数值

时间

GitHub Stars

135K+

2026年4月

消息平台支持

17+

含 QQBot

内建 Skill

40+

覆盖 MLOps、GitHub、笔记等

模型支持

400+(Nous Portal)

2026年4月

社区贡献者

290+(含 co-authors)

v0.11.0

安全记录

零 CVE

截至 2026年4月

2. 核心创新:闭环学习(Closed Learning Loop)

2.1 什么是闭环学习

据《How Hermes Agent Gets Better Over Time》(https://hermes-agent.ai/blog/self-improving-ai-guide),Hermes 的自进化不是"自我修改权重"——那需要 GPU 训练。Hermes 的自进化是行为层面的闭环学习

plaintext

┌──────────────────────────────────────────────────────────────┐
│              Hermes 闭环学习(4 阶段)                        │
│                                                              │
│  ┌──────────────┐                                            │
│  │ Stage 1      │                                            │
│  │ 任务执行     │  运行任务,调用工具,浏览网页,              │
│  │ (Execute)    │  生成子 Agent...                           │
│  └──────┬───────┘                                            │
│         │                                                    │
│         ▼                                                    │
│  ┌──────────────┐                                            │
│  │ Stage 2      │  每 15 次工具调用后暂停:                   │
│  │ 自评估检查点 │  "我做了什么?什么有效?什么失败?          │
│  │ (Evaluate)   │   是否值得提炼为 Skill?"                  │
│  └──────┬───────┘                                            │
│         │                                                    │
│         ▼                                                    │
│  ┌──────────────┐                                            │
│  │ Stage 3      │  如果经验值得保留:                         │
│  │ Skill 创建   │  写入或修补 SKILL.md 文件                  │
│  │ (Distill)    │  如果已存在相似 Skill → 扩展而非重复        │
│  └──────┬───────┘                                            │
│         │                                                    │
│         ▼                                                    │
│  ┌──────────────┐                                            │
│  │ Stage 4      │  关键事实、修正、约定写入:                │
│  │ 记忆更新     │  MEMORY.md(环境事实)                     │
│  │ (Persist)    │  USER.md(用户偏好)                       │
│  └──────┬───────┘                                            │
│         │                                                    │
│         └──────────────▶ 下次执行时更聪明                    │
│                         (加载更好的 Skill + 更多记忆)       │
└──────────────────────────────────────────────────────────────┘

2.2 自进化不是什么

表格

不是

修改自己的神经网络权重

修改自己的行为策略(Skill)

自主重写核心代码

自动生成和优化 SKILL.md

通用智能提升

针对你工作流的专业化提升

需要训练 GPU

只需要 API 调用(~$2-10/优化)

2.3 效果量化

据《Learning Loop — Self-Improving AI Skills》(https://hermes-agent.ai/features/learning-loop):

After 20–30 complex tasks, you have an agent that handles your specific workflows measurably faster and with fewer errors.

翻译:完成 20-30 个复杂任务后,你的 Agent 在特定工作流上可测量地更快、更少出错

3. 三大子系统:Memory / Skill / Nudge Engine

3.1 三层记忆架构

据《awesome-code-docs: Hermes Agent Memory, Skills, Learning Loop》(https://github.com/johnxie/awesome-code-docs/blob/main/tutorials/hermes-agent-tutorial/04-memory-skills-learning-loop.md),Hermes 的记忆系统分为三层:

plaintext

┌──────────────────────────────────────────────────────────────┐
│              Hermes 三层记忆架构                              │
│                                                              │
│  Layer 1: 情景记忆(Episodic Memory)                        │
│  ┌──────────────────────────────────────────────┐           │
│  │ 存储:sessions.db(SQLite FTS5)              │           │
│  │ 内容:会话摘要(200-500 字,LLM 生成)       │           │
│  │ 检索:FTS5 全文搜索                           │           │
│  │ 写入:会话结束时自动生成                      │           │
│  │ 特点:按内容搜索,按需召回                    │           │
│  └──────────────────────────────────────────────┘           │
│                                                              │
│  Layer 2: 语义记忆(Semantic Memory)                        │
│  ┌──────────────────────────────────────────────┐           │
│  │ 存储:MEMORY.md + USER.md                     │           │
│  │ 内容:                                        │           │
│  │   MEMORY.md → 长期事实(项目栈、团队约定)   │           │
│  │   USER.md → 用户模型(风格、专长、目标)     │           │
│  │ 注入:每次 Prompt 都注入(始终可用)          │           │
│  │ 写入:Nudge Engine 自动触发                   │           │
│  │ 特点:始终在线,成本固定                      │           │
│  └──────────────────────────────────────────────┘           │
│                                                              │
│  Layer 3: 程序记忆(Procedural Memory)                      │
│  ┌──────────────────────────────────────────────┐           │
│  │ 存储:~/.hermes/skills/*.md                   │           │
│  │ 内容:SKILL.md 文件(工作流、经验、修复)    │           │
│  │ 检索:语义匹配 + 渐进式加载                   │           │
│  │ 写入:闭环学习自动创建/修补                   │           │
│  │ 特点:按需激活,用后优化                      │           │
│  └──────────────────────────────────────────────┘           │
└──────────────────────────────────────────────────────────────┘

3.2 Nudge Engine(提醒引擎)

Nudge Engine 是 Hermes 的"自省机制"——它不是被动等待任务,而是主动推动 Agent 反思和学习:

python

# Nudge Engine 的核心逻辑(简化)
class NudgeEngine:
    """在会话中主动推动 Agent 反思和记忆管理"""
    
    def should_nudge(self, conversation: list) -> bool:
        """判断是否应该触发提醒"""
        # 条件1:对话已进行 5+ 轮
        if len(conversation) < 5:
            return False
        
        # 条件2:用户提到了偏好或约定
        if self._contains_preference_signal(conversation[-1]):
            return True
        
        # 条件3:距离上次记忆更新已超过阈值
        if self._time_since_last_update() > timedelta(hours=1):
            return True
        
        return False
    
    def generate_nudge(self, conversation: list) -> str:
        """生成提醒内容"""
        return (
            "Consider whether any information from this conversation "
            "should be persisted to MEMORY.md or USER.md. "
            "If yes, use the memory_manager tool to update."
        )

4. 实战1:本地部署 Hermes Agent

4.1 一键安装

bash

# 官方安装脚本(支持 Linux/macOS/WSL2)
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

# 验证安装
hermes --version
# 输出:hermes-agent v0.11.0

4.2 配置模型提供商

bash

# 交互式选择模型
hermes model

# 支持的提供商:
# 1. Anthropic Claude(推荐)
# 2. OpenAI GPT
# 3. OpenRouter(200+ 模型)
# 4. Google Gemini
# 5. Hugging Face
# 6. Custom Endpoint(如 Ollama)

# 在会话中切换模型
/model claude-sonnet-4
/model openrouter:anthropic/claude
/model custom:qwen-2.5

# 使用本地模型(零 API 费用)
# 先安装 Ollama,然后在 Hermes 中选择 Custom Endpoint
hermes model  # 选择 "Custom Endpoint" → 填入 Ollama 地址

4.3 配置 API Key

bash

# 方式1:环境变量
export ANTHROPIC_API_KEY=sk-ant-xxxxxxxx
export OPENAI_API_KEY=sk-xxxxxxxx

# 方式2:配置文件
cat > ~/.hermes/config.yaml << EOF
providers:
  anthropic:
    api_key: sk-ant-xxxxxxxx
    default_model: claude-sonnet-4
  openrouter:
    api_key: sk-or-xxxxxxxx
    default_model: anthropic/claude-sonnet-4

agent:
  name: PySuper-Assistant
  model: anthropic:claude-sonnet-4
  max_context_tokens: 128000
  enable_skill_creation: true
  enable_memory_nudge: true
  evaluation_interval: 15  # 每15次工具调用触发自评估
EOF

4.4 启动

bash

# 交互式终端
hermes

# 一次性查询
hermes chat -q "你好,列出你可用的工具"

# 运行全量配置向导
hermes setup

# 诊断环境问题
hermes doctor

4.5 Docker 部署

bash

# 初始化配置
mkdir -p ~/.hermes
docker run -it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent setup

# 网关模式持久运行
docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -e ANTHROPIC_API_KEY=sk-ant-xxxxxxxx \
  nousresearch/hermes-agent gateway run

5. 实战2:体验自进化闭环

5.1 场景:让 Hermes 完成一个复杂的代码审查任务

bash

# 启动 Hermes
hermes

# 发送任务
你: "帮我审查 src/api/routes.py 这个文件的代码质量,
     重点关注安全漏洞和性能问题,
     最后生成一份审查报告"

5.2 观察自进化过程

plaintext

┌──────────────────────────────────────────────────────────────┐
│          Hermes 自进化闭环实录                                │
│                                                              │
│  [工具调用 1-5] 读取文件、分析代码结构                       │
│  [工具调用 6-10] 安全扫描、性能分析                          │
│  [工具调用 11-15] 生成审查报告                               │
│                                                              │
│  ══════ 自评估检查点(15次工具调用后)══════                 │
│                                                              │
│  Hermes: "我完成了代码审查任务。让我评估一下:               │
│   - 我使用了 5 个工具,成功 5 个                             │
│   - 我发现 3 个安全漏洞和 2 个性能问题                      │
│   - 这个审查流程是可复用的                                   │
│   → 决定:创建 Skill"                                       │
│                                                              │
│  [自动创建 Skill]                                            │
│  ~/.hermes/skills/code-review-automation.md                  │
│                                                              │
│  内容:                                                      │
│  ---                                                         │
│  name: code-review-automation                                │
│  description: |                                              │
│    Automated code review covering security vulnerabilities   │
│    and performance issues. Generates structured report.      │
│    Use when user asks to 'review code', 'audit', 'check'.   │
│  ---                                                         │
│  # Code Review Automation                                    │
│  ## Procedure                                                │
│  1. Read target file(s)                                      │
│  2. Run security scan (check SQL injection, XSS, ...)       │
│  3. Analyze performance (check N+1 queries, ...)            │
│  4. Generate structured report with severity ratings        │
│  ## Common Findings                                          │
│  - SQL injection in f-string queries                         │
│  - Missing error handling in API routes                      │
│  - N+1 queries in ORM usage                                  │
│                                                              │
│  ══════ 下次使用 ═══════                                    │
│                                                              │
│  你: "审查另一个文件"                                       │
│  Hermes: [自动加载 code-review-automation Skill]             │
│  → 不需要重新学习审查流程                                   │
│  → 直接执行,更快更准确                                     │
└──────────────────────────────────────────────────────────────┘

5.3 Skill 的渐进改进

bash

# 第二次使用 Skill 时发现新问题
你: "审查 src/api/auth.py,特别关注认证逻辑"

# Hermes 发现 Skill 中没有"认证逻辑审查"步骤
# → 自动修补 Skill

# ~/.hermes/skills/code-review-automation.md 更新
skill_manage(action="patch",
    name="code-review-automation",
    old_text="3. Analyze performance (check N+1 queries, ...)",
    new_text="3. Analyze performance (check N+1 queries, ...)
4. Review authentication logic (check token handling, session management,
   password hashing) — added 2026-05-15 after auth review task")

6. SKILL.md 自生成机制

6.1 触发条件

据 Hermes Agent 源码中的 skill_utils.py,Skill 创建的触发条件:

python

async def evaluate_skill_creation(
    self,
    user_message: str,
    assistant_response: str,
    response_length: int,
    tool_calls_made: list
) -> SkillCreationDecision:
    """
    决定是否创建新 Skill 的启发式规则:
    
    1. 响应长度 > 200 Token(太短不值得封装)
    2. 包含可复用的代码模式
    3. 多个工具调用以非显而易见的方式编排
    4. 用户询问的是一个通用模式(非一次性)
    5. 没有已存在的相似 Skill(相似度 > 0.8)
    """
    if response_length < 200:
        return SkillCreationDecision(create=False)
    
    # 检查是否已有相似 Skill
    similar = self.find_similar_skill(user_message, threshold=0.8)
    if similar:
        # 扩展现有 Skill 而非创建新的
        return SkillCreationDecision(
            create=False,
            improve=similar,
            improvement_type="extend"
        )
    
    # 让 LLM 评估并生成 Skill
    decision = await self.llm.complete_json(
        self._skill_creation_prompt(user_message, assistant_response),
        model=self.fast_model  # 用快速模型生成,节省成本
    )
    
    if decision["create"]:
        await self._write_skill(decision["skill_content"])
    
    return SkillCreationDecision(**decision)

6.2 生成流程

plaintext

┌──────────────────────────────────────────────────────────────┐
│              SKILL.md 自生成流程                              │
│                                                              │
│  5+ 次工具调用                                               │
│       │                                                      │
│       ▼                                                      │
│  自评估检查点                                                │
│  "这段经验值得提炼吗?"                                     │
│       │                                                      │
│       ├── 否 → 结束(不创建 Skill)                         │
│       │                                                      │
│       └── 是 → 检查相似 Skill                               │
│                    │                                         │
│                    ├── 已有相似 Skill(>0.8)                 │
│                    │   → 修补现有 Skill(patch)             │
│                    │                                         │
│                    └── 无相似 Skill                          │
│                        → 生成草稿 Skill                     │
│                        → 存入 ~/.hermes/skills/              │
│                        → 标记为"草稿"状态                    │
│                                                              │
│  3 次复现验证                                                │
│       │                                                      │
│       ▼                                                      │
│  草稿 Skill 被使用 3+ 次 → 自动提升为"正式" Skill           │
│  从未使用的草稿 → 定期清理时删除                             │
└──────────────────────────────────────────────────────────────┘

7. Skill Curator:后台自动评分与修剪

7.1 Skill 生命周期

plaintext

┌──────────────────────────────────────────────────────────────┐
│              Skill 生命周期                                   │
│                                                              │
│  ┌────────┐    ┌────────┐    ┌────────┐    ┌────────┐      │
│  │  草稿  │───▶│  试用  │───▶│  正式  │───▶│  优化  │      │
│  │ Draft  │    │ Trial  │    │ Active │    │Refined │      │
│  └────────┘    └────────┘    └────────┘    └────────┘      │
│       │                                          │          │
│       │  3次复现验证后提升                       │          │
│       │                                          │          │
│       └── 未使用 → 清理删除 ←── 使用率低 ←─────┘          │
│                                       评分下降              │
└──────────────────────────────────────────────────────────────┘

7.2 Skill Curator 评分维度

python

class SkillCurator:
    """后台 Skill 质量管理器"""
    
    def score_skill(self, skill: Skill) -> float:
        """对 Skill 进行多维度评分(0-100)"""
        scores = {
            # 使用频率(40% 权重)
            "usage_frequency": self._calc_usage_frequency(skill),
            
            # 成功率(30% 权重)
            "success_rate": self._calc_success_rate(skill),
            
            # Token 效率(15% 权重)
            "token_efficiency": self._calc_token_efficiency(skill),
            
            # 新鲜度(15% 权重)
            "freshness": self._calc_freshness(skill),
        }
        
        weights = {
            "usage_frequency": 0.40,
            "success_rate": 0.30,
            "token_efficiency": 0.15,
            "freshness": 0.15,
        }
        
        return sum(scores[k] * weights[k] for k in scores)
    
    def _calc_usage_frequency(self, skill: Skill) -> float:
        """使用频率评分:最近 7 天被使用的次数"""
        recent_uses = skill.usage_count_last_7_days
        if recent_uses == 0:
            return 0.0
        elif recent_uses < 3:
            return 40.0
        elif recent_uses < 10:
            return 70.0
        else:
            return 100.0
    
    def _calc_success_rate(self, skill: Skill) -> float:
        """成功率评分:使用后用户是否满意"""
        return skill.successful_uses / max(skill.total_uses, 1) * 100
    
    def _calc_token_efficiency(self, skill: Skill) -> float:
        """Token 效率评分:使用 Skill 是否比不用更省 Token"""
        baseline = skill.avg_tokens_without_skill
        with_skill = skill.avg_tokens_with_skill
        if baseline == 0:
            return 50.0
        savings = (baseline - with_skill) / baseline * 100
        return min(savings, 100.0)
    
    def _calc_freshness(self, skill: Skill) -> float:
        """新鲜度评分:最近一次更新的时间"""
        days_since_update = (datetime.now() - skill.last_updated).days
        if days_since_update < 7:
            return 100.0
        elif days_since_update < 30:
            return 70.0
        elif days_since_update < 90:
            return 40.0
        else:
            return 10.0

7.3 自动修剪策略

python

async def prune_skills(self):
    """定期修剪低效 Skill"""
    all_skills = self.load_all_skills()
    
    for skill in all_skills:
        score = self.score_skill(skill)
        
        if score < 20:
            # 严重低效:直接删除
            await self.delete_skill(skill.name)
            logger.info(f"Deleted low-score skill: {skill.name} (score: {score})")
        
        elif score < 40:
            # 效率不高:标记为需要改进
            skill.needs_improvement = True
            await self.save_skill(skill)
            logger.info(f"Marked skill for improvement: {skill.name} (score: {score})")
        
        # 合并相似的 Skill
        similar = self.find_similar_skills(skill, threshold=0.85)
        if len(similar) > 1:
            merged = await self.merge_skills(similar)
            logger.info(f"Merged {len(similar)} similar skills into: {merged.name}")

8. 持久记忆:多后端与跨会话召回

8.1 多后端支持

plaintext

┌──────────────────────────────────────────────────────────────┐
│              Hermes 记忆后端                                  │
├──────────────┬──────────────────────────────────────────────┤
│    后端       │              适用场景                        │
├──────────────┼──────────────────────────────────────────────┤
│ SQLite + FTS5│ 默认后端,零配置,单用户                     │
│              │ FTS5 全文搜索,200-500 字 LLM 摘要           │
├──────────────┼──────────────────────────────────────────────┤
│ PostgreSQL   │ 生产环境,支持 pgvector 语义搜索             │
│              │ 适合大规模部署                                │
├──────────────┼──────────────────────────────────────────────┤
│ Redis        │ 高频读写场景,缓存层                          │
│              │ 通常与 PostgreSQL 配合使用                    │
├──────────────┼──────────────────────────────────────────────┤
│ Milvus 2.6   │ 语义搜索增强,解决 FTS5 关键词匹配局限      │
│ (第三方集成) │ 向量检索 + BM25 混合搜索                     │
└──────────────┴──────────────────────────────────────────────┘

8.2 FTS5 的局限与 Milvus 增强

据《How to Fix Hermes Agent's Learning Loop with Milvus 2.6 Hybrid Search》(https://milvus.io/blog/hermes-agent-learning-loop-milvus-hybrid-search.md),FTS5 的核心局限是:

When users phrase the same intent differently across sessions, FTS5 misses the match. The Learning Loop doesn't fire. No new Skill gets written.

翻译:当用户在不同会话中用不同的措辞表达相同意图时,FTS5 无法匹配。学习闭环无法触发,不会生成新的 Skill。

Milvus 2.6 的混合搜索(向量检索 + BM25)解决了这个问题:

python

# Milvus 混合搜索配置
from pymilvus import MilvusClient, AnnSearchRequest

# 创建集合(同时支持稠密向量和 BM25 稀疏向量)
schema = MilvusClient.create_schema(auto_id=True)
schema.add_field("id", DataType.INT64, is_primary=True)
schema.add_field("text", DataType.VARCHAR, max_length=65535)
schema.add_field("dense_vector", DataType.FLOAT_VECTOR, dim=1024)
schema.add_field("sparse_vector", DataType.SPARSE_FLOAT_VECTOR)

# 混合搜索:向量检索(语义匹配)+ BM25(精确关键词)
search_req_dense = AnnSearchRequest(
    data=[query_embedding],
    anns_field="dense_vector",
    param={"metric_type": "COSINE"},
    limit=20
)

search_req_sparse = AnnSearchRequest(
    data=[bm25_query],
    anns_field="sparse_vector",
    param={"metric_type": "IP"},
    limit=20
)

# Reciprocal Rank Fusion 合并结果
results = client.hybrid_search(
    collection_name="hermes_memory",
    reqs=[search_req_dense, search_req_sparse],
    ranker=RRFRanker(),
    limit=10
)

9. SOUL.md:活的身份文档

9.1 什么是 SOUL.md

SOUL.md 是 Hermes Agent 的"身份文档"——它定义了 Agent 是谁、怎么说话、遵循什么原则。关键在于,SOUL.md 会随着使用而进化。

markdown

---
name: PySuper-Assistant
created: 2026-05-01
last_evolved: 2026-05-15
evolution_count: 7
---

# Soul: PySuper-Assistant

## Identity
I am a technical assistant focused on Python and AI engineering.
I prioritize practical solutions over theoretical explanations.

## Communication Style
- Use Chinese when the user writes in Chinese
- Be concise: no fluff, no filler phrases
- Use code examples to explain concepts
- Acknowledge uncertainty rather than guessing

## Values
- Correctness over speed
- Security over convenience
- Simplicity over cleverness
- Teaching over doing-it-for-you

## Boundaries
- Never execute destructive commands without explicit confirmation
- Never share API keys or credentials
- Never modify files outside the workspace

## Learned Preferences
- User prefers type hints in all Python code (learned 2026-05-03)
- User uses `uv` instead of `pip` (learned 2026-05-05)
- User prefers `pytest` over `unittest` (learned 2026-05-08)
- User's projects use `ruff` for linting (learned 2026-05-12)
- User writes commit messages in English (learned 2026-05-15)

9.2 SOUL.md 的进化机制

plaintext

用户说: "我习惯用 uv 管理依赖"
    │
    ▼
Nudge Engine 检测到偏好信号
    │
    ▼
更新 SOUL.md:
  "Learned Preferences" 部分添加:
  "- User uses `uv` instead of `pip` (learned 2026-05-05)"
    │
    ▼
下次对话中,Hermes 自动使用 uv 而非 pip

10. 多执行后端:本地 / Docker / SSH / Modal / Daytona

plaintext

┌──────────────────────────────────────────────────────────────┐
│              Hermes 执行后端                                  │
├──────────────┬──────────────────────────────────────────────┤
│    后端       │              特点                            │
├──────────────┼──────────────────────────────────────────────┤
│ 本地终端     │ 直接在本机执行命令                            │
│              │ 最快,但安全风险最高                          │
├──────────────┼──────────────────────────────────────────────┤
│ Docker       │ 容器沙箱隔离                                 │
│              │ 只读根文件系统、降权、PID 限制               │
│              │ 推荐:生产环境首选                            │
├──────────────┼──────────────────────────────────────────────┤
│ SSH Remote   │ 在远程服务器上执行                           │
│              │ 适合需要特定环境的场景                        │
├──────────────┼──────────────────────────────────────────────┤
│ Modal        │ 云端 Serverless 执行                         │
│              │ 按需付费,弹性扩缩                            │
│              │ 适合 GPU 密集型任务                           │
├──────────────┼──────────────────────────────────────────────┤
│ Daytona      │ 开发环境管理平台                              │
│              │ 预配置环境,支持团队协作                      │
└──────────────┴──────────────────────────────────────────────┘

10.1 配置执行后端

bash

# 交互式选择
hermes setup  # → 选择 Terminal Backend

# 或在配置文件中指定
cat >> ~/.hermes/config.yaml << EOF
execution:
  backend: docker
  docker:
    image: python:3.12-slim
    memory: 512m
    cpus: 1.0
    network: none
    read_only: true
EOF

11. 与 OpenClaw 哲学分歧

plaintext

┌──────────────────────────────────────────────────────────────┐
│        哲学分歧:自进化运行时 vs 控制面                      │
│                                                              │
│  OpenClaw 的立场:                                           │
│  "AI 应该是工具,人是控制者"                                 │
│  - 手动安装 Skill                                            │
│  - 审批敏感操作                                              │
│  - 审计日志记录所有行为                                      │
│  - 类比:企业 IT(严格管控)                                 │
│                                                              │
│  Hermes 的立场:                                             │
│  "AI 应该是同事,它需要自我成长"                             │
│  - 自动生成 Skill                                            │
│  - 自我评估并改进                                            │
│  - 记忆随使用进化                                            │
│  - 类比:初创公司(快速迭代)                                 │
│                                                              │
│  真相:                                                      │
│  两者不是互斥的。OpenClaw 也在加入自进化特性,              │
│  Hermes 也在加强安全控制。2026 年底,                        │
│  两者会越来越像。                                             │
│                                                              │
│  当下的选择:                                                │
│  ┌──────────────────┬──────────────────┐                    │
│  │   选 OpenClaw    │   选 Hermes      │                    │
│  │   如果你需要:    │   如果你需要:    │                    │
│  │   • 审计合规     │   • 自适应学习   │                    │
│  │   • 团队共享     │   • 个人效率     │                    │
│  │   • 可控可预测   │   • 探索性工作   │                    │
│  │   • 企业部署     │   • 研究实验     │                    │
│  └──────────────────┴──────────────────┘                    │
└──────────────────────────────────────────────────────────────┘

12. 踩坑记录

坑1:FTS5 搜索不到跨会话相似任务

问题 :你昨天让 Hermes "分析数据",今天说"处理数据",FTS5 匹配不上,闭环不触发。

解决 :集成 Milvus 2.6 混合搜索(参见第 8 章),或在 Skill 的 trigger_phrases 中覆盖更多同义词。

坑2:自动生成的 Skill 质量不稳定

问题 :有些自动生成的 Skill 太笼统,触发后执行效果不好。

解决

bash

# 手动编辑 Skill
vim ~/.hermes/skills/my-skill.md

# 或禁止自动创建 Skill
hermes config set agent.enable_skill_creation false

# 仅保留手动确认
hermes config set agent.skill_creation_mode confirm

坑3:SOUL.md 进化导致行为漂移

问题 :SOUL.md 积累了太多"Learned Preferences",Agent 行为逐渐偏离预期。

解决

bash

# 查看 SOUL.md
cat ~/.hermes/SOUL.md

# 手动清理过时的偏好
vim ~/.hermes/SOUL.md

# 重置 SOUL.md
hermes soul reset

坑4:Docker 沙箱中无法访问宿主文件

问题 :使用 Docker 执行后端时,Agent 无法读写宿主机上的文件。

解决

yaml

# 在配置中挂载宿主目录
execution:
  backend: docker
  docker:
    volumes:
      - /home/user/projects:/workspace:rw

坑5:模型上下文长度不足

问题 :Hermes 要求底层模型至少支持 64K Token 上下文,但有些模型不满足。

解决

bash

# 检查模型上下文长度
hermes doctor

# 切换到支持长上下文的模型
/model anthropic:claude-sonnet-4  # 200K context
/model openrouter:google/gemini-2.5-pro  # 1M context

13. 总结与展望

Hermes 的核心突破

Hermes Agent 的核心突破不是技术栈多先进,而是**理念转变 **——从"每次从零开始"到"越用越聪明"。闭环学习让 Agent 真正具备了"经验积累"能力。

2026 年的 Hermes 生态

据 Hermes Agent v0.11.0 Release Notes(https://github.com/NousResearch/hermes-agent/releases),Hermes 的演进速度惊人:

  • v0.1.0 → v0.11.0:1,556 commits,761 merged PRs,1,314 files changed

  • 新增 React/Ink TUI、AWS Bedrock 支持、5 个新推理路径、第 17 个消息平台(QQBot)

  • GEPA 自我进化系统(DSPy + Genetic-Pareto Prompt Evolution)正在 Phase 1

自进化的未来

Hermes 的自进化机制正在从 Skill 层面扩展到更深层次:

  1. Phase 1 (已实现):Skill 文件自动进化

  2. Phase 2 (计划中):工具描述自动优化

  3. Phase 3 (计划中):系统提示自动调优

  4. Phase 4 (计划中):工具实现代码自动进化

  5. Phase 5 (计划中):持续改进闭环自动化

自进化是 Agent 的终局。Hermes 正在证明:AI Agent 不只是工具,是可以成长的数字同事。

本文作者 :PySuper | 来源 zhengxingtao.com

参考资源

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区