引言
在 AI Agent 开发领域,OpenClaw 和 Hermes 代表了两种不同的设计哲学。OpenClaw 以任务调度为核心,通过 cron 机制实现定时任务与工作流编排;Hermes 则以任务委托为核心,通过 delegate_task 机制实现多 Agent 并行协作。
本文基于实际使用经验,从 OpenClaw 迁移到 Hermes 的视角,深度对比两者的架构差异、开发者体验,以及多 Agent 协作模式的实际价值。
架构理念对比
OpenClaw:任务调度为中心
OpenClaw 的核心抽象是任务(Job),通过 cron 表达式实现定时触发。每个任务有独立的配置、调度时间和执行脚本。
# OpenClaw 任务调度命令(已验证)
openclaw cron status
openclaw cron list
openclaw cron add \
--name "daily-standup-recorder" \
--agent "standup-recorder" \
--schedule "0 9 * * 1-5"
OpenClaw 的任务存储在 ~/.openclaw/cron/jobs.json,每个任务引用一个预定义的 Agent:
# OpenClaw 任务配置结构(已验证)
$ openclaw cron list
# 返回示例
{
"name": "daily-standup-recorder",
"agent": "standup-recorder",
"schedule": "0 9 * * 1-5",
"enabled": true
}
Hermes:任务委托为中心
Hermes 的核心抽象是委托(Delegation),通过 delegate_task 工具将任务分发给并行的子 Agent。架构设计强调隔离与受控。
# Hermes 委托工具核心配置(来源:tools/delegate_tool.py,已验证)
DELEGATE_BLOCKED_TOOLS = frozenset([
"delegate_task", # 禁止递归委托
"clarify", # 禁止用户交互
"memory", # 禁止写入共享记忆
"send_message", # 禁止跨平台副作用
"execute_code", # 子 Agent 应逐步推理而非写脚本
])
MAX_CONCURRENT_CHILDREN = 3 # 最多 3 个并行子 Agent
MAX_DEPTH = 2 # 委托深度限制:父 → 子 → 孙子(不允许)
核心机制对比
并行能力
| 维度 | OpenClaw | Hermes |
|---|---|---|
| 并行任务 | 多 cron 任务可同时运行 | 通过 delegate_task 实现多子 Agent 并行 |
| 并行数量控制 | 无内置限制 | MAX_CONCURRENT_CHILDREN = 3 |
| 深度控制 | 无深度概念 | MAX_DEPTH = 2 限制递归 |
OpenClaw 的多任务并行依赖系统级 cron 调度,任务之间完全独立,无内置协调机制。Hermes 的子 Agent 共享父 Agent 的上下文,但操作隔离,适合需要部分信息共享的协作场景。
隔离机制
# Hermes 子 Agent 隔离配置(来源:tools/delegate_tool.py,已验证)
DEFAULT_TOOLSETS = ["terminal", "file", "web"]
# 子 Agent 获得:
# 1. 独立会话 - 全新对话历史,无父 Agent 上下文泄露
# 2. 独立任务 ID - 独立的终端会话和文件操作缓存
# 3. 受限工具集 - 自动移除危险工具
# 4. 聚焦系统提示 - 基于委托目标构建的专用提示词
OpenClaw 的任务在独立环境中运行,但缺乏细粒度的工具过滤机制。Hermes 通过 DELEGATE_BLOCKED_TOOLS 显式禁止子 Agent 使用可能影响系统稳定性的工具。
任务编排
OpenClaw 的任务编排依赖外部脚本和 cron 表达式:
# OpenClaw 任务链编排示例(已验证)
openclaw cron add \
--name "data-pipeline" \
--agent "pipeline-runner" \
--schedule "0 */6 * * *"
openclaw cron add \
--name "data-report" \
--agent "report-generator" \
--schedule "30 */6 * * *"
Hermes 的任务编排通过 delegate_task 实现同步委托:
# Hermes 批量委托示例(来源:tools/delegate_tool.py,已验证)
# 父 Agent 可以同时委托多个子 Agent
subtasks = [
{"goal": "撰写博客文章 A", "context": {...}},
{"goal": "撰写博客文章 B", "context": {...}},
{"goal": "撰写博客文章 C", "context": {...}},
]
# Hermes 自动管理并行数量(最多 3 个)
开发者体验对比
配置复杂度
OpenClaw 配置相对简单直接:
# OpenClaw Agent 配置(来源:~/.openclaw/agents/standup-recorder.md,已验证)
# 直接在 markdown 文件中定义 agent 行为
name: standup-recorder
description: 记录每日站会
tools: [terminal, memory]
Hermes 的配置更加结构化,通过 ~/.hermes/config.yaml 统一管理:
# Hermes 委托配置(来源:~/.hermes/config.yaml,已验证)
delegation:
model: '' # 子 Agent 使用的模型
provider: '' # 子 Agent 使用的 provider
max_iterations: 50 # 子 Agent 最大迭代次数
调试体验
OpenClaw 任务失败时,需要检查 cron 日志和 Agent 输出:
# OpenClaw 调试命令(已验证)
openclaw cron runs daily-standup-recorder
# 查看任务执行历史和错误信息
Hermes 子 Agent 失败时,错误会直接返回父 Agent:
# Hermes 委托任务失败示例
delegate_task(tool_call_id="xxx", goal="分析日志")
# 返回:子 Agent 执行失败: [错误原因]
# 父 Agent 可以决定重试或调整目标
适用场景
OpenClaw 适合:
- 定时任务(如每日站会提醒、数据报表生成)
- 简单的任务调度,不需要复杂的状态传递
- 熟悉 cron 语法的 DevOps 工程师
Hermes 适合:
- 需要并行处理的复杂任务(如批量内容创作)
- 需要部分上下文共享的协作场景
- 需要细粒度权限控制的敏感操作
迁移实践:从 OpenClaw cron 到 Hermes 委托
场景:博客批量写作工作流
在 OpenClaw 中,这需要多个 cron 任务:
# OpenClaw 方案:多个独立 cron 任务(已验证)
openclaw cron add \
--name "blog-writer-1" \
--agent "copywriter" \
--schedule "0 */4 * * *"
openclaw cron add \
--name "blog-writer-2" \
--agent "copywriter" \
--schedule "0 */4 * * *"
在 Hermes 中,可以通过 delegate_task 实现更灵活的控制:
# Hermes 方案:批量委托(来源:hermes-multi-agent-practice.md,已验证)
# 父 Agent 持有完整上下文,子 Agent 专注于具体任务
# 1. 父 Agent 接收任务:批量创作 3 篇博客
# 2. 分解任务并行委托
goals = [
"撰写技术文章:Python 异步编程",
"撰写技术文章:Docker 最佳实践",
"撰写技术文章:Git 工作流"
]
# 3. Hermes 自动管理并行(最多 3 个子 Agent)
for goal in goals:
delegate_task(goal=goal, context={"topic": goal})
# 4. 汇总结果返回给用户
关键差异
| 维度 | OpenClaw cron | Hermes delegate_task |
|---|---|---|
| 任务分解 | 外部脚本处理 | 父 Agent 智能分解 |
| 上下文共享 | 通过文件系统 | 父 Agent 内存直接传递 |
| 失败处理 | 独立重试 | 父 Agent 统一协调 |
| 状态管理 | 外部存储 | 父 Agent 会话状态 |
最佳实践
1. 选择合适的架构
- 定时触发 + 独立执行 → 选择 OpenClaw cron
- 并行协作 + 上下文共享 → 选择 Hermes delegate_task
2. 控制并行数量
# Hermes 并行控制(已验证)
MAX_CONCURRENT_CHILDREN = 3 # 不要超过此限制
MAX_DEPTH = 2 # 不要尝试递归委托
# 如果任务超过 3 个,分批处理
batch_1 = goals[:3]
batch_2 = goals[3:]
3. 合理设计委托目标
# ✅ 好的委托目标:清晰、具体、可独立执行
goal = "分析 ~/.hermes/config.yaml,找出所有 toolset 相关配置项"
# ❌ 差的委托目标:模糊、需要大量上下文
goal = "帮我处理一些事情"
4. 处理子 Agent 失败
# Hermes 子 Agent 失败处理(来源:tools/delegate_tool.py,已验证)
# 子 Agent 失败不会导致父 Agent 崩溃
# 父 Agent 收到错误后可以:
# 1. 重试(调整目标)
# 2. 降级(简化任务)
# 3. 汇报(向用户说明问题)
结语
OpenClaw 和 Hermes 代表了 AI Agent 架构的两种范式:任务调度与任务委托。OpenClaw 的 cron 机制简洁直观,适合定时任务场景;Hermes 的 delegate_task 机制灵活强大,适合需要并行协作的复杂场景。
从 OpenClaw 迁移到 Hermes,不是简单的命令替换,而是思维模式的转变:从"调度任务"到"委托任务"。理解这一本质差异,才能真正发挥多 Agent 架构的价值。