bookworm-smart-assistant/skills/evolution-tracker/SKILL.md

5.9 KiB

name version description maturity allowed-tools
evolution-tracker 1.0.0 系统进化追踪器。可视化 Bookworm 系统的进化时间线,分析版本历史、 变更趋势、触发器分布和修复统计。基于 evolution-log.jsonl 数据。 触发词: "进化追踪", "evolution", "系统历史", "变更时间线", "版本历史", "进化日志", "evolution tracker", "系统进化"。 支持子命令: timeline, stats, version [ver], search [keyword], health-trend。 stable
Bash
Read
Glob
Grep

/evolution-tracker — 系统进化追踪器

分析 evolution-log.jsonl 生成系统进化可视化报告。

数据源

主数据: ~/.claude/evolution-log.jsonl
辅助:   ~/.claude/stats-compiled.json (当前快照)
辅助:   ~/.claude/debug/health-snapshots/ (历史健康评分)

JSONL 字段:

字段 必需 说明
seq 自增序号
ts ISO 日期 (YYYY-MM-DD)
version 系统版本 (vX.Y)
trigger 触发源 (self-healer/version-bump/auto-cleanup/human/...)
summary 变更摘要
scope - 变更范围 (major-upgrade/auto-cleanup/...)
fix_count - 修复文件数
fix_note - 修复详情
tags - 分类标签数组

子命令

根据用户输入匹配子命令。无参数时默认执行 timeline


timeline (默认) — 进化时间线

读取全部 JSONL 记录,按日期分组,生成 ASCII 时间线:

LOG="$HOME/.claude/evolution-log.jsonl"
TOTAL=$(wc -l < "$LOG" | tr -d ' ')
echo "共 $TOTAL 条进化记录"

输出格式:

## 系统进化时间线

共 N 条记录 | 时间跨度: YYYY-MM-DD → YYYY-MM-DD | 版本: vX.Y → vX.Y

### vX.Y (YYYY-MM-DD — YYYY-MM-DD)
│
├─ MM-DD  [trigger] summary (tags)
├─ MM-DD  [trigger] summary (tags)
│
### vX.Y-1 (...)
│
├─ ...

规则:

  • 按版本分组,版本内按日期倒序
  • summary 超 80 字截断加 ...
  • 每个版本组统计: N 条记录, M 次修复, K 个文件
  • major-upgrade scope 用 标记

stats — 统计分析

生成多维度统计报告:

LOG="$HOME/.claude/evolution-log.jsonl"
node -e "
const fs = require('fs');
const lines = fs.readFileSync('$LOG','utf8').trim().split('\n').map(l => JSON.parse(l));

// 1. 版本分布
const versions = {};
lines.forEach(l => { versions[l.version] = (versions[l.version]||0) + 1; });

// 2. 触发源分布
const triggers = {};
lines.forEach(l => { triggers[l.trigger] = (triggers[l.trigger]||0) + 1; });

// 3. 标签热力图
const tags = {};
lines.forEach(l => (l.tags||[]).forEach(t => { tags[t] = (tags[t]||0) + 1; }));

// 4. 修复统计
const fixes = lines.filter(l => l.fix_count > 0);
const totalFixes = fixes.reduce((s,l) => s + l.fix_count, 0);

// 5. 活跃度 (按周)
const weeks = {};
lines.forEach(l => {
  const d = new Date(l.ts);
  const w = l.ts.slice(0,7) + '-W' + Math.ceil(d.getDate()/7);
  weeks[w] = (weeks[w]||0) + 1;
});

console.log(JSON.stringify({
  total: lines.length,
  dateRange: [lines[0].ts, lines[lines.length-1].ts],
  versions, triggers, tags,
  fixSessions: fixes.length,
  totalFilesFixed: totalFixes,
  weeklyActivity: weeks
}, null, 2));
"

输出格式:

## 进化统计报告

### 概览
| 指标 | 值 |
|------|-----|
| 总记录数 | N |
| 时间跨度 | X 天 |
| 版本数 | N |
| 修复会话 | N 次 |
| 修复文件总数 | N 个 |

### 版本分布
| 版本 | 记录数 | 占比 |
|------|--------|------|
| vX.Y | N | XX% |

### 触发源排名
| 触发源 | 次数 | 占比 | 柱状图 |
|--------|------|------|--------|
| self-healer | N | XX% | ████████ |
| version-bump | N | XX% | ████ |

### 标签热力图
| 标签 | 出现次数 |
|------|---------|
| security | N |
| metadata-sync | N |

### 周活跃度
(ASCII 柱状图,每周一列)

version [ver] — 版本详情

显示指定版本的所有变更记录:

LOG="$HOME/.claude/evolution-log.jsonl"
node -e "
const fs = require('fs');
const ver = '$1' || 'latest';
const lines = fs.readFileSync('$LOG','utf8').trim().split('\n').map(l => JSON.parse(l));
const target = ver === 'latest' ? lines[lines.length-1].version : ver;
const filtered = lines.filter(l => l.version === target);
console.log(JSON.stringify(filtered, null, 2));
"

其中 $1 替换为用户指定的版本号。无参数时显示最新版本。

输出: 该版本所有记录的详细列表 + 汇总统计。


search [keyword] — 关键词搜索

在 summary、tags、fix_note 中搜索关键词:

LOG="$HOME/.claude/evolution-log.jsonl"
grep -i "$1" "$LOG" | head -20

输出: 匹配的记录列表,高亮关键词,按日期倒序。


health-trend — 健康趋势

关联 debug/health-snapshots/ 中的历史快照数据:

SNAPSHOTS="$HOME/.claude/debug/health-snapshots"
ls -t "$SNAPSHOTS"/*.json 2>/dev/null | head -10

读取最近 N 个快照,提取 overall 评分,与 evolution-log 事件关联:

## 健康趋势

日期       评分   事件
2026-03-29  92   ← 中期路线图执行完成
2026-03-28  85   ← v6.4 升级
2026-03-25  92   ← 全面修复 (14 项 HIGH+MEDIUM)
...

趋势: [ASCII 折线图]

输出约定

  • 所有输出使用 markdown 格式
  • 数字右对齐,百分比保留整数
  • ASCII 图表使用全角块字符 (█▓▒░)
  • 超过 20 条记录的列表显示 Top 20 + "... 还有 N 条"
  • 日期格式统一 YYYY-MM-DD

注意事项

  • evolution-log.jsonl 是 append-only 日志,不修改现有记录
  • 本 Skill 为只读,不写入任何文件
  • JSONL 解析容错: 跳过格式错误的行并报告