brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
evolve-skill-from-traces使用三阶段流水线从代理执行轨迹演化 SKILL.md 文件:从观察到的运行收集 轨迹、并行多代理补丁提议(用于错误和成功分析),以及通过流行度加权对 重叠编辑进行无冲突合并。基于 Trace2Skill 方法论。
Independent GitHub snapshot · Automated classification · Original documentation governs
通过三阶段流水线将原始代理执行轨迹转化为经验证的 SKILL.md:轨迹收集、并行多代理补丁提议和无冲突合并。本技能桥接观察到的代理行为与已记录的步骤之间的差距,将成功运行转化为可复现的技能。
traces —— 一组代理执行日志或会话记录(建议至少 10 次成功运行)target_skill —— 待演化的现有 SKILL.md 路径,或 "new" 表示从零提取技能analyst_count —— 要派生的并行分析师代理数(默认:4)held_out_ratio —— 保留用于验证、不用于起草的轨迹比例(默认:0.2)收集展示目标行为的代理会话日志、工具调用序列或对话记录。过滤标记为成功的运行。归一化为标准轨迹格式:带时间戳的 (state, action, outcome) 三元组序列。
trace_entry:
state: <context before the action>
action: <tool call, command, or decision made>
outcome: <result, output, or state change>
timestamp: <ISO 8601>
held_out_ratio(默认 20%)用于第 7 步的验证,其余用于第 2-6 步# Example: count available traces and compute partition
total_traces=$(ls traces/*.json | wc -l)
held_out=$(echo "$total_traces * 0.2 / 1" | bc)
drafting=$((total_traces - held_out))
echo "Drafting: $drafting traces, Held-out: $held_out traces"
预期结果: 划分为起草(80%)和保留(20%)子集的归一化轨迹集。每个轨迹条目包含 state、action、outcome 和 timestamp 字段。
失败处理: 若可用的成功轨迹少于 10 个,先收集更多再继续。小轨迹集产出在新输入上失败的过拟合技能。若轨迹缺少时间戳,改为分配序数序列号。
按结果模式分组归一化轨迹。识别不变核心(所有成功轨迹中存在的步骤)vs 可变分支(运行间不同的步骤)。不变核心成为技能步骤的骨架。
invariant_core:
- action: "read_input_file"
frequency: 100%
- action: "validate_schema"
frequency: 100%
- action: "transform_data"
frequency: 100%
variant_branches:
- action: "retry_on_timeout"
frequency: 35%
condition: "network latency > 2s"
- action: "fallback_to_cache"
frequency: 15%
condition: "API returns 503"
预期结果: 不变核心 action(在所有成功轨迹中出现)与可变分支(条件性,在子集中出现)之间的清晰分离。每个可变分支有频率计数和触发条件。
失败处理: 若没有不变核心浮现(轨迹过于异质),目标行为实际上可能是多个不同的技能。按结果类型将轨迹拆分为连贯子组,分别处理每个组。
从不变核心生成初始 SKILL.md,包含 frontmatter、何时使用(从轨迹间的入口条件派生)、输入(运行间变化的参数)和每个不变 action 一步的步骤部分。
# Scaffold the skeleton if creating a new skill
mkdir -p skills/<skill-name>/
# Skeleton structure
## When to Use
- <derived from common entry conditions>
## Inputs
- **Required**: <parameters present in all traces>
- **Optional**: <parameters present in some traces>
## Procedure
### Step N: <invariant action label>
<most common implementation from traces>
**Expected:** <most common success outcome>
**On failure:** <placeholder -- refined in Steps 4-6>
预期结果: 一个语法上有效的 SKILL.md 骨架,含 frontmatter、何时使用、输入和包含每个不变核心 action 一步的步骤部分。Expected 块反映观察结果;On failure 块为占位。
失败处理: 若骨架在添加可变分支前就超过 500 行,不变核心过于细粒度。合并总是一起出现的相邻 action 为单个步骤。目标 5-10 个步骤。
派生 N 个分析师代理(建议 4-6 个),每个从不同的分析视角对照起草骨架审查完整轨迹集。每个代理产出结构化补丁:section、old text、new text、rationale。
每个分析师分配一个视角:
| 分析师 | 视角 | 关注 |
|---|---|---|
| 1 | 正确性 | 骨架是否捕捉了所有成功路径?是否有不变步骤缺失? |
| 2 | 效率 | 是否有冗余步骤?是否可合并或并行任何步骤? |
| 3 | 健壮性 | 哪些失败模式未处理?On failure 块应包含什么? |
| 4 | 边界情况 | 哪些可变分支应成为条件步骤或 pitfalls? |
| 5(可选) | 清晰度 | 每个步骤是否无歧义?代理能否机械地遵循? |
| 6(可选) | 可泛化性 | 是否有应抽象的轨迹特定工件? |
每个分析师代理接收:
每个分析师返回结构化补丁列表:
patch:
analyst: "robustness"
section: "Procedure > Step 3"
old_text: "**On failure:** <placeholder>"
new_text: "**On failure:** If the API returns 503, wait 5 seconds and retry up to 3 times. If retries are exhausted, fall back to the cached response from the previous successful run."
rationale: "Traces #4, #7, #12 show 503 errors resolved by retry. Trace #15 shows cache fallback when retries fail."
supporting_traces: [4, 7, 12, 15]
预期结果: 每个分析师返回 3-10 个结构化补丁,附 section 引用、old/new 文本、理由和支持轨迹 ID。所有补丁收集到单一补丁集。
失败处理: 若分析师未返回补丁,其视角可能不适用此技能。这可接受 —— 不是每个视角都浮现问题。若分析师返回模糊补丁且无轨迹引用,拒绝并以"具体 supporting_traces"要求重新提示。
比较第 4 步所有补丁以查找重叠编辑。将每对重叠补丁分类为三类之一。
| 冲突类型 | 定义 | 解决 |
|---|---|---|
| 兼容 | 不同 section,无重叠 | 直接合并 |
| 互补 | 相同 section,加性的(两者都添加内容,无矛盾) | 组合文本 |
| 矛盾 | 相同 section,互斥(一个添加 X,另一个移除 X 或转而添加 Y) | 在第 6 步需要解决 |
conflict_report:
total_patches: 24
compatible: 18
complementary: 4
contradictory: 2
contradictions:
- section: "Procedure > Step 5"
patch_a: {analyst: "efficiency", action: "remove step"}
patch_b: {analyst: "robustness", action: "add retry logic"}
supporting_traces_a: [2, 8, 11]
supporting_traces_b: [4, 7, 12, 15]
预期结果: 冲突报告,列出所有补丁对、其分类,以及对矛盾,每方的支持轨迹计数。
失败处理: 若分类有歧义(一个补丁在同一 section 既添加又修改文本),拆分为两个补丁:一个加性、一个修改。重新分类较小的补丁。
使用三层解决策略将所有补丁合并到单一合并的 SKILL.md。
argumentation 技能评估哪个补丁更好地服务技能既定目的consolidation_log:
applied_directly: 18
combined: 4
resolved_by_prevalence: 1
resolved_by_argumentation: 1
rejected_alternatives_documented: 2
合并后,验证产生的 SKILL.md:
预期结果: 包含所有分析师补丁的单个合并 SKILL.md。矛盾以记录的理由解决。每个矛盾的被拒绝备选作为 pitfall 或注释出现。
失败处理: 若合并产出内部不一致的文档(如第 3 步假设文件存在但第 2 步被效率补丁移除),还原冲突编辑并保留该 section 的原始骨架文本。标记不一致以供手动审查。
在脑海中针对保留轨迹(第 1 步保留的 20%)运行合并的技能。验证 Expected/On failure 块匹配技能从未见过的轨迹中观察到的结果。
validation_results:
held_out_traces: 5
full_match: 4
partial_match: 1
no_match: 0
mismatches:
- trace_id: 23
step: 4
expected: "API returns 200"
actual: "API returns 429 (rate limited)"
action: "Add rate-limit handling to On failure block"
create-skill 进行目录创建、注册表条目和符号链接设置evolve-skill 进行版本提升和翻译同步# Final validation: line count
lines=$(wc -l < skills/<skill-name>/SKILL.md)
[ "$lines" -le 500 ] && echo "OK ($lines lines)" || echo "FAIL: $lines lines > 500"
预期结果: 至少 80% 的保留轨迹端到端匹配技能步骤。技能已在 skills/_registry.yml 中以正确元数据注册。
失败处理: 若验证失败(>20% 不匹配),技能已对起草轨迹过拟合。将不匹配轨迹加入起草集并从第 2 步重跑。若两次迭代后验证仍失败,行为对单个技能可能太多变 —— 考虑按结果类型拆分为多个技能。
evolve-skill —— 更简单的人类指导演化(互补:在轨迹不可用时使用)create-skill —— 用于尚不存在的新提取技能;第 7 步注册时使用review-skill-format —— 合并后验证以确保 agentskills.io 合规argumentation —— 第 6 步当流行度打平时用于解决矛盾补丁verify-agent-output —— 补丁提议的证据轨迹;在第 4 步验证分析师输出