mcpField
S
skill-optimizer

skill-optimizer

github.com/rohitg00Agent 工作流2.9k127 次安装5 周前更新
代码仓库

关于 skill-optimizer

skill-optimizer 通过迭代提出补丁、验证和门控接纳,离线改进现有 SKILL.md。它适用于已有学习数据积累的技能,并支持预算上限。

主要功能

  1. 01迭代提出并筛选补丁
  2. 02通过验证门控接纳候选版本
  3. 03预算上限与可配置运行限制
  4. 04为失败补丁保留拒绝记录
  5. 05将运行数据持久化到 SQLite

适用场景

  1. 01改进积累了 learn-rule 数据的技能
  2. 02精简重复或臃肿的技能规则
  3. 03在固定预算内运行技能改进

MCP 相关

在插件会话中,可通过 `providers` MCP 服务的 `run_provider_task` 工具,以 `task: "optimizer"` 运行。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rohitg00/pro-workflow --skill skill-optimizer

安装后在 Claude Code 中输入/skill-optimizer确认已加载。

详细介绍

技能优化器

像深度学习优化器训练权重那样训练现有的 SKILL.md:通过 rollout、类似梯度的反思,以及由验证门控的采纳。不重新训练模型;只更改技能 Markdown。

适用场景

在以下情况使用此技能:

  • 专业工作流技能已积累 8 条或更多学习规则
  • 用户反映技能“越来越臃肿”或“规则一直在重复”
  • 用户希望在多个会话中进行离线、预算封顶的改进

以下情况不要使用:

  • 技能的轨迹少于 8 条(无可学习内容)
  • 用户希望实时编辑(这是离线、单次操作)
  • 尚未为所选提供方明确配置密钥

架构(与 SkillOpt 的六阶段循环相对应)

rollout      pull recent learnings from SQLite (existing learn-rule rows)
reflect      optimizer LLM analyzes a minibatch, proposes add/delete/replace patches
aggregate    vote-merge patches across minibatches
select       clip by LR budget (default: 3 adds, 2 deletes, 3 replaces per step)
update       apply selected patches to a candidate skill content
evaluate     evaluator LLM scores candidate against held-out validation items
gate         accept candidate only if weighted score >= current + acceptThreshold
slow update  at epoch boundary, consolidate accepted edits into a coherent rewrite

失败的候选方案会存入拒绝缓冲区,并反馈给下一步反思,以免优化器重复提出相同的补丁。

运行

在插件会话中,使用 providers MCP 服务的 run_provider_task 工具,并设置 task: "optimizer" 和 args: ["--slug", "<slug>", "--budget-usd", "0.50"]。密钥来自插件配置对话框。独立 CLI 安装使用显式的 PRO_WORKFLOW_*_API_KEY 变量。请参阅提供方配置;切勿在聊天中索要密钥或检索现有的机器凭据。

/skill-optimize <slug> [options]

选项(均为可选;括号中显示合理的默认值):

标志默认值说明
--epochs N3外层循环次数
--batch-size N8每个小批次的轨迹数
--minibatches N2每个 epoch 的小批次数
--holdout N6保留的验证项(最多约占轨迹的 25%)
--budget-usd X0.50硬性上限;达到后循环中止
--optimizer-model Mclaude-sonnet-5反思 + 慢速更新所用模型
--evaluator-model Mclaude-haiku-4-5门控模型(成本更低)
--max-adds N3每步学习规则预算
--max-deletes N2
--max-replaces N3
--accept-threshold X0.0接受候选方案所需的最低分数增量
--max-skill-tokens N2000候选内容的硬性长度上限
--slow-every N2两次整合过程之间的 epoch 数
--json关闭机器可读输出

停止开关:执行 touch ~/.pro-workflow/STOP,可在步骤之间中止循环。

输出

  • 候选方案被接受 → 覆写 SKILL.md,并在 HTML 注释中追加哈希戳
  • 运行详情保存在 optimization_runs、optimization_candidates、optimization_patches、optimization_rejections 中
  • 验证集保存在 optimization_validation 中,可在后续运行中复用

运行后检查:

sqlite3 ~/.pro-workflow/data.db "SELECT id, skill_slug, initial_score, best_score, accepted_steps, rejected_steps, spent_usd FROM optimization_runs ORDER BY id DESC LIMIT 5"

规则

  • 验证集在运行开始时冻结。运行期间切勿根据新的纠正内容重新生成验证集。
  • 每步只生成一个候选方案。不得创建并行分支。
  • 慢速更新的输出本身就是候选方案;必须通过门控才能取代当前最佳方案。
  • 优化器 LLM 和评估器 LLM 可以使用不同模型。SkillOpt 推荐的配置是将强大的优化器与成本较低的评估器搭配使用。
  • 如果在任一步骤边界满足 spent_usd >= budget_usd,循环将以 stopped_reason="budget exhausted" 结束。
  • 如果补丁的锚点已不再存在于技能中(因为同一步骤中先前的补丁已将其移除),则会记录为拒绝,原因是 anchor_missing。

来源

灵感来自 Microsoft SkillOpt(arXiv:2605.23904)。六阶段的 rollout/reflect/aggregate/select/update/evaluate 流程、学习规则预算、拒绝缓冲区以及慢速 / 元更新机制,均基于 pro-workflow 现有的 SQLite + learn-rule 数据平面进行调整。未复用任何 SkillOpt 代码。“ReflACT”并非 SkillOpt 术语,本项目也不使用此术语;该循环仅以阶段名称指代。

评论

支持 Markdown