從 GitHub PR 與 Control Center 對話
本指南說明如何在不用離開 GitHub 的情況下使用 Control Center:從 PR 頁面 要求 AI 審查、在評論中向機械人提問,並在它的審查討論串中延續對話。
這個機械人就是你伺服器自己的 GitHub App —— 也就是已經負責讓人登入和執行背景工作的那一個。無需註冊任何新東西,也沒有 任何東西必須能從互聯網連到:伺服器以輪詢方式探索 GitHub 上說了些甚麼,所以 位於 NAT 後方的筆記型電腦,行為與公開部署完全相同。
開始之前
標題為「開始之前」的章節- 伺服器已註冊並安裝它的 GitHub App,並具備 Pull requests: read and write(用於評論、討論串和表情反應)與 Issues: read(用於評論搜尋)。兩者都已在該指南的權限清單中
- 該程式庫已連結到 Control Center 中的一個工作區
- 沒有 webhook URL、沒有通道、沒有回呼 —— 網絡方面沒有任何東西需要設定
尋找你的機械人名稱
標題為「尋找你的機械人名稱」的章節機械人的登入名稱是 <appslug>[bot],其中 appslug 是你註冊應用程式時
給它的名稱。
- 前往 設定 → 伺服器 → 單一登入,捲動到供應商應用卡片
- 展開 GitHub 區塊,然後按測試
- 當 機械人登入名填好後複製它。如果它仍顯示空白提示,登入名稱一律是
<appslug>[bot]—— 直接輸入它,或使用簡短的@appslug
GitHub 的 @ 自動完成不提供應用程式帳戶,所以登入名稱必須手動輸入 ——
這正是設定卡片讓你可以一按複製的原因。[bot] 後綴是可選的:@myapp 和
@myapp[bot] 都能觸及機械人。
從 GitHub 要求審查
標題為「從 GitHub 要求審查」的章節有兩種方式,兩者都會啟動與 詢問 AI 按鈕相同的預先植入 pr_review 管線:
- 為 PR 加上
ai-review標籤。這是 GitHub 所能提供、最接近把機械人指派為 審查者的做法 —— 應用程式帳戶無法佔用原生的「要求審查者」欄位。沒有評論 可供回應,所以 GitHub 上不會發佈任何內容;審查會在 Control Center 中啟動 - 在 PR 對話中評論
@myapp review(或只輸入@myapp)。機械人會以 👀 回應,然後在審查開始時回覆(或告知已有一個正在執行)
審查者會在該 PR 的審查空間中工作;閱讀與發佈發現項的方式與 使用 AI 輔助審查相同。發佈回 GitHub 仍然是由你 在 Control Center 所作的決定 —— 從 GitHub 啟動審查,本身不會向 GitHub 發佈任何內容。
該標籤每個 PR 只觸發一次:加上它就是提出要求,而移除後重新加上並不會 重新觸發它。若要再次執行審查 —— 例如在一次 push 之後 —— 請提及機械人。
提出問題
標題為「提出問題」的章節在 PR 對話中評論:
@myapp why does the flaky test in runner_test.dart fail on CI but not locally?依序會發生以下事情:
- 機械人會以 👀 回應,讓你知道評論已被看到
- 問題會以你的身分發佈到該 PR 的審查空間 —— 歸屬方式與你在 Control Center 中輸入完全相同
- 一個代理會在空間中回答,而答案會以 @提及你的評論形式發佈回 PR
在尚未有審查的 PR 上提問,會喚醒該工作區的 CEO 代理;一旦審查執行過, 則由最後發言的代理回答,所以後續追問會落到掌握上下文的那一位身上。
在審查討論串中跟進
標題為「在審查討論串中跟進」的章節在機械人參與的行內審查討論串中回覆 —— 它留下的 diff 評論,或它在該 討論串中發佈的答案。無需提及;討論串本身就是定址:
> @myapp the retry loop looks O(n²) to me
what would the complexity be with the bounded queue instead?多輪對話的運作方式相同:每次回覆都是同一則對話中的另一個問題,並以審查 空間作為上下文,而答案會回到該討論串中。
在 PR 對話時間軸上的後續追問是一則新的頂層評論,所以仍然需要 @提及。
機械人與誰對話
標題為「機械人與誰對話」的章節一則 GitHub 評論送達時,所帶的幾乎只有登入名稱,所以機械人會在做任何事 之前先解析作者:
- 你的 GitHub 帳戶必須連結到你在 Control Center 中的身分 —— 從 設定 → 工作區 → 個人資料與身分 → 程式碼託管 以 GitHub 登入,或貼上權杖
- 你必須是具備寫入角色的成員(
member、admin或owner),且隸屬於 連結該程式庫的工作區
其他任何人只會收到一則禮貌的回覆,說明缺少了甚麼 —— 未知的登入名稱
(未連結,或已連結但不是此處的成員)與唯讀角色是兩種情況 —— 而他們的話
永遠不會進入工作區。ai-review 標籤不受這道關卡限制:它沒有作者,所以會
在已經連結該程式庫的工作區中啟動審查。
預期會發生甚麼
標題為「預期會發生甚麼」的章節| 項目 | 行為 |
|---|---|
| 確認 | 評論會在大約一分鐘內出現 👀 —— 即掃描週期。ai-review 標籤沒有評論可供回應 |
| 答案 | 以機械人(應用程式)身分發佈,並出現在問題所提出的同一條渠道上 |
| 空間內歸屬 | 問題屬於你;代理代表你執行,並遵循該空間的自主程度設定 |
| 審查 | 發現項會落在審查空間;發佈到 GitHub 則需手動進行 |
大約一分鐘的延遲,換來的是完全不需要任何入站網絡存取。掃描沒有任何急迫 之處,而伺服器離線期間也不會遺失任何東西 —— 停機期間到達的評論會在下一次 掃描時被捕捉到。
疑難排解
標題為「疑難排解」的章節提及機械人的評論沒有任何反應。
- 應用程式是否已安裝在擁有該程式庫的帳戶上,而且該程式庫已連結到 工作區?未連結的程式庫會在記錄任何東西之前被略過,所以稍後再連結仍然 會送達
- 你的 GitHub 帳戶是否已連結,而你是否是具備寫入角色的成員?請查看 PR 上 機械人的拒絕回覆 —— 它會說明是哪一種
- 仍然沒有反應?當有東西失敗時,伺服器日誌會寫出掃描和 PR;請尋找
pr_conversation:(輪詢器)和github_pr_conversation:(橋接)
該標籤沒有啟動審查。
它每個 PR 只觸發一次。如果審查已經執行過,或標籤是在伺服器首次看到該 PR
之前加上的(第一次掃描會靜靜記錄積壓項目,而不是向它蜂擁而上),請改為
提及機械人 —— 除非已有審查正在進行,否則 @myapp review 一定會啟動一次。
機械人的答案一直沒有出現在 GitHub 上。
答案本身永遠不會遺失 —— 它就在 Control Center 中該 PR 的審查空間裏。發佈 失敗(GitHub 故障、權限變更)會被記錄下來,而且不會重試該回覆;如果這件事 要緊,請在討論串中再問一次。
相關指南
標題為「相關指南」的章節- 建立 GitHub App:機械人所從出的註冊
- 使用 AI 輔助審查:閱讀由提及啟動的審查所 產生的發現項
- 設定 GitHub 整合:連結你自己的 GitHub 帳戶,機械人正是以此解析你的身分
- 使用空間:以上一切所降落的房間