DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
O

@hackforjoy/dsh-openai-siwc

Openai Siwc

社区版 DeepSeek Harness (DSH) LLM 提供商,使用 OpenAI Sign in with ChatGPT(供开源客户端使用 ChatGPT 计划)。不隶属于 OpenAI 或 DeepSeek。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:HackForJoy/dsh-openai-siwc#af0dfecceda91b195de95f8d67bdb68c656d4f8f
README兼容性版本

兼容性与来源证明

Openai Siwc 以 @hackforjoy/dsh-openai-siwc 发布,当前版本为 0.1.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/11/4

版本

0.1.3stable
2026/11/4
0.1.2stable
2026/10/28

相关插件

正在加载相关插件…

最新版
0.1.3
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 3
周下载
0
最近提交
2026/11/4
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 models-usage 分类下经过校验的插件。

Experimental Cot Translation Bundle@deepseek-ai/dsh-experimental-cot-translation-bundle扩展推理的实验性机器翻译Our Free Model@ebony-vinyl/dsh-our-free-modelOur Free Model — 在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型,桌面端另有 EAC 协付渠道;2.0 起接入 LobsterAI、Qoder、TRAE、Cline、Loomy、Raccoon、MiniMax、ZCode、Gemini 十个账号渠道(原有匿名免费通道保留)(登录、账号池、积分领取、本地 OpenAI 网关与局域网转发、数据看板与运行日志),六页毛玻璃界面统一呈现。Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编程套餐配额,并实时记录令牌使用情况;侧边栏 Settings 行上方显示紧凑的价格概览卡片Connect Workbuddydsh-connect-workbuddy把本机登录的 WorkBuddy 模型(国内版与国际版)接入 DeepSeek Harness:每次刷新按上游目录自动读取每个模型的积分倍率,支持逐模型图片输入开关、多账号切换与账号池自动换号,并提供每日签到、卡片与输入框里的胶囊积分读数等只读积分概览。

README

dsh-openai-siwc

English | 中文

An LLM provider plugin for DeepSeek Harness (DSH). It uses OpenAI's official Sign in with ChatGPT — ChatGPT plan usage for open-source clients (SIWC) so DSH can call models with your ChatGPT account and plan.

This is a community plugin. It is not affiliated with or endorsed by OpenAI or DeepSeek. The protocol is implemented strictly from the official documentation: https://developers.openai.com/siwc/token-sharing-open-source/sign-in (see docs/research/openai-siwc-protocol.md).

It is not:

  • traditional Codex OAuth (what DSH's built-in openai-codex provider uses);
  • an OpenAI API key provider. It never treats a SIWC token as an API key and never falls back to another billing path when a request fails.

Requirements

  • Per OpenAI, ChatGPT plan usage is for eligible ChatGPT Plus / Pro users in open-source, locally run apps. An ineligible account (for example ChatGPT Free) is refused during sign-in, at the code exchange (invalid_grant).
  • Compatibility: DSH 0.2.1-rc.3 through 0.2.1 (engines.dsh >=0.2.1-rc.3 <0.2.2-0, @deepseek-ai/cordis ~4.0.5); Node.js ≥ 22. Verified against the real service on 0.2.1-rc.3; 0.2.1-rc.5 ships the same SDK code. The DSH SDK is still pre-release and can change incompatibly between minor versions, so the range stops before 0.2.2 and a matching plugin release follows each DSH minor update.
  • For Plus users, the five-hour usage limit is shared across every app that uses the ChatGPT plan. Manage usage and app access at https://chatgpt.com/settings/usage.

Install

Install into a profile with the DSH CLI (it records the plugin in the profile's dependencies and dsh.profile.bundles):

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"   # macOS
"$DSH" plugin --profile <profile> add @hackforjoy/dsh-openai-siwc

Then start the profile (for example "$DSH" <profile>). The bundled cordis.patch.yml mounts the plugin under the id openai-siwc.

  • Consider trying it in a separate profile, or even a separate DSH_HOME (e.g. DSH_HOME=~/.dsh-siwc-test), before adding it to the profile you use every day.
  • pnpm warns about missing @deepseek-ai/* peer dependencies. That is expected: the DSH host provides them (DSH's own third-party plugin dsh-subagent-codex works the same way).
  • Upgrade: "$DSH" plugin --profile <profile> add @hackforjoy/dsh-openai-siwc@<new version>, then restart DSH.

To install from source, see Development.

Configuration (optional)

Override by id in the profile's cordis.patch.yml:

- id: openai-siwc
  name: '@hackforjoy/dsh-openai-siwc'
  config:
    defaultContextWindow: 128000     # only for models whose catalog entry has no context_window
    models:
      some-model-slug:
        contextWindow: 200000        # per-model override
    streamIdleTimeoutMs: 300000      # longest silence tolerated on an open stream
    maxRequestImageBytes: 20971520   # base64 image budget per request; DSH offloads the oldest images beyond it

The OpenAI endpoints are not configurable, so a tampered configuration cannot send tokens elsewhere.

Sign in

DSH 0.2.1's settings UI has no entry point for third-party authorization flows yet, so sign-in uses a slash command:

  1. Run /siwc login inside a conversation (/siwc login new adds another ChatGPT account). The empty composer on the DSH home page does not display command output.
  2. The plugin opens your system browser (as the official docs require). Sign in to ChatGPT, confirm the agent name ("DSH OpenAI SIWC"), and allow ChatGPT plan usage.
  3. The browser returns to http://127.0.0.1:<random port>/auth/callback and shows "Sign-in finished"; the command prints "Signed in to ChatGPT as …".

The authorization URL goes only to the browser; it never appears in command output or session logs. If plan usage is not granted, the plugin keeps the sign-in but requests fail with SIWC_PLAN_USAGE_DISABLED — sign in again and allow it.

Usage

  • Pick a model under ChatGPT plan (Sign in with ChatGPT) in the model picker. The list comes from your account's GET /v1/models (only visibility: "list" entries) and refreshes when you switch accounts.
  • Supported: text, streaming, multi-turn conversations, tool calls (wrapped in a namespace named dsh, as the docs require), image input, and reasoning effort. Model capabilities — input types, context window, reasoning levels — come from the account's model catalog; nothing is guessed.
  • Slash commands (when DSH mounts the commands service):
    • /siwc login [new] — sign in (see above);
    • /siwc status — sign-in state, plan usage, granted scopes, token lifetime, the last sign-in failure and model-list error (never any token);
    • /siwc models — fetch the current account's model list;
    • /siwc logout — sign out (see below).

Differences from other providers

DSH parameterBehaviorWhy
temperatureError UNSUPPORTED_PARAMETERForbidden by the docs; silently dropping it would change the output
stopError UNSUPPORTED_PARAMETERThe Responses API has no stop sequences
reasoningEffortSent as reasoning.effortLevels come from the account catalog, intersected with the values the API accepts (the catalog's ultra is rejected by the API and therefore dropped). "Default" leaves the server's own default
maxTokensNot sent, logged onceThe docs forbid max_output_tokens. DSH's compaction and session titles always pass it; it is only a cap, so omitting it does not affect correctness
Image inputImage-capable models (per catalog): inline data URLs, including images in tool results. Text-only models: text placeholdersAt most 20 MiB of base64 images per request by default (maxRequestImageBytes); beyond that DSH offloads the oldest images
Reasoning replayNot replayedstore: false, and no encrypted reasoning content is available

Sign out

/siwc logout

Stops using the tokens, revokes the refresh token with OpenAI (retrying on failure), then deletes the local tokens. The issued client id and this host's id are kept for the next sign-in. If revocation cannot be confirmed, the plugin says so; you can then disconnect the app in ChatGPT settings.

Deleting the openai-siwc/session record in DSH settings is local only and does not revoke the session remotely.

Uninstall

  1. Run /siwc logout first (revokes the remote session);
  2. "$DSH" plugin --profile <profile> remove @hackforjoy/dsh-openai-siwc, then restart DSH;
  3. Uninstalling does not delete credential records (by DSH design). For a full cleanup, delete openai-siwc/session and openai-siwc/registry in DSH settings. Without the registry, the next sign-in registers a new client and host id.

Credential storage

Credentials live in the DSH credential store (default ~/.dsh/.credentials.yaml, mode 0600, atomic writes) as two records:

  • openai-siwc/registry — this host's id (urn:uuid:…) and registered accounts (client_id, sub, email);
  • openai-siwc/session — the current account's access/refresh/ID tokens, granted scopes, and expiry.

Refresh runs inside DSH's cross-process exclusive write, so several DSH processes never race a rotating refresh token. See docs/security/threat-model.md for the security design and SECURITY.md for reporting vulnerabilities.

Troubleshooting

Symptom / codeCause and fix
MISSING_CREDENTIALNot signed in. Run /siwc login
SIWC_PLAN_USAGE_DISABLEDPlan usage was not granted at sign-in. Run /siwc login and allow it
Sign-in fails with invalid_grantMost often the account is not Plus/Pro (Free accounts are refused at the code exchange). After upgrading, run /siwc login again; the plugin reuses the client id it kept
"Could not open the system browser"No system browser could be launched (e.g. a headless machine); the plugin only supports running locally
Sign-in reports "declined in the browser"Authorization was declined. Sign in again and allow it, or use another provider (such as your own API key)
Sign-in reports "Registration incomplete"The callback carried no issued client_id. Sign in again
Sign-in reports "ID token failed validation"The ID token failed signature or claim checks and was not stored. Check the system clock and retry
QUOTA (subscription_sharing_usage_limit_exceeded)ChatGPT plan usage limit reached (possibly a per-app limit). See https://chatgpt.com/settings/usage. Not retried automatically
SIWC_NOT_ELIGIBLEPlan usage is unavailable for this user, workspace, or policy. Not retried
SIWC_UNSUPPORTED_CAPABILITYThe request used an unsupported input, tool, or model; param= in the message names it
AUTH (401)The token or permission was not accepted. Check /siwc status; sign in again only after the session is confirmed revoked
SERVER (503, e.g. usage_unavailable)Temporary; DSH retries per its retry policy and credentials are kept
TRANSPORT: "stream ended before response.completed"Connection interrupted; retry
Empty model listNot signed in, or the fetch failed; /siwc status shows the last error

Every error message includes the HTTP status and OpenAI's request id when available, and never a token.

Development

pnpm install --frozen-lockfile --ignore-scripts
pnpm typecheck   # tsc --noEmit (including tests)
pnpm test        # vitest: unit + integration tests (real DSH services + local mock OpenAI)
pnpm build       # output to lib/
pnpm pack:verify # pack and print the SHA-256 of the build artifact

Install a local build into DSH: "$DSH" plugin --profile <profile> add "file:/absolute/path/hackforjoy-dsh-openai-siwc-<version>.tgz". Re-installing the same version requires remove then add.

The integration tests mount the real @deepseek-ai/dsh-llm, dsh-authorization, dsh-credentials-local, and dsh-attachment-local (all on temp directories) against tests/helpers/mock-openai.ts. The mock implements the official protocol strictly — PKCE is verified, redirect_uri/resource/client_id must match, refresh tokens rotate and reuse is rejected, forbidden fields are refused — and reproduces live behavior observed on the real endpoint (SSE without Content-Type, x-oai-request-id). DSH_HOME points at a temp directory, so tests never touch a real ~/.dsh.

Each GitHub Release attaches the exact npm tarball and its SHA256SUMS (sha256sum -c SHA256SUMS). From 0.1.1 on, npm versions are published by GitHub Actions through npm Trusted Publishing with provenance, linking each version to the commit and workflow run that built it; 0.1.0 was published manually and has no provenance.

See CONTRIBUTING.md to contribute and CHANGELOG.md for release notes.

Verification status and limitations

  • Verified against the real service (DSH 0.2.1-rc.3, an eligible ChatGPT account): sign-in, sign-in again after logout, model list, streaming text, multi-turn, tool-call round trips, token refresh and rotation, reasoning effort, image input, logout with remote revocation; no tokens in logs or session files.
  • Not yet verified against the real service: adding a second account with /siwc login new; a real IMAGE_OFFLOAD_REQUIRED (the server's image limit is unpublished).
  • Behavior the official docs leave open, as observed on the real service: docs/research/openai-siwc-protocol.md §16.
  • One active account at a time (several can be saved and chosen at sign-in).
  • Architecture decisions: docs/adr/ADR-001-siwc-provider-plugin.md.

License

MIT — see LICENSE.