所有頁面
本頁內容

GitHub Copilot

GitHub Copilot 是 OAR 一開始就有的供應商:它永遠可用,並使用中繼主機上已登入的 Copilot CLI。中繼會以兩種引擎之一執行它。SDK 引擎是預設,提供導正、背景任務面板和多選提問。擴充功能引擎則在你可以觀看的終端機中執行真正的 Copilot CLI。

使用你自己金鑰的 OpenAI 也在這兩種引擎上執行,所以本頁的引擎章節同樣適用於它。它的金鑰和模型請見 OpenAI 頁面。

你需要什麼 #

  • 中繼主機上已登入的 Copilot CLI。 用 npm install -g @github/copilot 安裝,執行一次 copilot 並登入。你的 GitHub 帳戶需要有包含 Copilot CLI 的 Copilot 方案。
  • 安裝或升級 CLI 後重新啟動中繼。 中繼在啟動時尋找 CLI 的 runtime,看不到之後才安裝的版本。
  • 已登入的 GitHub CLI(gh),供 oar copilot、Windows 上的 擴充功能引擎 session,以及 Check Usage(檢查用量)中的 Copilot 卡片使用。
  • tmux(選用,Linux 和 macOS),如果你想用 🖥️ Inspect tmux console(檢視 tmux 主控台)觀看 session 的終端機。

中繼不會安裝或更新 Copilot CLI。在 Settings → Providers → Copilot(設定 → 供應商 → Copilot)中,頂端的 GitHub Copilot CLI 列只會回報它的狀態。

OAR 如何找到 CLI #

SDK 引擎驅動的是 Copilot CLI 隨附的 runtime。啟動時,中繼會在 CLI 的套件快取中尋找,並採用其中最新的版本:

系統 資料夾
Linux ~/.cache/copilot/pkg 和 ~/.local/share/copilot/pkg
macOS ~/Library/Application Support/copilot/pkg
Windows %LOCALAPPDATA%\copilot\pkg

在 Linux 上,如果你設定了 XDG_CACHE_HOME 和 XDG_DATA_HOME,這兩個資料夾會隨之改變。設定 COPILOT_PKG_DIR 可以增加一個要搜尋的資料夾,設定 COPILOT_SDK_PATH 則可以直接指定 runtime 的 copilot-sdk 目錄。如果什麼都找不到,就無法使用 SDK 引擎(見選擇引擎)。

使用 oar copilot #

如果中繼的連接埠上沒有任何回應,oar copilot 會先在背景啟動中繼,然後在你的 shell 中開啟 Copilot CLI(gh copilot)。由它啟動的中繼會在 session 結束時再次停止。-- 之後的引數會傳給 gh copilot。

oar copilot
oar copilot --port 3400 -- --help

每次執行時,它也會在 ~/.copilot/extensions/web-relay/ 中寫入或更新一個小型包裝程式;這是使用者層級的全域擴充功能,負責把 OAR 的擴充功能載入 Copilot CLI。oar copilot --install-extension 只做這件事就結束(不需要 gh);--no-install-extension 則在單次執行中略過這一步。如果缺少 gh,oar copilot 會告訴你並停止;請安裝 GitHub CLI,或用 oar start 只執行中繼。

兩種引擎 #

SDK 引擎 擴充功能引擎
執行的內容 每個對話一個無介面 worker,驅動 Copilot CLI 隨附的 runtime 終端機 session 中的 Copilot CLI,並載入 OAR 的擴充功能
預設 是,自 0.9.2 起 中繼無法執行 SDK 引擎時使用
需要 已安裝並登入的 Copilot CLI 同左,Windows 上另需 gh
回合進行中送出的訊息 Steer(導正):訊息會進入執行中的回合 0.9.3 新增 在佇列中等待,直到回合結束
背景任務 列在輸入區的任務面板中,每個都有可用的 Stop(停止) 0.9.3 新增 不在面板中
多選提問 是:模型可以把提問標示為多選,選擇卡片也有 Select several(多選)開關 0.9.3 新增 一般選擇卡片上沒有。表單中接受多個值的欄位可以選多個
提問等待時間 8 小時 2 小時
🖥️ Inspect tmux console 顯示 worker 的記錄,而不是 Copilot 畫面 顯示即時的 Copilot 終端機(Linux 和 macOS,需有 tmux)
Agent 工具 relay_tool 是一個工具;至於 preview,agent 會被告知如何呼叫中繼的 preview API relay_tool 和 preview 透過 OAR 的 MCP 伺服器提供
中繼模式 原生的 plan 和 autopilot 模式;plan 會拒絕任何非唯讀的動作,ask 會在每個這類動作前詢問 只是提示中的指令
壓縮 runtime 在上下文視窗用到 80% 時於背景壓縮,到 95% 時會阻擋 OAR 不設定也不顯示
卡住回合監看 靜默 120 秒、模型請求期間 300 秒、工具執行期間 30 分鐘後讓回合失敗 回合以 2 小時為限;中繼判定 CLI 離線時有 45 秒的無活動時間窗
用量 在 Check Usage 的 Copilot 卡片中加上 Last SDK worker turn(SDK worker 的上一回合) 只有卡片上的帳戶用量計

兩種引擎顯示相同的對話紀錄、提問卡片、計畫看板、模型清單和每則回覆的用量行。Steer、Queue(加入佇列)和卡住回合的時間窗見回合與佇列;那幾列的說明見中繼模式和壓縮;提問卡片見 ask_user。

在 SDK 引擎上,Stop 只會結束回覆。回合啟動的背景 agent 會繼續執行,並在任務面板中各有自己的 Stop。

選擇引擎 #

這是整個中繼共用的一個設定:Settings → Providers → Copilot → Copilot engine(設定 → 供應商 → Copilot → Copilot 引擎),選項有 Extension(擴充功能)和 SDK — default(SDK — 預設)。變更後請按 Save Copilot settings(儲存 Copilot 設定)。

  • 設定會套用到之後才啟動 worker 的對話。已在執行的 session 會保留原本的引擎,直到它的 worker 重新啟動。
  • 如果沒有人儲存過選擇,中繼能用 SDK 時就用 SDK,不能時就用 Extension。你儲存的選擇永遠優先。儲存 SDK 也是如此:如果之後重新啟動時找不到 CLI,中繼不會自行切換回去,新對話的 worker 也無法啟動,直到再次找到 CLI 或你儲存 Extension 為止。
  • 面板會說明目前設定的是哪種引擎:New Copilot conversations run on the headless SDK worker. No tmux inspector for these sessions. 或 New Copilot conversations run on the Copilot CLI with the web-relay extension.

要判斷執行中的對話用的是哪種引擎,請看它的輸入區和 tmux 主控台。回合進行中,SDK 引擎的傳送按鈕顯示 Steer(當提問卡片或核准開啟、回合正在壓縮或工具呼叫正在執行時,會顯示 Queue),擴充功能引擎則一律顯示 Queue。只有 擴充功能引擎的 tmux 主控台會顯示 Copilot 畫面。對話本身沒有標示引擎。

儲存 SDK 遭拒時 #

如果中繼無法執行 SDK,就會拒絕儲存它,並在引擎說明的位置顯示原因。已儲存的設定不會改變,下拉選單也會回到中繼實際執行的引擎。

訊息開頭 該怎麼做
The Copilot SDK was not found when the relay started (COPILOT_SDK_PATH did not resolve) 中繼找不到 Copilot CLI 的 runtime。請安裝或升級 CLI,執行一次 copilot,然後重新啟動中繼。見 OAR 如何找到 CLI。
The SDK engine requires session worker routing, which is disabled on this relay (SESSION_WORKER_ROUTING_ENABLED) 在 Settings → Features(設定 → 功能)中重新開啟 Session worker routing(Session worker 路由)(預設為開啟),然後重新啟動中繼。

設定 #

在 Settings → Providers → Copilot 下:

控制項 預設 作用
GitHub Copilot CLI 狀態列。唯讀:這個 CLI 由你在中繼主機上用 npm 管理。
Copilot engine(Copilot 引擎) SDK 由哪種引擎執行新的 Copilot 對話。見選擇引擎。
Save Copilot settings 儲存引擎設定。

其他會影響 Copilot session 的設定在別處:

設定 預設 對 Copilot 的影響
Settings → General → Background task timeout(設定 → 一般 → 背景任務逾時) 4 小時 回覆結束後,僅剩背景 agent 和分離的 shell 時,session 還能繼續執行多久。時間到就會停止它們。0 表示沒有上限;最大值是 10 小時。
Settings → General → Max turn duration(設定 → 一般 → 回合最長時間) 60 分鐘 一個回合在中繼將它重新排入佇列之前,最多能執行多久。
Settings → Features → Session worker routing(設定 → 功能 → Session worker 路由) 開啟 SDK 引擎需要它。變更在中繼重新啟動後生效。

模型 #

中繼啟動幾秒後,會從已安裝的 Copilot CLI runtime 讀取模型清單。每個模型都會顯示 runtime 回報的 reasoning effort 等級和上下文視窗。清單以 auto 開頭,接著依廠商分組(OpenAI、Anthropic、Google、xAI、Microsoft、Azure OpenAI、Moonshot AI,其餘依字母順序),各組中最新的版本排在前面。

在第一次探索之前,新的中繼會提供 gpt-5.4、gpt-5.4-mini(預設)、gpt-5.3-codex、claude-sonnet-4.6 和 claude-haiku-4.5。

在對話的 ⋯ 選單中用 🤗 Select Models → Copilot(選擇模型 → Copilot)選擇哪些模型要出現在輸入區,然後按 💾 Save enabled models(儲存已啟用的模型)。Refresh(重新整理)會重新讀取清單。如果清單看起來過時了,請按 Refresh。

用量 #

  • 在回覆下方,Copilot 回合會顯示它用了多少:+N 是點數,括號中是占你每月方案的比例,另有 month N% left。stale 標記表示該回合的數字無法更新。只有 Copilot 回合有這一行;其他供應商(包括 OpenAI)不使用 Copilot 點數。
  • 在標題列中,session 行會加總整個對話的用量,例如 Session: 1.25 AIC used。
  • 在 Check Usage 中,從 ⋯ 選單開啟 📊 Check Usage,選擇 Copilot 分頁即可查看即時配額(AI 點數或進階請求、對話和方案)。在 SDK 引擎上,它會加上 Last SDK worker turn:該回合實際花費的點數、token 和模型呼叫次數。這些是單一回合的數字,不是累計總數,這個區塊會在七天後消失。

Copilot 卡片透過 gh 讀取你的帳戶。如果你不使用 gh,請在中繼的環境中設定 GH_TOKEN 或 GITHUB_TOKEN。

匯入你已有的 session #

中繼啟動時,會匯入主機上儲存的 Copilot session,讓它們連同歷史記錄出現在你的清單中。它透過已安裝的 Copilot runtime 讀取這些 session。如果無法使用 runtime,匯入會回報失敗。中繼不會從檔案自行推測。

刪除這類 session 只會把它隱藏起來:Copilot CLI 自己的 session 仍會保留,因為它從來不是由中繼執行的。

環境變數 #

在中繼處理程序的環境中設定這些變數,然後重新啟動中繼。

變數 作用
COPILOT_SDK_PATH Copilot CLI runtime 的 copilot-sdk 目錄,取代套件快取中最新的那一個
COPILOT_PKG_DIR 額外一個用來搜尋 runtime 的套件快取
GH_TOKEN、GITHUB_TOKEN 供 Check Usage 中 Copilot 卡片使用的 GitHub token,取代 gh auth token
OAR_MCP_SERVER=0 不把 OAR 的 MCP 伺服器附加到 擴充功能引擎;它會以文字形式取得 preview 的說明,而且沒有 relay_tool 工具
COPILOT_REMOTE_SESSION_WORKER_ROUTING_ENABLED=0 把 Session worker routing 固定為關閉,這會讓 SDK 引擎無法使用

限制 #

  • 中繼啟動後才安裝或升級的 Copilot CLI,必須重新啟動中繼才會被偵測到。
  • SDK 引擎沒有可以連接的終端機。
  • 在 擴充功能引擎上,回合進行中送出的訊息會排入佇列,無法用來導正。
  • 在 SDK 引擎上,中繼會在讓回合失敗之前給予以下的靜默時間:沒有任何東西在執行時 2 分鐘、模型請求期間 5 分鐘、工具執行期間 30 分鐘。正在等待提問卡片的回合絕不會被視為卡住。時間窗請見回合與佇列。
  • 使用你自己金鑰的 OpenAI 對話也使用這些引擎,但花的是你的金鑰,所以它的回合沒有 Copilot 用量行。

無法正常運作時 #

發生的狀況 原因與處理方式
Copilot 無法啟動,或 SDK 引擎因 COPILOT_SDK_PATH did not resolve(COPILOT_SDK_PATH 無法解析)而遭拒 啟動時找不到 Copilot CLI 的 runtime。請安裝或升級 CLI,執行一次 copilot,然後重新啟動中繼。
在 SDK 引擎上,回覆說 Copilot runtime 無法驗證身分 在中繼主機上執行 copilot 並登入,然後重新傳送訊息。
你想用 SDK,新對話卻在 Extension 上執行 沒有人儲存過選擇而中繼無法執行 SDK,或是你儲存的是 Extension。把 Copilot engine 設為 SDK 並儲存;如果有原因,拒絕訊息會指出來。
執行中的對話沒有更換引擎 引擎是在 worker 啟動時讀取的。⋯ 選單中的 ☠️ Kill session(強制結束 session)會停止 worker;下一則訊息會以目前的引擎重新啟動它。
回覆說 GitHub Copilot 在這個計費時段已沒有 AI 點數 方案額度已用完。開啟 Check Usage 查看重設時間,等重設後再試,或把對話改用其他供應商。中繼不會自動重試這種情況。
oar copilot 說缺少 GitHub CLI 它執行的是 gh copilot。請安裝 GitHub CLI,或只執行中繼。
模型清單過時或不正確 🤗 Select Models → Refresh(選擇模型 → 重新整理)。
回覆下方沒有用量行 只有 Copilot 回合會記錄用量行。
🖥️ Inspect tmux console 顯示的是記錄行,而不是 Copilot 畫面 這個對話是在 SDK 引擎上執行。

agent session、中繼模式和其他與引擎無關的行為,都依 session 和 agent 協作相關頁面的說明運作。