用途
gstack-openclaw-retro 是一个每周工程回顾技能,用于生成一份综合性的工程回顾报告,分析 Git 提交历史、工作模式和代码质量指标。它具备团队感知能力:先识别运行命令的用户,再分析每位贡献者,给出针对个人的表扬与成长机会。
主要能力
- 时间窗口:默认最近 7 天,也支持 24h、14d、30d,以及 compare 模式(当前窗口与上一等长窗口对比)。
- 数据采集:通过一系列 git 命令获取提交时间戳、主题、哈希、作者、变更文件、测试与总代码行数、提交时间分布、热点文件、PR 编号、按作者的文件热点、按作者的提交数、测试文件数量等。
- 指标计算:提交到 main 的数量、贡献者数、合并 PR 数、总插入/删除行数、净增代码行数、测试代码行数、测试代码占比、版本范围、活跃天数、检测到的会话数、每会话小时平均代码行数。
- 贡献者排行榜:按提交数降序排列,当前用户始终排第一并标注为“You (name)”。
- 提交时间分布:本地时区的小时直方图,识别高峰时段、死区、双峰模式、深夜编码集群。
- 工作会话检测:以 45 分钟间隔为阈值,分类为深度会话(50+ 分钟)、中等会话(20-50 分钟)、微会话(<20 分钟,单提交),并计算总活跃编码时间、平均会话长度、每小时活跃时间代码行数。
- 提交类型分布:按 conventional commit 前缀(feat/fix/refactor/test/chore/docs)分类并显示百分比条;若 fix 比例超过 50% 会标记“快速发布、快速修复”模式。
- 热点分析:显示变更最频繁的前 10 个文件,标记变更 5 次以上的文件、热点列表中的测试文件与生产文件、VERSION/CHANGELOG 频率。
- PR 规模分布:估算 PR 大小并分桶为 Small(<100 LOC)、Medium(100-500 LOC)、Large(500-1500 LOC)、XL(1500+ LOC)。
- 专注度评分与本周发布:专注度评分为触及变更最多的顶层目录的提交百分比;本周发布为窗口内代码行数最高的单个 PR。
- 团队成员分析:对每位贡献者计算提交与代码行数、关注领域、提交类型组合、会话模式、测试纪律、最大发布;对当前用户进行最深度的分析,包括所有会话分析、时间模式、专注度评分,并以第一人称呈现;对每位队友给出 2-3 句总结,然后给出 1-2 个具体表扬和 1 个成长机会。
- 周环比趋势(窗口 >= 14d):按周分桶显示每周提交数、代码行数、测试比例、fix 比例、会话数。
- 连续提交天数:统计团队和个人的连续提交天数。
- 历史加载与对比:检查 memory/ 中是否有之前的回顾,若有则加载最近一次并计算变化量;若无则提示“首次记录回顾,下周再运行以查看趋势”。
- 保存回顾历史:将 JSON 快照保存到 memory/retro-YYYY-MM-DD.json,包含指标、作者、版本范围、连续天数和可推文摘要。
- 撰写叙述:为 Telegram 格式化(项目符号、粗体、最终输出中不使用 markdown 表格),结构包括可推文摘要、摘要、与上次回顾的趋势对比、时间与会话模式、发布速度、代码质量信号、专注与亮点、你的本周、团队分解、团队前三成就、三项改进、下周三个习惯。
- 对比模式:当用户说“compare”时,运行当前窗口和上一等长窗口的回顾,并排展示指标与箭头,简要叙述最大变化。
使用方式
该技能通过参数指定时间窗口:默认 7 天,或 24h、14d、30d、compare。所有时间以用户本地时区报告,不设置 TZ。日单位窗口按本地午夜对齐计算绝对开始日期,例如今天为 2026-03-18、窗口为 7 天时,开始日期为 2026-03-11,使用 --since="2026-03-11T00:00:00" 进行 git log 查询;小时单位使用 --since="N hours ago"。
执行流程包括:获取原始数据(git fetch origin main、git config user.name/email,以及一系列 git log、git shortlog、git ls-files 命令)、计算指标、提交时间分布、工作会话检测、提交类型分布、热点分析、PR 规模分布、专注度评分与本周发布、团队成员分析、周环比趋势、连续提交天数、加载历史与对比、保存回顾历史、撰写叙述。
完成状态:DONE(回顾已生成,历史已保存)、DONE_WITH_CONCERNS(已生成但缺少数据,例如没有之前的回顾可供对比)、BLOCKED(不在 git 仓库中或窗口内没有提交)。
适用场景
适用于需要定期进行工程回顾的团队或个人开发者,尤其是希望追踪提交模式、代码质量趋势、团队贡献分布和连续交付习惯的场景。团队感知功能适合多人协作仓库;单人仓库会跳过团队分解。
限制
必须在 git 仓库中运行,且窗口内需有提交,否则返回 BLOCKED。若没有之前的回顾记录,则无法进行趋势对比,会提示首次记录。所有时间使用本地时区,不设置 TZ。最终输出为 Telegram 格式,避免 markdown 表格。