dsh-llm-oauth:給 DeepSeek Harness 加訂閱制 LLM 登錄

前言

DeepSeek Harness(DSH)裏的 LLM 接入通常按 API key 來做。官方 dsh-llm-pi-ai 走 API key 認證,不會執行 OAuth 登錄或刷新。如果你已經有 Grok、GitHub Copilot、ChatGPT / Codex、Anthropic、OpenRouter、Kimi For Coding 等訂閱,希望在自己的 DSH profile 裏直接使用這些訂閱,而不是再維護一組 API key,下面介紹 dsh-llm-oauth

這是什麼

dsh-llm-oauth 是一個 standalone OAuth / subscription-plan LLM plugin,倉庫維護者是 ziyou979,許可證爲 MIT。

它安裝到指定的 DSH profile 中,不 patch Harness 倉庫。插件複用已安裝的 @earendil-works/pi-ai 模型目錄,並使用 durable CredentialStore,讓訂閱 token 在請求路徑上刷新。模型 id 來自已安裝的 @earendil-works/pi-ai,本插件不維護私有模型表。

倉庫地址:

https://github.com/ziyou979/dsh-llm-oauth

支持的訂閱

插件支持的訂閱 provider id 如下:

訂閱 Provider id
Grok xai
GitHub Copilot github-copilot
ChatGPT / Codex plan openai-codex
Anthropic subscription anthropic
OpenRouter openrouter
Kimi For Coding kimi-coding

安裝後,插件不會立刻把所有模型灌進選擇器。只有啓用後的 provider 纔會列出模型;啓用後,這些 provider 會出現在 Settings → Models,與 API-key 路由並列。

安裝

先執行安裝命令:

dsh plugin --profile web add github:ziyou979/dsh-llm-oauth

如果本地已經有一份 checkout,也可以用本地路徑安裝:

dsh plugin --profile web add ./dsh-llm-oauth

安裝完成後,可以檢查當前 profile 的配置層:

dsh --profile web --dump-config

從 git 安裝時,profile 的 pnpm-workspace.yaml 可能需要允許 prepare 構建:

allowBuilds:
  dsh-llm-oauth: true

Enable、Sign in、Disable

使用這三個概念時,先區分動作:

  • Enable:註冊 LLM 路由,provider 出現在模型選擇器裏。
  • Sign in:把 token 寫入本地憑據文件。
  • Disable:從模型選擇器移除 provider,但保留已存儲的 token。

憑據存儲在:

$DSH_HOME/pi-ai-oauth.json

如果未設置 $DSH_HOME,默認路徑是:

~/.dsh/pi-ai-oauth.json

在 Web UI 的聊天裏可以執行:

/oauth status
/oauth list
/oauth enable xai
/oauth login xai
/oauth disable xai
/oauth logout xai

xai 爲例,一個常見流程是:

/oauth enable xai
/oauth login xai
/oauth status

如果需要終端登錄,可以執行:

node bin/login.mjs --list
node bin/login.mjs xai

也可以在 settings.yaml 裏直接啓用 provider,不經過 UI:

llm-oauth:
  providers:
    xai: {}

Web 設置頁與 HTTP API

Web UI 會提供 Settings → OAuth / Subscriptions 頁面。這個頁面用於管理訂閱 provider,提供:

  • enable
  • disable
  • sign in
  • sign out

啓用並登錄後的 provider 會出現在 Settings → Models 裏,與 API-key 路由並列。

插件還提供 same-origin Host HTTP API:

Method Path Body
GET /dsh-llm-oauth/status
POST /dsh-llm-oauth/enable { "provider": "xai" }
POST /dsh-llm-oauth/disable { "provider": "xai" }
POST /dsh-llm-oauth/login { "provider": "xai" }
POST /dsh-llm-oauth/logout { "provider": "xai" }

ChatGPT / Codex 的設備碼登錄

openai-codex 走的是 ChatGPT / Codex plan 的 OAuth 登錄,不是普通 OpenAI API key。

使用 openai-codex 前,需要先在 ChatGPT 中開啓設備碼授權:

  1. 打開 ChatGPT 的設置頁,進入 Apps & connectors,或根據當前 UI 找到 Connectors / Codex
  2. 找到 Codex,開啓 Enable device code authorization for Codex
  3. 回到 dsh-llm-oauthOAuth / Subscriptions 頁面,對 openai-codex 執行 sign in。
  4. 打開授權 URL,並輸入頁面上顯示的 code。

這裏有一個明確的賬號風險:通過 device code 或其他非官方客戶端 OAuth 登錄 Codex / ChatGPT,可能導致 ChatGPT 賬號被限制或封禁。如果嘗試這條路徑,建議不要使用重要賬號,也不要把它用於無法承受損失的付費賬號。插件不能替你避免或撤銷封禁。

與 llm-pi-ai 的邊界

dsh-llm-oauth 面向訂閱 / OAuth 路徑。普通 API-key 路徑仍按原方式處理。

需要注意:如果在 llm-pi-ai: 配置段裏聲明同一個 provider id,會拋出 DUPLICATE_ADAPTER

可以按下面方式分工:

  • 訂閱 / OAuth:dsh-llm-oauth
  • 普通 OpenAI API、DeepSeek 官方:繼續使用 API key

限制與注意

下面這些限制來自插件說明,使用前要確認自己的需求是否命中:

  • 模型列表跟隨 @earendil-works/pi-ai;插件不維護私有模型表。
  • 沒有 image / vision 路徑。
  • 沒有 full native replay signatures。
  • 沒有 in-browser OAuth callback server;使用 device code / open URL。
  • 普通 OpenAI API 和 DeepSeek 官方仍走 API key。
  • Settings → Models 裏的 curated editors 面向 API key;OAuth enable 和 login 在 Settings → OAuth / Subscriptions 頁面完成。

另外,插件安裝進 profile 後,會由當前 DSH 進程加載並運行,並且會把 token 寫入本機憑據文件。加入生產 profile 前,建議先檢查 GitHub 源碼、MIT 許可證和依賴;對 openai-codex 這類有賬號風險的 provider,要謹慎使用。

結尾

dsh-llm-oauth 解決的問題很具體:在 DSH profile 裏接入訂閱制 LLM,同時保持它與 API-key 路由的邊界。它不改 Harness 倉庫,不維護私有模型表,也不替代普通 API key 路徑。

GitHub 倉庫:

https://github.com/ziyou979/dsh-llm-oauth
羽毛球分组比赛记分
小程序二维码

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

小夜