乐于分享
好东西不私藏

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

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

从 OpenClaw 迁移到 HermesAgent

1

   

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

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

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

这篇文章会详细分享:

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

2

   

OpenClaw:曾经的得力助手

2.1

   

OpenClaw 是什么?

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

OpenClaw 的主要特性包括:

  • 多通道消息集成:支持 WhatsApp、Telegram、Slack、Discord、飞书、微信、QQ 等 20+ 消息平台
  • 本地优先架构:Gateway 作为守护进程运行在本地,数据完全存储在 ~/.openclaw/ 目录
  • 可扩展的插件系统:通过 ClawHub 可以安装各种技能和插件
  • 多智能体路由:支持将不同通道/账号路由到不同的智能体
  • 语音能力:支持语音唤醒、语音对话等功能

2.2

   

我的 OpenClaw 使用场景

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

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

2.3

   

OpenClaw 的局限性

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

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

3

   

HermesAgent:新一代 AI 智能体

3.1

   

HermesAgent 是什么?

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

HermesAgent 的主要特性包括:

  • 自我改进的学习循环:能够从经验中创建技能,在使用过程中不断改进
  • 强大的会话搜索:基于 FTS5 全文搜索 + LLM 摘要的跨会话回忆能力
  • 用户建模:通过 Honcho 辩证用户建模,构建不断深化的用户画像
  • 300+ 模型支持:通过 Nous Portal 或 OpenRouter 支持 300+ 种模型
  • 多平台消息:支持 Telegram、Discord、Slack、WhatsApp、Signal 等平台
  • 6 种终端后端:本地、Docker、SSH、Singularity、Modal、Daytona
  • 内置 Cron 调度器:支持自然语言定时任务
  • 并行子智能体:可以生成隔离的子智能体并行处理任务

3.2

   

HermesAgent vs OpenClaw

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

3.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 能力

4

   

迁移实战:一步一步搬家

OpenClaw → HermesAgent 迁移架构总览

4.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 迁移

4.2

   

安装 HermesAgent

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

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

# 验证安装
hermes --version

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

4.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 设置

4.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 项内容,非常完整。

4.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

5

   

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

5.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

5.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

5.3

   

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

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

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

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

5.4

   

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

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

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

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

6

   

迁移后清理:彻底移除 OpenClaw

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 残留。

7

   

迁移后体验:HermesAgent 的新能力

7.1

   

更强大的会话搜索

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

7.2

   

自我改进的技能系统

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

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

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

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

7.3

   

更灵活的模型切换

OpenClaw vs HermesAgent 功能对比

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

# 切换到 Nous Portal
hermes setup --portal

# 切换到 OpenRouter
hermes model

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

7.4

   

更现代的终端界面

HermesAgent 的 TUI 终端界面

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

  • 多行编辑
  • 命令自动补全
  • 会话历史
  • 流式输出
  • 工具执行进度显示

HermesAgent 核心特性一览

7.5

   

内置的 Cron 调度器

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

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

# 查看任务列表
hermes cron list

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

8

   

Q&A:常见问题解答

8.1

   

Q1:迁移会丢失数据吗?

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

8.2

   

Q2:迁移后 OpenClaw 还能用吗?

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

8.3

   

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

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

  • 模型配置
  • API 密钥
  • 技能
  • 记忆
  • 浏览器配置
  • MCP 服务器

需要手动配置的:

  • Cron 定时任务
  • 某些特殊的消息平台配置

8.4

   

Q4:HermesAgent 的学习曲线如何?

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

  • SOUL.md → SOUL.md(人格定义)
  • Skills → Skills(技能)
  • Memory → Memories(记忆)
  • Cron → Cron(定时任务)

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

8.5

   

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

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

  • Telegram
  • Discord
  • Slack
  • WhatsApp
  • Signal
  • Email

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

8.6

   

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

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

8.7

   

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 周后再执行清理操作。

9

   

最佳实践与建议

9.1

   

迁移前的检查清单

  • 备份 ~/.openclaw/ 目录
  • 确认目标机器的 Python 版本 >= 3.11
  • 确认有足够的磁盘空间
  • 先执行 --dry-run 查看迁移预览
  • 记录当前的 Cron 定时任务配置

9.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

9.3

   

性能优化建议

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

10

   

总结

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

迁移后,我获得了:

  • 更强大的会话搜索能力
  • 自我改进的技能系统
  • 更灵活的模型切换
  • 更现代的终端界面
  • 更活跃的社区支持

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

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

11

   

参考资料

  1. HermesAgent GitHub 仓库 ( https://github.com/NousResearch/Hermes-Agent )
  2. HermesAgent 官方文档 ( https://hermes-agent.nousresearch.com/docs )
  3. OpenClaw GitHub 仓库 ( https://github.com/openclaw/openclaw )
  4. HermesAgent npm 包 ( https://www.npmjs.com/package/hermes-agent )
  5. Nous Portal ( https://nousresearch.com )