中文 English

从 OpenClaw 迁移到 HermesAgent:一次丝滑的 AI 智能体搬家实战

发布时间: 2026-05-29
hermesagent openclaw ai 智能体 迁移 自动化 devops

前言:为什么我要"搬家"?

2026 年,AI 智能体(Agent)领域的发展速度简直可以用"日新月异"来形容。半年前还在用的工具,可能今天就被更强大的替代品超越了。作为一个深度依赖 AI 智能体来处理日常工作的人,我一直在关注这个领域的最新动态。

最近,我完成了一次从 OpenClaw 到 HermesAgent 的完整迁移。这不是一时冲动的决定,而是在实际使用中感受到两个工具的差异后,做出的深思熟虑的选择。

这篇文章会详细分享:

  1. 背景:OpenClaw 和 HermesAgent 分别是什么
  2. 迁移原因:为什么我要从 OpenClaw 迁移到 HermesAgent
  3. 迁移过程:如何一步步完成迁移,保留所有数据
  4. 踩坑记录:迁移过程中遇到的问题和解决方案
  5. 迁移后清理:如何彻底移除 OpenClaw 残留文件
  6. 迁移后体验:HermesAgent 带来了哪些新能力
  7. Q&A:常见问题解答

HermesAgent - 下一代 AI 智能体框架 HermesAgent:由 Nous Research 开发的下一代 AI 智能体框架

1. OpenClaw:曾经的得力助手

1.1 OpenClaw 是什么?

OpenClaw 是一个开源的个人 AI 助手网关,由 Anthropic 团队开发。它的核心定位是:一个本地优先、多通道、可扩展的 AI 智能体平台

OpenClaw 的主要特性包括:

1.2 我的 OpenClaw 使用场景

在我的日常工作中,OpenClaw 主要承担以下职责:

  1. 钉钉/飞书集成:通过钉钉机器人接收消息,自动执行任务
  2. 定时任务:每天早上 8 点自动执行内容选题策划,通过钉钉发送报告
  3. 多模型支持:使用 GLM-5.1 作为主模型,MiniMax-M2.7 作为备选
  4. 技能系统:维护了 10+ 个自定义技能,覆盖阿里云、K8s、MySQL 等场景
  5. 长期记忆:通过 SQLite 数据库存储跨会话的记忆

1.3 OpenClaw 的局限性

使用 OpenClaw 大半年后,我逐渐感受到了一些局限性:

  1. 记忆系统较弱:OpenClaw 的记忆系统主要是基于文件的,缺乏高级的语义搜索能力
  2. 技能自学习能力有限:技能需要手动创建和维护,无法从使用中自动改进
  3. 会话搜索能力不足:跨会话的历史搜索功能较弱,难以回忆起之前的讨论细节
  4. 模型切换不够灵活:虽然支持多模型,但切换过程不够流畅
  5. 社区活跃度下降:随着 HermesAgent 的崛起,OpenClaw 的社区活跃度有所下降

2. HermesAgent:新一代 AI 智能体

2.1 HermesAgent 是什么?

HermesAgent Logo

HermesAgent 是由 Nous Research 开发的开源 AI 智能体框架,目前在 GitHub 上已经获得了 172k+ 的 Star。它的核心理念是:一个能够自我改进的 AI 智能体

HermesAgent 的主要特性包括:

2.2 HermesAgent vs OpenClaw

特性 OpenClaw HermesAgent
开发语言 Node.js Python + Node.js
记忆系统 文件 + SQLite SQLite + FTS5 + LLM 摘要
技能系统 手动创建 自动创建 + 自我改进
会话搜索 基础 FTS5 全文搜索
模型支持 10+ 提供商 300+ 模型
终端后端 本地 6 种后端
社区活跃度 下降中 非常活跃
学习曲线 中等 中等

2.3 为什么选择 HermesAgent?

经过对比,我选择 HermesAgent 的主要原因有:

  1. 自我改进能力:技能可以从使用中自动学习和改进,大大减少维护成本
  2. 强大的会话搜索:FTS5 + LLM 摘要的组合,让跨会话回忆变得非常准确
  3. 更活跃的社区:172k Star,9800+ commits,14 个 releases,社区非常活跃
  4. 更好的模型支持:300+ 模型支持,切换更灵活
  5. 更现代的架构:Python + Node.js 的组合,既有 Python 的 AI 生态优势,又有 Node.js 的 UI 能力

3. 迁移实战:一步一步搬家

OpenClaw 到 HermesAgent 迁移架构图 OpenClaw → HermesAgent 迁移架构总览

3.1 迁移前准备

在开始迁移之前,我做了以下准备:

  1. 备份 OpenClaw 数据:虽然用户说已经做了整机备份,但我还是单独备份了 ~/.openclaw/ 目录

  2. 了解 HermesAgent 的数据结构

    • ~/.hermes/config.yaml:主配置文件
    • ~/.hermes/SOUL.md:人格定义
    • ~/.hermes/memories/:记忆存储
    • ~/.hermes/skills/:技能存储
    • ~/.hermes/cron/:定时任务
    • ~/.hermes/.env:API 密钥
  3. 确认迁移工具:HermesAgent 内置了 hermes claw migrate 命令,专门用于从 OpenClaw 迁移

3.2 安装 HermesAgent

首先,在目标机器上安装 HermesAgent:

# 安装 Python 依赖
pip install --break-system-packages hermes-agent

# 验证安装
hermes --version

安装过程中遇到了一个典型的 Debian 系统问题:Python 的 externally-managed-environment 限制。解决方案是使用 --break-system-packages 标志强制安装。

3.3 执行迁移命令

HermesAgent 提供了非常方便的迁移工具:

# 先进行干运行,查看会迁移哪些内容
hermes claw migrate --dry-run --migrate-secrets

# 确认无误后,执行实际迁移
hermes claw migrate --migrate-secrets --overwrite --no-backup --yes

迁移命令会自动处理以下内容:

  1. SOUL.md:人格定义文件
  2. 用户画像~/.hermes/memories/USER.md
  3. 模型配置~/.hermes/config.yaml 中的模型和提供商配置
  4. 技能:所有自定义技能迁移到 ~/.hermes/skills/openclaw-imports/
  5. 日常记忆~/.hermes/memories/MEMORY.md
  6. MCP 服务器:MiniMax MCP 配置
  7. 智能体配置:压缩、终端等配置
  8. 环境变量:API 密钥等
  9. 浏览器配置:Chrome headless 设置

3.4 迁移结果

迁移完成后,我检查了迁移结果:

✓ Migrated:
    soul                   → ~/.hermes/SOUL.md
    user-profile           → ~/.hermes/memories/USER.md
    model-config           → ~/.hermes/config.yaml
    shared-skills          → ~/.hermes/skills/openclaw-imports/aliyun
    shared-skills          → ~/.hermes/skills/openclaw-imports/evomap
    shared-skills          → ~/.hermes/skills/openclaw-imports/k8s
    shared-skills          → ~/.hermes/skills/openclaw-imports/minimax-cli
    shared-skills          → ~/.hermes/skills/openclaw-imports/minimax-multimodal-toolkit
    shared-skills          → ~/.hermes/skills/openclaw-imports/minimax-usage
    shared-skills          → ~/.hermes/skills/openclaw-imports/mysql
    shared-skills          → ~/.hermes/skills/openclaw-imports/sls-query
    shared-skills          → ~/.hermes/skills/openclaw-imports/synology-nas
    daily-memory           → ~/.hermes/memories/MEMORY.md
    mcp-servers            → config.yaml mcp_servers.MiniMax
    agent-config           → config.yaml agent/compression/terminal
    env-var                → .env HERMES_GATEWAY_TOKEN
    full-providers         → config.yaml custom_providers[minimax]
    env-var                → .env OPENAI_CUSTOM_API_KEY
    full-providers         → config.yaml custom_providers[openai-custom]
    browser-config         → config.yaml browser

总共迁移了 20 项内容,非常完整。

3.5 手动补充:Cron 定时任务

迁移工具没有自动迁移 Cron 定时任务(提示 “No cron configuration found”),需要手动创建:

# 创建定时任务
hermes cron create --name '每日内容选题策划' '0 8 * * *' '请执行每日内容选题策划任务...'

创建成功后,验证任务已添加:

hermes cron list

输出:

┌─────────────────────────────────────────────────────────────────────────┐
│                         Scheduled Jobs                                  │
└─────────────────────────────────────────────────────────────────────────┘

  fae3f9b245a2 [active]
    Name:      每日内容选题策划
    Schedule:  0 8 * * *
    Repeat:    ∞
    Next run:  2026-05-30T08:00:00+08:00
    Deliver:   local

4. 踩坑记录:迁移中的问题与解决方案

4.1 问题一:Python 环境限制

问题表现

error: externally-managed-environment
× This environment is externally managed

问题根因:Debian 12+ 系统默认启用了 PEP 668,禁止直接使用 pip install 安装系统级 Python 包。

解决方案

# 方案一:使用 --break-system-packages 标志
pip install --break-system-packages hermes-agent

# 方案二:先安装缺失的依赖
pip install --break-system-packages --ignore-installed pyyaml==6.0.3
pip install --break-system-packages --ignore-installed PyJWT==2.12.1
pip install --break-system-packages --ignore-installed rich==14.3.3
pip install --break-system-packages hermes-agent

4.2 问题二:模型名称格式错误

问题表现

HTTP 400: Model name not specified, model name cannot be empty

问题分析

通过查看请求 dump,发现发送到 API 的 model 字段为空:

{
  "model": "",
  "messages": [...]
}

问题根因

OpenClaw 的配置格式是:

{
  "models": {
    "providers": {
      "openai-custom": {
        "models": [{"id": "GLM-5.1"}]
      }
    }
  }
}

迁移后,HermesAgent 的配置变成了:

model:
  default: openai-custom/GLM-5.1
  provider: openai-custom

问题在于 openai-custom/GLM-5.1 这个格式。HermesAgent 的模型名称解析器会把 / 前面的部分当作提供商名称,后面的部分当作模型名称。但 openai-custom 不是标准的提供商名称,导致模型名称解析失败。

解决方案

修改配置文件,使用纯模型名称:

model:
  default: GLM-5.1
  provider: openai-custom
  base_url: http://your-api-endpoint/v1
  api_key: your-api-key

4.3 问题三:Cron 任务未自动迁移

问题表现:迁移工具提示 “No cron configuration found”,但实际上 OpenClaw 有 1 个定时任务。

问题根因:迁移工具在查找 Cron 配置时,可能使用了不同的路径或格式检测逻辑。

解决方案:手动使用 hermes cron create 命令创建定时任务。

4.4 问题四:hermes-agent 命令无法正常工作

问题表现:使用 hermes-agent 命令时,模型名称始终为空。

问题根因hermes-agent 是 npm 包的入口点,它可能没有正确加载配置。而 hermes 命令是完整的 CLI 入口,能够正确解析配置。

解决方案:始终使用 hermes 命令,而不是 hermes-agent

5. 迁移后清理:彻底移除 OpenClaw

迁移完成并确认 HermesAgent 运行稳定后,建议彻底清理 OpenClaw 的残留文件,避免占用磁盘空间和产生潜在冲突。

6.1 停用并删除 systemd 服务

OpenClaw 安装时注册了 3 个 systemd 单元,需要逐一清理:

# 停止服务
systemctl stop openclaw-gateway.service openclaw-gateway-healthcheck.service openclaw-gateway-healthcheck.timer

# 禁用服务(防止开机自启)
systemctl disable openclaw-gateway.service openclaw-gateway-healthcheck.service openclaw-gateway-healthcheck.timer

# 删除服务文件
rm -f /etc/systemd/system/openclaw-gateway.service
rm -f /etc/systemd/system/openclaw-gateway-healthcheck.service
rm -f /etc/systemd/system/openclaw-gateway-healthcheck.timer

# 重新加载 systemd 配置
systemctl daemon-reload

6.2 卸载 npm 全局包

OpenClaw 是通过 npm 全局安装的,需要使用 npm 卸载:

# 卸载全局 npm 包
npm uninstall -g openclaw

# 删除可能残留的二进制链接
rm -f /usr/local/bin/openclaw

这一步会同时移除 559 个 npm 依赖包,释放不少磁盘空间。

6.3 删除旧备份脚本残留

如果之前有备份脚本的残留文件,也需要一并清理:

# 删除旧备份脚本的备份文件
rm -f /usr/local/bin/openclaw-backup.sh.bak.codex

6.4 清理 OpenClaw 数据目录

这是最关键的一步,也是释放空间最多的一步。OpenClaw 的所有数据都在 ~/.openclaw/ 目录下:

# 确认目录大小
du -sh ~/.openclaw/

# 删除 OpenClaw 数据目录
rm -rf ~/.openclaw/

注意:这一步会删除 OpenClaw 的所有数据,包括配置、记忆、技能、凭证等。请确保:

  1. HermesAgent 已经运行稳定,迁移数据完整
  2. 已经做过整机备份(如有需要可随时恢复)
  3. 已确认不需要回滚到 OpenClaw

6.5 验证清理结果

清理完成后,验证是否还有残留:

# 检查 ~/.openclaw 目录
ls ~/.openclaw 2>&1
# 预期输出:No such file or directory

# 检查二进制链接
which openclaw 2>&1
# 预期输出:空(未找到)

# 检查 npm 全局包
npm list -g openclaw 2>&1
# 预期输出:(empty)

# 检查 systemd 服务
systemctl list-unit-files | grep openclaw
# 预期输出:空(无匹配)

清理完成后,共释放约 1.1G 磁盘空间,系统中不再有任何 OpenClaw 残留。

6. 迁移后体验:HermesAgent 的新能力

6.1 更强大的会话搜索

HermesAgent 的 FTS5 全文搜索能力让我印象深刻。之前在 OpenClaw 中,如果想回忆起某次讨论的细节,需要手动翻阅历史记录。现在,只需要用自然语言提问,HermesAgent 就能从历史会话中找到相关信息。

6.2 自我改进的技能系统

HermesAgent 的技能系统最大的特点是:技能会从使用中自动学习和改进

例如,我之前在 OpenClaw 中创建了一个 “synology-nas” 技能,用于管理群晖 NAS。迁移到 HermesAgent 后,每次我使用这个技能执行任务,HermesAgent 都会:

  1. 记录任务执行过程
  2. 分析成功和失败的原因
  3. 自动更新技能文档,添加新的最佳实践

这意味着,随着时间的推移,技能会变得越来越强大,而我几乎不需要手动维护。

6.3 更灵活的模型切换

HermesAgent 模型管理面板 HermesAgent 的模型管理面板,支持 300+ 种模型

HermesAgent 支持 300+ 种模型,切换非常方便:

# 切换到 Nous Portal
hermes setup --portal

# 切换到 OpenRouter
hermes model

# 切换到自定义端点
hermes model --provider openai-custom --model GLM-5.1

6.4 更现代的终端界面

HermesAgent 终端界面 HermesAgent 的 TUI 终端界面

HermesAgent 的 TUI(终端用户界面)非常现代:

HermesAgent CLI 布局 HermesAgent CLI 界面布局

6.5 内置的 Cron 调度器

HermesAgent 内置了强大的 Cron 调度器,支持自然语言定时任务:

# 创建定时任务
hermes cron create --name '每日备份' '0 2 * * *' '执行数据库备份...'

# 查看任务列表
hermes cron list

# 查看任务执行日志
hermes cron logs

7. Q&A:常见问题解答

Q1:迁移会丢失数据吗?

A:不会。HermesAgent 的迁移工具会完整复制所有数据,不会删除源数据。而且,迁移前建议先做一次干运行(--dry-run),确认会迁移哪些内容。

Q2:迁移后 OpenClaw 还能用吗?

A:可以。迁移不会删除 OpenClaw 的数据,两个系统可以并行运行。但建议最终切换到一个系统,避免消息冲突。

Q3:迁移后需要重新配置所有东西吗?

A:大部分配置会自动迁移,包括:

需要手动配置的:

Q4:HermesAgent 的学习曲线如何?

A:如果你已经熟悉 OpenClaw,学习 HermesAgent 会非常容易。两者的概念非常相似:

主要区别在于命令行接口和一些高级功能。

Q5:HermesAgent 支持哪些消息平台?

A:HermesAgent 支持以下消息平台:

对于飞书和钉钉,可能需要通过 MCP 服务器或自定义集成来实现。

Q6:迁移后性能有变化吗?

A:在实际使用中,我没有感受到明显的性能差异。HermesAgent 的响应速度和 OpenClaw 相当,某些场景下甚至更快,特别是涉及跨会话搜索时。

Q7:如何回滚到 OpenClaw?

A:分两种情况:

情况一:尚未清理 OpenClaw 残留(参考第 5 章节)

  1. 停止 HermesAgent 的 Gateway
  2. 重新启动 OpenClaw 的 Gateway
  3. OpenClaw 的数据仍然在 ~/.openclaw/ 目录,可以直接使用

情况二:已清理 OpenClaw 残留

  1. 停止 HermesAgent 的 Gateway
  2. 重新安装 OpenClaw:npm install -g openclaw
  3. 从整机备份中恢复 ~/.openclaw/ 目录
  4. 重新注册 systemd 服务:openclaw gateway install
  5. 启动 OpenClaw Gateway:openclaw gateway start

建议:在确认 HermesAgent 运行稳定之前,不要急于清理 OpenClaw 残留文件。建议至少观察 1-2 周后再执行清理操作。

8. 最佳实践与建议

8.1 迁移前的检查清单

8.2 迁移后的验证步骤

  1. 验证配置hermes config
  2. 验证技能hermes skills list
  3. 验证记忆hermes memory list
  4. 验证定时任务hermes cron list
  5. 测试对话hermes -z '你好,测试一下'
  6. 测试 Gatewayhermes gateway start
  7. 清理 OpenClaw 残留:参考第 5 章节,彻底移除 OpenClaw

8.3 性能优化建议

  1. 启用压缩:在 config.yaml 中启用上下文压缩
  2. 配置 FTS5:确保会话搜索使用 FTS5 索引
  3. 定期清理:使用 hermes sessions prune 清理旧会话
  4. 监控资源:使用 hermes status 监控系统资源

9. 总结

从 OpenClaw 迁移到 HermesAgent 是一次非常顺利的体验。HermesAgent 的 hermes claw migrate 命令让迁移过程变得几乎零门槛,大部分配置和数据都能自动迁移。

迁移后,我获得了:

此外,迁移完成后,通过清理 OpenClaw 的残留文件(systemd 服务、npm 包、数据目录等),释放了约 1.1G 的磁盘空间,系统变得更加干净整洁。

如果你也在使用 OpenClaw,并且感受到了它的局限性,我强烈推荐尝试 HermesAgent。迁移过程简单、安全,而且能够立即获得更强大的能力。

参考资料

  1. HermesAgent GitHub 仓库
  2. HermesAgent 官方文档
  3. OpenClaw GitHub 仓库
  4. HermesAgent npm 包
  5. Nous Portal

本文首次发布于 魔都水滴,作者:Margrop