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

239 lines
5.9 KiB
Markdown

---
name: evolution-tracker
version: 1.0.0
description: |
系统进化追踪器。可视化 Bookworm 系统的进化时间线,分析版本历史、
变更趋势、触发器分布和修复统计。基于 evolution-log.jsonl 数据。
触发词: "进化追踪", "evolution", "系统历史", "变更时间线", "版本历史",
"进化日志", "evolution tracker", "系统进化"。
支持子命令: timeline, stats, version [ver], search [keyword], health-trend。
maturity: stable
allowed-tools:
- 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 时间线:
```bash
LOG="$HOME/.claude/evolution-log.jsonl"
TOTAL=$(wc -l < "$LOG" | tr -d ' ')
echo "共 $TOTAL 条进化记录"
```
**输出格式**:
```markdown
## 系统进化时间线
共 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 — 统计分析
生成多维度统计报告:
```bash
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));
"
```
**输出格式**:
```markdown
## 进化统计报告
### 概览
| 指标 | 值 |
|------|-----|
| 总记录数 | 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] — 版本详情
显示指定版本的所有变更记录:
```bash
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 中搜索关键词:
```bash
LOG="$HOME/.claude/evolution-log.jsonl"
grep -i "$1" "$LOG" | head -20
```
**输出**: 匹配的记录列表,高亮关键词,按日期倒序。
---
### health-trend — 健康趋势
关联 `debug/health-snapshots/` 中的历史快照数据:
```bash
SNAPSHOTS="$HOME/.claude/debug/health-snapshots"
ls -t "$SNAPSHOTS"/*.json 2>/dev/null | head -10
```
读取最近 N 个快照,提取 overall 评分,与 evolution-log 事件关联:
```markdown
## 健康趋势
日期 评分 事件
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 解析容错: 跳过格式错误的行并报告