iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Software Development

AI 驅動的 Code Review:MCP 與 n8n 自動化實踐系列 第 22

[Day 22] 團隊使用 n8n + AI + API 做 Code Review 的最終方案:Discussion API 實戰 (下)

  • 分享至 

  • xImage
  •  

團隊使用 n8n + AI + API 做 Code Review 的最終方案:Discussion API 實戰(下)

前言

經過兩篇的節點設計,今天會完成最後的幾個步驟,並實際查看最終成效。

雙重留言機制設計

步驟 8:條件判斷 (If 節點)

https://ithelp.ithome.com.tw/upload/images/20250923/201214993U8BJvmITu.png

條件判斷流程

我們設計了一個 if 判斷路由,根據 AI 分析結果決定使用哪種留言方式:

  • 有具體問題:使用 Discussion API 進行精確行級留言
  • 無具體問題:使用 Note API 進行概括性總結留言

步驟 9:雙軌 API 調用實作

https://ithelp.ithome.com.tw/upload/images/20250923/20121499zz710l8yPz.png

Note API 路徑 (HTTP Requst 節點)

當沒有具體程式碼問題需要討論時,使用 Note API 提供整體性的審查總結:

Note API 設定

使用場景:

  • 所有檔案都評估為 "no problem"
  • 提供整體性的審查確認
  • 讓開發者知道程式碼已經過 AI 審查

Discussion API 路徑

1. To Items 資料準備 (程式節點)

由於需要為每個有問題的檔案分別調用 Discussion API,我們使用 "To Items" 程式節點
轉為清單進行資料轉換:

const projectId = $node["get diff"].json["project_id"];
const iid = $node["get diff"].json["iid"];

let result = $input.first().json.discussions.map((discussion) => {
  return {
    ...discussion,
    projectId,
    iid
  }
});

return result;

2. Discussion API 調用 (HTTP Requst 節點)

Discussion API 設定

關鍵特性:

  • 批次處理:自動為每個問題檔案創建獨立的討論
  • 精確定位:每個討論都準確定位到程式碼的具體行數
  • 結構化回饋:包含問題分類、風險等級和具體建議

實際執行成果展示

場景一:發現問題的情況

有問題檔案的討論展示

功能特色:

  • 只有真正存在問題的檔案才會產生討論
  • 每個問題都精確標註在對應的程式碼行
  • 提供詳細的問題分析和改進建議
  • 根據風險等級使用不同的視覺標示

場景二:無問題的情況

無問題的總結留言

設計理念:

  • 即使沒有具體問題,也要給開發者明確的反饋
  • 使用 Note API 提供整體的審查確認
  • 避免產生不必要的行級討論
  • 保持 MR 介面的清潔

總結

這套 Discussion API 代表了我們在 Code Review 自動化使用方案。通過精心設計的 AI Prompt、資料解析、靈活的留言策略,打造了貼近團隊使用的 Code Review 自動化系統。

在未來的文章中,我們將進一步探討權限控管、四種方案比較、Prompt 最佳實踐、n8n 工具小撇步、以及團隊導入等資訊。


上一篇
[Day 21] 團隊使用 n8n + AI + API 做 Code Review 的最終方案:Discussion API 實戰 (中)
系列文
AI 驅動的 Code Review:MCP 與 n8n 自動化實踐22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言