Install
openclaw skills install skill-evolve-proAutomatically evolves skills through a six-stage loop analyzing failure trajectories to generate, apply, and verify targeted editing patches for continuous i...
openclaw skills install skill-evolve-pro版本:Phase 1 + Phase 2
基于:SkillOpt / ReflACT 6步循环
目标:让 AI 技能像神经网络一样,通过"失败轨迹 → 反思 → 编辑 → 验证"自动进化
进化、优化 skill、自动改进、失败轨迹、技能迭代用户确认优先于直接执行:Gate 审核完必须用户确认后才能执行修改,同意/确认才写入,拒绝则丢弃本次编辑。
diff 展示环节:在更新技能文件之前,必须先向用户展示修改内容的 diff 对比(包括新增/修改的段落)。必须等用户确认,回复「确认改」才写入。
| 触发话术 | 说明 |
|---|---|
| 「进化一下 XXX skill」 | 对指定技能执行完整6步 |
| 「优化这个技能」 | 同上 |
| 「让技能自动进化」 | 同上 |
| 「执行 skill-evolve」 | 同上 |
| 「运行进化流程」 | 同上 |
| 「evolve XXX」 | 英文触发 |
Phase 1 限制:用户需手动提供失败轨迹文件(JSON格式,放在
temp/目录),暂不支持全自动 rollout 评测。
diff 展示环节:在更新技能文件之前,必须先向用户展示修改内容的 diff 对比(包括新增/修改的段落)。必须等用户确认是否覆盖原文件,用户确认后回复「确认改」才写入。
┌─────────────────────────────────────────────────────────────┐
│ ReflACT 6-Stage Pipeline │
│ │
│ ① Rollout ② Reflect ③ Aggregate ④ Select │
│ ↓ ↓ ↓ ↓ │
│ 采集轨迹 错误分析 聚类合并 重要性排序 │
│ │
│ ⑤ Update(Skill) ⑥ Meta-Reflect │
│ ↓ ↓ │
│ 应用编辑patch 评估验证 │
│ ↓ │
│ ⑦ Slow Update(跨epoch纵向优化,保护慢更新区) │
└─────────────────────────────────────────────────────────────┘
用户确认环节:应用编辑补丁到文档之前,必须先向用户展示要修改的内容摘要,必须等待用户确认后才执行
用户确认环节:在应用编辑补丁到文档之前,必须先向用户展示要修改的内容摘要(包括修改类型、目标位置和修改内容)。必须等待用户确认(回复「同意」或「确认」),确认后才执行修改。
输入:temp/ 目录下的失败轨迹 JSON 文件
处理:读取轨迹,记录每条任务的 hard(通过/失败)、soft(置信度)、fail_reason
输出:RolloutResult 列表
文件格式(用户放置):
temp/
failed_trajectory_001.json
failed_trajectory_002.json
...
每条轨迹 JSON 需包含字段:id, task_description, question, fail_reason, predicted_answer, reference_text
决策点:如果 temp/ 为空,提示用户放入失败轨迹文件后再继续。
输入:RolloutResult 列表
处理:调用 DeepSeek API,对失败轨迹进行错误分类,生成 ReviseSuggestions(修改建议),每条建议包含:
type:建议类型(add_rule / modify_step / fix_context / rewrite_section)title:简短标题instruction:具体修改指令priority_hint:优先级(high/medium/low)support_count:该建议来自多少条失败轨迹的支持输出:RawPatch(含 patch.edits 列表)
API 调用:
model: deepseek-v4-pro
base_url: https://api.deepseek.com
输入:多个 RawPatch(可能来自不同批次的失败轨迹)
处理:
support_count 降序排序Patch输出:Patch(含 edits 列表 + reasoning)
输入:Patch(大量 edits)+ 当前技能文档 + max_edits(编辑预算)
处理:
max_edits:直接透传max_edits:调用 optimizer LLM 对 edits 排名,选出 top-L(类比梯度裁剪,控制有效步长)输出:Patch(已裁剪至 max_edits 条编辑)
调度器(LRScheduler):
| 模式 | 行为 |
|---|---|
constant | 固定编辑预算(如 max_edits=8) |
linear | 线性衰减(max→min) |
cosine | 余弦退火(max→min) |
autonomous | 无限制,模型自决 |
输入:当前技能文档 + Patch
处理:依次应用 4 种原子编辑操作:
| 操作 | 说明 | 示例 |
|---|---|---|
append | 在文档末尾追加内容 | 新增一整块规则 |
insert_after | 在指定目标文本后插入 | 在某步骤后插入新子步骤 |
replace | 替换一段目标文本 | 修改已有指令措辞 |
delete | 删除目标文本 | 移除冗余/错误段落 |
慢更新保护区:
append 操作若命中保护区,插入保护区之前输出:新的技能文档 + 每步编辑的执行报告
输入:新技能文档 + 失败轨迹(用于对比)
处理:快速检查新技能是否解决了已知的失败模式
决策点:
此步骤在多个进化 epoch 之后执行,非每个循环都触发
输入:上一 epoch 的技能 + 当前 epoch 技能 + 两轮 rollout 对比结果
处理:
max_edits=8,防止一次性大幅修改用户:进化一下 copywriting skill
Agent:
1. 检查 temp/ 目录,找到 failed_trajectory_*.json
2. 加载轨迹 → Reflect(生成修改建议)
3. Aggregate(聚类合并去重)
4. Select(按重要性选 top-8 编辑)
5. Update(应用编辑到技能文档)
6. 输出:进化后的技能文档(用户确认后生效)
Phase 2 新增从 SESSION-STATE.md 自动解析失败轨迹的能力,不再依赖用户手动放置 JSON 文件。
## Outcomes
- hard_success: true
- soft_score: 0.9
- fail_reason: ""
- task_description: "用户要求生成 skill-evolve-pro 蓝图文档"
@dataclass
class RolloutResult:
id: str # 唯一标识,如 "rollout_20260603_001"
skill_id: str # 技能ID
task_type: str # 任务类型:search/tool_use/persona/decision
task_description: str # 任务描述
user_message: str # 用户原始消息
predicted_answer: str # AI 预测的回答
reference_answer: Optional[str] # 参考答案
hard: float # 硬指标:1.0=通过,0.0=失败
soft: float # 软指标:置信度 0.0~1.0
fail_reason: Optional[str] # 失败原因
feedback: Optional[str] # 用户反馈内容
timestamp: str # 执行时间 ISO格式
metadata: dict # 其他元数据
| 文件 | 说明 |
|---|---|
scripts/rollout_result.py | RolloutResult 数据类定义 |
scripts/session_state_parser.py | SESSION-STATE.md 解析器 + 失败检测 |
scripts/trajectory_loader.py | Phase 2 新增 load_from_session_state() + save_rollout_result() |
# 从 SESSION-STATE.md 解析失败轨迹
def load_from_session_state(session_state_path: str) -> List[RolloutResult]
# 保存单条 RolloutResult 到 JSON
def save_rollout_result(result: RolloutResult, output_dir: str = "temp/rollouts") -> str
# 统一加载入口
def load_all_rollouts(
session_state_path: Optional[str] = None,
json_dir: Optional[str] = None,
) -> List[RolloutResult]
| 场景 | hard | soft |
|---|---|---|
| 用户问题完全解决 | 1 | 1.0 |
| 部分解决(有遗留) | 0 | 0.5-0.9 |
| 解决但有副作用 | 0 | 0.3-0.7 |
| 完全没解决 | 0 | 0.0 |
ply.py 四种原子操作 ✅
最后更新:2026-06-03 · Phase 1-7 全部完成
<!-- SLOW_UPDATE_START --> <!-- SLOW_UPDATE_START -->replace 和 rewrite_section 操作,直接修改技能核心逻辑,避免仅追加边缘规则。fail_reason(如“上下文缺失”、“步骤顺序错误”),针对性地重写相关步骤。support_count 最高的建议,拒绝低优先级(priority_hint=low)的修改。replace 操作,修改最关键的失败步骤。