最近把团队的GitHub项目管理流程全面AI化了,效果比预期好很多。从Issue分类到Release Notes生成,基本上能自动化的都自动化了。分享一下我的方案,有需要的可以直接照搬。
为什么要做这个
我们团队大概十来个人,维护着五六个仓库。之前的痛点很明显:Issue堆积没人分类,Code Review排队等很久,Release Notes每次都是手写凑合,依赖更新总是拖到出安全漏洞才去管。这些事情不难,但费时间还容易忘。
后来想到可以用GitHub Actions加上AI来自动化这些流程,花了大概两周时间搭完,现在运行了一个多月,整体很稳定。
方案一:AI自动分类Issue
这个是最先做的,也是效果最明显的。
原理很简单,用GitHub Actions监听Issue的创建事件,把Issue的标题和内容发给AI,让AI自动打标签。我定义了几个分类:Bug、Feature Request、Question、Documentation、Enhancement。
实际效果是准确率大概在90%左右。偶尔会有分错的,但比之前没人管强太多了。分类之后还会自动@对应的负责人,这样Issue不会在那里躺着没人看。
有个小技巧是在Prompt里把每个分类的定义写清楚,越具体越好。比如Bug的定义不是"程序出了问题",而是"用户报告的已有功能无法正常工作的问题"。这样AI的分类准确率会高很多。
方案二:AI Code Review
这个我们做了两层。
第一层是基础检查,PR创建之后AI会自动Review一遍,检查明显的问题:变量命名不规范、缺少错误处理、硬编码配置、潜在的安全风险等。这层Review通常几分钟就能出结果,帮开发者在人工Review之前先自查一遍。
第二层是深度分析,对于改动比较大的PR,AI会做更详细的分析,包括代码逻辑、性能影响、是否需要加测试等。这层的结果会以Comment的形式发在PR里,供Reviewer参考。
实测下来,AI能发现大概30%到40%的常见问题,人工Review的效率提升了不少。当然AI的Review不能替代人工,它更像是一个预检工具。
方案三:自动生成Release Notes
以前每次发版,写Release Notes都是个苦差事。现在完全自动化了。
做法是在创建Release的时候,Action会自动收集从上次Release到现在的所有PR和commit信息,发给AI生成结构化的Release Notes。AI会把变更分成几类:新功能、Bug修复、性能优化、破坏性变更等,每条变更都有简短的描述。
生成的Notes质量挺好的,偶尔需要手动调整一两处措辞,但比从零开始写快了十倍不止。而且格式统一,以前每次都不一样的问题也解决了。
方案四:PR自动合并规则
这个不完全是AI做的,更多是规则引擎加AI辅助。
我们设置了一套自动合并的条件:CI全部通过、至少一个人Approve、AI Review没有发现严重问题、没有冲突。满足所有条件之后PR会自动合并,不用人手动点。
AI在这里的作用是判断Review结果的严重程度。它会给每个发现的问题打分,只有没有中高风险问题的时候才允许自动合并。这样既提高了效率,又不会把明显有问题的代码合进去。
方案五:依赖更新检测
我们用Dependabot做基础的依赖更新检测,但加了一层AI分析。
Dependabot创建的PR,AI会自动分析changelog和迁移指南,评估升级风险,给出建议。如果是纯安全补丁,风险低的话会自动合并。如果是大版本升级,AI会列出需要注意的breaking changes和迁移步骤。
这个功能帮我们解决了一个大问题:之前Dependabot创建的PR太多了,大家看都不看就放在那里。现在有了AI的风险评估,大家知道哪些要重点关注,哪些可以放心合。
技术实现要点
整套方案的核心技术栈是GitHub Actions加上AI API调用。几个关键点分享一下。
Token管理很重要。每次API调用都有成本,要控制好上下文长度,不要把整个代码库丢给AI。我们的做法是只发送PR的diff和相关文件的上下文。
错误处理要完善。AI的输出不是百分百可靠的,要做好fallback。比如AI分类失败了,就打个"needs-triage"标签让人工处理。
速率限制要注意。如果你的仓库很活跃,短时间内创建大量PR或Issue,可能会触发API的速率限制。我们做了队列处理来解决这个问题。
成本控制方面,一个月下来我们五六个仓库总共花费大概几十美元,对团队来说完全可以接受。主要的开销在Code Review,因为上下文比较长。
实际效果
跑了一个多月之后的数据:Issue平均响应时间从两天降到了两小时,PR合并周期缩短了40%左右,Release Notes生成时间从平均两小时降到了五分钟。团队满意度也挺高的,特别是不用再手动写Release Notes这点。
有在用GitHub Actions做类似自动化的朋友吗?你们还有什么好的自动化场景推荐?