dsh-llm-github-copilot:给 DeepSeek Harness 增加 GitHub Copilot 登录

前言

DeepSeek Harness 的插件生态围绕“一切皆插件”展开:模型提供方、登录流程、设置页都可以由插件补上。社区目录是独立站点,与 DeepSeek 或幻方没有官方从属关系,不能按官方应用商店理解。

Harness 本身可以提供 github-copilot provider,用来访问 GitHub Copilot 计划内的模型;但它不负责完成登录。lujianjun19/dsh-llm-github-copilot 补的就是这一段:执行 GitHub Copilot 登录,把凭据交给 Harness 已有的 github-copilot provider 使用。

这是什么

lujianjun19/dsh-llm-github-copilot 是一个 DeepSeek Harness 插件,用于为 Harness 提供 GitHub Copilot 登录能力。它由 lujianjun19 维护,采用 MIT 许可证。

它主要解决一个具体缺口:Harness 可以消费 GitHub Copilot 模型,但需要有一个地方完成登录并保存凭据。登录完成后,插件把凭据交给 Harness 的 @deepseek-ai/dsh-llm-pi-ai route 使用。模型请求、端点、图片、流式输出等行为由 Harness route 处理,不在插件里重新实现。

核心能力

下面介绍已核实的主要能力。

  • GitHub Copilot 设备流登录:可以通过 /copilot-login 或 Harness 设置页登录,凭据会自动保存。
  • 自动刷新:Copilot 短期 token 的刷新由 Harness 下游处理。
  • 兼容已有 token:启动时可以采用已有的 GITHUB_COPILOT_OAUTH_TOKEN,避免重复登录。
  • 设置页:Harness Web 设置中有独立的 GitHub Copilot 区域,用于登录、查看状态和退出登录。
  • Slash 命令:提供 /copilot-login/copilot-status/copilot-logout
  • 使用 Copilot 计划内的模型:可以访问 GPT-5 family、Claude、Gemini 等模型,具体以当前 GitHub Copilot 计划可用模型为准。

安装与启用

前置条件

使用前需要满足以下条件:

  • DeepSeek Harness 0.1.2-alpha.1 或更高版本,并且带有其捆绑的 @deepseek-ai/dsh-llm-pi-ai route。
  • 一个具有 GitHub Copilot 订阅的 GitHub 账号。
  • Node.js ≥ 24。

安装

下面命令用于把插件安装到 web profile:

dsh plugin --profile web add @lujianjun19/dsh-llm-github-copilot

如果使用 pnpm 10 或更高版本,并且安装过程提示需要批准构建,按提示在 profile 的 pnpm-workspace.yaml 中加入:

allowBuilds:
  dsh-llm-github-copilot: true

然后重新执行安装命令。

注册插件

安装完成后,在 profile 的 cordis.patch.yml 中注册插件:

- insert:
    - id: llm-github-copilot
      name: '@lujianjun19/dsh-llm-github-copilot'

启动

注册完成后,重新启动 DSH:

dsh web

安装前检查

插件会在当前 dsh 进程权限下运行。安装前建议查看源码、确认 MIT 许可证,并确认自己愿意让该插件访问当前 profile 的凭据和配置。

源码目录页:

https://www.skillhub.cn/plugins/lujianjun19/dsh-llm-github-copilot

GitHub 仓库:

https://github.com/lujianjun19/dsh-llm-github-copilot

登录与状态

在 Harness 聊天界面中运行:

/copilot-login

按照提示操作:在浏览器中打开验证 URL,输入显示的设备码,并完成 GitHub App 授权。授权完成后,token 会自动保存。

确认登录状态时,可以运行:

/copilot-status

退出登录时,运行:

/copilot-logout

Harness 设置页也提供 GitHub Copilot 区域,可以完成登录、状态检查和退出登录。

使用已有 token

如果已经有 GitHub OAuth token,也可以通过环境变量提供:

export GITHUB_COPILOT_OAUTH_TOKEN=<your-github-oauth-token>

插件支持以下 token 类型:

前缀 来源
gho_ OAuth token,例如来自 gh auth login
github_pat_ 细粒度 PAT,需要具有 Copilot 权限
ghu_ GitHub App user token,例如来自 VS Code client

ghp_ classic PAT 不被 Copilot API 接受。

选择模型

登录只负责发布凭据,不负责选择模型。登录完成后,需要到 Harness 设置中选择模型:

  1. 打开 Settings → Models
  2. 添加 github-copilot provider。
  3. 在 provider 下选择要使用的模型。

具体可用模型取决于当前 GitHub Copilot 计划。

更新插件

DSH profile 内部使用 pnpm,lockfile 会锁定已安装的确切版本。只重新执行 dsh plugin add 可能不会获取到新版本。

更新时可以执行:

npm install --prefix ~/.dsh/profiles/web @lujianjun19/dsh-llm-github-copilot@latest

或使用 pnpm:

pnpm add --dir ~/.dsh/profiles/web @lujianjun19/dsh-llm-github-copilot@latest --no-frozen-lockfile

然后重新启动:

dsh web

确认版本时,打开 Settings → GitHub Copilot,面板底部会显示版本信息。

配置

插件默认不需要配置。唯一可配置项是 oauthTokenEnv,用于指定保存 GitHub OAuth token 的环境变量名或凭据引用:

- id: llm-github-copilot
  config:
    oauthTokenEnv: GITHUB_COPILOT_OAUTH_TOKEN

模型、端点和请求行为不在该插件里配置,而是在 Harness route 的 llm-pi-ai settings section 中配置。

从 0.4.x 升级

0.4.5 及更早版本注册过自己的 github-copilot-official provider。现在该 provider 不再存在。

如果现有配置或会话中仍使用 github-copilot-official,应切换到 github-copilot provider。模型 id 保持一致。已有凭据会被自动采用,不需要重新登录。

常见情况

下面列出几个已出现的处理点。

模型选择器没有显示 GitHub Copilot 分组

可能是插件仍在未加载新包的旧进程中。重新启动:

dsh web

已保存的 token 会保留,不需要重新登录。

模型存在但缺少 Claude

可能是出口 IP 被限制。可以设置代理后重启:

export HTTPS_PROXY=<proxy-url>
dsh web

/copilot-login 超时或网络错误

这通常发生在设备码轮询期间。重新运行登录命令即可获取新码,旧码会自动失效:

/copilot-login

提示 configurable provider "github-copilot" is already declared

这个插件不注册自己的 provider,它只是为 Harness 的 github-copilot provider 发布凭据。如果没有模型,先确认:

  1. /copilot-status 显示已登录。
  2. Settings → Models 中已添加 github-copilot provider。
  3. cordis.patch.yml 中使用了:
- id: llm-github-copilot
  name: '@lujianjun19/dsh-llm-github-copilot'

Token 过期

不需要手动处理。插件保存长期 GitHub OAuth token,Harness 下游会在短期 Copilot token 过期前刷新它。只有显式退出登录或 token 被撤销后,才需要重新执行 /copilot-login

结尾

lujianjun19/dsh-llm-github-copilot 的定位比较窄:它不重新实现模型请求,只负责 GitHub Copilot 登录,并把凭据交给 Harness 已有的 github-copilot provider。对于已经在用 DeepSeek Harness、并且想通过 GitHub Copilot 计划内模型扩展模型选择的场景,这个插件可以把登录、状态检查、token 采用和设置页操作放进同一个流程里。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye