ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

用AI Agent把周报自动化:完整工作流搭建实录(附全部代码)

2026/9/4 18:29:25 拓冰建站 浏览量
用AI Agent把周报自动化:完整工作流搭建实录(附全部代码) 摘要本文记录用 AI Agent 搭建周报自动生成工作流的完整过程从 Git 提交、任务系统、日历等多源数据收集到大模型总结提炼再到定时调度与邮件推送附全部可运行 Python 代码与踩坑记录。标签AI Agent、工作流自动化、大模型、Python、提效一、需求每周五花 40 分钟写周报能不能砍到 2 分钟先还原一下写周报的真实流程翻 Git 提交记录回忆这周干了什么 → 翻任务系统确认哪些完成了 → 翻聊天记录找遗漏事项 → 组织语言润色。真正写字只花 5 分钟80% 的时间花在回忆和收集上。这件事的特征是数据源固定、格式固定、每周重复——典型的 Agent 自动化场景。我们的目标是每周五下午 4 点自动收集本周数据生成符合团队格式要求的周报草稿发到邮箱人工过目后一键发送。二、技术方案设计整体架构分四层数据采集层Git 提交记录git log、任务系统 API、日历事件导出处理层Python 脚本做数据清洗把三个来源合并成结构化的本周工作事实清单Agent 层调用大模型本地 Ollama 或云端 API 均可把事实清单改写成周报分发层生成 Markdown 纯文本两版通过 SMTP 发邮件。关键设计决策让 Agent 只负责表达不负责编造。所有内容必须有事实清单来源prompt 里明确禁止添加清单之外的工作项——这一条能避免 AI 周报最坑的问题一本正经地胡说八道。三、代码实现3.1 数据采集拉取本周 Git 提交# collect.py - 收集本周 Git 提交记录importsubprocessfromdatetimeimportdatetime,timedeltadefget_git_commits(repo_path:str,days:int7)-list[str]:获取最近 N 天的 Git 提交摘要since(datetime.now()-timedelta(daysdays)).strftime(%Y-%m-%d)resultsubprocess.run([git,log,--all,--authorme,--sincesince,--prettyformat:%ad | %s,--dateshort],cwdrepo_path,capture_outputTrue,textTrue,encodingutf-8,)lines[l.strip()forlinresult.stdout.splitlines()ifl.strip()]returnlinesif__name____main__:forcinget_git_commits(./my-project):print(c)输出示例2026-08-24 | feat: 用户登录接口增加限流 2026-08-25 | fix: 修复订单状态机并发问题 (#123) 2026-08-27 | refactor: 提取公共鉴权中间件 2026-08-28 | test: 补充支付模块单测覆盖率到78%3.2 合并事实清单把 Git、任务系统、日历三个来源合并成一个文本块去重、按项目分组# merge.pydefbuild_facts(commits:list[str],tasks:list[str],events:list[str])-str:三源数据合并为事实清单作为 Agent 的唯一输入sections[## 本周代码提交记录\n\n.join(commits),## 本周任务系统状态变更\n\n.join(tasks),## 本周会议与关键事件\n\n.join(events),]return\n\n.join(sections)3.3 Agent 层生成周报# generate.py - 调用大模型生成周报fromopenaiimportOpenAI clientOpenAI(base_urlhttp://localhost:11434/v1,api_keyollama)SYSTEM_PROMPT你是一名严格的周报撰写助手。规则 1. 只使用【事实清单】中出现的内容严禁编造或推测任何工作项 2. 按本周完成 / 进行中 / 下周计划 / 风险与求助四段输出 3. 合并同类项同一需求的多次提交归为一句话 4. 使用动词开头的工作描述如完成修复推动 5. 总长度控制在 300 字以内。defgen_report(facts:str)-str:respclient.chat.completions.create(modelqwen3:8b,messages[{role:system,content:SYSTEM_PROMPT},{role:user,content:f【事实清单】\n{facts}},],temperature0.3,# 低温度减少发挥)returnresp.choices[0].message.content几个实测出来的 prompt 经验temperature压到 0.3 以下周报风格会稳定很多严禁编造要放在规则第一条放在后面模型会忘要求动词开头能让产出直接可用不用二次润色。3.4 分发SMTP 邮件发送# send.pyimportsmtplibfromemail.mime.textimportMIMETextdefsend_report(content:str,to:strbosscompany.com):msgMIMEText(content,plain,utf-8)msg[Subject]周报草稿-请过目msg[From]mecompany.commsg[To]towithsmtplib.SMTP_SSL(smtp.company.com,465)ass:s.login(mecompany.com,your-auth-code)s.send_message(msg)注意这里发给自己的邮箱当草稿过目确认后再转发既保留了人工审核环节又不越权。四、定时调度Windows 用任务计划程序macOS/Linux 用 crontab每周五 16:00 触发# crontab -e 添加每周五16点执行016* *5cd/path/to/weekly-botpython main.pyrun.log21如果整个流程跑在服务器上也可以用 APScheduler 写进常驻进程配置更灵活fromapscheduler.schedulers.blockingimportBlockingScheduler schedBlockingScheduler()sched.add_job(run_pipeline,cron,day_of_weekfri,hour16)sched.start()五、踩坑记录3 个真实的坑Git 提交信息质量决定周报质量。fix bug这种提交信息喂给模型也写不出东西。解决给自己定规矩——提交信息按type: 描述格式写一个月后你的周报质量自动上一个台阶模型偶尔会合并不同需求。把两个不相关 fix 合成一句话语义就错了。解决prompt 里加一条不同需求编号的工作项禁止合并并人工抽查前两周的产出日历数据拿不到 API。公司日历没有开放接口时用每周手写的 3 行会议纪要代替成本可控别在这上面过度工程。六、效果与总结跑通后实测每周五 40 分钟的周报流程压缩到 2 分钟打开邮件 → 扫一眼 → 转发。一个月下来模型生成的周报被领导打回 0 次——因为内容全部来自事实清单不存在编造。这个模板稍加改造就能迁移到日报、月报、述职材料。仓库代码整理在文中的四个代码块里直接复制即可运行。你有什么想用 Agent 自动化掉的重复劳动欢迎在评论区交流。声明文中邮箱、路径等请替换为自己的配置注意不要在代码中硬编码密码建议用环境变量。另外每个章节Agent所需skill是在【觅游skill工厂】这里找的