写每日站会汇报,是那种一直往后拖的杂事。活干完了,提交记录也在,可要把它们变成几句人话,感觉像在补作业。

打开网易新闻 查看精彩图片

standup-sloth 是一个用 Go 写的小型命令行工具:它读取仓库最近 24 小时的提交记录,交给跑在 Ollama 里的一个小体量开放权重模型,拿回一份 markdown 格式的站会草稿。让它真正能用的不是生成,而是校验——每一条要点都必须标注它来自哪个提交,引用检查会把任何指不到真实提交的行直接丢掉。引用是编的、或者干脆没有引用,都会被扔进“Rejected”区并附上原因;模型漏掉的提交,则列在“Not covered”下面。

用法就一行:

standup-sloth /path/to/repo > standup.md

它还能通过 gh 命令行拉取已合并的 PR(--prs),按作者过滤(--author),或者把时间范围拉长(--since 168h 就是一份周报)。

省下来的到底是什么?站会从“打开 git log、重读自己的提交、写五条要点”,变成“跑一条命令、扫一眼、改两笔”。检查比起草更关键:小模型编造工作内容时非常自信,没有这道关卡,省下的时间全得拿去核对事实。在一次真实运行里,模型写出“Implemented unit test for the add() method [#12]”,引用了一个根本不存在的 PR——检查把它拒了。这个工具就是围绕这种失败模式设计的。

演示用的是一次真实运行:一个只有 7 条提交的临时仓库,模型是 qwen2.5:1.5b,跑在 2 个 CPU 核心上,耗时约 90 秒。草稿部分给出了四条要点,每条后面都挂着提交哈希;未被覆盖的三条提交单独列出;被引用检查拒掉的那条,理由写得很清楚:引用的哈希或 PR 不在源提交里。

README 里也写了诚实的边界:模型做的是改写提交信息,而不是理解工作内容;它还可能把一条真实但不相干的提交挂到某行上——检查只能抓住编造的和缺失的引用,所以每一行都保留可见的引用。默认的 0.5B 模型经常逐字复述提交信息,1.5B 写出来的句子明显更好。它是拿来改的草稿,不是拿来直接粘贴的站会汇报。

代码在 GitHub 上,MIT 许可。引用检查器和提示词构建器都有单元测试,整条流水线离线运行。

这个工具能存在,前提是模型权重开放。站会描述的是私密工作——客户仓库、内部代号、未发布的功能。用开放权重模型(Qwen2.5,Apache 2.0)跑在 Ollama 里,整条链路都留在本机:没有 API key,没有用量账单,git 历史不出笔记本。开放权重还意味着可以读模型卡、核对许可证、挑一个能塞进小 CPU 的尺寸,再用一个 --model 参数换掉它。这些事,在一个按量计费、藏在别人端点后面的黑盒模型上,一件也做不到。