跳到正文
DEV Community· Aarya Shirsath·· 3 小時前AI 評分54

sloth-standup 讀取 Git 紀錄,在本機生成每日站會摘要

sloth-standup: a standup writer that reads my git log so I don't have to

AI 導讀

作者開發 sloth-standup,利用在本機運行的開放權重模型讀取 Git 紀錄,生成昨日工作和今日進度的站會摘要。工具以一條命令執行,將結果儲存為 Markdown;所有處理在筆電本機完成,不需伺服器或 API key。三個程式庫的 CPU 測試中,Qwen2.5-1.5B 用時 18.6 秒但捏造兩項工作,Qwen2.5-3B 用時 28.1 秒且沒有捏造內容。

正文

Aarya Shirsath

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission 🦥

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady

What I Built

sloth-standup reads the git history of my active repos and writes my standup for me: what I did yesterday, and what I'm continuing today. One command, under 30 seconds, and the result is saved as a markdown file.

I contribute to several open-source repos at once, and every morning I'd stare at git log trying to remember what I'd actually done. Now I don't have to. It's for anyone who juggles multiple projects or has to post a daily update and would rather not write it.

Demo

Real output from my own repos, generated by a 3B model running on my laptop CPU:

PS> python -m sloth_standup --since "30 days ago"
Yesterday:
- SecureFlow: Fixed insufficient VRAM handling; Added LLM explanation caching
- iloveAgents: Updated agent categories; Added documentation
- hiero-bot-py: Fixed DCO logic sharing; Added empty-check label verification; Updated test-file regex anchoring

Today:
- SecureFlow: continue fix/local-model-graceful-degradation
- iloveAgents: continue docs/update-category-list
- hiero-bot-py: continue fix/pr-quality-gates

(saved to standups\2026-10-22.md)

Code

sloth-standup

A lazy, fully local git standup bot. It reads your commits, uncommitted work and open PRs, then an open-weight model running inside Python writes a two-line standup. No Ollama, no server, no API key, no data leaving your laptop.

Setup

pip install -r requirements.txt
copy config.example.json config.json      # then edit your repo paths
python -m sloth_standup --dry-run         # check what the model will see
python -m sloth_standup                   # first run downloads ~1 GB, once

If pip install llama-cpp-python tries to compile and fails on Windows, use the prebuilt CPU wheels:

pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu

Already have a GGUF file? Set "model_path": "C:/models/your-model.gguf" in config.json instead of model_repo/model_file.

Make it lazy (Windows)

schtasks /Create /SC DAILY /TN "SlothStandup" /TR "\"%cd%\run_standup.bat\"" /ST 08:30

Your standup lands in standups/YYYY-MM-DD.md every morning.

Options

python -m sloth_standup --since "2 days ago" --repo

…

How I Built It

  • Model: Qwen2.5-Instruct in GGUF (q4_k_m), run locally on CPU. I tested the 1.5B and 3B versions.
  • Git layer: gitdata.py pulls commits and diff stats from each repo listed in config.json, filtered to my author name and capped at 2,500 characters per repo so the prompt stays small.
  • LLM layer: llm.py summarizes each repo's work at temperature 0.2 with a tight token limit, in a fixed "short items separated by semicolons" format.
  • CLI: cli.py assembles the Yesterday/Today output and saves it to standups/. The "Today" section comes from each repo's current branch name, so it costs zero tokens.
  • Config: one JSON file holds the repos, the author, and the model. Swapping models is a two-line edit. A run_standup.bat lets me double-click it each morning.

1.5B vs 3B, on my real repos

Qwen2.5-1.5B Qwen2.5-3B
Download ~1 GB ~2.1 GB
Run time (3 repos, CPU) 18.6 s 28.1 s
SecureFlow Fixed VRAM issue; Added Redis cache for LLM explanations Fixed insufficient VRAM handling; Added LLM explanation caching
iloveAgents Updated agent category list; Fixed typo in documentation; Added new feature for user authentication Updated agent categories; Added documentation
hiero-bot-py Fixed PR health and quality gates; Improved DCO logic and cache commits; Fixed empty-check label audit, verified DCO trailers, anchored the (cut off) Fixed DCO logic sharing; Added empty-check label verification; Updated test-file regex anchoring

The 1.5B is about 10 seconds faster, but it invented two items for iloveAgents ("fixed a typo", "added user authentication") when my only commit there was a docs update to the category list. One of its hiero-bot-py items also ran out of tokens mid-sentence. The 3B was vaguer in places ("Added documentation") but didn't make anything up and stayed in the format. For something I'd paste into a standup without rereading closely, the 3B is the one I keep.

Things I learned

  • Filter by author. My first version summarized everyone's commits in the repo, so my standup claimed other contributors' work as mine. My identity was also split across two emails (one a GitHub noreply address), so matching on my name worked where matching on email didn't.
  • Small models need a rigid format. Early output was full of colons and stray punctuation until I forced short semicolon-separated items.
  • Check the output against your real data. Both models looked fine at a glance, and the difference only showed up when I compared them to my actual commit log.

Why Does Open Innovation Matter?

My commit history is my private working record: unreleased branches, half-finished fixes, repo names. With a closed API, every standup would send that to a server I don't control, and I'd be paying per call for a task I do daily. With an open-weight model, the whole pipeline runs on my laptop. No account, no API key, no cost, and it works with no wifi after the first model download.

Open weights also let me swap models by changing one line and compare 1.5B and 3B on my own repos rather than trusting a leaderboard. That comparison is how I caught the 1.5B's invented feature. A small quantized model turned out to be good enough for this job, and I could only learn that because I could run both.

The Lazy Payoff

Instead of digging through git log across three repos every morning, I run one command and wait about half a minute. It costs nothing per run, and I used it for my own updates this week.

來源:DEV Community · dev.to