--- name: evolving description: > Skill 进化循环 Skill。执行目标 Skill → 调用 benchmark-evaluator 评分 → 分数 ≥ 90 则输出最终结果给用户 → 分数 < 90 则分析弱项、改写 Skill prompt、 重新执行并评分,反复循环直至达标。负责 Innovator 系统的强化学习小循环。 Use when: 需要迭代优化 Skill prompt 直到达到质量阈值。 --- # Evolving Skill 循环优化: 执行 → 评分 → 分析 → 改写 → 重复,直到 ≥ 90 分。 ## 输入 - `skillName`: 目标 Skill 名称 - `skillPrompt`: 当前 SKILL.md 内容 - `knowhow`: knowhow.md 内容 - `benchmarkDef`: benchmark.md 内容 - `testTask`: 测试任务 - `passThreshold`: 通过阈值 (**硬性最低标准 90,禁止传入低于 90 的值**) - `maxIterations`: 最大迭代次数 (默认 10) ## 执行流程 ``` for iteration = 1 to maxIterations: 1. 执行: 用当前 skillPrompt 执行 testTask → result 2. 评分: 调用 benchmark-evaluator(benchmarkDef, result, testTask) → score 3. 判断: - score ≥ passThreshold → 输出最终结果,停止 ✅ - score < passThreshold → 继续 4. 分析: 找出弱项维度 (score < 70 的) 5. 改写: 针对弱项修改 skillPrompt 6. 记录: 保存 evolve/v{N}/ 下的所有产物 7. 回到步骤 1 ``` ## 分析与改写逻辑 ### 弱项分析 对每个得分 < 70 的维度: 1. **根因追溯**: 找到 SKILL.md 中导致弱项的具体部分 2. **改进策略**: 基于 knowhow 确定改进方向 3. **最小化修改**: 只改弱项相关部分,保留高分部分 ### 版本号规则 - **patch** (+0.0.1): 措辞、格式微调 - **minor** (+0.1.0): 方法论步骤变更、新增检查项 ## 输出格式 (每次迭代) ```json { "iteration": 3, "score": 88, "passed": false, "analysis": { "weakDimensions": [ { "dimension": "维度名", "currentScore": 55, "rootCause": "SKILL.md 中 Methodology 第 3 步缺少 X", "improvement": "增加 Y 步骤" } ], "overallStrategy": "本次迭代的总体改进策略" }, "patch": { "versionBump": "minor", "newVersion": "1.1.0", "newSkillPrompt": "改进后的 SKILL.md 完整内容", "changeDescription": "做了哪些修改", "reasoning": "为什么这些修改能解决问题" } } ``` ## 最终输出 (达标时) ```json { "success": true, "finalScore": 92, "finalVersion": "1.2.0", "totalIterations": 5, "result": "最终的任务输出内容", "skillPrompt": "最终版 SKILL.md 内容" } ``` ## 停止条件 | 条件 | 结果 | |------|------| | `score ≥ passThreshold` | 达标,输出最终结果 ✅ | | `iterations ≥ maxIterations` | 超时,输出当前最佳 ⚠️ | | 连续 3 次分数变化 < 2 分 | 停滞,停止迭代 ⚠️ | ## evolve 目录产物 ``` evolve/ ├── evolve_log.md ├── v1/ │ ├── skill.md ← 本版本 Skill 快照 │ ├── result.md ← 执行输出 │ ├── score.json ← 评分详情 │ └── analysis.md ← 弱项分析 ├── v2/ │ └── ... └── v{N}/ ``` ## 注意 1. **避免重复**: 查看 previousIterations,避免重复已失败的策略 2. **保留有效**: 得分高于 70 的维度不要动 3. **具体化**: 改进建议要具体(如 "在第 3 步之后增加人物心理描写子步骤") 4. **可追溯**: 每次迭代完整保存所有产物 --- ## Skill Tree 分层规则 创建或改写 SKILL.md 时,**必须**根据能力复杂度分配层级: ### 分类判定 | 条件 | 层级 | 前缀 | 说明 | |------|------|------|------| | 只做一件原子操作,无外部 Skill 依赖 | L1 | `l1-` | 极少创建,已有10个预建 | | 组合 2-3 个 L1 解决小任务 | L2 | `l2-` | 如 l2-web-research | | 完整业务场景,多步编排,含 L2+L1 | L3 | `l3-` | 大部分用户需求 | ### SKILL.md 必须包含的字段 ```yaml --- name: l3-xxx layer: 3 dependencies: - l2-web-research - l1-text-transform - l1-kv-store --- ``` ### 可用的 L1 原子技能库 | 类别 | 技能 | 能力 | |------|------|------| | 感知 | `l1-web-fetch` | curl 抓取网页,HTML→Markdown | | 感知 | `l1-file-read` | 读取 CSV/Excel/PDF/文本 | | 感知 | `l1-search-engine` | DuckDuckGo 免费搜索 | | 处理 | `l1-data-extract` | LLM 结构化数据提取 | | 处理 | `l1-text-transform` | 摘要/翻译/改写/格式转换 | | 处理 | `l1-diff-checker` | 文本/数据比对 | | 工具 | `l1-shell-exec` | 运行 Python/Node/Shell | | 工具 | `l1-api-request` | REST API 调用 | | 交付 | `l1-webhook-push` | 飞书/Slack/钉钉/Discord 推送 | | 记忆 | `l1-kv-store` | 本地 JSON KV 持久化存储 | ### 可用的 L2 复合技能 | 技能 | 组合 | |------|------| | `l2-web-research` | search + fetch + extract | | `l2-digest` | data-extract + text-transform + file-read + diff-checker | ### 依赖声明规则 1. L2 只能依赖 L1 2. L3 可以依赖 L2 + L1 3. 相同功能必须复用已有 L1,不能重新实现 4. 在 SKILL.md 中用「依赖技能」表格列出每个依赖的作用 5. 系统自动将 `layer` 和 `dependencies` 信息注册到 SQLite 数据库(通过 YAML frontmatter 解析) --- ## 输出协议(系统必须) 你的输出最后**必须**以 `[RESULT: DONE/ERROR]...[/RESULT]` 标记收尾。 **成功:** ``` [RESULT: DONE] 完成说明: - 最终分数: {score} - 最终版本: {version} - 迭代次数: {N} [/RESULT] ``` **失败:** ``` [RESULT: ERROR] 错误说明: - 什么出错了 [/RESULT] ```