如今,项目开发的节奏非常快,及时了解项目动态至关重要。GitHub Issues通常是开发者和用户反馈问题的主要渠道。然而,随着Issue数量的增加,及时跟进每一个问题会变得越来越困难。
为了解决这个问题,我们开发了一个自动化Issue总结机器人。它的功能很简单:自动获取项目最新的GitHub Issues,智能总结Issues内容,并将总结推送到指定的飞书群。
接下来,我将提供详细的操作步骤,一步步实现这个机器人。
话不多说,拿起键盘,开始教学 ~
GitHub提供了强大的API,让我们能够轻松获取Issues信息。我们将使用以下接口来获取某个repo的Issues:
这个接口默认返回最近的30条Issues。
可以参考Github的API文档以获得更多的信息。
FastGPT是一个能让AI开发门槛大幅降低的工具。不管你是有技术背景的开发者,还是只是对AI感兴趣的小白,FastGPT都能帮你轻松入门,甚至可以让你在几分钟内构建出一个属于自己的AI应用。
传统的AI开发需要掌握编程、算法、数据处理等复杂技能。但是使用FastGPT,你只需要简单几步就能启动一个AI应用。打个比方,传统的AI开发就像是你自己动手盖一栋房子,不但需要砖头、瓦片,还得有设计图纸;而FastGPT更像是搭积木,你只需选好模块,几块拼起来,房子就能立刻成型。
本文将教大家如何使用FastGPT工作流一步一步实现这个机器人。
首先,我们要登录FastGPT并新建一个工作流:
名字就叫GitHub Issue总结机器人吧。
然后开始一步一步添加节点。接下来开始对工作流进行拆解并详细讲解。
首先,我们需要以当前时间节点为基准,获取24小时前的具体日期。需要使用到的节点是【代码运行】节点。
完整代码如下:
function main() {
const date = new Date();
date.setDate(date.getDate() - 1);
const day = date.getDate();
const month = date.getMonth() + 1;
const year = date.getFullYear();
const hours = date.getHours();
const minutes = date.getMinutes();
return {
date: `${year}-${month}-${day}T${hours}:${minutes}:000Z`,
}
}
这一步我们将使用【HTTP请求】节点来访问GitHub API来获取指定项目过去24小时内的Issues。
这里以FastGPT项目为例。
获取到原始数据后,我们需要对其进行处理,提取出我们需要的信息。同样使用【代码运行】节点。
完整代码如下:
function main({res}) {
const issues = JSON.parse(res);
const ret = [];
for(const issue of issues) {
if (issue.pull_request) continue;
ret.push({
title: issue.title,
body: issue.body,
url: issue.html_url
})
}
return {
ret: JSON.stringify(ret)
}
}
由于issue接口会将pull_request也视为issue,所以我们只能在代码里面过滤。
为了生成高质量的摘要,我们使用大语言模型来处理和总结Issues内容。
提示词如下:
你是一个简洁高效的GitHub Issue概述助手,专长于提炼核心问题并以清晰简洁的方式呈现。
## 任务
分析输入的多条issue信息,为每个issue创建一个简明扼要的概述。使用中文输出。
## 输入格式
JSON数组,每项包含title(标题)、body(内容)和url(链接)。
## 输出格式
对每个issue使用Markdown语法创建简洁的概述块。每个概述应包含:
1. 使用加粗呈现issue的原标题
2. 一段简短的问题概述(不超过2-3句话)
3. 原issue的链接(使用Markdown链接语法)
在概述中适当使用emoji来增加可读性,但不要过度使用。保持整体风格简洁明了。
示例输出:
---
**? 数据可视化组件性能优化**
这个issue反映了在处理大量数据时图表加载缓慢的问题。用户在数据点超过一定数量时experiencing明显的性能下降,影响了用户体验。
? [查看原issue](url1)
---
**? 移动端界面适配问题**
该issue指出在某些特定型号的移动设备上出现了界面布局错乱的情况。这个问题影响了应用在不同尺寸屏幕上的一致性展现。
? [查看原issue](url2)
---
请确保每个issue概述都简洁明了,突出核心问题,避免过多细节。保持整体风格统一,让读者能快速理解每个issue的要点。
使用飞书机器人的Webhook URL,我们可以将总结后的内容推送到指定的飞书群。这一步需要用到【飞书机器人webhook】节点。
这里的hook_url我们将在下一步告诉大家如何获取。
首先需要访问飞书机器人助手页面,然后新建一个机器人应用 –> 创建一个流程。
其中Webhook触发节点的参数如下:
{"content":{"text":"test"}}
下面一个节点选择【发送飞书消息】,选择发送对象为群消息,并指定群组,自定义一个消息标题。
然后在【消息内容】中点击“加号”,选择Webhook触发 –> content.text。
最终保存启用,等待管理员审核通过即可。
审核通过后,将【Webhook触发】节点的Webhook地址填入上述FastGPT工作流【飞书机器人webhook】节点的hook_url中。
实现这个自动化工具后,你的飞书相关群组每天将会收到类似下图的Issues总结:
通过本文的教程,大家应该可以发现,一般情况下根本不需要自己写大量代码,只需要拖拉拽一些预设模块,就能让AI应用跑起来。即使是总结GitHub Issues这样比较复杂的方案,也只需要编写少量的JS代码即可完成工作。
如果你连一点点代码都不想写,那也没问题,只需要导入我分享的工作流就可以了。
工作流导入方式:将鼠标指针悬停在新建的工作流左上方标题处,然后点击【导入配置】
完整工作流:https://pan.quark.cn/s/019132869eca