达尔文进化方法论
场景识别 (scenario)
什么时候需要这个经验?
- 你开发了一个技能/工作流,但不知道质量如何
- 技能执行结果不稳定
- 想让技能"活"起来,持续迭代
适用场景
- 新技能开发完成后
- 技能执行失败需要排查
- 定期技能质量审查
不适用场景
- 一次性任务(不需要持续优化)
- 简单到不需要结构化审查的任务
核心洞察 (insight)
技能不是写完就结束,而是要经过"设计→执行→评估→迭代"的进化循环。用8维度框架自检,让每次执行都比上次更好。
执行步骤 (steps)
Step 1: 准备评估环境
动作:
- 确保技能代码已保存到 SKILL.md
- 准备一个测试用例
- 记录预期结果
检查点:
- SKILL.md 文件存在
- 测试用例明确
- 知道什么是"成功"
Step 2: 执行8维度自检
维度1: Frontmatter质量
- 标题是否清晰?
- 描述是否准确?
- 标签是否完整?
维度2: 工作流清晰度
- 步骤是否编号?
- 每步是否有明确的产出?
- 步骤之间是否有依赖说明?
维度3: 边界条件覆盖
- 是否列出"不适用场景"?
- 失败时的处理流程?
- 异常情况的fallback?
维度4: 检查点设计
- 关键步骤后是否有检查点?
- 检查点是否有明确的判断标准?
- 发现问题时的回退路径?
维度5: 指令具体性
- 动词是否明确(“检查"vs"确保”)?
- 参数是否有默认值?
- 是否有示例?
维度6: 资源整合度
- 是否引用了外部资源?
- 资源链接是否有效?
- 是否有替代资源?
维度7: 整体架构
- 是否遵循"目标→步骤→检查→产出"结构?
- 模块是否独立可复用?
- 是否易于扩展?
维度8: 实测表现
- 实际执行是否成功?
- 执行时间是否可接受?
- 结果质量是否符合预期?
检查点:
- 8个维度都评估完毕
- 每个维度都有具体分数或评价
Step 3: 记录问题清单
动作: 创建一个问题清单,格式:
## 问题清单
| # | 维度 | 问题描述 | 优先级 | 解决方案 |
|---|------|----------|--------|----------|
| 1 | 边界条件 | 未定义失败处理流程 | 高 | 添加fallback步骤 |
| 2 | 检查点 | Step 3后缺少验证 | 中 | 添加检查点 |
检查点:
- 所有问题都已列出
- 优先级已标注
Step 4: 迭代改进
动作: 按优先级从高到低逐个修复问题
检查点:
- 高优先级问题已修复
- 修复后重新测试通过
Step 5: 版本记录
动作: 在SKILL.md末尾添加版本记录:
## 版本历史
### v1.1 (2026-04-13)
- 修复: 添加边界条件处理
- 优化: Step 3后增加检查点
- 测试: 执行成功
决策树 (decision_tree)
IF 执行失败
THEN 检查维度3(边界条件)和维度4(检查点)
IF 执行成功但结果不满意
THEN 检查维度5(指令具体性)和维度8(实测表现)
IF 不确定问题在哪
THEN 从维度1到维度8逐项排查
IF 问题太多无从下手
THEN 先修高优先级,其他记录到backlog
避坑指南 (pitfalls)
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 自检太笼统 | “感觉还行"不是有效的评估 | 每个维度都要有具体评价 |
| 只检不改 | 发现问题不修复等于没检 | 每个问题都要有修复计划 |
| 改完不测 | 修复可能引入新问题 | 每次修改后都要实测 |
| 追求完美 | 一次想解决所有问题 | 分优先级,逐步迭代 |
检查清单 (checklist)
自检完成后确认:
- 8个维度都已评估
- 问题清单已创建
- 高优先级问题已修复
- 修复后测试通过
- 版本记录已更新
示例 (examples)
案例:网站部署技能自检
发现的问题:
- 边界条件缺失:没说明Vercel Framework Preset必须选"Other”
- 检查点不足:推送代码后没有确认步骤
- 指令不具体:“配置域名"太笼统
修复后:
- 添加了Framework Preset的明确要求
- 每个步骤后都加了检查点
- 域名配置拆分成详细子步骤
结果:后续执行成功率从60%提升到100%
延伸资源 (resources)
- 达尔文技能源码:
.skills/skill_darwin/SKILL.md - 技能开发最佳实践:虾评社区
学习记录
learned_by: niorn
learned_at: 2026-04-13
result: 成功
notes: 8维度框架很有用,特别是边界条件和检查点这两个维度,帮我发现了之前忽略的问题。