GitHub Copilot CLI 是一款 AI 編碼代理程式,能將支援的 Windows 用戶端的模型請求傳送到託管於 Windows Server 上的 OpenAI 相容推論端點。 此配置允許您從終端機使用組織託管模型,而 Windows Server 則集中管理模型主機與運算。
本文將教你如何配置客戶端連線,並驗證已設定的模型是否有回應。 它不會部署或保護推理服務。
Prerequisites
- 一台執行 GitHub Copilot CLI 支援的 Windows 版本的用戶端電腦,具備以下功能:
- PowerShell 6 或更新版本。
- Windows 封裝管理員(WinGet)。
- 有效的 GitHub Copilot 訂閱。 若組織或企業提供您的訂閱,其管理員必須允許 GitHub Copilot CLI。
- 一個可信的工作目錄,用來啟動 GitHub Copilot CLI。
- Windows Server 上既有的、與 OpenAI 相容的端點,具備:
- 可從用戶端電腦存取。
- 需要驗證。 此程序適用於遠端 Windows Server 連線。 在非此程序的迴圈情境下,將未驗證的端點保留。
- 它只監聽預期伺服器網路介面,只允許來自授權客戶端電腦或子網的入站連線,且不接受來自公共網際網路的直接連線。
- 支援串流以及工具呼叫或函數呼叫功能。 僅有 OpenAI 相容性並不保證支援所有 GitHub Copilot CLI 功能。 用端點操作員驗證端點及所選模型能力。
- Windows 用戶端與 Windows Server 之間的網路連線,具備:
- 可從用戶端電腦解析的 Windows Server 推論端點 DNS 名稱。
- 網路路由與防火牆規則,允許只有授權的用戶端或子網連接端點埠。
- 客戶端信任且主體名稱或主體替代名稱與端點 DNS 名稱相符的 HTTPS 憑證。
- 端點基底 URL,例如
https://inference.contoso.com/v1。 - 端點操作員指定的端點憑證與認證類型。
安裝 GitHub Copilot CLI
開啟 PowerShell。
安裝穩定的 GitHub Copilot CLI 套件:
winget install GitHub.Copilot確認安裝成功:
copilot --version該指令會回傳已安裝的 GitHub Copilot CLI 版本。
從 Windows Server 推論端點取得模型 ID
設定端點操作員提供的基礎網址:
$BaseUrl = 'https://inference.contoso.com/v1'輸入端點操作員指定的 API 金鑰或承載令牌。 使用短暫且權限最低的憑證。 當您的組織提供核准的秘密儲存指令時,請用它來取得該憑證,而非直接輸入。 以下指令將該
SecureString值轉換為明文$endpointCredential值,該值會保留在本 PowerShell 會話中儲存在記憶體中。$secureEndpointCredential = Read-Host 'Enter the endpoint credential' -AsSecureString $endpointCredential = [System.Net.NetworkCredential]::new('', $secureEndpointCredential).Password將
GET請求傳送至$BaseUrl/models。 在Authorization: Bearer標頭中包含$endpointCredential,並從回應的data陣列中讀取各個模型 ID:$requestParameters = @{ Uri = "$BaseUrl/models" Method = 'Get' } try { $requestParameters.Headers = @{ Authorization = "Bearer $endpointCredential" } $models = Invoke-RestMethod @requestParameters $models.data | Select-Object -ExpandProperty id } finally { $requestParameters.Headers = $null }指令會回傳一個或多個型號 ID。 複製支援串流及工具或函式呼叫的模型的精確 ID。
配置 GitHub Copilot CLI 提供者與模型
設定
$BaseUrl為 Windows Server 端點的基底 URL,並$endpointCredential設定為其 API 金鑰或承載標記。 在同一個 PowerShell 工作階段中,設定提供者類型、端點基址 URL 和精確的模型 ID。 用 Windows Server 端點回傳的 ID 來取代<MODEL_ID>。$env:COPILOT_PROVIDER_TYPE = 'openai' $env:COPILOT_PROVIDER_BASE_URL = $BaseUrl $env:COPILOT_MODEL = '<MODEL_ID>'提供者
openai類型支援與 OpenAI 相容的端點,包括 vLLM。清除目前 PowerShell 會話繼承的任何提供者認證變數:
Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue設定端點操作員指定的認證方法:
對於標準的 OpenAI API 金鑰驗證,只要有可用的組織核准秘密儲存區指令,請使用:
$env:COPILOT_PROVIDER_API_KEY_COMMAND = '<APPROVED_SECRET_STORE_COMMAND>'指令必須從核准的秘密儲存庫取得憑證,僅輸出憑證,且不得記錄或持久化。
COPILOT_PROVIDER_API_KEY_COMMAND優先於COPILOT_PROVIDER_API_KEY。若無核准的秘密儲存指令可用,請直接將 API 金鑰設為當前 PowerShell 會話的短暫備用:
$env:COPILOT_PROVIDER_API_KEY = $endpointCredential對於持有人-令牌認證,請設定持有人令牌:
$env:COPILOT_PROVIDER_BEARER_TOKEN = $endpointCredential
Important
不要在腳本、原始碼控制或指令範例中放入 API 金鑰。
copilot而它啟動的任何程序都會繼承提供者認證環境的變數。 使用短效、最低權限的憑證,並在退出 GitHub Copilot CLI 後移除變數。檢視你已安裝版本中支援的提供者變數:
copilot help providers
啟動並驗證 GitHub Copilot CLI
切換到你信任的檔案目錄:
Set-Location 'C:\path\to\trusted-project'
Important
如果你在開始 copilot前停止,或先前的指令失敗,請移除提供者認證變數、清除請求標頭,並在關閉 PowerShell 前處理安全憑證:
if ($requestParameters) {
$requestParameters.Headers = $null
}
Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue
if ($secureEndpointCredential) {
$secureEndpointCredential.Dispose()
}
清理完成後關閉 PowerShell 會話。 不可變的明文字 $endpointCredential 串會一直留在記憶體中,直到程序退出。
啟動 GitHub Copilot CLI,並在
try區塊中執行驗證步驟,讓 PowerShell 在您結束時或命令失敗時移除提供者驗證環境變數,並釋放SecureString值:try { copilot } finally { if ($requestParameters) { $requestParameters.Headers = $null } Remove-Item Env:COPILOT_PROVIDER_API_KEY, Env:COPILOT_PROVIDER_BEARER_TOKEN, Env:COPILOT_PROVIDER_API_KEY_COMMAND -ErrorAction SilentlyContinue if ($secureEndpointCredential) { $secureEndpointCredential.Dispose() } }確認「受信任目錄」提示訊息。 只有在你能控制該目錄的內容,且預期它會持續維持為可信任時,才在未來的工作階段中信任該目錄。
如果 GitHub Copilot CLI 提示你,輸入
/login並依照指示驗證 GitHub。 GitHub 認證與驗證推論端點的 API 金鑰是分開的。請輸入這個測試提示:
Reply with exactly: Local inference test succeededWindows Server端點上的配置模型會回傳
Local inference test succeeded,且不會有提供者、認證或模型相容性錯誤。 當你退出 GitHub Copilot CLI 後,PowerShell 會執行該finally區塊。 PowerShell 無法可靠地從記憶體中抹除不可變的明文$endpointCredential字串,因此指令完成後關閉 PowerShell 會話以釋放程序記憶體。
故障排除 GitHub Copilot CLI 與 Windows Server 推論端點的連線
| 問題 | 要檢查的事項 |
|---|---|
| 模型請求無法抵達端點 | 驗證端點基礎 URL、DNS 解析、埠口、網路路由、服務狀態及 TLS 憑證信任度。 基礎 URL 應包含端點運算元提供的 API 前綴,例如 /v1。 |
模型要求會返回 401 或 403 |
確認憑證的有效性。 對於 API 金鑰認證,建議 COPILOT_PROVIDER_API_KEY_COMMAND 使用核准的秘密儲存指令。
COPILOT_PROVIDER_API_KEY只當作短暫的備用方案使用。 對於 Bearer Token 驗證,請依照端點操作人員的指定設定 COPILOT_PROVIDER_BEARER_TOKEN。 |
| GitHub Copilot CLI 使用不同的提供者或模型 | 在同一個啟動 copilot的 PowerShell 會話中設定提供者類型、基本網址、模型,並選擇了認證變數。 使用端點回傳的精確模型 ID。 另請檢查 $HOME\.copilot\providers.json;該檔案中的提供者或模型宣告優先於 COPILOT_PROVIDER_* 變數。 |
| GitHub Copilot CLI 找不到該模型 | 再次查詢 $BaseUrl/models ,並將該 COPILOT_MODEL 值與 id 端點回傳的數值(包括大小寫與標點符號)進行比較。 |
| 當端點接受請求後,提示符會失敗 | 確認模型和端點同時支援串流以及工具或函式呼叫。 檢查端點日誌中是否有不支援的請求欄位、工具架構、上下文限制或回應格式。 |