如今任何專案開發節奏都很快,及時掌握專案動態是很重要滴,GitHub Issues 一般都是開發者和使用者反饋問題的主要渠道。
然而,隨著 Issue 數量的增加,及時跟進每一個問題會變得越來越困難。
為了解決這個痛點,我們開發了一個自動化 Issue 總結機器人,它的功能很簡單:
- 自動獲取專案最新的 GitHub Issues;
- 智慧總結 Issues 內容;
- 將總結推送到指定的飛書群。
接下來我會提供詳細的操作步驟,一步步實現這個機器人。
話不多說,拿起鍵盤,開始教學 ~
GitHub API 介紹
GitHub 提供了強大的 API 讓我們能夠輕鬆獲取 Issues 資訊。我們將使用以下介面來獲取某個 repo 的 Issues:
- https://api.github.com/repos/{owner}/{repo}/issues
這個介面預設返回最近的 30 條 Issues。
可以參考 Github 的 API 文件以獲得更多的資訊。
FastGPT 介紹
FastGPT 是一個能讓 AI 開發門檻大幅降低的工具。不管你是有技術背景的開發者,還是隻是對 AI 感興趣的小白,FastGPT 都能幫你輕鬆入門,甚至可以讓你在幾分鐘內構建出一個屬於自己的 AI 應用。
傳統的 AI 開發,你需要掌握程式設計、演算法、資料處理等複雜技能。但是使用 FastGPT,你只需要簡單幾步就能啟動一個 AI 應用。打個比方,傳統的 AI 開發就像是你自己動手蓋一棟房子,不但需要磚頭、瓦片,還得有設計圖紙;而 FastGPT 更像是搭積木,你只需選好模組,幾塊拼起來,房子就能立刻成型。
本文就會教大家如何使用 FastGPT 工作流來一步一步實現這個機器人。
FastGPT 工作流搭建過程
首先我們要登入 FastGPT 並新建一個工作流:
名字就叫 GitHub Issue 總結機器人吧。
然後開始一步一步新增節點。接下來開始對工作流進行拆解並詳細講解。
1. 構造查詢範圍
首先我們需要以當前時間節點為基準,獲取 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`,
}
}
2. 利用 GitHub API 獲取 Issues
這一步我們將使用【HTTP 請求】節點來訪問 GitHub API 來獲取指定專案過去 24 小時內的 Issues。
這裡以 FastGPT 專案為例。
3. 處理 API 響應資料
獲取到原始資料後,我們需要對其進行處理,提取出我們需要的資訊。同樣使用【程式碼執行】節點。
完整程式碼如下:
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,所以我們只能在程式碼裡面過濾。
4. 使用大語言模型總結內容
為了生成高質量的摘要,我們使用大語言模型來處理和總結 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 的要點。
5. 飛書 Webhook 設定
使用飛書機器人的 Webhook URL,我們可以將總結後的內容推送到指定的飛書群。這一步需要用到【飛書機器人 webhook】節點。
這裡的 hook_url 我們將在下一步告訴大家如何獲取。
6. 建立並設定飛書機器人
首先需要訪問飛書機器人助手頁面,然後新建一個機器人應用 --> 建立一個流程。
其中 Webhook 觸發節點的引數如下:
{"content":{"text":"test"}}
下面一個節點選擇【傳送飛書訊息】,選擇傳送物件為群訊息,並指定群組,自定義一個訊息標題。
然後在【訊息內容】中點選“加號”,選擇 Webhook 觸發 --> content.text。
最終儲存啟用,等待管理員稽核透過即可。
稽核透過後,將【Webhook 觸發】節點的 Webhook 地址填入上述 FastGPT 工作流【飛書機器人 webhook】節點的 hook_url
中。
最終效果
實現這個自動化工具後,你的飛書相關群組每天將會收到類似下圖的 Issues 總結:
總結
透過本文的教程,大家應該可以發現,一般情況下根本不需要自己寫大量程式碼,只需要拖拉拽一些預設模組,就能讓 AI 應用跑起來。即使是總結 GitHub Issues 這樣比較複雜的方案,也只需要編寫少量的 JS 程式碼即可完成工作。
如果你連一點點程式碼都不想寫,那也沒問題,只需要匯入我分享的工作流就可以了。
工作流匯入方式:將滑鼠指標懸停在新建的工作流左上方標題處,然後點選【匯入配置】
完整工作流:https://pan.quark.cn/s/019132869eca