引言
对于程序员而言,编写日报或周报往往是一项重复且繁琐的任务。每天下班前,面对复杂的代码提交记录,整理成一份清晰的工作汇报需要耗费大量精力。
作为开发者,我们的原则是:凡是超过三次的重复劳动,都应该自动化。本文将介绍如何使用 Python、Git Log 和大语言模型(LLM)搭建一个全自动日报生成器。它能自动读取代码提交记录,利用 AI 润色能力,将碎片化的提交信息转化为结构化的专业日报,并推送到工作群。
1. 架构设计
我们需要一个处理流水线,将原始数据转化为有价值的信息。核心逻辑如下:
- 数据层 (Miner):从本地代码仓库挖掘当天的 Git Commits。
- 组装层 (Assembler):清洗、去重并提交给 AI 的 Prompt。
- 大脑层 (Brain):调用 LLM API,根据预设人设进行润色。
- 触达层 (Courier):将生成的 Markdown 报告推送到飞书/钉钉机器人。
系统流程:提取提交记录 -> 补充上下文 -> 结构化 Data -> API Request -> 生成日报文本 -> Webhook 推送。
2. 数据挖掘
日报写不出来,本质是上下文丢失。Git Commit Log 是最诚实的记录者。我们需要编写 Python 脚本,自动提取当前用户今天的所有提交。
2.1 核心依赖
pip install gitpython requests openai python-dotenv
2.2 挖掘机代码实现 (miner.py)
该模块负责深入项目目录,提取今天的提交。
import os
from datetime import datetime, time
from git import Repo, InvalidGitRepositoryError
class GitMiner:
def __init__(self, repo_paths, author_name):
"""
:param repo_paths: list, 项目路径列表(支持多项目监控)
:param author_name: str, 你的 Git 用户名,防止把同事的提交算进去
"""
self.repo_paths = repo_paths
self.author_name = author_name
def get_daily_commits(self):
daily_logs = []
today = datetime.now().date()
start_of_day = datetime.combine(today, time.min)
end_of_day = datetime.combine(today, time.max)
print(f"正在挖掘 {today} 的代码提交...")
for path .repo_paths:
:
repo = Repo(path)
commit repo.iter_commits():
commit_date = datetime.fromtimestamp(commit.committed_date)
(start_of_day <= commit_date <= end_of_day) (.author_name commit.author.name):
log_entry =
daily_logs.append(log_entry)
commit_date < start_of_day:
InvalidGitRepositoryError:
()
daily_logs
__name__ == :
miner = GitMiner(
repo_paths=[, ],
author_name=
)
logs = miner.get_daily_commits()
(.join(logs))


