最近看到一个微软研究院开源的项目(github.com/microsoft/SkillOpt),一篇论文 + 一个工具框架。
核心思想:像训练神经网络一样训练 Agent 的 Skill 文档——但不碰模型权重,只优化文本。
微软研究院的人说:这个过程可以自动化。而且思路和训练神经网络一模一样。
我在一台没有 GPU 的小板子上叫Hermes Agent实测了一下,结果很有意思。
SkillOpt 的核心思想特别简单:
把 AI 的"技能文档"当成神经网络的"权重"来训练。
训练神经网络的时候,你不会手动调权重——你给数据,让梯度下降自动找最优参数。
SkillOpt 说:AI 的技能文档(skill.md)也是一样。你给它一批测试数据,它自动跑循环,找出最优版本的技能文档。
整个过程不碰模型参数,不动模型本身,只优化你写给AI的那段指令文本。
SkillOpt 的优化过程可以类比为训练神经网络的一个完整 epoch:
训练神经网络 | SkillOpt 训练 Skill |
|---|---|
前向传播(拿当前权重跑数据) | Rollout:拿当前 skill.md 让 AI 回答一批测试题 |
计算损失(对比预测和标签) | Reflect:对每道题分析"答对了为什么、答错了为什么" |
梯度聚合(汇总多组梯度) | Aggregate:把所有反思汇总成一条条改进建议 |
选最关键的梯度方向 | Select:筛选最有价值的改进建议 |
更新权重(w = w - lr × ∇) | Edit:把改进建议"编辑"进 skill.md |
验证集评估(不过拟合才接受) | Evaluate:新 skill 在验证集上严格提升才接受,否则拒绝 |
其中最关键的是最后一步——验证门控。每次修改skill.md 之后,必须在验证集上严格优于当前版本才会被接受。这就像训练时用验证集防止过拟合:不是改了就好,而是改了确实更好才算数。
我在自己的开发板上做了三轮实验,用的是 SkillOpt 内置的 SearchQA 任务(搜索问答:给一段文本,回答问题,要求答案精确匹配)。
测试环境:Orange Pi 3.0.8,4 核 2G 内存,无 GPU。纯 CPU 小板子。
训练数据:10 道训练题,5 道验证题,2 道测试题。
先试试我最常用的模型——SenseNova 6.7 Flash-Lite(商汤科技,通过 token.sensenova.cn/v1 端点调用)。这是我日常跑 Hermes Agent 的主力模型,便宜到几乎免费。
结果:SkillOpt 跑不起来。
原因很直接——Flash-Lite 的反思能力不够。Reflect 步骤需要模型能分析"这道题为什么答对/答错"并给出结构化的改进建议,但 Flash-Lite 生成的反思内容太简短,无法提炼出有效规则。Aggregate 步骤收到的反馈太少,Select 无从筛选,Edit 自然也改不出有价值的 skill。
这验证了一个关键前提:SkillOpt 的优化器需要"强反思能力",不是随便一个模型都能当。
第二轮换 MiniMax M2.7 来做"反思"和"编辑":
指标 | 结果 |
|---|---|
Baseline 准确率 | 80%(4/5) |
Step 1 | 80% → REJECT |
Step 2 | 80% → REJECT |
Step 3 | 80% → REJECT |
Step 4 | 80% → REJECT |
Token 消耗 | 39,950 |
总耗时 | 161 秒 |
四步全 REJECT,准确率始终停在 80%。MiniMax 做了反思,但没能提出有效的改进建议。
第三轮换成 DeepSeek V4 Flash(通过 SenseNova 端点调用,¥1/百万 token):
指标 | 结果 |
|---|---|
Baseline 准确率 | 80%(4/5) |
Step 1 | 80% → 100%(5/5)ACCEPT ✅ |
Step 2 | 100% → ACCEPT |
Step 3 | 100% → ACCEPT |
Test set | 100%(2/2) |
Token 消耗 | 46,129 |
总耗时 | 280 秒 |
第 1 步就突破了。DeepSeek 的反思能力更强——它精准识别出"答案格式不匹配"是主要失败原因,并给出了三条有效规则:
· Direct Extraction:答案必须直接从文本中提取原句
· Concise Formatting:答案必须是简洁短语,不要完整句子
· Entity Precision:实体名称必须精确匹配原文
这就是 SkillOpt 的威力——你不需要自己琢磨"答案格式不对怎么办",它自动帮你发现了。
模型 | Baseline | 最终准确率 | Tokens | 耗时 | 结论 |
|---|---|---|---|---|---|
SenseNova 6.7 Flash-Lite | — | — | — | — | 反思能力不足,无法启动 |
MiniMax M2.7 | 80% | 80% | 39,950 | 161s | 4 步全 REJECT |
DeepSeekV4 Flash | 80% | 100% | 46,129 | 280s | 第 1 步即突破 ✅ |
关键发现:优化器的"反思能力"是 SkillOpt 成功的决定因素。Flash-Lite 跑不动,MiniMax 跑不赢,DeepSeek 一步到位。从这里可以看出DeepSeek的大模型确实优秀。
整轮训练消耗 46,129 tokens,按 DeepSeek V4 Flash 的定价 ¥1/百万 token 输入 + ¥2/百万 token 输出计算,总花费约 ¥0.046。
不到 5 分钱。对于个人开发者来说,完全负担得起。
不是所有 AI 任务都适合用 SkillOpt 自动优化。它有三个硬条件:
1. 有客观评估标准。"这张图好不好看"不行,"答案是否精确匹配"可以。
2. 有标准答案或可自动评判。验证门控需要数值判断,不能靠人看。
3. Skill 内的规则能显著影响结果。如果模型已经够强,skill 改不改无所谓。
适合的任务:
· 信息提取 / QA:有精确答案可以匹配
· 分类 / 标注:准确率可直接计算
· 格式转换:JSON/SQL 等有格式匹配率
· 代码生成:单元测试通过率(需自定义环境)
不适合的任务:
· 创意生成(文章、图片、音乐)——好坏是主观的
· 流程编排(API 调用、发布脚本)——能跑/不能跑是二元的
· 知识库 / 文档——信息是固定的,不需要"训练"
说白了,SkillOpt 是给"prompt engineering 可以自动化"的任务设计的。如果你的skill 本质是确定性规则(比如"排版兼容性 workaround"),靠自动训练解决不了,得靠人踩坑总结。
如果你用过 Hermes Agent,可能知道它有个内置的 skill-creator 技能——帮你创建、修改、优化 skill 文档。SkillOpt 也是干这件事。但两者的路线完全不同:
维度 | Hermes skill-creator | SkillOpt |
|---|---|---|
优化方式 | 人工指导 + LLM 辅助编辑 | 全自动训练循环 |
数据需求 | 不需要训练数据 | 需要标注数据集(train/val/test) |
评估标准 | 人判断"好还是不好" | 自动计算准确率/F1 等指标 |
迭代速度 | 快——改完立即生效 | 慢——需要跑完整训练循环 |
适用范围 | 所有类型 skill(创意、流程、文档…) | 仅限有客观评估标准的任务 |
优化上限 | 受限于人的经验和表达 | 可以超越人的直觉发现规则 |
成本 | 几乎为零(一次对话) | ¥0.05~0.5/次训练(API 调用) |
一个关键区别:skill-creator 是"人教 AI",SkillOpt 是"AI 自己试"。
skill-creator 的优化路径是"你说哪里不好 → 它帮你改 → 你看效果"。整个过程人一直在场,每次改动都有明确的意图。
SkillOpt 的路径是"给它数据 → 它自己跑几十轮 → 吐出一个最优 skill"。人不需要在场,但前提是你得有数据,而且任务有客观评估标准。
我的实际经验:先用 skill-creator 快速迭代到 80 分,再用 SkillOpt 自动优化冲 100 分。两者互补,不冲突。
认知层面:SkillOpt打开了一个新思路——不训练模型,只训练指令。它证明了"提示词优化"这件事可以像训练神经网络一样系统化、自动化。过去我们写 prompt 靠经验,现在可以靠数据。但前提是你的模型够强——Flash-Lite 跑不动,MiniMax 跑不赢,DeepSeek 一步到位。
能力层面:如果你在做QA、分类、信息提取这类有标准答案的任务,SkillOpt 值得一试。成本极低(一次完整训练 5 分钱),数据要求不高(十几道题就能跑),关键是选一个反思能力强的模型当优化器。配合 Hermes skill-creator 先快速迭代到 80 分,再用 SkillOpt 冲 100 分。
判断层面:SkillOpt 目前只内置了 SearchQA 一个环境。想用在其他任务上,需要自己写 rollout 和 evaluator——这个工程量不小。另外,如果你的 skill 本质是"确定性 workaround"(比如微信排版兼容性),SkillOpt 帮不了你。别把所有问题都当成"可训练"的。