AI Engineering
SkillOpt 的真正信号:Agent Skill 开始变成可训练的外部状态
SkillOpt 这类项目真正有用的地方,不是又发明了一种提示词写法,而是把 Agent Skill 从“经验文档”往“可训练工件”推了一步。它的核心判断很直接:模型可以冻结,执行环境可以不变,但指导 Agent 做事的 skill 文档不能一直靠人手改、靠感觉改、靠一次性生成。只要这些文档会影响任务结果,它们就应该接受 rollout、反思、编辑、验证和回滚。
微软开源的 SkillOpt 把这个过程做成了一个文本空间优化器。仓库当前是 Python 项目,MIT 许可证,PyPI 包名为 skillopt,官方说明把它定义为面向 frozen LLM agents 的 natural-language skill optimizer。论文 arXiv:2605.23904 则把它说得更明确:skill 文件被当作冻结 Agent 的外部状态,优化器模型根据带分数的执行轨迹生成 add、delete、replace 编辑,候选 skill 只有在 held-out validation score 严格提升时才会被接受。
它解决的不是写 prompt,而是防止 skill 越改越坏
很多 Agent 团队都有类似经历:一次失败后在系统提示词或 SKILL.md 里补一条规则,下一次又遇到另一个失败,再补一条。短期看像是在积累经验,长期看经常变成规则堆积、互相冲突、上下文变胖、行为变窄。更麻烦的是,某条规则可能只修好了当前样例,却伤害了另一个场景。
SkillOpt 的 validation gate 正是为了处理这个问题。它不会把优化器提出的编辑直接写进最佳技能,而是要求候选文档在选择/验证 split 上严格优于当前版本。这个设计让 skill 编辑接近机器学习里的验证集纪律:训练可以从失败轨迹里吸收经验,但发布不能只看训练样本上的自我感觉。
训练循环怎样工作
官方文档把 SkillOpt 的流程类比成神经网络训练,但它训练的不是权重矩阵,而是一份 Markdown skill document。一次训练大致包括六步:target model 带着当前 skill 执行任务,产生 trajectory 和 score;optimizer model 读取轨迹做反思;相似编辑被聚合;编辑按相关性排序并受 learning_rate 限制;候选 skill 被应用;最后通过 validation gate 决定接受或拒绝。
这里的 learning_rate 不是浮点梯度步长,而是文本编辑预算。一次最多改多少条、是否使用 slow update、是否维护 meta skill、是否只分析失败样本,都在 YAML 配置里表达。这个抽象很重要,因为自然语言 skill 最怕“全量重写”。边界清楚的补丁,比一次性重写更容易回溯,也更容易知道是哪条经验带来了收益或退化。
- rollout 对应前向执行:Agent 带着当前 skill 完成任务。
- reflect 对应反向分析:优化器从成功和失败轨迹里找可复用规则。
- aggregate/select 控制编辑规模,避免重复、过大或互相打架的修改。
- gate 是发布门禁:没有验证集提升,就不能成为新的 current skill 或 best_skill.md。
SkillOpt-Sleep 更接近真实 Agent 运维
v0.2.0 里最值得工程团队注意的是 SkillOpt-Sleep。它把这种训练纪律放到日常 Agent 使用之后:收集 Claude Code / Codex 等编码会话,挖掘重复任务,离线 replay,再把得到的长期经验整理成可审查的 memory 或 skill 提案。官方也明确提示了数据边界:本地 harvesting 是只读的,但真实 backend 会把截断会话和派生任务发给所选 provider,因此敏感项目要先审查、脱敏、再运行。
这说明 SkillOpt 并不是“让 Agent 自己无限进化”的魔法,而是给自我改进加上边界:本地收集、离线重放、held-out gate、人类 review、再采纳。对于企业和长期项目,这比自动把每次失败写进长期记忆安全得多。
适合什么团队
SkillOpt 更适合已经有重复任务、可评分任务和稳定执行 harness 的团队。例如搜索问答、文档问答、表格处理、浏览器/编码 Agent、客服或审核流程。任务越能被拆成样本、执行、打分、验证,它越有发挥空间。反过来,如果只是少量一次性创意任务,没有稳定评估器,也没有愿意维护数据 split 的人,直接引入 SkillOpt 可能比手写几条清晰规则更重。
它对 Agent 平台的启发更大:未来的 skill 不应该只是“经验手册”,而应该有版本、训练集、验证集、拒绝记录、回滚点和部署产物。best_skill.md 不是 prompt 文件的另一个名字,而是经过实验选择的能力配置。
采用前先问四个问题
- 有没有足够多的同类任务轨迹,且能区分成功和失败?
- 验证集是否独立,还是会被优化器反复看见?
- skill 编辑是否可以被审查、回滚和解释?
- 生产环境是否真的需要自动进化,还是只需要更好的人工 runbook?
SkillOpt 的价值在于把 Agent 经验沉淀从手工玄学拉回工程流程。它不会替代模型能力,也不会让没有评估器的项目突然可靠。但它给了一个清晰方向:Agent 的长期能力,不一定只靠微调模型,也可以来自被训练、被验证、被版本化的外部技能文档。
为什么这对 Agent 平台重要
过去很多 Agent 平台把 skill、memory、command、system prompt 混在一起使用。SkillOpt 给出的方向更清楚:短期上下文负责当前任务,长期 memory 负责事实和偏好,skill 负责可迁移的任务策略,而训练和部署必须有验证门禁。这个分层对平台设计比单个分数提升更有启发。