第 6 章 GEPASkillOptSkillLens

第 6 章:评估驱动的进化 I:Prompt 与 Skill 优化

第 6 章:评估驱动的进化 I:Prompt 与 Skill 优化

本章核心

评估的终极价值不在于"衡量"而在于"驱动改进"。 当评估信号以自然语言反思而非标量奖励的形式反馈时,优化效率获得数量级提升。

本书从第 1 章到第 5 章讲了"怎么评估",从这一章开始讲"评估如何驱动进化"。本章聚焦两个优化对象:PromptSkill。第 7 章讲第三个:Agent 轨迹(强化学习)

这一章回答三个问题:

  1. 为什么说"评估器就是优化目标"?各种优化范式如何统一?
  2. GEPA、DSPy、TextGrad、SkillOpt 各自用什么机制驱动进化?
  3. 2025-2026 兴起的"自我进化 Agent"是怎么把评估信号组装成完整闭环的?

6.1 统一框架:评估器就是优化目标

GEPA、SkillOpt、DSPy、TextGrad 本质上在做同一件事:把评估器(metric/judge)当作优化器的目标函数,用评估反馈迭代改进系统的某一层。区别只在于"优化哪一层"和"用什么搜索机制"。

范式 优化对象 搜索机制 代表工作
反思式 Prompt 自然语言反思迭代 GEPA、OPRO、APE
搜索编译式 程序/Pipeline 贝叶斯/离散搜索 DSPy(MIPROv2)、EvoPrompt
文本梯度式 Prompt + 中间解 把评估反馈当"文本梯度"反向传播 TextGrad
技能知识式 技能文档 独立优化器 + 验证门控 SkillOpt
轨迹式 Agent 行为轨迹 RL/策略梯度 SWE-RL、AGILE、WebRL、RLEM

DSPy:理解这一层的最佳教材

DSPy(Stanford)把 LLM pipeline 声明为模块 + signature,compile() 时用你写的 metric 作为优化目标,用贝叶斯搜索(MIPROv2)组合指令与示例。在 DSPy 的代码里,"评估器"就是编译器的"损失函数"——这是评估驱动进化的最直接体现。

这个统一框架的价值在于:当你理解了"评估器 = 优化目标",你就不会再问"我该用 GEPA 还是 DSPy",而是问"我要优化哪一层、用什么搜索机制"。

6.2 反思式 Prompt 进化:GEPA 与同类

GEPA:Genetic-Pareto

GEPA(Genetic-Pareto) 由 ICLR 2026 Oral 接收,核心机制是把自然语言反思引入 prompt 优化:

  1. 给定包含 LLM prompt 的 AI 系统,采样轨迹(推理、工具调用、工具输出)
  2. 自然语言反思诊断问题、提出 prompt 更新
  3. 从自身尝试的 Pareto 前沿组合互补经验

关键数据(论文报告):

  • 在六个任务上,平均 6 个百分点(最高 19pp)超越 GRPO
  • 同时使用少至 1/35 的 rollouts
  • 超越领先 prompt 优化器 MIPROv2 超过 10 个百分点(如 AIME-2025 上 +12pp)

GEPA 的意义在于证明了"反思 + 进化"可以对抗"强化学习"——用更少的样本,达到更好的效果。它和 GRPO 的区别值得记住:GRPO 是数值奖励驱动的策略优化,GEPA 是自然语言反思驱动的文本进化。

同类方法

  • OPRO:用 LLM 生成优化后的 prompt,评估反馈驱动迭代
  • APE(Automatic Prompt Engineer):自动生成并筛选 prompt
  • EvoPrompt:用演化算法搜索 prompt 空间

这些方法共享 GEPA 的核心:评估反馈驱动 prompt 文本迭代。区别在于反思的深度(GEPA 用自然语言反思)和搜索的机制(Pareto vs 演化 vs 逐轮)。

6.3 搜索与文本梯度:DSPy 与 TextGrad

DSPy:metric 就是损失函数

DSPy 的核心抽象:

  • Signature:声明模块的输入输出(如"question → answer")
  • Module:把 LLM 调用封装为可组合的模块
  • Metric:你写的评估函数(可以是字符串匹配、LLM judge、或任何函数)
  • compile():用 metric 作为目标,贝叶斯搜索指令/示例组合,优化 pipeline

关键认知:DSPy 把"评估器"放在编译器的位置。 你不需要手写 prompt——你定义 metric,编译器负责找到让 metric 最高的 prompt。这是"评估驱动进化"的最纯粹形式。

TextGrad:文本梯度

TextGrad(zou-group)把评估反馈当作"文本梯度":

  • 把评估器当作 loss
  • 把评估器的反馈当作文本梯度
  • 沿计算图反向传播,统一优化 prompt 与中间解

打个比方:DSPy 是"搜索最优解",TextGrad 是"沿梯度下降"。两者都是"评估器 = 目标函数"的实现,只是搜索机制不同。

6.4 技能即参数:SkillOpt 与 SkillLens

SkillOpt:像训练神经网络一样训练技能

SkillOpt(Microsoft 开源)把技能文档视为冻结 Agent 的可训练状态,以权重空间优化的纪律训练它。核心设计:

  • 训练循环:rollout → reflect → aggregate → select → update → evaluate
  • 独立优化器模型:将评分后的 rollout 转化为有界的 add/delete/replace 编辑,仅当候选编辑严格改善 held-out 验证分数时才被接受
  • 稳定性机制:文本学习率预算、拒绝编辑缓冲区、epoch-wise slow/meta 更新
  • 零推理时开销:部署产物是 compact best_skill.md(通常 300-2,000 tokens),针对未修改的目标模型运行

与深度学习的类比(不是装饰,是真的在用)

深度学习概念 SkillOpt 对应
前向传播 Target model 用当前 skill 跑一批任务,收集轨迹和得分
反向传播 Optimizer model 分析成功/失败轨迹,提出 add/delete/replace 编辑
学习率 Edit budget:每步最多改几条规则
验证集 Held-out selection split,只有验证分提升才接受编辑
梯度裁剪 Bounded text update,防止一步改太多
动量 Epoch-wise slow/meta update
负样本 Rejected-edit buffer,被拒绝的编辑当反面教材

实验结果(论文报告)

  • 6 个 benchmark × 7 个模型 × 3 种执行模式(direct chat / Codex / Claude Code)= 52 个评测单元
  • SkillOpt 在所有 52 个单元上都是最佳或并列最佳
  • GPT-5.5 direct chat 模式下平均提升 +23.5 分(SpreadsheetBench +38.9、OfficeQA +39.0)
  • 跨模型迁移:大模型优化的 skill 可迁移到小模型
  • 跨 harness 迁移:Codex 训练的 skill 迁移到 Claude Code,依然有 +59.7 分的增益

SkillLens:技能生命周期的诊断

SkillOpt 解决"怎么优化",同团队的 SkillLens(arXiv:2605.23899)回答"skill 到底有没有用、什么时候有用":

技能生命周期三阶段:Experience Generation(生成轨迹)→ Skill Extraction(提取 skill)→ Skill Consumption(用 skill 跑任务)

三个核心发现:

  1. Model-generated skill 平均有用但不保证——存在 non-trivial negative transfer,加 skill 反而更差是常态
  2. 好 executor ≠ 好 extractor——引入两个解耦指标 Extraction Efficacy(EE)Target Evolvability(TE);在 SWE-bench 上小模型 extractor 的 EE 甚至高于大模型
  3. skill 的价值与模型规模/基线能力无关;skill 文本的"表面专业度"与"实际效果"几乎不相关——好的 skill 特征是具体的操作建议,而非泛泛原则

Meta-Skill Guided Extraction:把研究发现转成可操作的元 skill 注入提取流程,跨领域提升 skill 质量并大幅减少 negative transfer。

SkillLens 给 Agent 开发者的实操启示

  1. 不要只靠 LLM 一次性生成 skill——效果高度不稳定
  2. 用验证集做门控——不加验证的修改比不改更危险
  3. 追踪被拒绝的编辑——失败的修改记录是宝贵负反馈
  4. 给 skill 设编辑预算——一次改太多规则容易偏移
  5. 不要假设最强的模型就是最好的 extractor——中等模型可能更擅长提取 skill

技能的三维评估

Claude Code skill-creator 的三维评估(触发准确率/输出质量/效率指标)已在第 5 章 5.8 详述。它与 SkillLens 的发现呼应:skill 有没有用,要测出来,不能靠"看起来专业"。

6.5 自我进化 Agent:从技能库到完整系统

自我进化 Agent 三驾马车

2025-2026 兴起的 self-evolving agents 新品类,全部以"评估信号 → 进化"为闭环:

  • Agent0(aiming-lab, ICML'26/COLM'26):零数据自我进化——不需要外部数据,靠评估信号自我改进。学术前沿代表作
  • AgentEvolver(阿里 ModelScope):高效的自我进化 Agent 系统,工业界视角
  • Hermes Agent Self-Evolution(NousResearch,5.4k stars):用 DSPy + GEPA 优化技能/prompt/代码的产品级闭环——把本书已覆盖的框架(DSPy、GEPA)串成完整可用的系统

这三者的共同点:评估信号是进化的燃料,而不是"评估报告"的展示。 它们不是"评测完给个分数",而是"评测完自动改进自己"。

MUSE-Autoskill:技能生命周期 + 技能级记忆

MUSE-Autoskill(arXiv:2605.27366)提出技能生命周期五阶段:创建 → 存储 → 管理 → 评估 → 精化。

最亮眼的设计是 Skill-level Memory(技能级记忆)——为每个技能单独维护一个经验库:

skill_memory = {
    "web_scraping": {
        "executions": 47,
        "success_rate": 0.89,
        "common_errors": ["timeout on SPA sites", "rate limited by Cloudflare"],
        "best_practices": ["use headless browser for JS-heavy pages", "add 2s delay between requests"],
        "parameter_tuning": {"delay_seconds": 2.0, "max_retries": 3}
    }
}

优势:

  • 复用更精准:拿到技能的同时拿到它 47 次执行积累的经验
  • 跨 Agent 迁移:技能级记忆可打包迁移,新 Agent 不必从零开始
  • 持续改进有据可依:每次执行反馈都被记录,迭代基于真实数据而非猜测

评估机制是静态测试(预定义输入输出对)+ 动态反馈(实际任务执行信号)的双层结构,在 SkillsBench 基准上验证。

agentdescent:Agent 即参数

agentdescent(Birfy)提出"梯度下降,但参数是 agent"——并行异步的自我进化框架(进化技能/prompt/代码)。它用优化视角重新诠释 agent 进化:把 Agent 本身当作可优化的参数空间。

从"评估"到"进化"的三个关键设计

综合本章所有方法,评估驱动进化的落地需要三个关键设计:

  1. 评估信号必须是可迭代的——要么是自然语言反思(GEPA/SkillLens),要么是标量分数(DSPy metric),但都必须能反馈到下一轮优化
  2. 必须有验证门控——SkillOpt 的 held-out 验证、GEPA 的 Pareto 前沿,都是防止"越改越差"
  3. 必须有防过拟合机制——拒绝编辑缓冲区、held-out split、评估器与优化目标保持独立(详见第 7 章 7.5 的风险讨论)

本章小结

  • 统一框架:评估器就是优化目标,五种范式(反思/搜索/文本梯度/技能/轨迹)区别在优化对象和搜索机制
  • GEPA 用自然语言反思 + Pareto 前沿,以 1/35 的 rollouts 超越 GRPO
  • DSPy 把 metric 当损失函数,TextGrad 把评估反馈当文本梯度
  • SkillOpt 把技能文档当可训练参数,52 个评测单元全胜;SkillLens 揭示 skill 的负迁移与 EE/TE 指标
  • 自我进化 Agent(Agent0/AgentEvolver/Hermes)把评估信号组装成完整闭环
  • MUSE-Autoskill 的技能级记忆让经验积累精准可复用

参考资料

论文

  • GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning(ICLR 2026 Oral, arXiv:2507.19457)
  • SkillOpt: Executive Strategy for Self-Evolving Agent Skills(arXiv:2605.23904, Microsoft/复旦/上交)
  • SkillLens: From Raw Experience to Skill Consumption(arXiv:2605.23899, Microsoft/复旦/上交)
  • MUSE-Autoskill: Memory-Utilizing Skill Evolution(arXiv:2605.27366)
  • DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines(ICLR 2024)
  • TextGrad: Automatic "Differentiation" via Text(ICML 2024)
  • Self-Evolving Agents from Zero Data (Agent0)(ICML'26/COLM'26)
  • Steering Agent Behavior via Alignment-to-Optimization Bridge(ACM AI & Agentic Systems, 2026)

GitHub 仓库

官方文档与博客

  • SkillOpt PyPI 文档与 Microsoft SkillOpt GitHub
  • 用深度学习的思路优化 Agent Skill:微软联合复旦交大连发两文(本项目博客 2026-05-29)— SkillOpt/SkillLens 数据来源
  • LLM Agent 越用越笨?MUSE-Autoskill 让 Agent 学会自我进化(本项目博客 2026-05-29)— MUSE-Autoskill 详解