上周,在先容 bugfix 小工具 Superlog 时,热心群友 Frank 提到了一个小工具 SkillOpt,体现它能把 Skill 当作模子来练习,基于方法论来练习你的 Skill。
以是,本文就带你来明白下这个开源项目标有用之处。
SkillOpt 是什么
我们先来简朴地熟悉下 SkillOpt。它是微软开源的一个 text-space optimizer,也就是“在文本空间里优化 skills 的工具”。
根据 SkillOpt 的界说,我们可以明确它优化的对象不是模子参数,而是一份天然语言写成的 skill 文档。这份文档通常是由 Markdown 编写而成,内里有写使命流程、工具规则、项目约定、错误处置惩罚方式、输特殊式、边界条件,以致是一些只有长期利用者才知道的履历。
换句话说,SkillOpt 处置惩罚的是 Agent 外部的履历层。它末了留下的东西也很简朴,就是一份 best_skill.md。真正摆设时,Agent 依然用原来的模子,推理链路也不消变;只是本来手写的 skill,酿成了一份颠末使命验证的 skill。
以是,SkillOpt 更关注的是:把 skills 放进一套可以练习、验证和一连更新的流程里。
图注:从人工优化 skill 到 SkillOpt 主动迭代 skill
这张图可以先按左右两部分来看。
左边是传统做法:Agent 跑使命,碰到题目之后,人再转头修改 skill。这个流程能跑起来,但它很依靠个人履历。哪条规则该加,哪条规则该删,哪次修改真的有用,每每只能靠感觉判定。
右边是 SkillOpt 的做法:Agent 依然要带着当前 skill 跑使命,但使命实行之后会留下轨迹和效果。optimizer model 会根据这些样本提出修改发起,修改后的 skill 还要颠末验证集筛选。通过验证的版本,才会被留下来。
如许一来,skill 的更新就从“人工补规则”,酿成了“使命驱动的迭代”。
运行原理
如果把右边这套流程单独抽出来,可以压缩成下面这条主线:
图注:SkillOpt 的 skill 迭代循环 SkillOpt 优化的是 Agent 利用的 skill 文档,模子权重保持稳固。这张图重要是帮我们对齐背面的环节:
- Current Skill 是出发点,也就是当前那份 skill 文档。
- Rollout 负责让 Agent 带着它去跑使命。
- Reflect 负责回看使命轨迹,分析那里乐成、那里失败。
- Update 是把修改写回 skill。
- Validation Gate 是验证门控,用来判定这次修改能不能留下。
- Best Skill 是终极通过验证的版本。
图里为了轻便,省略了 Reflect 和 Update 之间的两个内部动作:aggregate 和 select。Reflect 之后,optimizer model 会拿到一批修改发起,但这些发起不会立刻全部写回 skill。SkillOpt 会先用 aggregate 把相似发起收拢到一起,再用 select 从候选发起里挑出真正须要写归去的部分,用来控制每一轮写回 skill 的修改量。
如许处置惩罚重要是为了制止 skill 越改越痴肥。失败样本一多,很容易天生一堆零散规则;如果每条规则都写进 skill,文档会越来越难维护,也大概影响本来已经稳固的履历。以是,SkillOpt 会先压缩候选修改,再进入 Update。写回之后,还要颠末 Validation Gate:修改后的 skill 会重新在验证集上跑一遍,通过验证的版本才会被生存;没有提升的修改会被拒绝。
一个当地利用案例
为了让 SkillOpt 的用途更有实感,Frank 告知了小七他的实践姿势。
他的场景是知识库管理和代码驱动的 workflow。早期 skills 重要是根据个人履历写出来的,也有一些版本迭代,但团体照旧人工维护。
这次他拿 GPT-5.4 + cursor-agent 做了更深的迭代和测试。
他的验证方式很直接:同一类使命,对比带 skill 和不带 skill 的输出质量,看 Agent 在真实流程里是不是更稳固。
先看第一组效果。当前已完成两轮有代表性的当地迭代:
图源:Frank
这组效果比力好明白,像 init / update / check 这种使命,本身就强依靠流程约定。如果 Agent 不知道一开始该初始化什么、更新时该改那里、查抄时该看哪些口径,就很容易漏步调。带上 skill 以后,它不须要每次从零推断流程,效果天然更稳固。
第二项“非 canonical 文档回归”也很典范。在知识库和项目文档里,经常会存在多个看起来都干系的文件。人知道哪份是权势巨子泉源,Agent 未必知道。如果 skill 里写清楚了 canonical source 的判定方式,Agent 在回归这类使命时就更不容易被旁支文档带偏。
再看第二组数据。当前已完成 4 轮有代表性的当地迭代:
图源:Frank
这组数据更贴近一样平常工程题目。附件 API、Webhook、品评权限都是容易让 Agent 误判的细节。由于它们不但是代码逻辑,还涉及权限、状态、调用次序和产物规则。
使命跨项目迁移也一样。外貌上只是把使命从一个项目挪到另一个项目,实际大概涉及负责人、状态、关联文档、汗青记录、权限边界。Agent 如果只按字面实行,很容易完成了“迁移”这个动作,却遗漏迁移后的状态划一性。
故意思的是,第三轮“迁移失败路径显式 guardrail”里,with_skill 和 without_skill 都是 1.00。这阐明 skill 并不会在全部使命上都带来显着差别。有些使命本身富足明确,模子裸跑也能做好;真正容易拉开差距的,每每是那些容易漏步调、容易走偏、强依靠项目履历的使命。
回到 SkillOpt,它末了留下的 best_skill.md 看起来仍然只是一份 Markdown 文档,但这份文档已经颠末使命实行、失败分析和验证集筛选。对于正在把 Agent 放进长期工作流的人来说,这比临时补几句 prompt 更像一套可一连维护的办法。
Agent 越来越像一个长期工作的实行体,skills 也开始负担外部履历层的脚色。SkillOpt 做的,就是让这层履历可以随着真实使命继承迭代。
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金. |