前言¶
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-airoute。 - 一个具有 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 设置中选择模型:
- 打开 Settings → Models。
- 添加
github-copilotprovider。 - 在 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 发布凭据。如果没有模型,先确认:
/copilot-status显示已登录。- Settings → Models 中已添加
github-copilotprovider。 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 采用和设置页操作放进同一个流程里。