SpecStory羊毛梳理分析器 specstory-yak

SpecStory 羊毛梳理分析器是一个工具,用于分析用户在SpecStory AI编码会话中的历史记录,检测初始目标是否被偏离到兔子洞(yak shaving)中。它生成专注度评分,帮助用户改进代码会话效率,适用于优化AI辅助开发流程。关键词:AI编码会话分析、目标偏离检测、专注度评分、yak shaving、代码会话管理。

AI应用 0 次安装 0 次浏览 更新于 3/7/2026

名称: specstory-yak 描述: 分析您在.specstory/history中的SpecStory AI编码会话历史,检测羊毛梳理(yak shaving)情况 - 即初始目标是否被偏离到兔子洞中。当用户说“分析我的羊毛梳理”、“检查兔子洞”、“我的分心程度如何”或“羊毛梳理得分”时运行。 许可证: Apache-2.0 元数据: 作者: specstory 版本: “1.0.0” 参数提示: “[天数|日期范围]”

SpecStory 羊毛梳理分析器

分析您的.specstory/history,检测编码会话是否从其原始目标偏离。为每个会话生成一个“羊毛梳理得分”。

工作原理

  1. 解析 来自日期范围(或所有最近会话)的specstory历史文件
  2. 提取 第一条消息中的初始用户意图
  3. 跟踪 领域转移:文件引用、工具调用模式、目标变化
  4. 评分 每个会话从0(高度专注)到100(最大羊毛梳理)
  5. 总结 您最严重的偏离模式和情况

什么是羊毛梳理?

“我需要部署我的应用,但首先我需要修复CI,但首先我需要更新Node,但首先我需要修复我的shell配置…”

羊毛梳理是指您从目标A开始,但最终深入无关任务Z。此技能在您的AI编码会话中检测这种模式。

使用方法

斜杠命令

当通过/specstory-yak调用时,解释用户的自然语言:

用户说 脚本参数
/specstory-yak --days 7 (默认)
/specstory-yak last 30 days --days 30
/specstory-yak this week --days 7
/specstory-yak top 10 --top 10
/specstory-yak january --from 2026-01-01 --to 2026-01-31
/specstory-yak from jan 15 to jan 20 --from 2026-01-15 --to 2026-01-20
/specstory-yak by modification time --by-mtime
/specstory-yak last 14 days as json --days 14 --json
/specstory-yak save to yak-report.md -o yak-report.md
/specstory-yak last 90 days output to report --days 90 -o report.md

直接脚本使用

python /path/to/skills/specstory-yak/scripts/analyze.py [选项]

参数:

  • --days N - 分析最近N天(默认:7)
  • --from DATE - 开始日期(YYYY-MM-DD)
  • --to DATE - 结束日期(YYYY-MM-DD)
  • --path PATH - .specstory/history的路径(如果未指定则自动检测)
  • --top N - 显示最严重的N个羊毛梳理(默认:5)
  • --json - 以JSON输出
  • --verbose - 显示详细分析
  • --by-mtime - 按文件修改时间过滤,而不是文件名日期
  • -o, --output FILE - 将报告写入文件(自动添加.md或.json扩展名)

示例:

# 分析最近7天
python scripts/analyze.py

# 分析最近30天,显示前10个
python scripts/analyze.py --days 30 --top 10

# 分析特定日期范围
python scripts/analyze.py --from 2026-01-01 --to 2026-01-28

# 按文件修改时间过滤(而非会话开始时间)
python scripts/analyze.py --days 7 --by-mtime

# JSON输出以供进一步处理
python scripts/analyze.py --days 14 --json

# 将报告保存到markdown文件
python scripts/analyze.py --days 90 -o yak-report.md

# 将JSON保存到文件
python scripts/analyze.py --days 30 --json -o yak-data.json

输出

羊毛梳理报告(2026-01-21 至 2026-01-28)
==========================================

分析会话数:23
平均羊毛梳理得分:34/100

最严重的羊毛梳理:
---------------
1. [87/100] “修复按钮对齐” (2026-01-25)
   开始:CSS修复按钮
   结束于:重写整个构建系统
   领域转移:4 (ui -> build -> docker -> k8s)

2. [72/100] “添加退出功能” (2026-01-23)
   开始:添加退出按钮
   结束于:重构认证系统 + 会话管理
   领域转移:3 (ui -> auth -> database)

3. [65/100] “更新readme” (2026-01-22)
   开始:文档更新
   结束于:CI管道大修
   领域转移:2 (docs -> ci -> testing)

最专注的会话:
----------------------
1. [5/100] “解释认证流程” (2026-01-26) - 纯分析,无偏离
2. [8/100] “修复配置中的拼写错误” (2026-01-24) - 快速精准修复

检测到的模式:
------------------
- 您最常羊毛梳理的任务:UI任务(平均58/100)
- 最安全的任务类型:代码审查/解释(平均12/100)
- 羊毛梳理高峰时段:晚上11点-凌晨2点(平均71/100)

评分方法

羊毛梳理得分(0-100)由以下因素计算:

因素 权重 描述
领域转移 40% 文件引用跳跃领域的次数
目标完成 25% 原始陈述的目标是否完成?
会话长度比例 20% 会话长度与原始请求复杂度的比例
工具类型级联 15% 读->搜索->编辑->创建->部署的升级

得分解释:

  • 0-20:高度专注
  • 21-40:轻微偏离
  • 41-60:中等偏离
  • 61-80:显著的羊毛梳理
  • 81-100:史诗级的兔子洞

向用户呈现结果

重要:运行分析器脚本后,您必须在响应顶部添加个性化的LLM生成摘要,然后再显示原始报告输出。

LLM摘要指南

生成3-5句个性化评论:

  1. 以裁决开头 - 关于整体状态的机智一句话(例如,“您本周的编码会话…是一次冒险。”或“非常自律!有人在服用专注维生素。”)

  2. 突出亮点 - 具体引用最显著的会话:

    • 如果羊毛梳理得分高:“那个1月25日的按钮修复,不知怎么就变成了Kubernetes迁移?范围蔓延的完美典范。”
    • 如果羊毛梳理得分低:“您1月26日的认证流程解释很精准 - 进进出出,无偏离。”
  3. 识别模式 - 注意任何重复主题:

    • “您似乎在从UI任务开始时最常羊毛梳理”
    • “深夜会话是您的危险区域”
    • “您的重构会话往往保持专注”
  4. 以可操作建议或笑话结尾 - 要么:

    • 实用提示:“考虑为那些‘快速CSS修复’设置时间限制 - 它们有73%的羊毛梳理率”
    • 或笑话:“照这样下去,您下一次拼写错误修复将导致Linux内核的完全重写”

LLM摘要示例

## 🐃 您的羊毛梳理分析

好吧,好吧,好吧。您来修复按钮,离开时却重写了半数基础设施。您的平均羊毛梳理得分为47/100,让您稳稳地处于“典型开发者行为”领域。

最突出的?那个1月25日的会话,一个CSS对齐修复不知怎么进化成了完整的Kubernetes部署大修。四次领域转移后,您可能都忘了按钮长什么样了。

我注意到的模式:您的UI任务比代码审查会话的羊毛梳理率高58%。也许在日历上标记那些“快速UI修复”为“潜在3小时冒险”。

以下是完整分解:

然后在您的摘要后显示原始报告输出。

突出显示内容

在摘要后,呈现原始结果时:

  1. 最严重的偏离情况 及前后对比
  2. 模式 在何时/什么导致羊毛梳理
  3. 可操作洞察 - 需要注意哪些任务类型