前言¶
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 採用和設置頁操作放進同一個流程裏。