/evo - 技能进化分析
检测工作流中的问题信号(重复试错、流程中断、代码翻动),生成分析报告,并引导在独立 session 中处理改进,不阻塞当前工作。
使用方式
CODEBLOCK0
核心原则
- 1. 非阻塞 - 分析快速完成,改进在独立 session 处理
- 阈值触发 - 单类信号达到 3 次才建议分析
- 双重存储 - 项目内详细报告 + 全局跨项目统计
执行步骤
Step 1: 收集数据
1.1 读取状态文件
CODEBLOCK1
1.2 分析 Git 历史
CODEBLOCK2
1.3 汇总数据
收集以下信息:
- - 状态文件中的信号计数和实例
- Git 历史中的高频修改文件
- Revert 和连续 fix 的 commit
- 当前 session 中观察到的模式(如果有)
Step 2: 生成分析报告
2.1 创建报告目录
CODEBLOCK3
2.2 报告文件命名
CODEBLOCK4
2.3 报告模板
生成报告包含以下结构:
CODEBLOCK5
2.4 写入报告
使用收集的数据填充模板,写入报告文件。
Step 3: 交互确认
展示发现的问题摘要(不超过 5 条),使用 AskUserQuestion 逐条确认:
CODEBLOCK6
用户确认后,将选中的问题加入 pending_improvements。
Step 4: 引导独立 Session
若用户确认了需要处理的问题:
CODEBLOCK7
Step 5: 更新状态
5.1 更新项目状态文件
CODEBLOCK8
5.2 同步全局统计
CODEBLOCK9
--status 模式
仅显示当前信号状态,不执行分析:
CODEBLOCK10
--continue 模式
用于独立 session 处理 pending 改进项:
- 1. 读取
.evo-state.json 中的 INLINECODE2 - 若无待处理项,提示并退出
- 逐个展示待处理项:
- 显示问题详情和建议
- 分析需要修改的文件
- 提出具体修改方案
- 用户确认后执行修改
- 4. 完成后从
pending_improvements 中移除 - 更新全局统计
CODEBLOCK11
--report 模式
仅生成报告,不进入交互确认流程。适用于快速检查或自动化场景。
注意事项
- 1. 状态文件位置:
.evo-state.json 在项目根目录,建议加入 INLINECODE5 - 报告位置:
docs/evo-reports/ 可选择是否提交到版本控制 - 全局统计:
~/.claude/evo-stats/ 跨项目累积,用于发现通用模式 - 阈值调整: 可手动编辑
.evo-state.json 中的 threshold 值
自动监控
将以下内容添加到项目的 CLAUDE.md 以启用自动信号检测。
信号检测规则
1. retry_loops(重复试错)
检测条件(满足任一即记录):
- - 同一个错误/问题连续尝试 2+ 次未解决
- 同一段代码在 10 分钟内修改 3+ 次
- 测试失败后的修复尝试超过 3 轮
2. interrupted_flows(流程中断)
检测条件(满足任一即记录):
- - 用户明确说"先不管这个"、"等会再说"、"跳过"
- 任务切换时前一个任务未完成且未说明原因
- debugging/实现过程被打断超过 30 分钟未恢复
3. git_churn(代码翻动)
检测条件(满足任一即记录):
- - 同一文件在最近 5 个 commit 中出现 3+ 次修改
- 出现 revert commit
- fix: 类型 commit 针对同一功能连续 2+ 次
检测到信号时的行为
- 1. 读取项目根目录的
.evo-state.json(不存在则创建初始结构) - 更新对应信号类型的
count 和 instances 数组 - 检查是否有任一信号的
count >= threshold(默认阈值为 3) - 若达到阈值,在当前回复末尾提示:
> [Evo] 检测到流程问题信号({信号类型} 已达 {count} 次),建议执行 /evo 进行分析。
.evo-state.json 初始结构
首次检测到信号时,若文件不存在,创建以下结构:
CODEBLOCK12
记录实例的格式
CODEBLOCK13
/evo - 技能进化分析
检测工作流中的问题信号(重复试错、流程中断、代码翻动),生成分析报告,并引导在独立 session 中处理改进,不阻塞当前工作。
使用方式
/evo # 执行完整分析流程
/evo --status # 查看当前信号状态
/evo --report # 仅生成报告,不进入交互
/evo --continue # 继续处理 pending 改进项(独立 session 使用)
核心原则
- 1. 非阻塞 - 分析快速完成,改进在独立 session 处理
- 阈值触发 - 单类信号达到 3 次才建议分析
- 双重存储 - 项目内详细报告 + 全局跨项目统计
执行步骤
Step 1: 收集数据
1.1 读取状态文件
bash
STATE_FILE=.evo-state.json
if [ -f $STATE_FILE ]; then
echo [INFO] 读取状态文件...
cat $STATE_FILE | jq .
else
echo [INFO] 状态文件不存在,将仅分析 git 历史
fi
1.2 分析 Git 历史
bash
最近 20 个 commit
git log --oneline -20
检测高频修改文件
git log --name-only --pretty=format: -20 | sort | uniq -c | sort -rn | head -10
检测 revert commits
git log --oneline -50 | grep -i revert
检测连续 fix commits
git log --oneline -20 | grep -E ^[a-f0-9]+ fix
1.3 汇总数据
收集以下信息:
- - 状态文件中的信号计数和实例
- Git 历史中的高频修改文件
- Revert 和连续 fix 的 commit
- 当前 session 中观察到的模式(如果有)
Step 2: 生成分析报告
2.1 创建报告目录
bash
REPORT_DIR=docs/evo-reports
mkdir -p $REPORT_DIR
2.2 报告文件命名
bash
REPORTFILE=$REPORTDIR/$(date +%Y-%m-%d)-report.md
2.3 报告模板
生成报告包含以下结构:
markdown
Evo 分析报告
生成时间:{YYYY-MM-DD HH:mm}
项目:{project-name}
发现的问题
1. [{signal_type}] {问题标题}
- - 出现次数:{count}
- 时间跨度:{firsttimestamp} - {lasttimestamp}
- 上下文:{context 汇总}
- 模式:{检测到的模式}
- 关联 Skill:{相关 skill 名称,如果能识别}
- 建议:{具体改进建议}
改进建议汇总
| 优先级 | 类型 | 建议 | 影响范围 |
|---|
| 高/中/低 | 新增/优化/修复 | {建议内容} | {影响的 skill 或配置} |
待处理项
2.4 写入报告
使用收集的数据填充模板,写入报告文件。
Step 3: 交互确认
展示发现的问题摘要(不超过 5 条),使用 AskUserQuestion 逐条确认:
发现 {N} 个流程问题:
- 1. [retryloops] TypeScript 编译错误循环 (3次)
- [interruptedflows] Debugging 中断未恢复 (2次)
请选择要处理的问题:
- - [ ] 问题 1
- [ ] 问题 2
- [ ] 全部处理
- [ ] 暂不处理
用户确认后,将选中的问题加入 pending_improvements。
Step 4: 引导独立 Session
若用户确认了需要处理的问题:
已记录 {N} 个待处理改进项。
要在独立 session 中处理这些改进,请运行:
claude 继续处理 evo 改进项
或稍后运行 /evo --continue
当前 session 可继续其他工作。
Step 5: 更新状态
5.1 更新项目状态文件
bash
重置已分析的信号计数
更新 last_analysis 时间戳
保留 pending_improvements
jq .lastanalysis = now | .signals.retryloops.count = 0 | .signals.interruptedflows.count = 0 | .signals.gitchurn.count = 0 .evo-state.json > .evo-state.json.tmp && mv .evo-state.json.tmp .evo-state.json
5.2 同步全局统计
bash
GLOBAL_DIR=$HOME/.claude/evo-stats
mkdir -p $GLOBAL_DIR/projects
更新项目统计
PROJECT_NAME=$(basename $(pwd))
cp .evo-state.json $GLOBAL
DIR/projects/$PROJECTNAME.json
更新汇总统计
累加 pattern_frequency
更新 skillsneedingattention
--status 模式
仅显示当前信号状态,不执行分析:
Evo 状态检查:
信号状态:
retry_loops: 2/3 (未达阈值)
interrupted_flows: 1/3 (未达阈值)
git_churn: 0/3 (无记录)
上次分析: 2026-01-25 18:00
待处理改进: 0 项
提示: 任一信号达到 3 次将自动建议执行 /evo
--continue 模式
用于独立 session 处理 pending 改进项:
- 1. 读取 .evo-state.json 中的 pending_improvements
- 若无待处理项,提示并退出
- 逐个展示待处理项:
- 显示问题详情和建议
- 分析需要修改的文件
- 提出具体修改方案
- 用户确认后执行修改
- 4. 完成后从 pending_improvements 中移除
- 更新全局统计
继续处理 Evo 改进项...
待处理项 1/2:
[retry_loops] TypeScript 编译错误循环
建议: 添加 pre-commit hook 进行类型检查
要执行此改进吗?
--report 模式
仅生成报告,不进入交互确认流程。适用于快速检查或自动化场景。
注意事项
- 1. 状态文件位置: .evo-state.json 在项目根目录,建议加入 .gitignore
- 报告位置: docs/evo-reports/ 可选择是否提交到版本控制
- 全局统计: ~/.claude/evo-stats/ 跨项目累积,用于发现通用模式
- 阈值调整: 可手动编辑 .evo-state.json 中的 threshold 值
自动监控
将以下内容添加到项目的 CLAUDE.md 以启用自动信号检测。
信号检测规则
1. retry_loops(重复试错)
检测条件(满足任一即记录):
- - 同一个错误/问题连续尝试 2+ 次未解决
- 同一段代码在 10 分钟内修改 3+ 次
- 测试失败后的修复尝试超过 3 轮
2. interrupted_flows(流程中断)
检测条件(满足任一即记录):
- - 用户明确说先不管这个、等会再说、跳过
- 任务切换时前一个任务未完成且未说明原因
- debugging/实现过程被打断超过 30 分钟未恢复
3. git_churn(代码翻动)
检测条件(满足任一即记录):
- - 同一文件在最近 5 个 commit 中出现 3+ 次修改
- 出现 revert commit
- fix: 类型 commit 针对同一功能连续 2+ 次
检测到信号时的行为
- 1. 读取项目根目录的 .evo-state.json(不存在则创建初始结构)
- 更新对应信号类型的 count 和 instances 数组
- 检查是否有任一信号的 count >= threshold(默认阈值为 3)
- 若达到阈值,在当前回复末尾提示:
> [Evo] 检测到流程问题信号({信号类型} 已达 {count} 次),建议执行 /evo 进行分析。
.evo-state.json 初始结构
首次检测到信号时,若文件不存在,创建以下结构:
json
{
version: 1.0,
project: {当前项目名},
signals: {
retry_loops: { count: 0, threshold: 3, instances: [] },
interrupted_flows: { count