1. 项目背景与核心价值
上周五下午4点37分,我盯着空白的周报文档发呆。这已经是本月第三次因为写周报耽误了技术方案评审,突然意识到:作为程序员,为什么不用代码解决这个重复性工作?于是我用3小时开发了一个基于Cursor的周报自动生成机器人,现在每周五下午4点准时收到格式规范的周报初稿,只需花5分钟核对修改。
这个项目的核心价值在于:
- 将平均2小时的周报撰写时间压缩到10分钟以内
- 通过AI自动提取Git提交记录、JIRA任务和会议纪要关键信息
- 生成符合公司模板的Markdown格式周报
- 支持自定义重点事项排序和风险项高亮
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 工具选型对比
我测试了三种AI编程方案:
-
传统IDE+插件模式:VS Code + Copilot
- 优点:生态完善
- 缺点:需要自行搭建信息采集管道
-
纯LLM交互模式:直接使用ChatGPT
- 优点:快速验证想法
- 缺点:无法持久化工作流
-
Cursor智能IDE:
- 内置项目上下文感知
- 支持工作流保存和定时触发
- 可直接调试Python脚本
最终选择Cursor因其:
- 项目级代码理解能力(比单文件Copilot更强)
- 内置的AI命令面板(Command+K)
- 本地执行环境安全性(敏感数据不出域)
2.2 系统流程图解
python复制[Git API] -> [Commit信息提取] ->
[JIRA API] -> [任务状态过滤] ->
[Calendar API] -> [会议纪要分析] ->
[LLM内容合成] -> [模板引擎] ->
[企业微信机器人推送]
关键设计决策:
- 使用异步IO并发获取多源数据
- 采用最小权限原则申请API token
- 设置5分钟超时熔断机制
3. 核心实现步骤
3.1 环境准备
bash复制# 创建conda环境(Python3.9+)
conda create -n weeklybot python=3.9
conda activate weeklybot
# 安装Cursor IDE
brew install --cask cursor
注意:Cursor默认使用GPT-4模型,如需切换可在设置 > AI 中选择其他模型
3.2 数据采集模块
python复制async def fetch_git_logs(since: str):
"""提取最近一周的git提交记录"""
proc = await asyncio.create_subprocess_exec(
'git', 'log', f'--since={since}',
'--pretty=format:%h|%an|%s',
stdout=asyncio.subprocess.PIPE
)
stdout, _ = await proc.communicate()
return parse_git_output(stdout.decode())
def parse_git_output(raw: str):
# 示例输出解析:3a4b5c6|张三|修复登录页样式问题
return [
dict(zip(['hash','author','msg'], line.split('|', 2)))
for line in raw.split('\n') if line
]
3.3 AI合成模块
在Cursor中使用Command+K输入:
code复制请基于以下内容生成技术周报:
- Git提交记录:{git_logs}
- JIRA任务:{jira_tasks}
- 会议纪要:{meeting_notes}
要求:
1. 按P0-P3优先级排序
2. 风险项用⚠️标注
3. 输出Markdown格式
3.4 定时触发配置
在Cursor中创建.cursor/tasks.json:
json复制{
"tasks": [
{
"name": "Generate Weekly Report",
"command": "python weeklybot.py",
"schedule": "0 16 * * 5",
"trigger": "schedule"
}
]
}
4. 实战优化技巧
4.1 信息过滤策略
通过Prompt engineering提升输出质量:
code复制请按以下规则处理输入信息:
1. 过滤非技术类提交(如文档更新)
2. 相同作者的相似提交合并显示
3. 超过3天的低优先级任务标记为"待跟进"
4.2 企业微信集成
python复制import requests
def send_wecom(content: str):
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
headers = {"Content-Type": "application/json"}
data = {
"msgtype": "markdown",
"markdown": {"content": content}
}
requests.post(webhook, json=data, headers=headers)
安全提示:将webhook key存储在环境变量中,不要硬编码在脚本里
5. 常见问题排查
5.1 数据不完整问题
现象:周报缺少某些项目提交记录
- 检查git remote -v是否包含所有仓库
- 确认API token有对应项目的读取权限
- 查看Cursor的Project Settings > Indexed Folders
5.2 格式错乱问题
解决方案:
- 在Prompt中明确要求输出格式:
code复制
请使用以下Markdown结构: ## 本周工作 - [类别] 事项描述(关联JIRA) ## 下周计划 - P0: 核心功能开发 - 安装markdownlint插件校验格式
5.3 性能优化
当提交记录超过100条时:
- 在Prompt中添加:"请总结主要工作方向,列出代表性提交"
- 使用git log --author="姓名"过滤非相关提交
- 设置分页加载:git log -n 50
6. 扩展应用场景
这套方案稍作修改即可用于:
- 自动化日报/月报生成
- 项目里程碑报告
- 代码审查摘要
- 会议纪要智能整理
我在团队内部推广后,现在每个迭代节省约20人时的文档工作时间。最惊喜的是,AI生成的周报往往能发现我们忽略的跨模块关联问题。
