所有页面
本页内容

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 的运行时,看不到之后的安装。
  • 已登录的 GitHub CLI(gh),用于 oar copilot、Windows 上的扩展引擎会话,以及 Check Usage(查看用量)中的 Copilot 卡片。
  • tmux(可选,Linux 和 macOS),如果你想用 🖥️ Inspect tmux console(查看 tmux 控制台)观看会话的终端。

中继不会安装或更新 Copilot CLI。在 Settings → Providers → Copilot(设置 → 提供商 → Copilot)中,顶部的 GitHub Copilot CLI 一行只报告它的状态。

OAR 如何找到 CLI #

SDK 引擎驱动 Copilot CLI 自带的运行时。启动时,中继会在 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 则直接指定运行时的 copilot-sdk 目录。如果什么都没找到,SDK 引擎就不可用(见选择引擎)。

使用 oar copilot #

如果其端口上没有中继响应,oar copilot 会在后台启动中继,然后在你的 shell 中打开 Copilot CLI(gh copilot)。由它启动的中继会在会话结束时再次停止。-- 之后的参数会传给 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 自带的运行时 终端会话中的 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)
智能体工具 relay_tool 是一个工具;对于 preview,智能体会被告知如何调用中继的预览 API relay_tool 和 preview 通过 OAR 的 MCP 服务器提供
中继模式 原生的 plan 和 autopilot 模式;plan 拒绝任何非只读操作,ask 在每个此类操作之前询问 仅为提示词中的指示
压缩 运行时在上下文窗口达到 80% 时在后台压缩,达到 95% 时阻塞 OAR 不设置也不显示任何内容
卡住轮次监视 静默 120 秒后判定一轮失败,模型请求期间为 300 秒,工具运行期间为 30 分钟 一轮最长 2 小时;中继认为 CLI 离线期间有 45 秒的不活动窗口
用量 在 Check Usage 的 Copilot 卡片中添加 Last SDK worker turn(SDK worker 的上一轮) 只有卡片的账户计量

两种引擎显示相同的对话记录、提问卡片、计划看板、模型列表和每条回复的用量行。Steer、Queue(加入队列)和卡住轮次的时间窗口见轮次与队列,上表相应各行见中继模式和压缩,提问卡片见 ask_user。

在 SDK 引擎上,Stop 只结束回复。该轮启动的后台智能体会继续运行,在任务面板中各有自己的 Stop。

选择引擎 #

该选择是整个中继的一项设置:Settings → Providers → Copilot → Copilot engine(设置 → 提供商 → Copilot → Copilot 引擎),选项为 Extension(扩展)和 SDK — default(SDK — 默认)。更改后按 Save Copilot settings(保存 Copilot 设置)。

  • 它适用于之后才启动 worker 的对话。已经在运行的会话会保留它的引擎,直到其 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 运行时。安装或升级 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(会话 worker 路由)(默认开启),然后重启中继。

设置 #

在 Settings → Providers → Copilot 下:

控件 默认值 作用
GitHub Copilot CLI 一个状态行。只读:你在中继主机上用 npm 管理此 CLI。
Copilot engine SDK 用哪种引擎运行新的 Copilot 对话。见选择引擎。
Save Copilot settings 保存引擎。

其他影响 Copilot 会话的设置位于别处:

设置 默认值 对 Copilot 的影响
Settings → General → Background task timeout(设置 → 常规 → 后台任务超时) 4 小时 回复之后,仅剩后台智能体和分离的 shell 时,它们还能让会话保持运行多长时间。之后它们会被停止。0 表示没有上限;最大值为 10 小时。
Settings → General → Max turn duration(设置 → 常规 → 单轮最长时长) 60 分钟 一轮在中继将其重新排队之前最长可以运行的时间。
Settings → Features → Session worker routing 开启 SDK 引擎需要它。更改在中继重启后生效。

模型 #

中继在启动几秒后从已安装的 Copilot CLI 运行时读取模型列表。每个模型显示运行时所报告的推理强度和上下文窗口。列表以 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: 1.25 AIC used。
  • 在 Check Usage 中,在 ⋯ 菜单中打开 📊 Check Usage 并选择 Copilot 选项卡,查看实时配额(AI 额度或高级请求、对话和套餐)。在 SDK 引擎上,它会添加 Last SDK worker turn:该轮实际花费的额度、它的 token 和模型调用。这些是单轮的数字,不是累计总数,并且该部分会在七天后消失。

Copilot 卡片通过 gh 读取你的账户。如果你不使用 gh,请在中继的环境中设置 GH_TOKEN 或 GITHUB_TOKEN。

导入你已有的会话 #

中继启动时会导入主机上存储的 Copilot 会话,使它们连同历史记录出现在你的列表中。它通过已安装的 Copilot 运行时读取这些会话。如果运行时不可用,导入会报告为失败。中继不会根据文件进行猜测。

删除这样的会话只会隐藏它:Copilot CLI 自己的会话会保留,因为中继从未运行过它。

环境变量 #

在中继进程的环境中设置这些变量,然后重启中继。

变量 作用
COPILOT_SDK_PATH Copilot CLI 运行时的 copilot-sdk 目录,取代包缓存中最新的那个
COPILOT_PKG_DIR 一个额外的包缓存,用于搜索运行时
GH_TOKEN、GITHUB_TOKEN 供 Check Usage 中 Copilot 卡片使用的 GitHub 令牌,取代 gh auth token
OAR_MCP_SERVER=0 不把 OAR 的 MCP 服务器连接到扩展引擎;它会以文本形式收到预览说明,并且没有 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 运行时。安装或升级 CLI,运行一次 copilot,重启中继。
在 SDK 引擎上,回复说 Copilot 运行时无法认证 在中继主机上运行 copilot 并登录,然后重新发送消息。
你想要 SDK,新对话却运行在 Extension 上 没有人保存过选择且中继无法运行 SDK,或者你保存的是 Extension。把 Copilot engine 设为 SDK 并保存;如果有原因,拒绝消息会指出它。
正在运行的对话没有切换引擎 引擎在其 worker 启动时读取。⋯ 菜单中的 ☠️ Kill session(强制结束会话)会停止 worker;下一条消息会在当前引擎上启动它。
回复说 GitHub Copilot 在此计费周期内没有剩余的 AI 额度 套餐已用完。打开 Check Usage 查看重置时间并在之后重试,或把对话切换到另一个提供商。中继不会对此重试。
oar copilot 说缺少 GitHub CLI 它运行的是 gh copilot。安装 GitHub CLI,或只运行中继。
模型列表过时或有误 🤗 Select Models → Refresh。
回复下方没有用量行 只有 Copilot 的轮次会记录它。
🖥️ Inspect tmux console 显示的是日志行,而不是 Copilot 界面 该对话运行在 SDK 引擎上。

不依赖于引擎的智能体会话、中继模式和其他行为,按会话和智能体协作各页所述工作。