SuperAPI AI 工具集

git-review

编程与开发

查看项目

更新于 10-15 10:24

技能介绍

Git Review 是一款工作复盘工具,通过分析当前 git 仓库指定时间范围内的所有 commits,生成结构化的工作复盘报告。它适用于代码、文档、设计、调研等任何由 git 管理的内容。

用途与触发场景

当用户请求“复盘一下”“今天做了什么”“工作总结”“review commits”“git 回顾”“daily review”“这周干了什么”“最近3天的工作”“retrospective”等涉及回顾 git 提交历史并进行分析的操作时触发。

使用方式

时间范围解析

根据用户输入确定分析的时间范围。默认值为昨天 22:00 到当前时间,以覆盖跨午夜的工作段。自然语言映射规则如下:

  • 今天 / today:今天 00:00 到 now
  • 昨天 / yesterday:昨天 00:00 到昨天 23:59
  • 这周 / this week:本周一 00:00 到 now
  • 最近N天 / last N days:N天前 00:00 到 now
  • 具体日期(如 2月20日):该日 00:00 到该日 23:59
  • 日期范围(如 2/20-2/23):起始日 00:00 到结束日 23:59
  • 默认(无指定):昨天 22:00 到 now

使用 date 命令计算具体时间戳,转换为 git log 可用的格式(如 2026-02-22T22:00:00)。

数据采集

先运行 git rev-parse --is-inside-work-tree 确认当前目录是 git 仓库,如果不是则告知用户并停止。随后运行 git pull 拉取最新代码,若失败则忽略错误继续。顺序执行以下命令:

  1. 完整提交记录: git log --after="{after}" --before="{before}" --format="%H|%an|%ai|%s|%b|||" --name-status

如果结果为空,必须立即停止所有后续步骤,告知用户该时间范围内无提交,展示最近 5 条提交的时间,建议用户指定时间范围,并等待用户下一步指示。

  1. 提交统计: git log --after="{after}" --before="{before}" --stat --format="%H %s"

  2. 时间段整体变更统计: git diff --stat $(git log --after="{after}" --before="{before}" --format="%H" | tail -1)^..$(git log --after="{after}" --before="{before}" --format="%H" | head -1) 如果只有一条提交,使用 git show --stat {hash} 替代。

  3. 分支信息: git branch -a --sort=-committerdate | head -20

  4. 当前未完成工作: git status --short && echo "---STASH---" && git stash list

  5. 当日个人记录(可选):检查仓库是否有 notes/daily_notes/ 目录及对应的每日记录文件(命名格式:{YEAR}H{1|2}-daily-notes.md,如 2026H1-daily-notes.md): find notes/daily_notes -name "*-daily-notes.md" 2>/dev/null | head -5 如果找到文件,提取时间范围内所有涉及日期的记录块。对于每个目标日期(格式 YYYY-MM-DD),执行: awk '/^### {YYYY-MM-DD}/{f=1;next} /^### [0-9]{4}-[0-9]{2}-[0-9]{2}/{f=0} f' notes/daily_notes/{FILE} 如果文件不存在、或指定日期无记录,跳过此步骤。

七维度分析

基于采集到的数据,逐一完成以下分析:

维度 0:当日记录(如有)。仅当采集到记录时执行。完整展示该日期的个人记录原文,标注各条目状态,与 git commits 交叉比对。

维度 1:工作总结。将 commits 按逻辑主题分组,用叙述式语言总结每组工作内容,附上提交时间线表格。

维度 2:变更类型分布。按文件后缀和路径将变更分为代码、测试、文档、配置、设计/调研、依赖、其他等类型,统计各类文件数和行数变更,输出分类表格和占比。

维度 3:工作节奏。绘制提交时间线,识别 Flow Session(连续提交间隔 < 30 分钟视为同一 session),统计首次提交时间、末次提交时间、总跨度、session 数、最长 session、最长间隔。如果只有 1 条提交,跳过节奏分析。

维度 4:提交实践评估。对 Message 质量、粒度、Conventional Commits 三项进行 1-5 分评分,给出好的示例和可改进的示例。

维度 5:技术决策识别。扫描变更内容,识别新依赖引入、架构变更、重构、安全相关、API 变更等类型的技术决策,列出具体 commit 和影响评估。

维度 6:完成度检查。以 checklist 格式检查未提交改动、stash 暂存、TODO/FIXME/HACK/XXX 注释、新增代码文件是否有配套测试文件,给出 Pass/Warning/Info 标记。

维度 7:改进建议。基于以上分析结果,给出 3-5 条可操作的改进建议,每条引用具体分析数据作为证据,提出明确行动项并说明预期效果。

输出报告

按指定的 HTML 格式输出最终报告,使用内联 CSS 确保在浏览器和飞书中均可良好显示。将报告保存为 git-review-{date}.html 到当前工作目录的 output/ 子目录(如无则使用当前目录)。保存 HTML 后,使用 Chrome headless 转换为 PDF: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
--headless --disable-gpu --no-sandbox
--print-to-pdf="$(pwd)/output/git-review-{date}.pdf"
--no-pdf-header-footer
"file://$(pwd)/output/git-review-{date}.html"

如果 Chrome 不可用,使用备选方案: npx -y md-to-pdf "$(pwd)/output/git-review-{date}.html"

最终输出两份文件:output/git-review-{date}.html 和 output/git-review-{date}.pdf。

适用场景

适用于需要回顾一段时间内 git 提交历史、总结工作内容、评估提交习惯、识别技术决策、检查完成度的开发者或团队。可用于日常复盘、周报准备、项目回顾等场景。

限制与边界情况

  • 无当日记录:notes/daily_notes/ 不存在或指定日期无匹配标题,跳过维度 0 和报告 section 0。
  • 多日范围含多天记录:依次提取各天记录块,在报告中合并展示,按日期倒序。
  • 无提交:检测到空结果后立即终止流程,展示最近 5 条提交时间供参考,提示用户重新指定范围,禁止自行扩大时间范围或继续后续 Phase。
  • 单条提交:正常生成报告,但跳过维度 3 的 session 分析,简化为仅记录提交时间。
  • 非 git 仓库:前置检查失败,提示用户当前目录不是 git 仓库。
  • 二进制文件:仅在文件列表中标注为二进制,跳过行数统计,不尝试 diff 分析。
  • 超大时间范围(>100 commits):正常分析,但在维度 1 中按主题分组时做更高层次的归纳,避免报告过长。