前言¶
在 DeepSeek Harness(DSH)裏接 OpenAI 系模型,常見做法是填 API Key,按 token 計費。若你本身有 ChatGPT 訂閱,更自然的期望是:登錄賬號後,模型列表跟訂閱計劃一致,推理走賬號額度而不是單獨買 Key。
下面介紹社區插件 dsh-plugin-chatgpt(維護者 ckanner)。它在 DSH 裏增加一條名爲 chatgpt 的 provider 路由(不用 openai,因爲內置 pi-ai 已佔用該名),通過 OpenAI 公開的 Sign in with ChatGPT OAuth 完成登錄,無需 API Key;賬號下的模型、上下文窗口與 reasoning 檔位來自賬號側 listing,而不是寫死的模型表。
這是什麼¶
dsh-plugin-chatgpt 是發佈在 npm 上的 DSH 插件(MIT 許可證),分類上屬於模型推理類能力。安裝後會在 Settings → Models 出現 ChatGPT 一行;在該行卡片上完成登錄,即可在模型選擇器裏按 ChatGPT 分組選用訂閱可用的模型。
插件以當前 DSH 進程權限運行;安裝前建議自行查看 GitHub 倉庫 源碼與許可證。社區目錄頁:skillhub.cn 插件條目(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。
核心功能¶
-
OAuth 登錄,無 API Key
使用 Sign in with ChatGPT 流程;憑證以 owner-only 方式保存在配置的stateDir(默認在 DSH 狀態目錄下的chatgpt-subscription)。設置頁展示授權 URL、支持複製;若瀏覽器無法訪問 loopback,可把最終 redirect URL 粘貼回卡片完成授權。登出時會向授權端撤銷可續期會話(若服務端未確認也會提示)。 -
一條 provider 路由
chatgpt
模型元數據優先來自賬號的GET /v1/modelslisting;在 Settings → Models 選中模型後,會進入 DSH 的 model selector,無單獨 picker。 -
可選上下文預算
默認跟隨各模型在 catalog 中公佈的 context window。可在插件配置裏用contextWindowLimit設全局上限,或用modelContextWindowLimits按精確 model ID(大小寫敏感)單獨覆蓋;優先級爲單模型 → 全局 → 賬號默認。這些設置獨立於 Codex,且 DSH 仍會預留 compaction 餘量。 -
無頭環境
可通過ChatGptAuth(見倉庫src/auth/manager.ts)在無瀏覽器場景下走同一套會話:打印授權 URL,必要時attempt.submit(完整 redirect URL),再auth.adopt(credential)。 -
實現約束(與訂閱路由一致)
請求不會攜帶訂閱路由拒絕的字段(如temperature、max_output_tokens、top_p等);流式響應必須以response.completed作爲唯一成功終止,否則視爲錯誤。
安裝與啓用¶
插件通過 npm 安裝,無需本地 build。整包安裝爲一行命令(資料原文):
dsh plugin --profile <name> add dsh-plugin-chatgpt
安裝後需重啓 harness:profile 在啓動時組裝。若要固定版本,資料示例爲:
dsh plugin --profile <name> add dsh-plugin-chatgpt@0.1.9 # pin a version, or omit it for the latest
卸載:
dsh plugin --profile <name> remove dsh-plugin-chatgpt
包聲明瞭 dsh.bundle,添加後會寫入 profile 的 dsh.profile.bundles 並插入 composition 層。不啓動即可覈對是否生效:
dsh --profile <name> --dump-config # shows a "# == dsh-plugin-chatgpt" layer
說明:從 GitHub URL 直接 add 會走源碼構建,且 pnpm 可能因 git 依賴的 build scripts 未列入 onlyBuiltDependencies 而失敗(資料中的 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED);常規用法是 npm 包名安裝。
運行環境要求(package.json):Node ^22.19.0 || >=24.0.0。
典型用法¶
在 UI 裏登錄並選模型¶
- 打開 Settings → Models,找到 ChatGPT 行。
- 點擊 Sign in with ChatGPT,按卡片提示在瀏覽器完成授權;無法迴環 localhost 時,粘貼瀏覽器最終的 redirect URL。
- 卡片會顯示賬號計劃、token 下次刷新時間、可用模型數量;在此頁爲各模型勾選啓用。
- 在 DSH 模型選擇器的 ChatGPT 分組下選用已啓用的模型。
訂閱側可在 ChatGPT 設置裏按應用限制本安裝可使用的計劃份額(插件 README 中有相關截圖說明)。
配置上下文上限(可選)¶
全局默認預算示例:
contextWindowLimit: 1000000
按 model ID 分別限制示例(鍵名須與 listing 中 ID 完全一致):
contextWindowLimit: 500000
modelContextWindowLimits:
gpt-6-astra: 1000000
gpt-6.1-sol: 800000
修改在下次 DSH 解析模型時生效;刪除某 model 條目則回退到全局或賬號默認。
無頭登錄(腳本)¶
import { ChatGptAuth } from 'dsh-plugin-chatgpt/src/auth/manager.ts'
const auth = new ChatGptAuth({
stateDir: `${process.env.DSH_HOME ?? `${process.env.HOME}/.dsh`}/chatgpt-subscription`,
agentNameHint: 'DeepSeek Harness',
})
const attempt = await auth.begin()
console.log('Open this URL in your browser:\n' + attempt.authorizationUrl)
// 若 redirect 無法到達 loopback,可粘貼完整 URL:
// await attempt.submit('<the full redirect URL from your browser>')
const credential = await attempt.result
auth.adopt(credential)
適用場景與注意¶
適合誰: 已有 ChatGPT 訂閱、希望在 DSH 裏用同一賬號模型 roster 做 agent 開發或日常推理,且接受 OAuth 與訂閱路由參數限制(不能指望隨意傳 OpenAI API 的全部採樣字段)的用戶。
需要注意:
- 費用與配額由 ChatGPT 賬號與計劃在 ChatGPT 側重;插件 README 還列出了已知限制與 deferred work,升級前可掃一眼倉庫文檔。
- 插件進程權限即 DSH 權限;OAuth 憑證存於本地
stateDir,部署在共享機器上時要考慮目錄權限與備份策略。 - DSH 生態是「一切皆插件」;本包是社區維護的 npm 插件,安裝命令以
dsh plugin --profile … add dsh-plugin-chatgpt爲準,不要憑倉庫名臆造github:owner/repo一類未在資料中出現的寫法。
結尾¶
dsh-plugin-chatgpt 把 ChatGPT 訂閱接進 DSH 的模型棧:一條 chatgpt 路由、Settings 裏登錄、模型列表跟賬號走。若你要在 harness 裏複用訂閱而不是 API Key,可按上文安裝、重啓後在 Models 頁完成 Sign in。