SkillOpt-Lite 是一个面向智能体的技能文档训练工具,采用 SkillOpt 方法论:像训练神经网络权重一样训练技能文档,通过迭代执行(rollout)、反思(reflection)与验证(validation)来改进技能。整个过程不需要外部 API 密钥,智能体既是执行任务的工作者,也是优化技能的优化器。工作目录可为任意路径。
适用场景
- 已有技能效果不佳,希望系统化地改进;
- 想从零创建一个新技能,采用数据驱动的迭代方式;
- 想判断某次技能修改究竟带来提升还是损害。
不适用场景
- 一次性的技能修补(可直接编辑技能文件);
- 无法被客观评估的、纯主观质量的技能。
快速开始
- 准备任务集(由任务对象组成的 JSON 数组,每个任务有可验证的结果);
- 将该技能指向草稿技能文档;
- 运行训练循环;
- 获得优化后的 best_skill.md。
训练循环
每个 epoch 内按步执行: ① ROLLOUT:用当前技能运行任务,记录通过或失败; ② REFLECT:分析失败,提出修改(不超过 edit_budget); ③ AGGREGATE:去重,失败优先合并; ④ SELECT:按影响挑选前 L 条修改; ⑤ UPDATE:将修改应用到技能文档; ⑥ GATE:重新运行验证,仅在分数提升时接受; 每个 epoch 结束时执行 SLOW_UPDATE,做战略性复盘并写入受保护区域。 开始训练前应先阅读 references/training-protocol.md 中的完整协议。
必要输入
- skill_path:待优化技能文档路径,.md 文件;
- tasks:带可验证结果的任务集,JSON 数组;
- valid_tasks:验证任务集,与训练集分开,JSON 数组,可选;未提供时自动拆分。
任务格式示例: [ { "id": "task-001", "instruction": "智能体应执行的任务", "expected_outcome": "成功的样子(用于评分)", "test_command": "可选:用于验证成功的 shell 命令" } ]
配置默认值
- num_epochs:4,训练 epoch 数;
- steps_per_epoch:2,每个 epoch 的步数;
- edit_budget:4,每步最大修改数(余弦衰减);
- min_edit_budget:2,修改预算衰减下限;
- early_stop_patience:3,连续无提升步数后停止;
- slow_update:true,启用 epoch 末的纵向复盘;
- meta_skill:true,启用优化器侧记忆。 启动训练时可提供配置对象覆盖默认值。
状态持久化
所有状态保存在项目根目录的 .skillopt/ 中,包括 state.json(当前训练状态与恢复点)、history.jsonl(每步一行 JSON)、step_buffer.json(被拒绝的修改与失败模式)、meta_skill.md(优化器侧记忆)、best_skill.md(最佳评分技能)、skills/(版本化技能快照)、tasks/(训练与验证任务集)、steps/(每步产物)。若 .skillopt/state.json 存在,将从最后完成的步骤继续,且跨会话有效,可关闭并重启客户端。
编辑操作
按顺序应用 4 种操作:
- append:在技能末尾追加(无需目标);
- insert_after:在目标文本之后插入;
- replace:用内容替换目标文本;
- delete:删除目标文本。 受保护区域规则、修改预算衰减与 step buffer 格式见 references/edit-operations.md。
评分与门控
每个任务给出硬分(0 或 1)与软分(0.0 至 1.0)。仅当候选技能的 hard 严格高于当前 hard 时才接受;分数相等即拒绝。完整评分与门控逻辑见 references/scoring-guide.md。
关键规则
- 诚实评分:过度评分会使门控失效并让技能退化,存疑时硬分记 0;
- 修改预算只是上限:修改数量应视需要而定,不要为凑数而添加;
- 要泛化,不要死记:修改应针对共性模式,而非个别任务的答案;
- 受保护区域不可触碰:步级修改不得针对 <!-- SLOW_UPDATE_START --> 与 <!-- SLOW_UPDATE_END --> 之间的内容,仅 epoch 末复盘可修改;
- 失败优先:合并失败驱动与成功驱动的修改时,冲突一律失败修改优先;
- 被拒即学习:被拒绝的修改写入 step buffer,下一步反思阶段会参考以避免重复错误;
- 拒绝即回退:门控拒绝候选时,必须恢复之前的技能文档,不得保留被拒版本。
最小示例:优化一个用于编写 TypeScript 测试的技能,共 10 个任务。智能体将任务拆为 8 个训练、2 个验证;基线 3/8 通过(0.375);第 1 步 rollout 2/8,反思出共性问题(未模拟文件系统),追加模拟策略后门控 4/8=0.5,高于 0.375,接受;第 2 步 rollout 5/8,反思出异步处理问题,追加异步模式后门控 5/8=0.625,高于 0.5,接受;按配置的 epoch 继续。最终输出 best_skill.md,评分从 0.375 提升到 0.75。
与 AIOS 的集成:可与 aios-long-running-harness 配合实现多会话检查点与恢复;宣布训练成功前可使用 verification-loop 验证;若技能领域不明确,可在训练前通过当前 Rex Capability Command 获取需求;训练结果可通过 cap 提交。
参考文档:references/training-protocol.md(完整六阶段流程与决策逻辑)、references/edit-operations.md(编辑操作规范、预算衰减、step buffer、受保护区域)、references/scoring-guide.md(评分方法、门控逻辑、验证集与停止条件)。