Hermes Agent Skill 互优化:SkillEvolver × Darwin × EmbodiSkill 4 轮闭环¶
Ch04.041 Hermes Agent Skill 互优化:SkillEvolver × Darwin × EmbodiSkill 4 轮闭环¶
📊 Level ⭐⭐ | 25.2KB |
entities/hermes-agent-skill-crossover-optimization.md
Hermes Agent Skill 互优化:SkillEvolver × Darwin × EmbodiSkill 4 轮闭环¶
一句话¶
"AI 的能力提升,不一定需要更强的模型。有时候,只需要让 AI 学会自己改自己的'说明书'。"
作者(KK大叔)用 Hermes Agent 让 Darwin-skill × SkillEvolver 互相优化,4 轮迭代后意外验证了清华 SkillEvolver 论文核心结论。
→ 原文存档
三个主角¶
1. Darwin-skill — AI 的"质检员"¶
- 来源:GitHub
alchaincyf开发者,灵感来自微软研究院 SkillLens 论文 - 核心职责:给 AI 的 skill 打分
- 9 维评估体系(满分 100):frontmatter 质量 / 工作流清晰度 / 失败模式编码 / 检查点设计 / 可执行具体性 / 反例与黑名单 等
- 类比:AI 世界的 ISO 质量认证
最狠的设计 — 棘轮机制: - 分数只能涨不能跌 - 每次优化后重新评估,分数降了就自动回滚(像棘轮一样只进不退) - 配套:独立评审制度 — 改 skill 的 AI 和评 skill 的 AI 必须是不同的 agent - 原因:微软论文实测数据 — AI 给自己打分的准确率只有 46.4%(跟抛硬币差不多)
2. SkillEvolver — AI 的"进化器"¶
- 来源:清华 / 北交大 SkillEvolver 论文,作者落地到 Hermes Agent
- 核心思想 8 字:角色分离,闭环进化
- 角色分离:一个 AI 专门负责写 skill(作者),另一个 AI 专门负责用 skill(执行者)
- 信息不对称 = skill 里的缺陷在执行中自然暴露
3 阶段流程:
- 策略多样化探索:同一任务生成 3-4 条不同执行策略,方法路径 / 步骤顺序 / 参数策略必须有实质性差异(换个说法不算)
- 对比式更新:把成功和失败的执行轨迹放一起对比 → 找到第一个出现差异的分叉点 = skill 需要改的地方 → 只做补丁式修订(不整体重写)
- 独立审计:用一个全新的 AI 会话当审计官,按 9 条规则逐项检查。审计官看不到作者的修改理由,只看 skill 本身
核心洞察 — 四类失败归因(吸收 EmbodiSkill 论文): - 执行失败时先判断是"技能缺陷"还是"执行失误" - 技能缺陷 → 改 skill - 执行失误 → 只记附录,不改 skill
为什么至关重要:
"如果一个说明书是对的,但执行的人手抖了,你把说明书改了,下次岂不是更糟?"
3. EmbodiSkill — "裁判"¶
- 来源:南大 + 微软 + 清华 AIR 联合
- 职责:当两个 AI 互相挑毛病时的裁判
- 核心贡献:技能体 / 附录分离 — 技能核心和补充内容解耦
互优化 4 轮迭代过程¶
准备:双向注入核心机制¶
| 注入 | 来源 | 接收方 |
|---|---|---|
| 棘轮机制 / 探索性重写 / 版本追踪 | Darwin | SkillEvolver |
| 四类失败归因 / 补丁式修订 / CHECKPOINT | SkillEvolver | Darwin |
4 轮迭代轨迹:
| Round | SkillEvolver 分数 | Darwin 分数 | 关键变化 |
|---|---|---|---|
| 1 | 61 → 81 (+20) | 81.5 | 补 8 个 if-then 失败场景(最大短板 = 失败模式编码) |
| 2 | 81 → 85.8 | — | Pitfalls + 反例黑名单合并去重 + 4 轴策略差异判断 + STOP Δ明确定义 |
| 3 | 85.8 → 86.0 (Δ=0.2) | — | 加 delegate_task 参数模板 + evolution-log 实例文件(触顶信号) |
| 4 | 79.1(权重修正) | 84.7 (+3.2) | Darwin 升级决策:二分法 → 四类分支 |
达尔文决策升级 — 二分法 → 四类分支(核心创新): - 原 Darwin Phase 2:keep/revert 二分法 - 新 Darwin Phase 2: - 执行失误 → 重评 - 技能缺陷 → 换方向 - 新发现 → 记录不回滚 - 优化机会 → 微调参数
"这不就是达尔文进化论的 AI 版本吗?变异(策略多样化)、选择(对比式更新)、遗传(棘轮锁定)。"
大发现:AI 不需要更强的模型¶
第四轮互优化结束后,回看数据:
- SkillEvolver 61 → 86 分:没换模型,没调参数,没加数据。用的还是同一个 AI,只是"操作说明书"写得更好了
- Darwin 81.5 → 84.7 分:同样同一个模型,只是决策逻辑从二分法升级为四类分支
完整自进化闭环:
skill-evolver = 进化方法论 (HOW to improve, WHAT to change)
darwin = 评估标准 (WHEN to stop, HOW to score)
EmbodiSkill = 失败归因 (WHY it failed) + 技能体/附录分离
三者组合 = 评估 + 改进的完整自进化系统
核心论断:
"AI 智能体的能力提升,可以通过外部技能的自进化实现,无需重新训练大模型。"
这个闭环一旦跑通,理论上可以无限循环下去: - 每一轮迭代,skill 都比上一轮更好 - 因为有棘轮机制,永远不会越改越差
工程化参数与最佳实践¶
| 实践 | 来源 | 价值 |
|---|---|---|
| 9 维 rubric | Darwin | 量化评估标准 |
| 棘轮机制(分数只能涨不能跌) | Darwin | 防止 skill 退化 |
| 多评委独立审查 | Darwin + SkillLens | 解决"AI 自评 46.4% 准确率"问题 |
| 策略多样化(3-4 条) | SkillEvolver | 避免局部最优 |
| 分叉点定位(第一个差异点) | SkillEvolver | 精准定位 skill 缺陷 |
| 补丁式修订(不整体重写) | SkillEvolver | 减少破坏性改动 |
| 独立审计官(新会话) | SkillEvolver | 避免作者偏见 |
| 四类失败归因 | EmbodiSkill | 区分技能缺陷 vs 执行失误 |
| CHECKPOINT + STOP(Δ<2) | SkillEvolver | 自动停止条件 |
| results.tsv 版本追踪 | Darwin/SkillEvolver | 实验可重现性 |
| 反例黑名单 + 归因列 | Darwin 升级 | 失败模式编码 |
| delegate_task 参数模板 | SkillEvolver | 任务可复用 |
核心金句¶
- "AI 的能力提升,不一定需要更强的模型"
- "让 AI 学会自己改自己的'说明书'"
- "棘轮机制 — 分数只能涨不能跌"
- "AI 给自己打分的准确率只有 46.4%,跟抛硬币差不多"
- "角色分离,闭环进化"
- "信息不对称,让 skill 里的缺陷在执行中自然暴露"
- "只做补丁式修订,不整体重写"
- "审计官看不到作者的修改理由,只看 skill 本身"
- "技能缺陷要改 skill,执行失误只记附录不改 skill"
- "如果一个说明书是对的,但执行的人手抖了,你把说明书改了,下次岂不是更糟?"
- "变异(策略多样化)、选择(对比式更新)、遗传(棘轮锁定)"
- "AI 智能体的能力提升,可以通过外部技能的自进化实现,无需重新训练大模型"
- "模型能力只是上限的一半,另一半是 skills 的质量"
- "Hermes Agent 可以用今天的自己,改进明天的自己"
与已有实体的关系¶
Darwin Skill 2 Huashu— Darwin 2.0 自身迭代到 2.0 版本- 本实体 — Darwin × SkillEvolver 互优化实验(4 轮闭环)
-
关系:同一作者生态 (KK大叔/花叔),不同实验阶段
-
Skillopt(Microsoft+SJTU Skill 训练, commite0c63ee3) — 微软 SkillOpt 训练 - Darwin-skill = 吸收 SkillLens 论文 → 9 维评估 + 多评委
- SkillEvolver = 清华论文 → 角色分离 + 闭环进化
- EmbodiSkill = 南大+微软+清华 AIR → 失败归因 + 技能体/附录分离
- 共同点:都把"skill 自我进化"作为隐性护城河
概念对比¶
| 维度 | Darwin 2.0 | 互优化(本文) |
|---|---|---|
| 实验对象 | Darwin 自身 | Darwin + SkillEvolver |
| 轮数 | 多轮自迭代 | 4 轮互优化 |
| 关键创新 | 9 维 rubric + 多评委 | 双向注入 + 棘轮 + 四类分支 |
| 验证结论 | Skill 自我进化可行 | AI 不需要更强模型 |
终极断言¶
"Hermes Agent 的上限取决于模型的能力 —— 现在我发现,模型能力只是上限的一半,另一半是 skills 的质量。"
"Hermes Agent 可以用今天的自己,改进明天的自己。这条路不需要更强的算力,不需要更多的数据,只需要一套好的方法论。"
与 GEPA optimize_anything 的关联¶
GEPA optimize_anything(GEPA 官方,2026-02-18,通用文本优化 API)与本实验在 4 个关键维度高度互补:
| 维度 | GEPA optimize_anything | 本互优化实验 |
|---|---|---|
| 优化对象 | 任意文本制品(prompt / skill / code / agent workflow) | Skill 文件(Darwin 9 维 rubric / SkillEvolver 进化方法论) |
| 核心机制 | Pareto 反思 + ASI(Artificial System Intuition) — 用 LLM 反思 + 结构化诊断替代纯梯度 | 双向注入 + 棘轮 + 四类失败归因 — 角色分离闭环进化 |
| 评估方式 | evaluate() 返回分数 + oa.log() 结构化 ASI(错误行 / 参数值 / 中间状态) | 9 维 rubric 独立评分 + 棘轮(分数只能涨不能跌) |
| 跨任务迁移 | Multi-Task 模式 + Pareto 前沿(捕获模式共性,发现互补优化策略) | EmbodiSkill 4 类失败归因(区分技能缺陷 vs 执行失误) |
| Skill 自动化 | Generalization 模式构建可迁移 skill library(优化结果固化为 skill) | Skill Markdown = 唯一真相源(改模型 PR = 改 Skill PR) |
GEPA 给本实验的 5 大可借鉴实践:
- 在
evaluate()中用oa.log()记录结构化 ASI,而非仅返回分数:将具体错误行、参数值、中间状态记录为诊断上下文,等同于为优化器提供反向传播的梯度信息 — 对应本实验的"补丁式修订"和"独立审计官" - 多模态 ASI 使用
gepa.Image封装 VLM 可视化反馈:当制品是图像、SVG 或 UI 时,让 VLM 直接"看到"渲染结果 — 升级方向(当前本实验仍以文本反馈为主) - Multi-Task 模式构建 dataset 时注重任务多样性而非数量:跨任务迁移的核心是捕获模式共性,相似任务过多会导致过拟合
- Pareto reflection batch 严格控制在 2-3 个示例:避免平均化效应 — 工程保障"每次聚焦单一维度的靶向改进" — 与本实验"对比式更新找第一个分叉点"思路一致
- 优先在 Generalization 模式构建可迁移 skill library:先用 Generalization 模式将优化结果固化为 skill,再用 Multi-Task 模式让 skill 在任务间互相增强
双向补强关系:
- GEPA optimize_anything = 优化方法论的通用基础设施(Pareto + ASI + Multi-Task + Generalization)
- Hermes Agent Skill 互优化 = Skill 自进化的具体实验范式(角色分离 + 棘轮 + 四类归因)
- GEPA 缺:业务领域专家编码、棘轮防退化、跨 Skill 互优化机制
- 本实验缺:结构化 ASI 诊断、Pareto 多目标优化、Generalization 模式
结合路径建议:
"如果把 GEPA 的 Pareto 反思 + ASI 机制注入到 SkillEvolver 的 3 阶段流程中,把'独立审计'升级为 GEPA 风格的'oa.log() 结构化诊断 + Pareto reflection',用棘轮防退化,用 Multi-Task 让 skill 在任务间互相增强——这就是工业级 Skill 自进化的完整方案。"
深度分析¶
1. 棘轮机制的热力学本质:反熵增的信息设计¶
棘轮机制(ratchet mechanism)在该系统中并非单纯的"分数只涨不跌",其深层逻辑是对熵增定律的主动抵抗。传统软件开发中,代码库会随着时间推移而腐化——每次修改都可能引入新问题,导致系统整体质量震荡下行。棘轮机制通过将"质量底线"编码为不可逆的单调函数,将系统强行拉入一个离散单调空间:任何导致质量下降的操作都被自动回滚,确保系统在每一轮迭代后都处于局部最优状态。
从信息论角度看,棘轮机制本质上是局部不可逆的信息过滤器。它假设:若一个修改在当前评估体系中导致分数下降,则该修改在统计意义上更可能是噪声而非真正的改进。这一假设与机器学习中的"奥卡姆剃刀"原则异曲同工——简单的改进优于复杂的改进,复杂的改进需要在更严格的验证标准下才能被接受。
该机制与进化生物学中"棘轮效应"(Muller's ratchet)的类比值得深入:在一个无性繁殖种群中,由于遗传漂变和自然选择的共同作用,适应性会不可逆地逐渐下降。而该系统通过引入"独立评审"和"棘轮"两个人工机制,模拟了有性生殖中的基因重组与选择:评审者提供了遗传多样性(视角多样性),棘轮提供了选择压力(质量不可逆)。
这意味着Skill 自进化的上限并非模型能力,而是评估体系的设计质量——如果评估体系存在盲点,棘轮机制会在该盲点上持续锁定低质量状态。
2. 角色分离的信息经济学:阿罗信息悖论的应用¶
SkillEvolver 核心设计中"作者"与"执行者"的角色分离,在信息经济学中对应阿罗信息悖论的核心洞察:决策者需要的信息,往往在决策之后才能被获得。该实验中,执行者使用 skill 时暴露的缺陷,是 skill 设计阶段无法预知的——这正是"说明书正确但执行者手抖"现象的本质:执行者在特定上下文中的隐性知识(tacit knowledge)无法被完全编码到显性的 skill 文档中。
角色分离机制的价值在于:它将这种信息不对称从"系统缺陷"转化为"进化信号"。当执行者因 skill 缺陷而失败时,系统归因于"技能缺陷"并触发 skill 修改;当执行者因个人失误而失败时,系统归因于"执行失误"并拒绝修改 skill。这两种截然不同的处理方式,实际上对应了系统层优化与个体层优化的严格分离:系统层(skill)的目标是消除一切可编码的失败模式,个体层(执行者)的失误不应污染系统层知识库。
这种分离在工程上的意义在于:它防止了"过度拟合"现象。如果每次执行失败都修改 skill,skill 会逐渐变得适配特定执行者或特定上下文的细节,从而丧失通用性。角色分离确保 skill 的修改只捕获"可泛化的模式",而非"偶然的个体差异"。
3. 四类分支的决策论基础:从二分法到贝叶斯更新¶
Darwin Phase 2 从"keep/revert 二分法"升级到"执行失误/技能缺陷/新发现/优化机会四类分支",这一升级的决策论基础值得深究。二分法本质上是点估计思维——对每次修改的结果只有"采纳"或"拒绝"两种判断,没有考虑判断的置信度和后续行动的差异。
四类分支实质上是带先验的贝叶斯决策框架:每次修改被赋予一个隐含的先验概率分布,基于执行结果的类型,系统执行不同的后验更新策略。执行失误对应"修改本身无罪,执行环境有变"——回滚但不惩罚;技能缺陷对应"修改方向错误,环境未变"——回滚且换方向;新发现对应"修改有价值但超出预期"——保留但不计入主线;优化机会对应"修改有价值且符合预期"——保留并强化。
这种决策结构的优势在于减少了信息损失。二分法在每次判断中损失了"失败原因"和"改进空间"两个维度的信息——keep 意味着完全接受,revert 意味着完全否定。四类分支保留了更多决策中间状态,使得后续迭代可以利用"部分成功"的经验,而非只有在"完全成功"时才积累知识。
4. 能力上限的重估:组合爆炸与搜索空间压缩¶
KK大叔的核心发现"模型能力只是上限的一半,另一半是 skills 的质量",需要从组合数学角度重新审视。现代大语言模型的能力本质上是一个高维连续空间中的潜力向量,其实际释放程度取决于模型与任务环境的耦合方式。Skill 作为"操作说明书",实质上是从模型潜力空间到任务解空间的映射函数。
给定一个固定模型,其潜力空间是固定的,但通过优化 skill(即优化映射函数),可以使模型的实际输出更接近任务解空间的最优解。这解释了为什么"没换模型、没调参数、没加数据",skill 分数却能从 61 提升到 86——映射函数的优化直接压缩了从模型潜力到任务解之间的搜索空间。
这一发现对 AI 系统设计具有深远影响:在模型能力边际收益递减的场景下(如特定领域的任务解决),优化 skill 的投入产出比可能远高于优化模型本身。这与软件工程中"抽象层优化往往比底层优化更有效"的规律一致——好的抽象层可以极大地压缩问题搜索空间。
实践启示¶
1. 在 Skill 设计中强制嵌入"失败模式编码"检查点¶
当前 Darwin 9 维评估体系将"失败模式编码"作为独立维度,但在实际工程中,这一维度往往被新手设计者忽略。正确的做法是:在 Skill 文档的 frontmatter 中强制要求 failure_modes 字段,并在每次版本更新时强制填写"本次修改是否触及 failure_modes"的自检清单。
具体操作:在 skill 模板中预设失败模式编码的标准格式——每条失败模式应包含:触发条件(if-then 场景)、预期输出、应急处理方案。通过要求设计者在提交 skill 时填写"本修改影响的 failure_modes 条目编号",系统可以自动追踪 skill 演进中的失败模式覆盖度变化。
2. 构建"评估-修改"角色分离的自动化流水线¶
当前实验依赖人工创建"全新 AI 会话"作为独立审计官,这一过程在工程化后应被自动化。实现方案:以 GitHub PR 流程为模板——当 SkillEvolver 提交修改建议时,系统自动创建一个独立的"审计会话",该会话仅接收 skill 文档本身和 9 维 rubric,不接收修改理由或历史上下文。
关键约束:审计会话必须使用与 SkillEvolver 不同的模型实例(或至少不同的会话种子),以确保评审的独立性。这对应了微软 SkillLens 论文中"AI 自评准确率仅 46.4%"的核心发现——自评机制必须通过结构性分离来对冲这一缺陷。
3. 设计 skill 触顶信号的自动检测与触发机制¶
第四轮迭代中,Δ=0.2 的触顶信号表明系统已进入边际收益递减阶段。在工程实践中,应为每一维评估指标预设"触顶阈值"(如 Δ<2 分即判定为触顶),当所有指标的 Δ 均低于阈值时,系统应自动触发"盲区扫描"——调用外部知识源(如 GEPA optimize_anything 的 Pareto reflection)寻找当前评估体系未覆盖的优化方向。
这一机制的工程价值在于:将"人工判断是否应该继续迭代"这一主观决策,转化为"系统自动检测触顶信号并推荐下一步行动"的客观流程。这与 SkillEvolver 原论文中"CHECKPOINT + STOP(Δ<2)"的自动停止条件设计一脉相承。
4. 利用 EmbodiSkill 的技能体/附录分离防止 skill 膨胀¶
Skill 文档随着多次迭代会不断膨胀,导致核心逻辑与补充细节混杂。正确的做法是:严格遵循 EmbodiSkill 的技能体/附录分离原则——技能体(skill core)包含:目标、工作流、检查点、失败模式、边界条件;附录(appendix)包含:执行示例、参数模板、上下文变体、FAQ。
这种分离的价值在于:当审计官评估 skill 时,可以将附录信息作为参考但不影响核心评分,防止"丰富的示例掩盖了贫乏的核心逻辑"。同时,当 skill 需要适配新任务时,可以直接修改附录而无需触碰技能体,实现"可插拔的上下文扩展"。
5. 将互优化闭环封装为可复用的 Hermes Skill¶
当前 4 轮互优化实验是一个特定实验,未来应将其封装为一个可配置的 Hermes Skill,使得任何具备"skill 文档"的 AI 系统都能快速复现这一流程。封装的核心接口应包括:被优化的 skill 路径、评估者角色(Darwin)、进化者角色(SkillEvolver)、裁判角色(EmbodiSkill)、迭代轮数上限、触顶阈值。
这一封装的工程价值在于:将"互优化"从一次性的实验行为,转化为可重复的工程操作。通过标准化接口,不同团队的不同 skill 都可以接入这一闭环,实现 Skill 自进化的民主化。