第 27 讲 · 从 OpenClaw 到 Hermes:爆款 Agent 的设计密码与工程范式
📌 本讲摘要
读爆款 Agent 的源码不是为了抄功能、而是为了反推它们做对了什么。本讲拆解 OpenClaw(Star 第 1、平台型)与 Hermes(Star 第 2、工程型)这两类代表性 Agent、提炼出 4 大共通设计密码(Harness / Channel / Skills / SubAgent)和 5 个可复用工程范式。学完本讲、你应该能用看 3 套源码、提炼 1 个范式、落地 1 个项目的方法、持续从爆款里吸取养分、而不是只会用 Claude Code 自带的命令。
1. 什么是爆款 Agent:三维度筛选标准
爆款不等于下载量第一、而是有可学习价值的产品。本讲用三个维度筛选:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
按这三个维度筛、本讲选 OpenClaw(平台型、生态化)、Hermes(工程型、极致本地化)做样本。两者刚好代表 Agent 产品的两个极端、合起来覆盖 80% 的设计选择。
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
📊 最终核查结果(数据截至 2026-06-29):OpenClaw 与 Hermes 正是当前 GitHub Star 排名前二的 Agent 项目、用它们做样本、就等于站在行业最高点反推设计密码。
⚠️ 坑 1 · 只看 star 数选型——很多高 star 仓库是 awesome-list 型、只是收集链接没有设计选择;反过来、有些 star 不高但设计极精巧的项目反而更值得学。本讲选 OpenClaw 与 Hermes、不仅是 star 高、更因为它们刚好覆盖”平台型 vs 工程型”两个极端。
2. OpenClaw 架构深读:平台型 Agent 的 7 层骨架
实战代码块 1 — OpenClaw 的 7 层模块结构。看仓库根目录能反推它的设计意图:
OpenClaw/├── 01-frontend/ # Web UI / TUI / IDE 插件├── 02-runtime/ # Agent 执行循环├── 03-tools/ # 工具层(Bash / Read / Edit / Grep ...)├── 04-channels/ # 跨平台通道(Telegram / Slack / CLI)├── 05-memory/ # 长期记忆 + CLAUDE.md 解析├── 06-skills/ # Skills 注册中心└── 07-deployment/ # 部署 / CI / Plugin 打包
OpenClaw 走平台化路线——核心思想是 Agent 不只是一个 CLI、而是一个能挂任意前端、任意通道、任意 Skills 的中间层。这跟 Claude Code CLI 的定位不太一样:Claude Code 是一个具体的产品,OpenClaw 是一个 Agent 操作系统。
它对我们最有启发的设计是 04-channels:同一个 Agent runtime、可以挂 Telegram bot / Slack app / Web chat / 桌面 GUI。用户从哪个通道发命令、Agent 都能响应。这种一次 runtime、多端可达是 2026 年 Agent 产品的标配。
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Hermes 范式:配置即代码、Channel 协议、跨运行时
Hermes 是工程派的代表——它不是做一个新 Agent、而是让现有 Agent 跑得更好。三个核心范式:
实战代码块 2 — 配置即代码(Code as Config)。Hermes 把所有配置都用代码描述、不用 YAML / JSON:
// hermes.config.tsimport { defineConfig } from "@hermes/core";export default defineConfig({ agents: { default: { model: "claude-sonnet-4-7", system: "./prompts/main.md", tools: ["Bash", "Read", "Edit", "Grep"], skills: ["./skills/lint-fast", "./skills/test-runner"] }, reviewer: { model: "claude-haiku-4-5", system: "./prompts/reviewer.md", tools: ["Read", "Grep"], isolated: true // 独立上下文 } }, channels: { cli: { enabled: true }, telegram: { token: process.env.TELEGRAM_BOT_TOKEN, webhook: "/api/telegram" } }, hooks: { PreToolUse: "./hooks/pii-guard.ts" }});
这个范式的价值:用 TypeScript 写配置、可以 import 别的模块、可以用类型检查、可以在配置里跑逻辑。对比 JSON / YAML 配置的纯数据路线、这是配置即代码——配置本身是项目里的一份源代码、可以被 lint、被 type-check、被测试。
Channel 协议:Hermes 定义了一个抽象的 Channel 接口、每个 Channel(CLI / Telegram / Web)都实现这个接口。Agent 不关心消息从哪来、只管我收到了一条消息、要给出回复。这种输入适配器模式让 Agent 真正做到端无关。
跨运行时:Hermes 的 runtime 抽象可以挂在 Node.js、Bun、Deno、甚至浏览器 Web Worker。核心是把 system prompt + tools + message 变成一个标准化的 task、丢给任何能跑 LLM 的环境。
⚠️ 坑 2 · 抄配置即代码但用 JS 不用 TS——没有类型保护的配置、改一个字段名 runtime 才发现错了。配置代码必须上 TypeScript + 严格模式。
4. 4 大共通设计密码:Harness / Channel / Skills / SubAgent
通读两个项目的源码、能反推出 4 个共通的设计密码:

这 4 个密码不是 OpenClaw / Hermes 独有的、而是 2025-2026 年所有头部 Agent 产品的共识:Claude Code、Gemini CLI、Cursor、Continue.dev、Cline 都在不同程度上实现了这 4 个。学完本课程、你已经掌握了 Claude Code 版本的全部 4 个、等于掌握了行业基准线。
5. 5 个可复用工程范式:从爆款反推范式
除了 4 大密码、还有 5 个工程范式也是行业标配:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
实战代码块 3 — 工具白盒化。Hermes 的工具 schema 范本:
// tools/read-file.tsimport { z } from "zod";import { defineTool } from "@hermes/core";export default defineTool({ name: "Read", description: "Read a file from the filesystem. Returns file content with line numbers.", input: z.object({ file_path: z.string().describe("Absolute path to the file"), offset: z.number().int().min(0).optional().describe("Line offset to start from"), limit: z.number().int().min(1).max(2000).optional().describe("Max lines to read") }), output: z.object({ content: z.string(), total_lines: z.number().int(), truncated: z.boolean() }), risk: "low", // 告诉 Agent 这个工具的危险等级 async execute({ file_path, offset = 0, limit = 2000 }) { // 实现 ... }});
注意 risk: "low" 字段——这是把工具危险等级显式声明、Agent 在自主选工具时会参考。对比 Claude Code 的隐式风险(只能靠 deny 规则拦)、这是更显式的设计。
⚠️ 坑 3 · 抄工具白盒化但跳过 description——description 是 Agent 选工具的唯一依据、写读文件三个字远不如写读取文件内容、返回带行号的文本、适合查看代码或配置有用。
6. 拿来主义:在自己的项目里怎么抄作业
学完 OpenClaw 与 Hermes 的范式之后、怎么把这些范式带回自己的项目?推荐三步法:
实战代码块 4 — 抄作业 Checklist。每次读完一个爆款、过一遍这个清单:
# 爆款学习 Checklist## 1. 它解决了什么问题?- [ ] 用户痛点是什么?为什么非它不可?- [ ] 替代品是什么?它比替代品好在哪?## 2. 它的核心抽象是什么?- [ ] 用 1 句话总结它的"主架构"- [ ] 这个抽象可以套到我的项目吗?## 3. 它做对了哪 3 件事?- [ ] 列出最值得学的 3 个设计选择- [ ] 每个选择为什么好?解决了什么具体问题?## 4. 它做错了哪 1 件事?- [ ] 列出最明显的 1 个缺陷- [ ] 我能不能避免这个缺陷?## 5. 我能从中拿走什么?- [ ] 提炼 1 个可复用的范式(用 50 字内说清楚)- [ ] 列出在我的项目里落地的 3 个具体动作
具体到本课程学完后、你已经能在 Claude Code 里直接用上这些范式(Harness / Skills / SubAgent / Channel / Hooks / Plugins)、所以”抄作业”的姿势应该是——**先在 Claude Code 里把范式用熟、再去读 OpenClaw / Hermes 源码验证哦原来人家也是这么做的、最后在 Agent SDK 上自己实现一遍。**
下面给出 OpenClaw 与 Hermes 的源码深读路径、按推荐顺序读、配合上面的 Checklist、能最快抽干它们的精华。
6.1 OpenClaw 源码深读指南
OpenClaw(OpenClaw/openclaw)是 GitHub Star 第 1 的 Agent 平台、读它不需要从头到尾看完、按这条路径走最快:
|
|
|
|
|
|---|---|---|---|
|
|
02-runtime/ |
|
|
|
|
04-channels/ |
|
|
|
|
03-tools/ |
|
|
|
|
05-memory/ |
|
|
|
|
06-skills/ |
|
|
|
|
07-deployment/ |
|
|
6.2 Hermes 源码深读指南
Hermes(NousResearch/hermes-agent)是 GitHub Star 第 2 的工程派 Agent、按这条路径读最出活:
|
|
|
|
|
|---|---|---|---|
|
|
hermes.config.ts |
|
|
|
|
channels/interface.ts |
|
|
|
|
runtime/adapter.ts |
|
|
|
|
tools/read-file.ts |
risk 字段如何白盒化 |
|
|
|
hooks/pii-guard.ts |
|
|
|
|
agents/reviewer.ts |
|
|
⚠️ 坑 4 · 读源码不写笔记——3 个月后忘光。读完一个仓库、必须用 1 页纸总结它的主架构 + 3 个优点 + 1 个缺点、存进你自己的 knowledge base。
7. 一句话备忘
📖 读爆款源码、不是为了抄功能、而是为了反推它们做对了什么、再把范式带回自己的项目。
📚 学习建议 · 三个项目一起读、视角才能立体。建议按 Claude Code → OpenClaw → Hermes 的顺序交叉看:① Claude Code 是你的”母语”、先把 Harness / Skills / SubAgent / Hooks / Plugins 玩熟、建立体感;② OpenClaw 帮你跳出 CLI 视角、看一个真正的 Agent 平台怎么用 7 层骨架挂任意前端与通道、专攻”系统架构”;③ Hermes 帮你从工程派视角看范式——配置即代码、Channel 协议、跨运行时、工具白盒化、审计可观测——专攻”工程落地”。读完之后、回头看任何 Agent(AutoGPT、LangChain、Browser-Use 等)都能很快定位它在 4 大密码和 5 个范式上的取舍。
夜雨聆风