SKILL.md 5.5 KB

name: evolving description: > Skill 进化循环 Skill。执行目标 Skill → 调用 benchmark-evaluator 评分 → 分数 ≥ 90 则输出最终结果给用户 → 分数

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

分析与改写逻辑

弱项分析

对每个得分

  1. 根因追溯: 找到 SKILL.md 中导致弱项的具体部分
  2. 改进策略: 基于 knowhow 确定改进方向
  3. 最小化修改: 只改弱项相关部分,保留高分部分

版本号规则

  • patch (+0.0.1): 措辞、格式微调
  • minor (+0.1.0): 方法论步骤变更、新增检查项

输出格式 (每次迭代)

{
  "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": "为什么这些修改能解决问题"
  }
}

最终输出 (达标时)

{
  "success": true,
  "finalScore": 92,
  "finalVersion": "1.2.0",
  "totalIterations": 5,
  "result": "最终的任务输出内容",
  "skillPrompt": "最终版 SKILL.md 内容"
}

停止条件

条件 结果
score ≥ passThreshold 达标,输出最终结果 ✅
iterations ≥ maxIterations 超时,输出当前最佳 ⚠️
连续 3 次分数变化 停滞,停止迭代 ⚠️

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 必须包含的字段

---
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]