dsh-chatgpt-siwc:用 ChatGPT 賬號登錄並在 DSH 內走套餐模型

前言

在 DeepSeek Harness(DSH)裏接 OpenAI 兼容模型,常見做法是自己維護 API Key,或依賴與官方無關的代理層。若你已有 ChatGPT Plus/Pro,並希望按 OpenAI 公開的 Sign in with ChatGPT(SIWC) 流程,用自己的賬號 OAuth 換訪問令牌,再調用公網 Responses API(https://api.openai.com/v1),就需要一個在 DSH 內完成登錄、刷新令牌並註冊 chatgpt 模型路由的客戶端插件。

下面介紹社區維護的 dsh-chatgpt-siwc(SkillHub 目錄條目爲 calisweetleaf/dsh-chatgpt-swic,源碼倉庫 calisweetleaf/dsh-chatgpt-siwc)。它把「動態 OAuth 註冊 → 本機 loopback 回調 → 令牌刷新 → 模型發現與調用」收成一條 LLM Provider 路線、一張設置卡片和一套 CLI,不改動 DSH 本體。

這是什麼

dsh-chatgpt-siwc 是面向 DSH 的 bundle 插件(維護者 calisweetleaf,分類爲客戶端)。當前資料中的包版本爲 0.2.1-rc.3,許可證 MIT。要求 DSH 宿主版本 >=0.2.2-rc.1 且 <0.3.0。

插件只做 API 面:一條 chatgpt 提供方路由、一個設置頁、一個命令行工具;README 明確其不是 Codex 登錄路徑,也不做 sub2api 或賬號池化——請求從適配器直連公網 API,使用的是該次登錄爲該應用簽發的 SIWC 令牌。

核心功能

登錄與令牌

  1. 動態註冊:首次登錄使用 client_id=dynamic_agent_client、本機穩定的 ext_agent_host_id 與 agent_name_hint;回調後保存 ChatGPT 下發的 oaiapp_… client id,用於後續 code 交換與刷新。
  2. 授權碼 + PKCE(S256):在 127.0.0.1 的 loopback 路徑 /auth/callback 上監聽;每次嘗試使用新的 state/nonce。
  3. 換票:在 token 端點用 resource=https://api.openai.com/v1 交換,無 client secret。
  4. 校驗與刷新:校驗 ID token(JWKS、issuer、audience、nonce);按賬號串行刷新,原子替換輪轉令牌;登出時走 discovery 中的 revocation 並清除本地令牌。

控制面端點來自 OIDC discovery(https://auth.openai.com/.well-known/openid-configuration)。運行插件的機器需能訪問 auth.openai.com 與 api.openai.com(或配置的 apiBaseUrl);用於登錄的瀏覽器須與本機 DSH 在同一臺機器上,以便訪問 loopback 回調。

賬號數據寫在 Harness 目錄下的 chatgpt-siwc/accounts.json(權限 0600,目錄 0700),以及非機密的 host.json;寫入帶原子性與跨進程鎖。

套餐與模型

僅「登錄」不等於可用:模型調用需要賬號授予中包含套餐使用 scope(chatgpt.tokens.use.direct)。每應用用量上限需在 ChatGPT settings → usage 中自行管理。

授權後,首次打開模型選擇器會從 GET /v1/models 拉取目錄;之後可從本地賬號索引讀取。可用 dsh-chatgpt-siwc models 重建索引並查看模型 ID、名稱與 reasoning effort 等(不輸出憑證)。

設置卡片與 CLI

插件頁卡片展示連接狀態、套餐權限,並提供登錄、重連、刷新、斷開等操作;遠程接口只返回身份與套餐信息,不返回令牌明文。登錄失敗時會標明停在哪一步(含機器可讀錯誤碼),主機日誌與卡片一致。

捆綁 CLI 用於交互式登錄與診斷(與模型調用路徑分離):

dsh-chatgpt-siwc login [--no-browser] [--new]   # 默認複用本機註冊;--new 重新註冊
dsh-chatgpt-siwc doctor          # 無令牌的 JSON:加載路徑、賬號文件、註冊、鎖、端口等
dsh-chatgpt-siwc status          # 無令牌的賬號公開視圖
dsh-chatgpt-siwc models          # 重建模型索引
dsh-chatgpt-siwc logout [--purge]
dsh-chatgpt-siwc help

人類可讀輸出支持英文或簡體中文:--lang zh / --lang en,或跟隨 LC_ALL / LC_MESSAGES / LANG(zh_* 選中文)。例如:

dsh-chatgpt-siwc status --lang zh
LANG=zh_CN.UTF-8 dsh-chatgpt-siwc login

JSON、錯誤碼、模型 slug 與 URL 不翻譯;任何命令均不打印令牌。

安裝與配置

DSH 仍是宿主;安裝的是已打包的 npm 包或 tarball,不要把源碼目錄當安裝目標(發佈產物 lib/ 在宿主上無需再構建)。

Web 客戶端:Plugins → 按包名、Git URL、tarball 或本地路徑安裝 → 按提示重啓 → 打開插件卡片 → Sign in with ChatGPT。

終端(--profile 須寫在 pnpm/dsh 參數之前):

dsh plugin --profile web add dsh-chatgpt-siwc            # npm,發佈後
dsh plugin --profile web add ./dsh-chatgpt-siwc-<ver>.tgz  # 本地打包的 tarball

安裝後插件啓動日誌會輸出 dsh-chatgpt-siwc <version> loaded from <path>;也可用 dsh-chatgpt-siwc doctor 覈對是否被舊路徑上的同名包遮蔽。

cordis.patch.yml 會向 bundle 插入一行配置,例如:

- insert:
    - id: dsh-chatgpt-siwc
      name: dsh-chatgpt-siwc
      config:
        provider: siwc-dsh-core
        agentNameHint: DSH SIWC

可選配置項(資料中列出):apiBaseUrl(僅 https://api.openai.com 或 loopback 主機)、reasoningEffort、storePath(賬號文件路徑覆蓋)、streamIdleTimeoutMs(默認 120000)。配置變更在已提交後可不重啓生效;重命名 provider 會原子地重新註冊路由。

典型用法

  1. 按上一節安裝並重啓 DSH,在插件頁點擊 Sign in with ChatGPT(或終端執行 dsh-chatgpt-siwc login)。
  2. 在瀏覽器完成 OpenAI 登錄;若彈窗被攔截,卡片會提供 Open sign-in page 鏈接。
  3. 確認賬號具備 chatgpt.tokens.use.direct 等所需 scope,並在 ChatGPT 用量設置中爲該應用配置上限。
  4. 在 DSH 模型頁選擇 chatgpt 提供方下的模型;需要時運行 dsh-chatgpt-siwc models 同步模型列表。
  5. 排錯時先 dsh-chatgpt-siwc doctor,再對照主機日誌中與卡片相同的步驟名稱與錯誤碼。

適用場景與注意

適合:已在 DSH 內開發或運行智能體、擁有 ChatGPT Plus/Pro,希望用官方 SIWC + 公網 Responses API 走自己套餐額度,並希望在 GUI 內完成登錄與狀態管理的開發者。

邊界(來自上游 README,使用前需知):

  • 與 Codex harness、chatgpt.com/backend-api/codex、~/.codex/auth.json 等無關。
  • 無多賬號池化;一個 client 註冊只與該賬號令牌綁定。
  • 登錄瀏覽器與 DSH 必須同機(loopback 回調)。

安全與審計:插件以當前 DSH 進程權限讀寫賬號文件併發起 HTTPS 請求。安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認網絡與賬號策略符合你的環境。SkillHub 等爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係,星標與收錄信息以各站點當時頁面爲準(目錄線索中該倉庫約 1 star)。

結尾

dsh-chatgpt-siwc 把「用自己 ChatGPT 套餐調用公網 API」收斂成 DSH 內的一條 Provider:OAuth 在本機完成,令牌本地加密存儲,設置頁與 CLI 分工明確。若你的目標正是 SIWC 而非 API Key 或 Codex 通道,可按官方 README 的安裝命令接入,並從插件卡片或 dsh-chatgpt-siwc login 開始第一次登錄。

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

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

小夜