版本: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 对比(包括新增/修改的段落)。必须等用户确认是否覆盖原文件,用户确认后回复「确认改」才写入。
text
┌─────────────────────────────────────────────────────────────┐
│ ReflACT 6-Stage Pipeline │
│ │
│ ① Rollout ② Reflect ③ Aggregate ④ Select │
│ ↓ ↓ ↓ ↓ │
│ 采集轨迹 错误分析 聚类合并 重要性排序 │
│ │
│ ⑤ Update(Skill) ⑥ Meta-Reflect │
│ ↓ ↓ │
│ 应用编辑patch 评估验证 │
│ ↓ │
│ ⑦ Slow Update(跨epoch纵向优化,保护慢更新区) │
└─────────────────────────────────────────────────────────────┘
用户确认环节:应用编辑补丁到文档之前,必须先向用户展示要修改的内容摘要,必须等待用户确认后才执行
用户确认环节:在应用编辑补丁到文档之前,必须先向用户展示要修改的内容摘要(包括修改类型、目标位置和修改内容)。必须等待用户确认(回复「同意」或「确认」),确认后才执行修改。
输入: temp/ 目录下的失败轨迹 JSON 文件
处理:读取轨迹,记录每条任务的 hard(通过/失败)、 soft(置信度)、 fail_reason
输出: RolloutResult 列表
文件格式(用户放置):
text
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 调用:
text
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,防止一次性大幅修改text
用户:进化一下 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 文件。
markdown
## Outcomes
- hard_success: true
- soft_score: 0.9
- fail_reason: ""
- task_description: "用户要求生成 skill-evolve-pro 蓝图文档"
python
@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.pyRolloutResult 数据类定义scripts/session_state_parser.pySESSION-STATE.md 解析器 + 失败检测scripts/trajectory_loader.pyPhase 2 新增 load_from_session_state() + save_rollout_result()
python
# 从 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]
场景hardsoft用户问题完全解决11.0部分解决(有遗留)00.5-0.9解决但有副作用00.3-0.7完全没解决00.0
ply.py 四种原子操作 ✅
最后更新:2026-06-03 · Phase 1-7 全部完成
replace 和 rewrite_section 操作,直接修改技能核心逻辑,避免仅追加边缘规则。fail_reason(如“上下文缺失”、“步骤顺序错误”),针对性地重写相关步骤。support_count 最高的建议,拒绝低优先级(priority_hint=low)的修改。replace 操作,修改最关键的失败步骤。