🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

订阅账号登录 Khellendros97/dsh-subscription-auth

DeepSeek Harnessv0.2.1
Khellendros9783 天前有提交已提供中文文档扫描:含敏感能力

用订阅会员账号登录,免 API key 调用四大模型

32.7/100
综合分
4
GitHub 星标
49
npm 周下载
—/5
用户评分

数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-subscription-auth
npm 源 · dsh-subscription-auth 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · model
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(runtime_smoke_failed),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/27·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 83 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(runtime_smoke_failed · 2026/10/27) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-subscription-auth @ 0.2.1
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/21 08:36:34

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 28 处,展示前 28 条)
  • 写入本地文件
    lib/index.js:25
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    lib/index.js:26
    appendFileSync(join(dir, "subscription-auth.log"), line + `
  • 发起网络请求
    lib/client.js:211
    const res = await fetch(PROVIDERS_PATH);
  • 发起网络请求
    lib/client.js:231
    const res = await fetch(LOGIN_PATH, {
  • 发起网络请求
    lib/client.js:248
    const statusRes = await fetch(PROVIDERS_PATH);
  • 发起网络请求
    lib/client.js:270
    const res = await fetch(LOGOUT_PATH, {
  • 发起网络请求
    lib/channels/claude.js:58
    const res = await fetch(TOKEN_ENDPOINT, {
  • 发起网络请求
    lib/channels/claude.js:77
    const res = await fetch(TOKEN_ENDPOINT, {
  • 发起网络请求
    lib/channels/claude.js:95
    const res = await fetch(MODELS_ENDPOINT, {
  • 请求外部主机auth.x.ai
    lib/channels/grok.js:25
    const res = await fetch("https://auth.x.ai/.well-known/openid-configuration", {
  • 发起网络请求
    lib/channels/grok.js:25
    const res = await fetch("https://auth.x.ai/.well-known/openid-configuration", {
  • 请求外部主机auth.x.ai
    lib/channels/grok.js:53
    const res = await fetch("https://auth.x.ai/oauth2/userinfo", {
  • 发起网络请求
    lib/channels/grok.js:53
    const res = await fetch("https://auth.x.ai/oauth2/userinfo", {
  • 发起网络请求
    lib/channels/grok.js:75
    const res = await fetch(tokenEndpoint, {
  • 请求外部主机auth.x.ai
    lib/channels/grok.js:107
    const res = await fetch("https://auth.x.ai/oauth2/device/code", {
  • 发起网络请求
    lib/channels/grok.js:107
    const res = await fetch("https://auth.x.ai/oauth2/device/code", {
  • 发起网络请求
    lib/channels/grok.js:129
    const res = await fetch(tokenEndpoint, {
  • 请求外部主机api.x.ai
    lib/channels/grok.js:143
    const res = await fetch("https://api.x.ai/v1/models", {
  • 发起网络请求
    lib/channels/grok.js:143
    const res = await fetch("https://api.x.ai/v1/models", {
  • 发起网络请求
    lib/channels/kimi.js:44
    const res = await fetch(url, {
  • 发起网络请求
    lib/channels/kimi.js:116
    const res = await fetch(MODELS_URL, {
  • 发起网络请求
    lib/adapter.js:360
    response = await fetch(o.apiBaseURL, {
  • 执行外部命令固定命令
    lib/oauth.js:60
    const child = spawn("rundll32.exe", ["url.dll,FileProtocolHandler", url], { stdio: "ignore", detached: true });
  • 执行外部命令来自配置/变量
    lib/oauth.js:66
    const child = spawn(cmd, [url], { stdio: "ignore", detached: true });
  • 发起网络请求
    lib/oauth.js:87
    const res = await fetch(`${AUTH_BASE}/oauth/token`, {
  • 发起网络请求
    lib/oauth.js:105
    const res = await fetch(`${AUTH_BASE}/oauth/token`, {
  • 发起网络请求
    lib/discovery.js:20
    response = await fetch(url, { method: "GET", headers, signal });
  • 发起网络请求
    lib/adapters/anthropic.js:331
    response = await fetch(o.apiBaseURL, {
扫描于 2026/11/5(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:auth.x.ai、api.x.ai

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-credentials@deepseek-ai/dsh-settings
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 订阅会员账号登录
  • 免APIkey调用模型
  • 对接四大订阅渠道

dsh对接openai、grok、anthropic、kimi订阅渠道

README

由 DeepSeek 最新模型翻译生成
dsh-subscription-auth npm version 为 dsh 增加订阅会员 OAuth 登录支持(模型提供商按订阅账号登录,而不是 API key)。内置四个订阅渠道: | 渠道 | 登录方式 | 推理 API | | ChatGPT 订阅(Plus/Pro) | 授权码 + PKCE + localhost 回调 | codex Responses API | | Claude(Pro/Max) | 授权码 + PKCE + localhost 回调 | Anthropic Messages API | | Grok(SuperGrok / X Premium+) | RFC 8628 设备授权流 | xAI Responses API | | Kimi(Kimi Code) | RFC 8628 设备授权流 | Kimi Anthropic Messages API | 每个渠道是一个自包含模块(src/channels/.ts,实现 ChannelDefinition 契约),src/index.ts 是薄的通用驱动(遍历渠道定义注册 settings / provider / adapter / 路由)。OAuth 常量与 wire 格式以 omp(@oh-my-pi/pi-ai、@oh-my-pi/pi-catalog)源码为准。
展开完整文档(README 剩余 1 节)
dsh-subscription-auth

npm version

为 dsh 增加订阅会员 OAuth 登录支持(模型提供商按订阅账号登录,而不是 API key)。内置四个订阅渠道:

| 渠道 | 登录方式 | 推理 API |
| ChatGPT 订阅(Plus/Pro) | 授权码 + PKCE + localhost 回调 | codex Responses API |
| Claude(Pro/Max) | 授权码 + PKCE + localhost 回调 | Anthropic Messages API |
| Grok(SuperGrok / X Premium+) | RFC 8628 设备授权流 | xAI Responses API |
| Kimi(Kimi Code) | RFC 8628 设备授权流 | Kimi Anthropic Messages API |

每个渠道是一个自包含模块(src/channels/.ts,实现 ChannelDefinition 契约),src/index.ts 是薄的通用驱动(遍历渠道定义注册 settings / provider / adapter / 路由)。OAuth 常量与 wire 格式以 omp(@oh-my-pi/pi-ai、@oh-my-pi/pi-catalog)源码为准。对接方法见内置 skill:subscription-channel-migration。

渠道详情

| 环节 | ChatGPT | Claude | Grok | Kimi |
| 授权端点 | https://auth.openai.com/oauth/authorize | https://claude.ai/oauth/authorize | https://auth.x.ai/oauth2/device/code | https://auth.kimi.com/api/oauth/device_authorization |
| 令牌端点 | https://auth.openai.com/oauth/token | https://api.anthropic.com/v1/oauth/token | (OIDC 发现 https://auth.x.ai/.well-known/openid-configuration) | https://auth.kimi.com/api/oauth/token |
| client_id | app_EMoamEEZ73f0CkXaXp7hrann | 9d1c250a-e61b-44d9-88ed-5944d1962f5e | b1a00492-073a-47ea-816f-4c329264a828 | 17e5f671-d194-4dfb-9706-5516cb48c098 |
| scope | openid profile email offline_access api.connectors.read api.connectors.invoke | org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload | openid profile email offline_access grok-cli:access api:access | (设备流,无 scope) |
| 回调 | http://localhost:1455/auth/callback | http://localhost:54545/callback | 设备流(无回调) | 设备流(无回调) |
| 调用端点 | https://chatgpt.com/backend-api/codex/responses | https://api.anthropic.com/v1/messages | https://api.x.ai/v1/responses | https://api.kimi.com/coding/v1/messages |

登录时:授权码渠道(ChatGPT / Claude)生成 PKCE 挑战 → 用 rundll32 打开浏览器(不能用 cmd /c start:URL 里的 & 会被截断)→ 本地一次性 HTTP 服务器收 code+state(10 分钟超时)→ 换令牌 → 存进 credential 服务。设备流渠道(Grok / Kimi)请求设备码 → 打开验证页并展示授权码 → 后台轮询直到用户完成授权 → 存令牌。之后每次请求前检查 access token 快过期则静默续期。

安装

前置:已装好 DSH(dsh web 能正常运行),Node.js ≥ 20,pnpm 可用(dsh plugin add 内部使用;没有的话先 npm install -g pnpm)。

标准安装(npm 发布,推荐)

插件以 npm 包 dsh-subscription-auth 发布,包内声明了 dsh.bundle.patch(随包的 cordis.patch.yml):CLI 安装后会自动注册进 profile 的 dsh.profile.bundles,下次启动即挂载——一条命令完成安装与挂载,无需手改任何配置文件:

dsh plugin --profile web add dsh-subscription-auth

装完重启 dsh 并硬刷新浏览器(Cmd/Ctrl+Shift+R)。

若报 minimum release age(发布不足 24h 的新版本):等 24h,或直接重跑一次上面的命令(pnpm 会自动补 minimumReleaseAgeExclude 放行)。

更新:

dsh plugin --profile web add dsh-subscription-auth

从旧版本迁移(手动挂载 → npm 通道)

0.2.1 之前(或任何通过「源码目录 junction + 手动挂载行」安装的版本)升级到 npm 通道,按顺序执行:
1. 删除 profile 里的手动挂载行:编辑 ~/.dsh/profiles/web/cordis.patch.yml(早期按全局文档安装的可能是 ~/.dsh/cordis.patch.yml),删除这一段:

- insert:
- id: dsh-subscription-auth
name: dsh-subscription-auth

2. 删除插件锚点 junction(Windows):

cmd /c rmdir "$HOME\.dsh\profiles\node_modules\dsh-subscription-auth"

3. 用官方 CLI 安装 npm 版:

dsh plugin --profile web add dsh-subscription-auth

4. 重启 dsh + 硬刷新(Cmd/Ctrl+Shift+R)。

⚠️ 迁移要点:
- 令牌不受影响:登录令牌存在 credential 服务里,与安装方式无关——迁移后无需重新登录。
- 不要跳过第 1、2 步:旧挂载不删就装 npm 版会双挂载(两个 Node 半、设置页出现两个「订阅服务」)。
- 旧的源码克隆目录可留作开发(见下),或直接删除;本机开发用的 node_modules junction 与运行无关。

源码安装 / 开发(可选,替代 npm 方式)

调试本地改动或跟随开发分支时使用(仅在未通过 npm 通道安装时使用,否则会与 npm 版双挂载):

1. git clone https://github.com/Khellendros97/dsh-subscription-auth.git
cd dsh-subscription-auth && bun scripts/build-bun.mjs # 递归转译 src → lib
2. 依赖解析:把 running dsh 的依赖指进来(Windows 示例): cmd /c mklink /J "$HOME\dsh-plugins\dsh-subscription-auth\node_modules" "\node_modules\@deepseek-ai\dsh\node_modules"
3. 注册到插件锚点: cmd /c mklink /J "$HOME\.dsh\profiles\node_modules\dsh-subscription-auth" "$HOME\dsh-plugins\dsh-subscription-auth"
4. 在 ~/.dsh/profiles/web/cordis.patch.yml 追加:
- insert:
- id: dsh-subscription-auth
name: "dsh-subscription-auth"
5. 重启 dsh。

更新:git pull && bun scripts/build-bun.mjs → 重启 dsh。切回 npm 通道时:删除锚点 junction 与手动挂载行,再 dsh plugin --profile web add dsh-subscription-auth。

使用

1. 打开 设置 → 订阅服务:列出四个订阅提供商,显示登录状态、账号与可用模型(折叠列表)。

2. 点「登录」:
- ChatGPT / Claude:浏览器自动打开授权页 → 登录并授权 → 跳回 localhost 回调 → 页面轮询到「已登录」→ 自动拉取官方模型列表。
- Grok / Kimi:页面显示验证链接 + 设备授权码 → 在浏览器打开链接并输入代码 → 页面轮询到「已登录」→ 自动拉取模型列表。

3. 在模型选择里切到对应的提供商(如「Claude (订阅)」),选一个模型即可对话。

模型选择器可为订阅模型选择思考强度(推理等级):
- ChatGPT:minimal / low / medium / high(默认 medium,作为 codex Responses 的 reasoning.effort 发送)
- Claude:low / medium / high(默认 medium,映射为 extended thinking 的 budget_tokens 8192 / 16384 / 32000)
- Grok:low / medium / high(不设默认,选择后作为 xAI Responses 的 reasoning.effort 发送)
- Kimi:low / medium / high(不设默认,映射为 thinking.budget_tokens 4096 / 16384 / 32768)

不选择时走提供商默认行为(请求体不带思考参数)。

4. 点右上角「注销」删除已保存的令牌与模型列表。

注意:授权码渠道(ChatGPT / Claude)需要在本机运行 dsh,因为回调落在 127.0.0.1。

注意:未登录的提供商不会出现在模型选择器里(provider/adapter 按登录状态注册):登录成功后才注册进模型列表,注销后自动移除。设置 → 订阅服务 页始终列出全部四个渠道以便登录。

注意:已登录的提供商在 dsh 启动时即自动注册并发现模型(启动门控会等待 credential 服务就绪,settings 就绪后还会补一次检查),无需先进入设置页。

配置

每个渠道一个 settings 命名空间(subscription-auth-)。模型优先级:手动 models → 登录发现并持久化的 discoveredModels → 渠道内置默认列表。

subscription-auth-chatgpt:
apiBaseURL: https://chatgpt.com/backend-api/codex/responses
redirectPort: 1455
maxTokens: 8192

subscription-auth-claude:
apiBaseURL: https://api.anthropic.com/v1/messages
redirectPort: 54545
maxTokens: 64000

subscription-auth-grok:
apiBaseURL: https://api.x.ai/v1/responses
maxTokens: 8192

subscription-auth-kimi:
apiBaseURL: https://api.kimi.com/coding/v1/messages
maxTokens: 32768

models 可手动固定模型列表(可选;不配则用登录后自动发现的官方列表),例如:

subscription-auth-claude:
models:
- { id: claude-sonnet-5, name: Claude Sonnet 5, contextWindow: 1000000 }

检测(日志)

Get-Content "$HOME\.dsh\tmp\subscription-auth.log" # 插件日志(登录/发现/错误) Get-Content "$HOME\.dsh\settings.yaml" | Select-String -Pattern "subscription-auth" -Context 0,15 # 持久化模型列表 Invoke-WebRequest "http://127.0.0.1:/subscription-auth/providers" # 实时状态

测试

bun tests/smoke.mjs # 依赖解析 / PKCE / Responses+Anthropic 序列化 / SSE 翻译 / 错误映射 / localhost 回调 / 多渠道 apply 接线 / 路由注册
bun tests/lib-check.mjs # 验证 lib/.js 产物与 src/.ts 行为一致
node --check lib/client.js # 配置中心页语法检查

已知限制

- 各渠道模型列表以登录后自动发现为准(官方 /models 接口),手动 models 配置可覆盖;
- Anthropic 订阅的 OAuth 授权约 30 天过期(refresh 不延长授权期),过期后需重新登录;
- 登录令牌存于 credential 服务,属于本机敏感信息,请勿外传;
- 并发刷新存在极小的重复续期竞争,但两者都会写入等价的新令牌,无副作用。

扩展新渠道

参考 skill subscription-channel-migration(对接订阅渠道的一般方法,含 omp 源码迁移指引):在 src/channels/.ts 实现 ChannelDefinition(OAuth 登录 + 模型发现 + 适配器),再把它加入 src/index.ts 的 CHANNELS 数组即可。

License

BSD-3-Clause
预览分享卡片长什么样 ↓Khellendros97/dsh-subscription-auth
分享 · DeepSeek Harness Hub
Khellendros97/dsh-subscription-auth

用订阅会员账号登录,免 API key 调用四大模型

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部