GitHub Copilot 編碼代理
GitHub Copilot 編碼代理是一個由 GitHub 託管的自主 AI 開發人員,它在後臺獨立工作以完成開發任務。要呼叫編碼代理,可以將 GitHub 問題分配給 Copilot 或從聊天中委派任務,代理將利用其獨立的開發環境,自主地在你的程式碼倉庫中實現功能、修復錯誤並進行更改。
這不同於 VS Code 中的代理模式,後者在編輯器內提供互動式開發,並需要在編碼會話期間你的積極參與。
Copilot 編碼代理處於預覽階段,可能會發生變化。在預覽期間,使用此功能需遵守 GitHub 預釋出許可條款。
工作原理
Copilot 編碼代理工作流
- 分配:你將 GitHub 問題分配給
@copilot
、從 VS Code 聊天中委派任務,或使用 TODO 程式碼操作 - 分析:代理分析任務和你的程式碼倉庫結構
- 開發:Copilot 在其獨立的 GitHub Actions 環境中工作,它可以
- 探索你的程式碼庫
- 跨多個檔案進行更改
- 執行構建和測試
- 執行 linter 和其他自動化檢查
- 拉取請求:代理建立一個包含實現內容的拉取請求
- 審查:你審查更改,並可以透過 PR 評論請求修改
- 迭代:代理響應反饋並更新實現
先決條件
在使用 Copilot 編碼代理之前,你需要
- GitHub Copilot 訂閱:適用於 Copilot Pro、Pro+、Business 或 Enterprise 計劃
- 寫入許可權:你必須擁有程式碼倉庫的寫入許可權
- 啟用代理:必須為你的帳戶或組織啟用 Copilot 編碼代理
- VS Code 設定:安裝 GitHub Pull Requests 擴充套件
確保你已使用正確的 GitHub 帳戶登入到 GitHub Pull Request 擴充套件。
可選:啟用實驗性設定 githubPullRequests.codingAgent.uiIntegration,以在 Copilot Chat 中顯示一個委派給編碼代理按鈕,從而更輕鬆地委派任務。
你還可以透過啟用實驗性設定 chat.agentSessionsViewLocation,從一個專用的聊天編輯器管理編碼代理會話,並檢視一個聊天會話檢視。
如果你還沒有 Copilot 訪問許可權,可以註冊 Copilot 免費計劃以獲得每月的互動次數限制。
在 VS Code 中為 Copilot 編碼代理分配工作
方法 1:將問題分配給 Copilot
你可以透過將 GitHub 問題分配給 Copilot 來觸發 Copilot 編碼代理,這與你將問題分配給團隊成員的方式類似。Copilot 編碼代理會自動分析問題並開始處理它。
-
在 GitHub Pull Requests 檢視中,導航到問題部分
-
找到你想分配給 Copilot 的問題
-
右鍵單擊問題並選擇分配給 Copilot,或選擇分配然後選擇
@copilot
提示你也可以直接在 GitHub.com 上將問題分配給
@copilot
。編碼代理將以同樣的方式工作,建立一個拉取請求,然後你可以在 VS Code 或 GitHub 上進行審查。 -
代理將在後臺開始處理該問題
-
在 VS Code 中開啟聊天檢視 (⌃⌘I (Windows、Linux 為 Ctrl+Alt+I))
方法 2:從聊天中委派
你也可以直接從聊天對話中將工作交給 Copilot 編碼代理。你可以將任務委派給編碼代理,讓它在後臺自主工作,而不是讓代理模式立即在你的編輯器中實現更改。
-
在 VS Code 中開啟聊天檢視 (⌃⌘I (Windows、Linux 為 Ctrl+Alt+I))
-
就你想要實現的功能或更改進行對話
-
準備就緒後,使用以下方法之一委派給代理
使用委派按鈕(實驗性)
啟用實驗性設定 githubPullRequests.codingAgent.uiIntegration,為已啟用代理的程式碼倉庫,在聊天檢視中顯示一個委派給編碼代理按鈕。選擇此按鈕可將你當前的聊天上下文交給編碼代理。
當你委派任務時,包括檔案引用在內的額外上下文將被轉發給編碼代理,使你能夠為編碼代理精確規劃要完成的任務。一個新的聊天編輯器會開啟,即時顯示編碼代理的進度。
使用 #copilotCodingAgent 工具
你也可以在提示中直接引用
#copilotCodingAgent
工具,要求 Copilot 在後臺繼續本地的更改。此工具會自動將待處理的更改推送到遠端分支,併發起一個編碼代理會話 -
代理將建立一個拉取請求並開始實施討論的更改。當你啟動一個編碼代理會話時(透過
#copilotCodingAgent
或使用委派給編碼代理操作),拉取請求會在聊天檢視中以卡片形式呈現。
方法 3:使用編碼代理修復 TODO
現在,程式碼中以 TODO
開頭的註釋會顯示一個程式碼操作,以快速啟動一個編碼代理會話。這提供了一種直接從程式碼中委派特定任務的便捷方式。
TODO
關鍵字可透過 githubIssues.createIssueTriggers 設定進行配置。你可以自定義哪些註釋關鍵字會觸發編碼代理的程式碼操作。
-
導航到程式碼中的
TODO
註釋 -
尋找燈泡圖示或使用 ⌘. (Windows、Linux 為 Ctrl+.) 開啟快速修復選單
-
從可用的程式碼操作中選擇委派給編碼代理
-
編碼代理將分析 TODO 註釋,並在一個新的拉取請求中實現所請求的更改
跟蹤代理進度
理解編碼代理的工作流
當你將工作分配給 Copilot 編碼代理時,它會遵循一個特定的工作流,這可能與你的預期有所不同
-
初始拉取請求建立:代理會立即建立一個帶有一個初始空提交的拉取請求。這建立了所有更改都將在其中進行的工作區和分支。
-
後臺處理:編碼代理在 GitHub 的雲基礎設施(GitHub Actions 環境)中工作,而不是在你的本地機器上。這意味著
- 所有開發都在 GitHub 的伺服器上遠端進行
- 代理可以訪問完整的程式碼倉庫上下文
- 即使你關閉 VS Code,工作也會繼續
-
增量更新:在初始提交之後,代理將在開發解決方案的過程中推送包含實際程式碼更改的額外提交。
如果你看到一個沒有更改的初始提交,這是預期行為。代理將在後續的提交中繼續推送實際的程式碼更改,因為它正在處理你的任務。
在 VS Code 中監控工作
GitHub Pull Requests 擴充套件提供了一個專用的由 Copilot 代表我部分,顯示
- 所有活動的 Copilot 編碼代理會話
- 由代理建立的拉取請求
- 每個任務的進度狀態
- 指示新更改或更新的數字徽章
你也可以透過 GitHub.com 監控你分配給 @copilot
的工作——無論你在哪裡發起它們,所有活動的會話和拉取請求都將出現在此部分。
檢視詳細的會話日誌
-
在拉取請求檢視中,在由 Copilot 代表我下找到你的代理的工作
-
選擇檢視會話以檢視代理所做的一切的詳細日誌
- 執行的命令
- 修改的檔案
- 執行的測試
- 決策過程
使用專用聊天編輯器管理會話(實驗性)
你可以從一個專用的聊天編輯器管理編碼代理會話,這使你能夠
- 即時關注編碼代理的進度
- 直接從聊天中提供後續指令
- 在專用環境中檢視代理的響應
- 直接從聊天編輯器檢視或應用程式碼更改並簽出拉取請求
- 體驗從本地聊天到 GitHub 代理任務的無縫過渡,具有更好的連續性
- 受益於更好的會話渲染,視覺清晰度更高
- 享受更快的會話載入,獲得更響應的體驗
啟用實驗性設定 chat.agentSessionsViewLocation 來嘗試此功能
-
當設定為
view
時,你將在 VS Code 側邊欄看到一個聊天會話檢視,用於管理本地和編碼代理會話。該檢視現在包含帶有詳細上下文的豐富描述,以幫助你快速找到相關資訊。 -
當設定為
showChatsMenu
時,編碼代理會話會與本地聊天曆史記錄一起出現
當你啟動會話時,由編碼代理建立的拉取請求也會在聊天檢視中以卡片形式呈現,提供更好的視覺整合。
改進的委派體驗
從 VS Code 到 GitHub 編碼代理的委派體驗在最近的更新中得到了顯著增強
- 更好的上下文轉發:當你從聊天中委派任務時,包括檔案引用在內的額外上下文會自動轉發給 GitHub 編碼代理
- 即時進度:新的聊天編輯器開啟,即時顯示編碼代理的進度
- 無縫過渡:從本地聊天轉移到 GitHub 代理任務時,連續性得到改善
- 增強的視覺整合:拉取請求在聊天檢視中以互動式卡片的形式呈現,以便更好地導航
這些改進使得為編碼代理精確規劃任務並在不離開 VS Code 的情況下監控其進度變得更加容易。
取消正在執行的會話
如果你需要停止代理,可以留在 VS Code 中,並使用 PR 概覽頁面上的取消編碼代理按鈕。
你也可以從 GitHub.com 取消會話
- 在 GitHub.com 上轉到你的 GitHub 程式碼倉庫
- 導航到 Actions 選項卡
- 找到正在執行的 Copilot 編碼代理工作流
- 選擇取消工作流
審查和迭代
工作完成
在 Copilot 編碼代理分析了你的程式碼並確定了完成任務所需的更改後,它會執行以下步驟
- 建立一個包含所有更改的拉取請求
- 將 PR 分配給你進行審查
- 請求你作為審查者
- 包含一個解釋實現的詳細描述
- 在適用時新增螢幕截圖(用於 UI 更改)
提供反饋
你可以透過拉取請求評論來指導代理的工作。確保在你的評論中標記 @copilot
,這樣代理才會響應
-
請求更改:留下關於需要修改內容的具體反饋
@copilot Please update the login form to include password strength validation
-
請求改進:要求增加功能或進行最佳化
@copilot Can you add error handling for network timeouts?
代理將響應你的反饋,進行所請求的更改,並更新拉取請求。
當處理由編碼代理建立的拉取請求時,#activePullRequest
工具會自動為你的聊天會話啟用。這為聊天提供了關於你的 PR 的上下文,包括哪些檔案被更改、分配給誰以及狀態(草稿或準備審查)。然後你可以在聊天中詢問關於此 PR 的問題並進一步迭代。
常見問題
Copilot 編碼代理和代理模式有什麼區別?
VS Code 提供兩種自主編碼體驗。代理模式直接在編輯器內提供互動式開發,而 Copilot 編碼代理則在 GitHub 上獨立工作,在後臺實現功能。
功能 | Copilot 編碼代理 | 代理模式 |
---|---|---|
執行位置 | GitHub 雲 | 你的 VS Code 編輯器 |
獨立性 | 完全自主 | 涉及使用者互動和迭代 |
輸出 | 建立拉取請求 | 直接編輯檔案 |
最適合 | 定義明確的任務、後臺工作 | 互動式開發、即時反饋 |
在其文件中瞭解更多關於代理模式的資訊。
為什麼代理沒有啟動?
- 驗證你 GitHub 帳戶的 Copilot 訪問許可權
- 確保你對程式碼倉庫有寫入許可權
- 檢查是否為你的組織啟用了 Copilot 編碼代理
為什麼初始提交顯示為空?
當 Copilot 編碼代理開始工作時,它會建立一個初始的空提交來建立拉取請求和工作分支。這是預期行為——代理將在 GitHub 的雲環境中工作時,在後續的提交中推送實際的程式碼更改。
你可以透過拉取請求、GitHub Pull Request 擴充套件的由 Copilot 代表我部分或聊天會話檢視訪問會話日誌來監控進度。
為什麼實現不完整?
- 審查會話日誌以查詢遇到的任何錯誤
- 檢查代理工作期間測試是否失敗
- 在你的問題描述中提供更詳細的要求
Copilot 編碼代理有哪些安全保護措施?
Copilot 編碼代理包含內建的安全保護,並在 GitHub 的安全框架內執行。有關安全措施、許可權和分支保護相容性的詳細資訊,請參閱 GitHub Copilot 編碼代理安全文件。
我可以使用外部工具擴充套件 Copilot 編碼代理嗎?
對於高階場景,你可以使用模型上下文協議 (MCP) 伺服器擴充套件 Copilot 編碼代理,使其能夠訪問
- 外部資料庫
- 雲服務
- API 和第三方整合
- 自定義開發工具
瞭解更多關於使用 MCP 擴充套件 Copilot 編碼代理的資訊。
當前有哪些限制?
- 跨程式碼倉庫更改:只能在分配問題的程式碼倉庫內工作
- 每個任務多個 PR:每個分配的任務只打開一個拉取請求
- 修改現有 PR:不能處理非其建立的拉取請求
有關限制、相容性和使用成本的詳細資訊,請參閱 GitHub Copilot 編碼代理文件。
後續步驟
- 按照 GitHub 設定指南啟用 Copilot 編碼代理
- 嘗試 VS Code 中的代理模式以獲得即時、互動式的編碼輔助
- 瞭解在 VS Code 中使用聊天以獲得對話式 AI 幫助