前言¶
在 DeepSeek Harness(DSH)裏接大模型,常見路徑是內置 provider 或自備 API Key。OpenAI 爲開源、本地運行的客戶端提供了 Sign in with ChatGPT(SIWC),允許符合條件的 ChatGPT Plus / Pro 用戶用賬號與套餐額度調用模型,而不是把 SIWC 令牌當成 API Key 走另一套計費。
@hackforjoy/dsh-openai-siwc 是社區維護的 LLM provider 插件(維護組織 HackForJoy,npm 包 @hackforjoy/dsh-openai-siwc,當前版本 0.1.2,MIT 許可證)。它按 OpenAI 官方文檔實現 SIWC,讓 DSH 通過瀏覽器登錄 ChatGPT 並使用 ChatGPT plan usage。插件與 OpenAI、DeepSeek 均無隸屬或背書關係;協議說明見倉庫內 docs/research/openai-siwc-protocol.md。
下面介紹它是什麼、能做什麼、如何安裝與登錄使用,以及與其它 provider 的差異和注意事項。
這是什麼¶
一句話:@hackforjoy/dsh-openai-siwc 是 DSH 的 LLM provider 插件,掛載 id 爲 openai-siwc,用 OpenAI 官方 SIWC 流程把 ChatGPT 賬號綁到 DSH,請求走 ChatGPT 套餐額度(eligible Plus / Pro),不是傳統 Codex OAuth(DSH 內置 openai-codex 所用),也不是 API Key provider——不會在失敗時回退到其它計費路徑。
環境與兼容性¶
- OpenAI 要求:ChatGPT plan usage 面向符合條件的 ChatGPT Plus / Pro 用戶在開源、本地應用中使用;不符合的賬號(例如 Free)在 code exchange 階段會被拒絕(
invalid_grant)。 - 插件側:已在 DSH 0.2.1-rc.3(
@deepseek-ai/cordis ~4.0.5)上驗證;Node.js ≥ 22。DSH SDK 仍爲預發佈階段,peer 依賴版本與 DSH 更新需對齊。 - Plus 用戶的五小時用量限額在所有使用該套餐的應用間共享,可在 ChatGPT Usage 設置 管理。
核心功能¶
經 README 覈實,登錄成功後插件支持:
- 在模型選擇器中使用 ChatGPT plan (Sign in with ChatGPT) 下的模型;列表來自賬號
GET /v1/models(僅visibility: "list"),切換賬號時會刷新。 - 文本、流式輸出、多輪對話、工具調用(按文檔要求包裝在名爲
dsh的 namespace)、圖像輸入、reasoning effort;能力與上下文窗口等來自賬號模型目錄,不做猜測。 - OpenAI 端點不可配置,避免篡改配置把令牌發往其它地址。
- 斜槓命令(DSH 掛載 commands 服務時):
/siwc login [new]、/siwc status、/siwc models、/siwc logout。
與其它 DSH provider 的差異(節選):temperature、stop 會返回 UNSUPPORTED_PARAMETER;reasoningEffort 映射爲 reasoning.effort;maxTokens 按文檔不發送;圖像默認單請求 base64 預算 20 MiB(可配置 maxRequestImageBytes);reasoning replay 不回放。
安裝與啓用¶
先用 DSH CLI 把插件記入 profile 的 dependencies 與 dsh.profile.bundles,再啓動 profile。官方安裝示例:
DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" # macOS
"$DSH" plugin --profile <profile> add @hackforjoy/dsh-openai-siwc
然後啓動 profile,例如 "$DSH" <profile>。捆綁的 cordis.patch.yml 會以 id openai-siwc 掛載插件。
建議先在獨立 profile 或獨立 DSH_HOME(如 DSH_HOME=~/.dsh-siwc-test)試跑,再併入日常 profile。pnpm 對缺失的 @deepseek-ai/* peer 警告屬預期,由 DSH 宿主提供。
升級指定版本:
"$DSH" plugin --profile <profile> add @hackforjoy/dsh-openai-siwc@<new version>
重啓 DSH 後生效。
可選配置¶
在 profile 的 cordis.patch.yml 中按 id 覆蓋:
- id: openai-siwc
name: '@hackforjoy/dsh-openai-siwc'
config:
defaultContextWindow: 128000
models:
some-model-slug:
contextWindow: 200000
streamIdleTimeoutMs: 300000
maxRequestImageBytes: 20971520
defaultContextWindow 僅用於目錄項無 context_window 的模型;streamIdleTimeoutMs 爲流式最長靜默時間;超出 maxRequestImageBytes 時 DSH 會 offload 最舊的圖像。
登錄與典型用法¶
DSH 0.2.1 設置界面尚無第三方授權入口,登錄須在對話內執行斜槓命令(首頁空 composer 不顯示命令輸出):
- 在會話中運行
/siwc login(/siwc login new可添加另一個 ChatGPT 賬號)。 - 插件打開系統瀏覽器,登錄 ChatGPT,確認 agent 名稱「DSH OpenAI SIWC」,並允許 ChatGPT plan usage。
- 瀏覽器回調
http://127.0.0.1:<隨機端口>/auth/callback顯示完成;命令行輸出「Signed in to ChatGPT as …」。授權 URL 僅進入瀏覽器,不會出現在命令輸出或會話日誌。
使用步驟:在模型選擇器選 ChatGPT plan (Sign in with ChatGPT) 下模型即可對話。可用 /siwc status 查看登錄狀態、plan usage、scope、令牌生命週期及最近錯誤(不輸出令牌);/siwc models 拉取當前賬號模型列表。
若登錄時未允許 plan usage,請求會失敗並報 SIWC_PLAN_USAGE_DISABLED,需重新 /siwc login 並勾選允許。
登出與卸載¶
登出:
/siwc logout
會停止使用令牌、向 OpenAI 撤銷 refresh token(失敗會重試),並刪除本地令牌;client id 與 host id 保留供下次登錄。若無法確認撤銷成功,可在 ChatGPT 設置中斷開應用。僅刪除 DSH 設置裏的 openai-siwc/session 不會遠程撤銷會話。
卸載順序:
- 先
/siwc logout; "$DSH" plugin --profile <profile> remove @hackforjoy/dsh-openai-siwc,重啓 DSH;- 卸載不會自動刪除憑證記錄;完整清理需刪除設置中的
openai-siwc/session與openai-siwc/registry(無 registry 時下次登錄會註冊新 client 與 host id)。
憑證默認存於 DSH 憑證庫(如 ~/.dsh/.credentials.yaml,權限 0600),記錄 openai-siwc/registry 與 openai-siwc/session。
適用場景與注意¶
適合:已在 DSH 中開發或運行智能體、具備 eligible ChatGPT Plus / Pro、希望用官方 SIWC 與套餐額度而非自管 OpenAI API Key 的開發者。
務必注意:
- 插件以當前 DSH 進程權限運行;安裝前請閱讀源碼與 MIT 許可證,並理解倉庫中的
docs/security/threat-model.md。 - DSH 生態理念是「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
- 常見問題:
MISSING_CREDENTIAL表示未登錄;invalid_grant多爲非 Plus/Pro 賬號;無法打開系統瀏覽器時需檢查桌面環境。
結尾¶
@hackforjoy/dsh-openai-siwc 把 OpenAI SIWC 與 ChatGPT plan usage 接到 DSH,在遵守官方協議的前提下提供可配置的 provider 行爲與 /siwc 命令管理登錄態。進一步細節與故障表見 GitHub README。
- 目錄頁:https://www.skillhub.cn/plugins/HackForJoy/dsh-openai-siwc
- 倉庫:https://github.com/HackForJoy/dsh-openai-siwc