mcpField
S
specstory-session-summary

specstory-session-summary

github.com/specstoryai生产力35345 次安装39 周前更新
代码仓库

关于 specstory-session-summary

用于分析近期 SpecStory 会话记录并生成简洁的站会式摘要。它提取目标、结果、修改文件和关键决策,并归纳重复主题与未完成事项。

主要功能

  1. 01查找近期会话记录
  2. 02按日期或数量筛选会话
  3. 03分析目标与结果
  4. 04列出修改文件和决策
  5. 05归纳主题与未完成事项

适用场景

  1. 01回顾近期 AI 编码会话
  2. 02准备站会进展更新
  3. 03查找多个会话中的未完成工作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/specstoryai/agent-skills --skill specstory-session-summary

安装后在 Claude Code 中输入/specstory-session-summary确认已加载。

附带文件LICENSE.txt

详细介绍

上下文

你将分析最近的 SpecStory 会话历史文件,提供一份站会风格的摘要。

提供的参数:$ARGUMENTS(默认为 5 个会话;若为 "today",则仅分析今天的会话)

任务

步骤 1:查找最近的会话

首先,检查 SpecStory 历史文件夹是否存在,并列出最近的会话文件:

ls -t .specstory/history/*.md 2>/dev/null | head -20

如果 .specstory/history 文件夹不存在或为空,请回复:

在此目录中未找到 SpecStory 会话历史。

SpecStory 会自动保存 AI 编码会话,供日后参考。要开始记录会话,请从 https://specstory.com 安装 SpecStory

然后停止,不要继续执行其余步骤。

如果找到会话,请继续分析。如果参数为 "today",则筛选今天的会话;否则使用提供的数量(默认为 5)。

步骤 2:读取并分析每个会话

会话文件可能很大,也可能包含多个用户请求。请采用分块读取策略:

步骤 2a:了解会话结构

首先,搜索所有用户消息标记,了解会话范围:

grep -n "_\*\*User\*\*_" <file> | head -10

这会显示用户消息的行号,帮助你了解:

  • 提出了多少个不同的请求
  • 应该在哪里读取每个请求的上下文

步骤 2b:根据结构有策略地读取

  1. 开头(前 500 行) - 使用 offset=0, limit=500 读取

    • 捕获初始请求,即使其中包含粘贴的代码或日志
    • 可能包含较早的助手回复,展示所采取的方法
  2. 结尾(最后 300 行) - 通过 Bash 使用 tail -300 <file>

    • 包含最终结果和结论
    • 显示任务是否已完成或仍待处理
  3. 文件操作 - 搜索文件修改记录:

    grep -E "(Edit|Write)\(" <file>
    

步骤 2c:处理包含多个请求的会话

如果步骤 2a 的搜索结果显示多个用户消息位于相距较远的行号(例如第 50、800、1500 行),则表示会话中包含多个不同任务。对于这类会话:

  • 在每条用户消息的行号附近读取(例如 offset=795, limit=100)
  • 总结 2–3 个主要任务,而不是只总结第一个任务

提取以下信息:

  1. 目标:用户在 _**User**_ 块中的请求
    • 单任务会话:一个主要目标
    • 多任务会话:列出 2–3 个主要任务
  2. 结果:根据对话结尾判断:
    • ✅ 已完成 - 任务已成功完成
    • 📚 调研 - 收集了信息,没有修改代码
    • 🔧 进行中 - 已开始工作,但会话在任务完成前结束
    • ❌ 已放弃 - 用户改变方向或放弃
    • 🚧 受阻 - 结束时仍存在未解决的错误或阻碍
  3. 文件:通过 Edit/Write 工具操作修改的文件(仅提取文件名)
  4. 关键决策:在对话中查找:
    • 明确的选择(“决定……”“选择……”“而非……”)
    • 权衡讨论
    • 架构或设计结论
步骤 3:设置输出格式

每个会话按以下格式呈现:

### {YYYY-MM-DD HH:MM} - {Brief Title from Main Goal}
**Goal**: {1 sentence summarizing what user wanted}
**Outcome**: {emoji} {Brief result description}
**Files**: {comma-separated list, or "None" if research only}
**Key insight**: {Notable decision or learning, if any}

对于多任务会话,请调整格式:

### {YYYY-MM-DD HH:MM} - {Overall Theme or Primary Task}
**Tasks**:
  1. {First task} - {outcome emoji}
  2. {Second task} - {outcome emoji}
**Files**: {comma-separated list}
**Key insight**: {Notable decision or learning, if any}
步骤 4:摘要部分

在所有会话之后,添加:

---
**Patterns**: {Note any recurring themes, files touched multiple times, ongoing work}
**Unfinished**: {Any sessions that ended with TODOs, blockers, or incomplete work}

指南

  • 每个会话摘要最多 5–6 行(多任务会话可稍长)
  • 根据用户目标推断标题,不要使用文件名
  • 文件名尽量只显示文件名,不显示完整路径
  • 跳过仅包含简单问题、没有实际工作的会话
  • 对于多任务会话,最多总结 3 个主要任务;将次要任务合并为“各种小修复”
  • 保持简洁,便于每日快速回顾,而非作为详细文档
  • 如果文件读取失败或文件过大,请根据可提取的信息进行处理;不要完全跳过该会话

输出示例

## Session Summary (Last 3 Sessions)

### 2025-10-18 11:42 - Investigate Chat CRDT Storage
**Goal**: Understand why chat index CRDT doesn't contain the thread
**Outcome**: 📚 Explained dual storage design for offline/online sync
**Files**: threads.json, crdt-debug/4X/, crdt-debug/aT/
**Key insight**: Two storage layers (CRDT + JSON) serve different sync scenarios

### 2025-10-18 11:09 - Address Code Review Comments
**Goal**: Fix clarity issues from code review
**Outcome**: ✅ Refactored normalizeChatIndexDoc function
**Files**: chat.go, automerge-bridge.js
**Key insight**: Replaced complex normalization with toPlainString helper

### 2025-10-11 14:30 - Automerge Architecture Deep Dive
**Goal**: Document how Automerge docs are constructed temporally
**Outcome**: 📚 Research complete, walkthrough provided
**Files**: automerge-bridge.js, document.go (read only)

---
**Patterns**: 3 sessions focused on CRDT/chat subsystem; automerge-bridge.js touched repeatedly
**Unfinished**: None detected

评论

支持 Markdown