阿里妹导读
本文是「项目深度解析」系列的第3篇,前两篇为《深度解析OpenClaw》《深度解析Claude Code》。(文章内容基于作者个人技术实践与独立思考,旨在分享经验,仅代表个人观点。)
背景
进入2026年,AI行业加速迈入“技术爆炸”阶段,近期迭代节奏远超以往数年。Hermes Agent是由美国开源人工智能研究机构Nous Research于2月底推出的开源Agent项目,发布后迅速在GitHub收获超4万星标,版本更新频率甚至超过部分商业化Agent产品。
“Hermes Agent 并不是一个绑定在集成开发环境(IDE)中的编程Copilot,也不是仅封装了单一API的聊天机器人外壳,它是一个部署在服务器上的自主智能体,能够记住所学内容,并且运行时间越长,能力就越强。”
其核心亮点明确聚焦于两大特性:“持久运行”(Persistent)与“自进化”(Self-Evolving)。
功能上,Hermes支持40+款内置工具,兼容多种主流大语言模型,并内置Cron调度器以执行复杂定时任务;交互上,其设计与OpenClaw高度相似,支持通过第三方消息平台接入,扩展性强。当前热度已逼近甚至局部超越OpenClaw,官方亦提供从OpenClaw无缝迁移的能力。
高强度技术演进正推动开发者从“月更”转向“周更”,也印证了AI领域竞争之激烈——“还没学明白,就不用学了”已成为行业真实写照。
深度解析 Hermes Agent 源码
本文延续此前分析框架,聚焦Prompt Engineering、Context Engineering、Harness Engineering三大维度,重点剖析Hermes如何实现“自进化”。区别于OpenClaw与Claude Code已具备的持久运行能力,本文核心在于揭示其长期记忆、持续学习与自主优化的机制设计。
Hermes并非凭空创新,而是在OpenClaw、Claude Code等项目基础上演进。其Prompt结构、Context管理及Harness设计存在大量共性,相关细节可参考前两篇文章。本文聚焦差异点:Hermes如何通过新机制实现“自进化”,为构建长效、自主Agent提供实践参考。
Self-Evolving:“内外”双路径驱动的自进化
Hermes的自进化能力依赖两条路径协同:一是轻量即时的自动Skill生成(Skill Generation),二是深度根本的强化学习训练(Reinforcement Learning)。二者构成“内外双轮驱动”的自进化闭环。
动态Skill生成:从“一次性执行”到“经验沉淀”
OpenClaw等Agent虽具备Memory机制,但其上下文管理主要服务于单次会话稳定性,执行过程本质是“无状态”的:任务完成后,试错路径、纠错手段、人工干预等宝贵经验难以沉淀。下一次同类任务仍需从零探索,智能上限受限于初始模型、静态提示词与预设Skill。
Hermes通过引入动态Skill沉淀机制破解此困局。当完成复杂任务(尤其经历曲折或人工干预时),系统启动复盘流程,提取关键步骤、踩坑记录、纠错策略及人工验证的最佳实践,抽象为结构化Skill文件包。Skill由此从“静态调用”升级为“动态生成”。
尽管OpenClaw、Claude Code也支持Skill,但属静态资产,依赖用户或开发者预先编写或下载安装,更新需人工介入。Hermes则将其变为可进化的动态资产,实现:
- 自动生成:基于Agent运行轨迹(Trajectory)自动沉淀新Skill;
- 持续优化:后续执行中发现更优路径或新边界情况,自动更新已有Skill;
- 持续积累:对话越多,Skill库越丰富,Agent能力越强。
通过该机制,Hermes真正实现“吃一堑,长一智”——每次执行均转化为成长养分,建立专属、动态增长的知识库。
触发机制
在run_agent.py中,计数器_iters_since_skill记录距上次使用skill_manage工具的轮次;_skill_nudge_interval = 10表示连续10轮未创建/修改Skill时,系统将主动提醒Agent整理经验。
后台审查Agent
主Agent回复用户后,Hermes通过_spawn_background_review异步启动审查Agent,对其刚结束的对话进行深度复盘,包含三类Prompt:
- 记忆审查(
_MEMORY_REVIEW_PROMPT):提炼值得长期保留的关键经验或事实,存入记忆库; - 技能审查(
_SKILL_REVIEW_PROMPT):判断任务解决路径是否具通用性,是否应固化为可复用Skill; - 综合审查(
_COMBINED_REVIEW_PROMPT):反思执行过程是否存在优化空间或错误模式。
该“前台即时响应、后台异步进化”设计,确保每次交互既解决问题,又为未来智能化积累数据。
RL训练闭环:“权重内化”的终极自进化
动态Skill生成属“外挂式”进化,在时效性与可解释性上优势显著,但底层模型权重未变,仍依赖外部知识检索,存在性能天花板。为此,Hermes引入第二条路径:基于强化学习(RL)的模型训练闭环。
若Skill生成是“记笔记”,RL训练则是“练内功”——通过改变模型权重,实现能力内化。其设计对标Andrej Karpathy的AutoResearch,但更为成熟完善。项目README中称其为“Research-Ready”自动化训练框架,强调其覆盖数据合成、质量筛选、RL环境构建、小规模实验、正式训练及自动化评估的完整闭环。
RL训练流程分为四阶段:
- 任务定义:用户指定目标(如“提升数学推理能力”),系统匹配训练数据或Benchmark;
- 轨迹捕获与批量数据合成:通过
batch_runner.py自动合成Agent运行轨迹(Trajectory),筛选高质量样本并转为标准ShareGPT格式。通常以Claude Opus 4.6等旗舰模型为“教师模型”生成高起点示范数据; - 渐进式训练与自动评估:先小规模实验验证可行性,再启动大规模训练;训练后自动评估指标,效果达标则固化模型,未达预期则反馈优化;
- 领域局部最优解:通过奖励机制(Reward Model),使模型在特定场景下获得正向反馈,逐步学会专有逻辑,达成该领域的局部最优。
Agent轨迹组织
Agent轨迹(Trajectory)指完成一次任务的完整对话记录,含系统提示词、用户请求、Agent思考与行动、工具调用及结果。在agent/trajectory.py中可转换为ShareGPT格式,示例如下:
[
{"from": "system", "value": "你是 Hermes Agent..."},
{"from": "human", "value": "帮我部署这个应用"},
{"from": "gpt", "value": "好的,我先检查环境..."},
{"from": "tool", "value": "<tool_call>execute_code(...)</tool_call>"},
{"from": "tool", "value": "<tool_response>成功</tool_response>"},
{"from": "gpt", "value": "部署完成!"}
]
采用ShareGPT格式因其生态通用性(LLaMA-Factory、FastChat等主流框架均支持)。“gpt”标签为历史约定,训练框架会将其映射至对应模型的assistant token,不影响Qwen、Kimi、Llama等非GPT模型训练。
数据预处理依赖三个核心函数:
save_trajectory:以追加模式将轨迹持久化至JSONL文件;convert_scratchpad_to_think:将<REASONING_SCRATCHPAD>转为通用<think>格式,适配CoT训练;has_incomplete_scratchpad:检测推理标签完整性,过滤截断导致的数据残缺。
最终输出两类JSONL文件:trajectory_samples.jsonl(成功轨迹)与failed_trajectories.jsonl(失败轨迹),每条记录含ShareGPT对话、时间戳、模型标识及完成状态。
批量数据生成
主力数据工厂为batch_runner.py,支持并行处理大量提示词,流程如下:
- 准备提示词:人工准备JSONL格式提示词(如
{"prompt": "请帮我搜索AI领域最新进展"}),或从GSM8K、HumanEval等Benchmark采集; - 并行处理:线程池并发执行,每条提示词启动独立Agent实例;
- Teacher模型生成:默认以
anthropic/claude-opus-4.6为教师模型,执行完整Agent对话; - 录制轨迹:将对话过程转为ShareGPT格式训练数据;
- 工具集随机采样:动态组合不同工具,避免模型死记硬背配置,提升泛化能力;
- 零推理过滤:通过
_extract_reasoning_stats统计推理字段出现次数,全为零则丢弃——无显式推理的样本对训练无价值。
另支持Hindsight-Guided On-Policy Distillation(OPD),基于Princeton大学2026年OpenClaw-RL论文实现,详见environments/agentic_opd_env.py。
SWE任务数据生成
mini_swe_runner.py为垂直领域数据生成器,专用于SWE Benchmark(软件工程基准测试)任务,与batch_runner.py对比见下表:
文件 |
|
|
用途 |
通用数据批量生成 |
SWE Benchmark任务 |
任务类型 |
任意提示词 |
代码修复/实现 |
完成信号 |
对话自然结束 |
|
Agent轨迹压缩
原始轨迹Token量过大(单次复杂对话可达数十万),需压缩至可控规模。trajectory_compressor.py提供精炼方案,核心配置示例:
@dataclass
class CompressionConfig:
tokenizer_name = "moonshotai/kimi-k2.5" # 精确Token计数器
target_max_tokens = 15250 # 压缩后目标上限
summary_target_tokens = 750 # 摘要Token预算
protect_last_n_turns = 4 # 保护最后4轮对话
summarization_model = "google/gemini-3-flash" # 轻量级摘要模型
max_concurrent_requests = 50 # 并发摘要请求数
压缩流程分三步:
- 精确计数:用HuggingFace
AutoTokenizer统计Token,低于目标值则跳过压缩; - 区域识别:划分头部保护区(系统指令、首条人类消息、首条GPT回复、首次工具交互)、尾部保护区(最后4轮对话)及中间压缩区(冗余探索过程);
- 摘要生成:将中间区发送至Gemini Flash等轻量模型,生成以
[CONTEXT SUMMARY]:开头的逻辑脉络摘要,再拼接头+摘要+尾形成新轨迹。
保护头尾因前者定义任务初衷,后者承载结果验证;中间过程则以摘要概括,平衡数据质量与计算效率。
RL强化学习训练
rl_cli.py为RL训练核心入口,关键配置如下:
RL_MAX_ITERATIONS = 200 # 最大迭代次数
DEFAULT_MODEL = "anthropic/claude-opus-4.6" # 强模型指导训练
RL_TOOLSETS = ["terminal", "web", "rl"] # 可用工具集
训练流程标准化为四阶段:
- 发现与洞察:通过
rl_list_environments()浏览模板,深入inspect环境逻辑(数据加载、评分函数、迭代方式等),并探查HuggingFace数据集分布; - 构建与配置:复制修改环境模板,用
rl_select_environment和rl_edit_config定制参数; - 验证测试与正式训练:强制执行
rl_test_inference验证配置正确性,再调用rl_start_training启动训练,通过rl_check_status监控进度(建议间隔30分钟); - 评估:训练后用
rl_get_results获取产物,结合WandB指标分析损失曲线与奖励得分,决定是否采纳新模型。
GRPO算法思路
Hermes采用DeepSeek R1论文提出的GRPO(Group Relative Policy Optimization)算法,路径为/skills/mlops/training/grpo-rl-training/SKILL.md。其核心逻辑:对同一问题生成8~16个回答,由奖励函数打分,引导模型“多产出高分回答,少产出低分回答”。关键优势在于无需单独训练Reward Model,直接使用规则化奖励函数即可。
奖励函数的设计
Hermes采用多维度组合奖励,权重与衡量维度如下:
维度 |
权重 |
衡量什么 |
正确性 |
2.0(最高) |
最终答案是否正确 |
格式规范 |
0.5 |
是否遵循 |
渐进格式 |
0~0.5 |
部分符合格式也给分(如只写开标签) |
奖励函数设计黄金法则:
- 组合3~5个函数,各管一个方面;
- 权重要合理:正确性最高(2.0),格式次之(0.5~1.0);
- 给部分分:如只写开标签给0.125分;
- 先单独测试各函数,再合并使用。
奖励函数不仅限于字符串匹配,还可通过ToolContext执行终端命令(编译验证代码)、读取文件(确认修改)、访问网络(验证搜索结果)、调用浏览器(检查网页内容),实现“真实验证”。
思考:为什么不直接从用户数据中学习?
RL训练数据主要来自Teacher Model合成或Benchmark构造,而非直接使用用户对话轨迹。原因有二:
- 隐私问题:用户对话可能含敏感信息,未经同意训练存在合规风险;
- 质量问题:用户对话质量参差不齐,直接训练易导致模型性能下降。
RL训练的核心目标是知识蒸馏——将Claude Opus等大模型能力“压缩”至Qwen 3~4B等小模型,实现降本(本地部署免API费用)、提速(小模型推理更快)、合规(数据不出本地)。通过RL奖励机制,开源模型可在特定领域接近甚至超越闭源大模型水平,再叠加Skill动态生成系统,即可实现场景级极致效果。
若需基于历史对话提升模型,可将高质量对话人工导入,经Teacher Model参考合成与质量把关后,再用于RL训练。
综上,Hermes的“自进化”体系由两层构成:动态Skill机制解决“即时纠错”与“沉淀复用”,RL训练闭环实现“智能提升”,二者协同构建完整进化能力。
Prompt Engineering:模型异构与无缝迁移的“兼容主义”
Hermes延续动态拼装范式,基础结构与OpenClaw、Claude Code高度相似,但精妙之处在于对模型异构性的深刻理解与生态兼容性的极致追求。
工具使用强制指导
针对不同大模型在工具调用上的“性格差异”,Hermes引入强制性动态工具引导机制:
- Claude:训练强调工具使用,通常无需额外提醒;
- GPT/Codex:易“只说不做”,需明确指令:“必须用工具执行,不可仅描述”;
- Gemini/Gemma:需提醒使用绝对路径、先读后改、并行调用工具。
系统根据所选模型动态注入针对性指令补丁,对惰性模型强调“执行”,对粗糙模型强调“规范与顺序”,显著提升稳定性与准确率。
配置项agent.tool_use_enforcement支持:
"auto"(默认):依模型名自动判断;true:强制注入;false:不注入;["gpt", "gemini"]:仅对列表内模型注入。
对GPT专属指导包括:强制工具调用场景(写文件、执行代码、终端命令、网页搜索);禁止幻觉(不编造路径/API);执行后验证(改文件后确认、测代码验输出)。对Gemini/Gemma则强调绝对路径、编辑前先读、并行调用工具。
兼容各AI产品生态
Hermes最大竞争力在于极低用户迁移成本,System Prompt拼装逻辑全面兼容主流Agent框架:
- OpenClaw生态:可直接读取
AGENT.md、SOUL.md、USER.md等配置文件,实现零成本无缝迁移; - AI Coding规范:支持
CLAUDE.md、.cursorrules、.cursor/rules/*.mdc等,快速融入Cursor、Claude Code工作流; - 多平台IM协议:内置WhatsApp、Slack等适配提示词,保障跨平台语气与行为规范。
Hermes的Prompt Engineering实为连接模型与平台的枢纽:动态适配补足模型短板,广泛兼容降低切换门槛,实现“拿来即用,用即高效”。
Context Engineering:比例阈值压缩与记忆持久化
Hermes在上下文工程层面与OpenClaw、Claude Code一脉相承,核心目标均为应对Context Window溢出问题,通过智能压缩、Memory增强与关键信息持久化保障长程任务稳定性。持久化存储同样采用SQLite,确保长期Memory与对话记录的可靠性。本文聚焦两大差异点:
压缩:上下文的动态阈值压缩
Hermes与OpenClaw在实时压缩触发逻辑上存在显著差异:
- OpenClaw:绝对阈值触发——设定固定Token边界(如总窗口20K,预留2K,则达18K即压缩),简单直接但需频繁调参;
- Hermes:相对阈值触发——监控上下文占总窗口容量的比例(如达50%即触发),参考
agent/context_compressor.py。例如窗口200K时,阈值为100K,更具泛化能力,适配不同规模模型。
裁剪策略同为“头尾保留、中间摘要”:
- 头部保护:保留系统指令、初始任务定义等关键引导;
- 尾部保护:保留最近几轮对话,保障短期记忆连贯;
- 中间压缩:对冗长工具调用与推理步骤裁剪,以LLM摘要替代细节。
上下文实时压缩与离线轨迹压缩对比见下表:
特性 |
上下文实时压缩 |
离线Agent轨迹压缩 |
运行时机 |
对话进行中 |
对话结束后 |
目的 |
保持对话可继续 |
准备高质量训练数据 |
Token目标 |
降到上下文窗口50%以下 |
精确到15250(固定值) |
Token计数 |
粗略估算(4字符≈1Token) |
通过HuggingFace Tokenizer精确计数 |
总结器 |
同模型或配置模型 |
Gemini Flash(更轻量高效) |
保护策略 |
保留前10条 + 尾部动态 |
保留首轮系统/人类/助手/工具 + 最后4轮 |
Memory:内外双驱的混合架构
Hermes采用“内部静态存储 + 外部动态扩展”双层记忆架构,兼顾稳定性与开放性。
内部记忆:基于文件的长期事实沉淀
通过MEMORY.md或USER.md等Markdown文件维护Agent“核心认知”:
- 存储内容:长期、静态的事实性知识(用户偏好、项目背景、关键约束等);
- 特点:非日志式记录,侧重关键信息提炼与持久化,简单透明、易于人工编辑,形成稳定“基础档案”。
召回记忆时以特殊标签包裹,避免模型混淆来源:
<memory-context>
[System note: The following is recalled memory context,
NOT new user input. Treat as informational background data.]
用户偏好使用 Python 和 TypeScript。
上次会话中讨论了 React 组件架构。
</memory-context>
对话持久化方面,Hermes同样采用SQLite,但直接存储全部每日对话历史(而非OpenClaw式的Memory Chunk索引),优势在于:
- 结构化数据资产:对话历史成为可查询、可索引的结构化数据,便于主题检索、时间回溯;
- 赋能自我进化闭环:SQLite中高质量对话轨迹是生成Skill与RL训练的原始素材,数据库化存储大幅提升数据提取与清洗效率。
外部记忆:接入第三方记忆服务的弹性扩展
Hermes原生支持Mem0、Honcho、Hindsight、Supermemory等第三方记忆服务,复用其向量检索、语义关联与跨会话记忆能力,赋予Agent跨系统迁移能力——用户记忆资产不再锁定于特定框架,可通过标准化接口流转共享。
内部记忆保证“底子”稳定,外部记忆提供“脑子”灵活与广阔,混合架构使其兼具传统工具可靠性与现代AI服务扩展潜力。
上下文注入:从“工具调用”到“即时挂载”的效率提升
Hermes引入@符号资源挂载机制,体现以工程效率为核心的设计哲学:
- 传统模式(被动检索):用户指令→Agent识别→调用工具(如
read_file)→获取结果→拼接上下文,耗时长; - Hermes模式(主动注入):用户以
@符号直接指定资源,系统立即将内容“硬注入”当前Prompt上下文。
常用语法与效果:
语法 |
作用 |
效果 |
|
读取整个文件 |
注入main.py完整内容 |
|
读取指定行 |
只注入第10-20行 |
|
列出目录树 |
显示文件大小、修改时间 |
|
Git未暂存更改 |
等同于 |
|
Git已暂存更改 |
等同于 |
|
最近3次提交 |
包含完整补丁 |
|
抓取网页内容 |
转为Markdown |
该机制将“工具调用”转化为“上下文预加载”,省去Agent思考与执行环节,使模型接收指令瞬间即拥有全部背景信息,大幅提升响应速度与Token效率。
Harness Engineering:约束与运行保障
Harness Engineering负责Agent运行时保障、异常处理、安全管控及扩展能力。Hermes在错误恢复、子Agent隔离及插件生态上较OpenClaw更精细,构建灵活健壮的生产级环境。
全生命周期的Hook机制
Hermes提供完整生命周期钩子(Hook)系统,开发者可在关键节点(任务启动前、工具调用后、响应生成前等)注入自定义逻辑,实现全流程精细化管控。典型钩子包括:
钩子 |
触发时机 |
|
Agent初始化时 |
|
工具执行前 |
|
工具返回后 |
|
Agent关闭时 |
|
每轮开始时 |
|
压缩前,提取有用信息 |
|
写入内置记忆时 |
|
子Agent完成任务后 |
|
会话结束 |
结构化的错误分类与自愈体系
Hermes建立14种标准化错误分类体系,取代笼统“Error”处理,针对每类预设自动恢复策略(重试、降级、修正),避免单次失败中断长上下文任务。具体错误类型见下表:
错误类型 |
含义 |
典型场景 |
|
认证失败 |
API Key无效 |
|
永久认证失败 |
账号被封禁 |
|
账单问题 |
额度用完 |
|
请求过多 |
被限流 |
|
服务器过载 |
服务器忙 |
|
服务器错误 |
5xx错误 |
|
请求超时 |
网络问题 |
|
上下文溢出 |
消息太长 |
|
请求体太大 |
413错误 |
|
模型不存在 |
模型名错误 |
|
请求格式错误 |
参数问题 |
|
思考签名错误 |
Anthropic特有 |
|
长上下文限制 |
Anthropic特有 |
|
未知错误 |
需要重试 |
受控的子Agent机制
面对复杂任务,Hermes支持委托子Agent并行处理,但实施严格沙箱隔离:
- 子Agent不可递归创建新子Agent;
- 不可向主Agent发起反向询问;
- 仅能获取任务所需上下文片段,无法访问完整记忆库。
该设计保障数据安全,实现真正并行执行。安全限制见tools/delegate_tool.py:
# 子Agent不能使用的工具(防止权限升级)
DELEGATE_BLOCKED_TOOLS = {
"delegate_task", # 防止递归委派
"clarify", # 防止嵌套提问循环
"memory", # 防止操纵记忆
"send_message", # 防止消息劫持
"execute_code" # 防止代码执行权限升级
}
MAX_CONCURRENT_CHILDREN = 3 # 最多3个并行子Agent
MAX_DEPTH = 2 # 最多2层嵌套
开放的插件系统与生态扩展
Hermes内置插件系统,允许第三方开发者通过标准接口扩展功能(如Mem0、Hunter等外部组件及自定义工具/Hook),解耦设计降低生态贡献门槛,保持技术栈鲜活度。
多层级的安全护栏(Guardrails)
生产环境安全至关重要,Hermes构建多层防御体系:
- 防Prompt注入:内置检测机制,拦截恶意提示词注入攻击;
- Skill安全扫描:动态生成或外部引入的Skill文件,加载前进行静态代码分析与安全扫描。
综上,Hermes的Harness Engineering不仅是运行环境,更是集监控、自愈、隔离、扩展与安全于一体的综合管控体系,以标准化错误处理与严格子任务隔离解决落地稳定性难题,以开放插件与严密安全平衡灵活性与合规性。
总结
Hermes并非横空出世,而是在OpenClaw、Claude Code等项目基础上精准突破——解决其尚未攻克的核心痛点:Agent无法自我学习与进化。
传统Agent范式中,任务执行多为从零探索,过往经验随会话终结而消散。Hermes通过Skill动态沉淀与RL闭环训练,打通“任务执行→经验记录→Skill抽象→模型再训练”的完整数据链路,使Agent从静态工具进化为持续吸收养分、自我迭代的有机体。
Agent发展阶段可简比为:
- 早期Agent:被动式,依赖明确指令,一问一答,难执行复杂长周期任务;
- 自主Agent:如OpenClaw、Claude Code,可自主规划、调用工具,独立完成复杂长周期任务;
- 自进化Agent:Hermes里程碑式跃迁,不仅能自主执行,更能执行中学习、学习中变强。
从“自主”到“自进化”的跨越,正是当前AI架构演进最显著特征。叠加底层基座模型(如Claude Myths)的飞速突破,“更强基座模型+更优自进化架构”双轮驱动,正加速AGI(通用人工智能)曙光的到来。
身处技术大爆炸时代,新框架、新产品层出不穷。生产力释放大幅缩短“想法→实现”距离,未来竞争将更聚焦于对新技术的敏感度与整合能力。希望本文对Hermes的深度拆解,能为构建新一代Agent提供切实参考。我们将持续关注业界动态,与大家共同学习、交流,在AI浪潮中乘风破浪,以技术赋能业务,迎接智能无处不在的未来。

