第 6 章:评估驱动的进化 I:Prompt 与 Skill 优化
第 6 章:评估驱动的进化 I:Prompt 与 Skill 优化
本章核心
评估的终极价值不在于"衡量"而在于"驱动改进"。 当评估信号以自然语言反思而非标量奖励的形式反馈时,优化效率获得数量级提升。
本书从第 1 章到第 5 章讲了"怎么评估",从这一章开始讲"评估如何驱动进化"。本章聚焦两个优化对象:Prompt 与 Skill。第 7 章讲第三个:Agent 轨迹(强化学习)。
这一章回答三个问题:
- 为什么说"评估器就是优化目标"?各种优化范式如何统一?
- GEPA、DSPy、TextGrad、SkillOpt 各自用什么机制驱动进化?
- 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 优化:
- 给定包含 LLM prompt 的 AI 系统,采样轨迹(推理、工具调用、工具输出)
- 用自然语言反思诊断问题、提出 prompt 更新
- 从自身尝试的 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 跑任务)
三个核心发现:
- Model-generated skill 平均有用但不保证——存在 non-trivial negative transfer,加 skill 反而更差是常态
- 好 executor ≠ 好 extractor——引入两个解耦指标 Extraction Efficacy(EE) 与 Target Evolvability(TE);在 SWE-bench 上小模型 extractor 的 EE 甚至高于大模型
- skill 的价值与模型规模/基线能力无关;skill 文本的"表面专业度"与"实际效果"几乎不相关——好的 skill 特征是具体的操作建议,而非泛泛原则
Meta-Skill Guided Extraction:把研究发现转成可操作的元 skill 注入提取流程,跨领域提升 skill 质量并大幅减少 negative transfer。
SkillLens 给 Agent 开发者的实操启示
- 不要只靠 LLM 一次性生成 skill——效果高度不稳定
- 用验证集做门控——不加验证的修改比不改更危险
- 追踪被拒绝的编辑——失败的修改记录是宝贵负反馈
- 给 skill 设编辑预算——一次改太多规则容易偏移
- 不要假设最强的模型就是最好的 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 本身当作可优化的参数空间。
从"评估"到"进化"的三个关键设计
综合本章所有方法,评估驱动进化的落地需要三个关键设计:
- 评估信号必须是可迭代的——要么是自然语言反思(GEPA/SkillLens),要么是标量分数(DSPy metric),但都必须能反馈到下一轮优化
- 必须有验证门控——SkillOpt 的 held-out 验证、GEPA 的 Pareto 前沿,都是防止"越改越差"
- 必须有防过拟合机制——拒绝编辑缓冲区、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 仓库
- gepa-ai/gepa — GEPA 官方实现
- stanfordnlp/dspy — DSPy 与 MIPROv2
- zou-group/textgrad — TextGrad
- aiming-lab/Agent0 — 零数据自我进化
- modelscope/AgentEvolver — 自我进化 Agent(阿里)
- NousResearch/hermes-agent-self-evolution — DSPy+GEPA 产品级闭环
- Birfy/agentdescent — Agent 即参数
官方文档与博客
- SkillOpt PyPI 文档与 Microsoft SkillOpt GitHub
- 用深度学习的思路优化 Agent Skill:微软联合复旦交大连发两文(本项目博客 2026-05-29)— SkillOpt/SkillLens 数据来源
- LLM Agent 越用越笨?MUSE-Autoskill 让 Agent 学会自我进化(本项目博客 2026-05-29)— MUSE-Autoskill 详解