alitrack

不微调模型,只训练一个Markdown文件——准确率涨了24点

你肯定经历过这种事:

Agent 的 skill 写好了,跑了几次,发现有些场景不对劲。你打开 skill 文档,删掉一行,加一句"注意:当 X 出现时应该先检查 Y",再测——好了一点,但另一个场景又坏了。反复改,反复测,最后也不知道是 skill 写好了还是你放弃了。

我们都在做这件事:把 Agent 的 skill 当作文档来维护。手写、手动调、凭感觉改。没有版本控制意义上的"更好",只有"这次好像没翻车"。

Microsoft Research 在 5 月 22 日放出了一个叫 SkillOpt 的开源项目,arXiv 编号 2605.23904。它做的事情一句话就能说清楚:

不微调模型权重,而是"训练"一个 Markdown 文件。 用 epoch、learning rate、validation gate,和训练神经网络一模一样的纪律。

听起来像噱头?结果不骗人:6 个 benchmark、7 个模型、3 种执行环境,52 战全胜或并列第一。对手包括人类手写的 skill、GPT 一次性生成的 skill、TextGrad、GEPA、EvoSkill 等自动化方法。在 GPT-5.5 上,Codex 环境里准确率飙升 +24.8 个百分点。

● ● ●

把 ML 训练搬到文本空间

SkillOpt 的核心类比严谨到让人不舒服:

你熟悉的 MLSkillOpt 的对应
模型权重skill.md —— 这个 Markdown 文件
Forward passRollout:Agent 拿着当前 skill 去执行任务
Loss / 梯度Reflect:独立的 optimizer 模型分析哪里成功、哪里失败
梯度聚合Aggregate:把 optimizer 提出的多条编辑合并去重
梯度裁剪Select:按重要性排序,只保留 top-L 条编辑(L = 文本学习率)
权重更新Update:把选中的 add/delete/replace 写入 skill 文档
验证集Gate:在 held-out 验证集上跑,不改善就拒绝

等等,optimizer 和 target 是两个不同的模型。Agent 负责执行,optimizer 负责反思和编辑。这意味着 Agent 自己不会"自我修改"产生幻觉,optimizer 也不会因为执行任务而分心。

训练产物是一个 300-2000 token 的 best_skill.md。部署到 frozen model 上时,推理成本为零。不需要额外的模型调用,不需要改变任何权重。它就是一个更好的 Markdown 文件。

● ● ●

这套"纪律"每一条都有用

论文做了 ablation 实验:关掉 validation gate,skill 过拟合训练集;关掉 rejected-edit buffer,optimizer 反复提同样的烂编辑;关掉 textual learning rate,一次重写太多把好规则也覆盖了。

手写 skill 为什么走不远?你想一想——你每次改 skill 的时候,没有 gate 告诉你"这个版本不如上一个",没有 buffer 阻止你重复失败的尝试,也没有 learning rate 限制你一次改多少。你靠的是记忆和感觉。

SkillOpt 把这些全变成机制。

● ● ●

但别急着把它装到你的 Agent 上

文章读到这里,你可能会想:这玩意儿能装到我的 Claude Code / Codex 上吗?

能。而且是官方支持的——2026 年 6 月 15 日刚发布了 SkillOpt-Sleep 预览版,支持 Claude Code、Codex、Copilot 三个平台。

但有一个核心限制,动手之前要想清楚:SkillOpt 需要一个能自动评分的 verifier。每次 rollout 后,你得有个办法说"这次任务成功了还是失败了"。benchmark 场景下这很容易——SearchQA 有标准答案,DocVQA 有 golden span。但你的日常任务呢?

"帮我写一个数据分析报告"——怎么自动评分?"帮我设计一个 API"——什么是正确答案?

这就回到了为什么 SkillOpt 的 6 个 benchmark 全是有标准答案的任务,也解释了 SkillOpt-Sleep 的设计为什么是"夜间回放 → stage 建议 → 你审核采纳"而不是全自动。审核环节取代了自动化 gate。说白了,你还是 verifier。

● ● ●

真正重要的不是 SkillOpt 本身

我们盯一个开源项目的时候,很容易被它的"技术参数"吸引住——52 战全胜、+24.8 点、8,500 stars。但这些数字是 2026 年 6 月的快照,半年后可能就不稀奇了。

SkillOpt 真正重要的贡献是它 改变了对"Agent 改善"这件事的认知框架:

我们一直默认 Agent 改善只有三条路:① 换更强的模型、② 改 prompt、③ 微调模型。SkillOpt 开辟了第四条路:把 skill 文档本身当作可训练状态。这背后是一个更深的命题:

Agent 的"能力"不只在模型权重里,也在它遵循的"程序性知识"里。而程序性知识——什么时候调哪个工具、怎么验证输出、如何组织推理步骤——经过系统性优化后,是可以量化和复现的。

这不是又一个 prompt engineering trick。这是在说:手写 skill 和 LLM 一次性生成的 skill 都有上限。反复"训练"skill 文档本身,上限更高。

这对所有 agent 框架——LangChain、AutoGPT、CrewAI、Claude Code 的 skill 系统——都构成范式级挑战。你今天手写 skill 的流程,可能就像 2016 年还在手写特征工程一样,很快就不再是最优解了。


SkillOpt GitHub: https://github.com/microsoft/SkillOpt

论文: https://arxiv.org/abs/2605.23904

SkillOpt-Sleep 预览: https://github.com/microsoft/SkillOpt/blob/main/docs/sleep/README.md