DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Subscriptions — DeepSeek Harness 插件(DSH Plugin)
← Plugins
S

dsh-subscriptions

Subscriptions

DeepSeek Harness 插件:通过各厂商各自的 OAuth 流程,将您自己的 Claude 和 ChatGPT/Codex 订阅用作模型提供商

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

npx -y @deepseek-ai/dsh plugin --profile web add github:DevViking-Persike/dsh-subscriptions#9ab08665bbd7b684409973bc91b9019e359074b8
README兼容性版本

兼容性与来源证明

Subscriptions 以 dsh-subscriptions 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.0stable
2026/8/23

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编码计划配额,并提供实时令牌使用记录,同时在侧边栏条目中显示当前会话提供商今日的使用量Usage Stats@ychris12138/dsh-usage-statsdsh Web GUI 的令牌使用热力图、提供商余额和订阅配额Codex Connectdsh-codex-connect用于 DeepSeek Harness 的 ChatGPT OAuth 和 Codex 模型。Ui Usage Billing@kenz1117/dsh-ui-usage-billingDeepSeek Harness 的用量计费仪表板:侧边栏成本指标和完整的仪表板模态窗口,依据当前多提供商目录定价,并汇总会话日志中的实际用量。

README

dsh-subscriptions

Use your own Claude and ChatGPT/Codex subscriptions as model providers in DeepSeek Harness — the same OAuth sign-in the Claude Code and Codex CLIs use. No API key.

Install

dsh plugin --profile web add github:DevViking-Persike/dsh-subscriptions

Restart dsh, then sign in to whichever subscription you have:

http://127.0.0.1:1458/claude/start
http://127.0.0.1:1458/codex/start

Each opens the vendor's own sign-in page and stores the resulting OAuth credential locally. Tokens refresh on their own; you sign in once.

RouteProviderCredential
claudeclaude-code-oauth~/.dsh/claude-code-oauth.json
codexcodex-oauth~/.dsh/codex-oauth.json

Other endpoints: GET /<route>/status reports whether a subscription is connected and when its token expires; POST /<route>/logout removes the credential. The server binds to loopback only.

Configuration

Every field is optional.

FieldDefaultMeaning
routes['claude', 'codex']Which subscriptions to mount.
controlPort1458Loopback port for the sign-in endpoints.
claudeModels / codexModelsshipped catalogsA supplied array replaces the default.
claudeCredentialPath / codexCredentialPathunder ~/.dshWhere each credential is stored.
claudeImportFrom / codexImportFrom—Seed once from a CLIProxyAPI auth file.
streamIdleTimeoutMs300000Budget between reads before the transport gives up.
defaultContextWindow200000Context assumed for a model absent from the catalog.
maxTokens32000Output cap when neither request nor catalog states one.
retryPolicynormal, 3 retriesMerged over the default.
- id: dsh-subscriptions
  name: 'dsh-subscriptions'
  config:
    routes: ['claude']
    controlPort: 1458

Model Experience

Transparent to the model: the plugin registers provider routes and streams responses, adding no tool, prompt section, or context.

What it affects is accounting, and the two routes deliberately disagree:

  • Claude reports input_tokens already excluding cache reads, so nothing is subtracted.
  • Codex includes them, so they are subtracted to keep the counts disjoint.

Both directions are pinned by tests recorded from the harness's own implementations, because getting either backwards raises nothing — it just misreports context in every cost display.

Text only on both routes. Image content is refused before a request is sent, since the serialization path would drop it and the model would answer a question it never saw.

Safety

  • Credentials are written atomically with owner-only permissions (0600, parent 0700), and the file is read through a cross-process writer lock. Two DSH instances refreshing at once cannot corrupt the document or burn the refresh token twice — proven by a test that forks real processes, with a negative control that fails when the lock is removed.
  • A token never appears in an error message, a log line, or the /status response. Upstream error bodies are redacted before being quoted.
  • A failed refresh leaves the stored credential untouched, so a transient outage cannot force a re-login.
  • A truncated stream raises STREAM_CLOSED rather than presenting as a finished response.
  • A stale lock is never stolen: file age cannot prove its owner died, so orphan recovery stays an operator action.

Known Limitations and Deferred Work

  • Version-sensitive by construction. This plugin lives outside the harness repository, which states it makes no compatibility promise before its first release. The chunk vocabulary is therefore verified at load, and a mismatch refuses to mount with a message naming the drifted field.
  • The sign-in callback binds 127.0.0.1, while the vendors' registered redirect URIs say localhost. On a host where localhost resolves to ::1 first, the browser callback will not arrive. The ports are fixed by the public clients and cannot be reconfigured.
  • Model catalogs are static configuration, not discovered from the vendor. A model your subscription serves but the catalog omits still works when named explicitly, resolving with the default context window.
  • No image input, and the Codex route rejects stop sequences — the Responses API has no equivalent, and silently dropping one would let a model run past a boundary the caller relied on.
  • The test suite runs entirely against local node:http servers. It proves this plugin's behavior, not that either vendor still speaks exactly this dialect: the fixtures encode the harness's belief about the wire, recorded from its own implementations.

Tests

npm install && node --test test/*.test.js

132 tests, no network and no credential required.

License

MIT — see LICENSE and NOTICE.md. Using this plugin means using your own subscription under its own terms.