qoder自动化周报脚本提供四种实现方式:一、shell脚本轻量提取提交摘要与统计;二、python+gitpython结构化分类归档;三、git hooks+github actions协同定时生成pr;四、docker容器化隔离执行。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望定期获取团队开发进展的简明汇总,但手动整理 Git 提交记录耗时且易遗漏关键信息,则可以借助 Qoder 自动化周报脚本实现自动提取与结构化输出。以下是生成该周报脚本的多种实现方式:
一、基于 Shell 脚本 + git log 的轻量级方案
该方案利用系统原生 git 命令与 Shell 工具链,在无额外依赖前提下快速提取指定时间范围内的提交摘要、作者分布及文件变更统计。
1、创建名为 qoder-weekly-report.sh 的脚本文件,并赋予执行权限:chmod +x qoder-weekly-report.sh。
2、在脚本中写入以下核心命令组合:git log --since="last monday" --until="this sunday" --pretty=format:"%h %an %s" --no-merges。
3、追加统计逻辑:使用 git log --since="last monday" --until="this sunday" --author=* --oneline | wc -l 获取每人提交数。
4、将输出重定向至 report-$(date +%Y-%m-%d).md 文件,完成基础 Markdown 格式周报生成。
二、Python 脚本调用 GitPython 库的结构化方案
该方案通过 Python 生态中的 GitPython 库解析本地仓库对象,支持按分支、作者、提交关键词(如 feat、fix、docs)进行分类归档,并可嵌入 Jira ID 或 PR 关联识别逻辑。
1、安装依赖库:pip install GitPython。
2、初始化仓库对象:repo = Repo("."),并设定时间窗口为最近 7 天。
3、遍历 commits 列表,对每个 commit 对象提取 message、author.name、committed_datetime 属性,并匹配正则表达式 r'(feat|fix|refactor|test|chore)\([^)]+\):' 识别类型前缀。
4、将结果按类型分组后写入 JSON 或 Markdown 表格,字段包括:类型、标题、作者、提交哈希、关联 Issue 编号(若 message 中含 #ISSUE-123)。
代码编辑 CLI 工具集合:Cursor CLI(agent)和 Qoder CLI(qodercli),用于代码修改、重构、Code Review 及自动化代码任务。
三、Git Hooks 触发 + GitHub Actions 定时执行的协同方案
该方案将周报生成过程解耦为本地钩子触发与云端定时编排,确保报告生成不依赖开发者本地环境,且能跨多仓库统一调度。
1、在仓库 .git/hooks/post-merge 中添加调用脚本指令:/path/to/qoder-report-runner.sh --trigger=auto,用于合并后即时更新缓存数据。
2、在 .github/workflows/weekly-report.yml 中配置 cron 触发器:schedule: ['0 9 * * 1'],即每周一上午 9 点执行。
3、工作流步骤中检出代码后运行 Python 脚本,读取最近一周所有 push 事件对应的 commit 列表,过滤掉 CI 用户和 bot 提交。
4、生成 report/latest.md 并通过 gh pr create --title "Weekly Report $(date +%Y-%m-%d)" --body-file report/latest.md 自动发起 Pull Request。
四、Docker 容器化封装 + 挂载仓库路径的隔离执行方案
该方案将脚本及其全部依赖打包为标准 Docker 镜像,避免宿主机 Python 版本、Git 配置或权限差异导致的执行异常,适用于多项目统一管理场景。
1、编写 Dockerfile,基础镜像选用 python:3.11-slim,并安装 git 和 GitPython。
2、将 Python 主程序 copy 至镜像 /app 目录,设置 ENTRYPOINT 执行 qoder_report.py。
3、运行容器时挂载宿主机仓库路径:docker run -v $(pwd):/workspace -w /workspace qoder-reporter --since="7 days ago"。
4、脚本内部自动检测 /.git 是否存在,若缺失则退出并提示 Error: Not a git repository。










