订阅账号接入 lingdong0128-sys/dsh-plugin-oauth-subs
DeepSeek 客户端把各类 AI 订阅账号接入工作台,统一管理额度与模型路由
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/lingdong0128-sys/dsh-plugin-oauth-subs.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 51 处,展示前 51 条)
- 写入本地文件lib/index.js:71
await mkdir(dir, { recursive: true, mode: 0o700 }); - 写入本地文件lib/index.js:72
await chmod(dir, 0o700); - 发起网络请求lib/ui/client.js:536
return rpc.request(`/oauth-subs-auth/${method}`, payload); - 写入剪贴板lib/ui/client.js:2143
await navigator.clipboard.writeText(String(code)); - 读取本地文件lib/utils/analyze-session.js:495
return decodeSessionBuffer(readFileSync(path)); - 读取本地文件lib/utils/analyze-session.js:498
for (const name of readdirSync(dir)) { - 读取本地文件lib/utils/analyze-session.js:500
const stat = statSync(path); - 读取本地文件lib/oauth/controller.js:2221
const list = JSON.parse(await readFile(this.#signedOutFile(), 'utf8')); - 写入本地文件lib/oauth/controller.js:2235
await mkdir(dirname(this.#signedOutFile()), { recursive: true }); - 写入本地文件lib/oauth/controller.js:2236
await writeFile(this.#signedOutFile(), `${JSON.stringify([...list, provider])}\n`); - 读取本地文件lib/oauth/models.js:1017
text = await readFile(patchPath, 'utf8'); - 写入本地文件lib/oauth/models.js:1035
await writeFile(tmp, next, 'utf8'); - 写入本地文件lib/oauth/models.js:1036
await rename(tmp, patchPath); - 删除本地文件lib/oauth/models.js:1039
await rm(tmp, { force: true }).catch(() => undefined); - 读取本地文件lib/utils/update.js:485
if (!resolveFn && !existsSync(manifest)) - 读取本地文件lib/utils/update.js:601
if (existsSync(bak)) - 读取本地文件lib/utils/outbound.js:114
const text = await readFile(path, 'utf8'); - 写入本地文件lib/utils/outbound.js:123
await mkdir(dirname(path), { recursive: true }); - 写入本地文件lib/utils/outbound.js:124
await writeFile(path, JSON.stringify(next) + '\n', { encoding: 'utf8', mode: 0o600 }); - 发起网络请求lib/utils/outbound.js:135
return typeof agentFor === 'function' ? agentFor(url) : new ProxyAgent({ uri: url, ...KEEP_ALIVE }); - 发起网络请求lib/utils/outbound.js:157
const next = new Headers(headers ?? (typeof input === 'object' ? input?.headers : undefined)); - 发起网络请求lib/utils/outbound.js:169
const direct = new Agent(KEEP_ALIVE); - 发起网络请求lib/utils/outbound.js:292
return owner().request(input, init); - 读取本地文件lib/utils/donate.js:18
const body = await readFile(new URL(`../../assets/donate/${file}`, import.meta.url)); - 执行外部命令来自配置/变量lib/oauth/antigravity/index.js:254
export function detectAntigravityVersion({ platform = process.platform, env = process.env, readFile = (path) => readFileSync(path, 'utf8'), execFile = - 读取本地文件lib/oauth/antigravity/index.js:254
export function detectAntigravityVersion({ platform = process.platform, env = process.env, readFile = (path) => readFileSync(path, 'utf8'), execFile = - 读取本地文件lib/oauth/kimi/index.js:170
if (existsSync(path)) { - 读取本地文件lib/oauth/kimi/index.js:171
const saved = readFileSync(path, 'utf8').trim(); - 写入本地文件lib/oauth/kimi/index.js:181
mkdirSync(dirname(path), { recursive: true, mode: 0o700 }); - 写入本地文件lib/oauth/kimi/index.js:182
writeFileSync(path, next, { encoding: 'utf8', mode: 0o600 }); - 写入本地文件lib/oauth/kimi/index.js:184
chmodSync(path, 0o600); - 读取本地文件lib/oauth/import-auth.js:55
return JSON.parse(await readFile(path, 'utf8')); - 读取本地文件lib/oauth/import-auth.js:600
const names = await readdir(dir); - 读取本地文件lib/oauth/import-auth.js:724
names = await readdir(dir); - 读取本地文件lib/oauth/cursor/import.js:55
const wsl = Boolean(env.WSL_DISTRO_NAME || env.WSL_INTEROP || existsSync('/mnt/c/Users')); - 读取本地文件lib/oauth/cursor/import.js:74
if (!existsSync(dbPath)) - 读取本地文件lib/oauth/kimi/import.js:39
const text = await readFile(path, 'utf8'); - 读取本地文件lib/oauth/copilot/import.js:55
return JSON.parse(await readFile(path, 'utf8')); - 读取本地文件lib/oauth/cline/import.js:66
const session = clineSessionFromProvidersFile(JSON.parse(await readFile(path, 'utf8'))); - 读取本地文件lib/oauth/anthropic/import.js:85
return JSON.parse(await readFile(path, 'utf8')); - 读取本地文件lib/utils/update-prefs.js:15
return JSON.parse(await readFile(path, 'utf8')); - 写入本地文件lib/utils/update-prefs.js:22
await mkdir(dirname(path), { recursive: true }); - 写入本地文件lib/utils/update-prefs.js:23
await writeFile(path, `${JSON.stringify(value, null, 2)}\n`); - 写入本地文件lib/utils/private-text.js:38
await mkdir(dirname(path), { recursive: true, mode: 0o700 }); - 写入本地文件lib/utils/private-text.js:39
await chmod(dirname(path), 0o700); - 写入本地文件lib/utils/private-text.js:42
await writeFile(tmp, text, { mode: 0o600 }); - 写入本地文件lib/utils/private-text.js:43
await chmod(tmp, 0o600); - 写入本地文件lib/utils/private-text.js:44
await rename(tmp, path); - 删除本地文件lib/utils/private-text.js:47
await rm(tmp, { force: true }); - 发起网络请求lib/oauth/cursor/h2-session.js:87
stream = client.request(requestHeaders(session, { path, unary: true })); - 发起网络请求lib/oauth/cursor/h2-session.js:172
stream = connected.request(requestHeaders(session, { path: CURSOR_RUN_PATH, unary: false }));
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-plugin-oauth-subs
[!NOTE]
本仓库是 xxww0098/dsh-plugin-oauth-subs(v0.0.110,MIT)的备份镜像。
原仓库已下线(404)。所有功能与版权归属原作者 xxww0098。
本副本原样保留,插件功能与原版 v0.0.110 完全一致,仅作留存用途。
把 ChatGPT / Codex、xAI Grok、智谱 GLM、AWS Kiro、Google Antigravity、Cursor、Ollama Cloud、Kimi Code Plan、GitHub Copilot、Devin Agent、Cline、Claude 的订阅,以及 OpenCode Go API key 接到 DeepSeek Harness。订阅家族通过本机回环代理;OpenCode Go 直连其 API。模型路由使用 DSH 的 openai-responses、openai-completions、anthropic-messages 三种 api。
出处
- 本镜像创建于 2026-10-21,来源为本机安装的 dsh-plugin-oauth-subs@0.0.110 工件——该包未发布在公共 npm registry,上游仓库(xxww0098/dsh-plugin-oauth-subs)已下线(404),此为本工件仅存的拷贝。
展开完整文档(README 剩余 1 节)
dsh-plugin-oauth-subs
[!NOTE]
本仓库是 xxww0098/dsh-plugin-oauth-subs(v0.0.110,MIT)的备份镜像。
原仓库已下线(404)。所有功能与版权归属原作者 xxww0098。
本副本原样保留,插件功能与原版 v0.0.110 完全一致,仅作留存用途。
把 ChatGPT / Codex、xAI Grok、智谱 GLM、AWS Kiro、Google Antigravity、Cursor、Ollama Cloud、Kimi Code Plan、GitHub Copilot、Devin Agent、Cline、Claude 的订阅,以及 OpenCode Go API key 接到 DeepSeek Harness。订阅家族通过本机回环代理;OpenCode Go 直连其 API。模型路由使用 DSH 的 openai-responses、openai-completions、anthropic-messages 三种 api。
出处
- 本镜像创建于 2026-10-21,来源为本机安装的 dsh-plugin-oauth-subs@0.0.110 工件——该包未发布在公共 npm registry,上游仓库(xxww0098/dsh-plugin-oauth-subs)已下线(404),此为本工件仅存的拷贝。
- 所有随包文件(lib/、scripts/、assets/、cordis.patch.yml、package.json、LICENSE、AGENTS.md)与原工件逐字节一致;仅有的文档级改动:顶部备份标注、本节,以及将 docs/ 引用去链接化(这些文件从未随包发布,链接原本就是死链)。
安装
dsh plugin --profile web add https://github.com/xxww0098/dsh-plugin-oauth-subs
dsh web
打开主页侧边栏 订阅(插件按钮下方的入口)。工作台顶部固定三个页签——额度 / 模型 / 版本,左侧是供应商栏,右侧内容区滚动。每个账号一张卡片(额度都在卡片上;Ollama Cloud 没有额度条)。版本页的 当前版本 固定显示本进程加载插件时的版本;自安装后仍显示旧运行版本,直到重启。本插件专攻 desktop:自身不 spawn dsh/npm,也不会重启宿主——版本卡对比运行版本与 GitHub 最新 tag,点 安装更新 会把 tag 的 tarball 自安装进 profile 的 node_modules(同卡还有每 15 分钟检查的自动更新开关;「本地插件目录」热链时开关照旧,只是提示改成 npm run build 热重载、不列 release 结果)。profile node_modules 比运行进程新时会列出 磁盘 并标记过期进程。或 pnpm dsh web --patch ./cordis.patch.yml(id: oauth-subs)。
Desktop
desktop profile 由 Electron 应用独占管理,dsh plugin --profile desktop 会被拒绝。走界面安装:
1. DeepSeek Harness → 插件 → 添加插件
2. 粘贴 https://github.com/xxww0098/dsh-plugin-oauth-subs → 安装
3. 打开开关;组件行应显示 运行中
数据在 ~/.dsh/profiles/desktop/data/dsh-plugin-oauth-subs/,登录态不与 web profile 共享。迁移已有账号:先退出应用,把 ~/.dsh/profiles/web/data/dsh-plugin-oauth-subs/ 下的 auth.json(勾选状态另有 models.json)复制到该目录,再启动。必须在退出状态下拷贝——插件把 token 缓存在内存,热改可能被覆写。
代理端口(默认 8318)是全局回环绑定,web 与 desktop profile 不能同时运行(EADDRINUSE)。杀掉另一个 profile,或在该 profile 的 cordis.patch.yml 里给 id: oauth-subs 改 config.port。
本插件专攻 desktop:宿主生命周期面(DSH CLI/npm 更新、重启宿主)已整体删除而非隐藏——Electron 应用独占管理 profile 与进程。升级是自安装的:检查更新 → 安装更新 会下载 release tarball 原地换目录(或打开 自动更新 每 15 分钟检查);装好后重启应用加载新版本。data/ 目录保留,登录态不丢。手动兜底:插件 → 卸载 → 添加插件 → 重装仓库地址。
如果应用启动即退:检查 launchctl getenv ELECTRON_RUN_AS_NODE——该变量会让所有 Electron 应用退化成纯 Node 模式,launchctl unsetenv ELECTRON_RUN_AS_NODE 即可修复。
系列
| 提供商 | 登录 | DSH api | 上游 hop |
| ChatGPT Codex | PKCE localhost:1455(占用则 1457);可粘贴回调;app_EMoamEEZ73f0CkXaXp7hrann | openai-responses | chatgpt.com/backend-api/codex/responses |
| xAI Grok | 设备码(默认);PKCE 127.0.0.1:56121;b1a00492-073a-47ea-816f-4c329264a828 | openai-responses | api.x.ai/v1/responses |
| GLM · Z.ai(全球) | ZCode CLI 轮询 provider: zai;再换发 id.secret;client_P8X5CMWmlaRO9gyO-KSqtg | anthropic-messages | api.z.ai/api/anthropic(Completions 残留 …/coding/paas/v4) |
| GLM · BigModel(中国) | 同一 CLI 轮询,provider: bigmodel;poll JWT 即密钥;client zcode | anthropic-messages | open.bigmodel.cn/api/anthropic(Completions 残留 …/coding/paas/v4) |
| AWS Kiro | Social PKCE app.kiro.dev(3128…53153)/ Builder ID / IdC / Entra / ksk_ | openai-completions | q.<region>.amazonaws.com GenerateAssistantResponse |
| Google Antigravity | Google OAuth localhost:51121;可粘贴回调;1071006060591-…apps.googleusercontent.com | openai-completions | daily-cloudcode-pa.googleapis.com/v1internal:streamGenerateContent |
| Cursor | PKCE 轮询 cursor.com/loginDeepControl;或 导入本机 Cursor | openai-completions | Connect agentn.us.api5.cursor.sh AgentService/Run |
| Ollama Cloud | 粘贴 API key / 导入 OLLAMA_API_KEY | openai-completions | https://ollama.com/v1/chat/completions |
| Kimi Code Plan | 设备码(无 PKCE);导入 ~/.kimi-code/credentials/kimi-code.json;可选 KIMI_API_KEY | openai-completions | https://api.kimi.com/coding/v1/chat/completions |
| GitHub Copilot | 设备码(无 PKCE);导入 ~/.config/github-copilot/hosts.json;可选 GITHUB_TOKEN | openai-completions | https://api.githubcopilot.com/chat/completions(tid= session) |
| Devin Agent | PKCE 127.0.0.1:59653;导入 ~/.local/share/devin/credentials.toml;粘贴 devin-session-token$… | openai-completions | Connect server.codeium.com ApiServerService/GetChatMessage |
| Cline | WorkOS 设备码(无 PKCE);导入 ~/.cline/data/settings/providers.json | openai-completions | https://api.cline.bot/api/v1/chat/completions |
| Claude (Anthropic) | PKCE Claude.ai claude.com/cai 或 Console platform.claude.com(本机 /callback);只读导入本机 Claude Code 登录 | anthropic-messages | api.anthropic.com/v1/messages(claude-code-20250219 + oauth-2025-04-20 beta 指纹) |
| OpenCode Go | 粘贴 API key;可选 Console cookie 与工作区以读取额度 | openai-completions / openai-responses | 直连 https://opencode.ai/zen/go/v1 |
导入已有凭据
| 路径 | 系列 |
| ~/.codex/auth.json | Codex |
| ~/.grok/auth.json、~/.hermes/auth.json | Grok |
| ~/.zcode/v2/config.json(旧路径 cli/config.json / config.json 仍读) | GLM |
| ~/.kiro/credentials.json;credentials.json(kiro.rs 当前目录);~/.aws/sso/cache/kiro-auth-token.json | Kiro |
| 面板粘贴:kami / JSON / CSV / Social refresh / ksk_… | Kiro |
| ~/.gemini/antigravity-cli/antigravity-oauth-token;~/.cli-proxy-api/antigravity-.json | Antigravity |
| macOS Keychain cursor-access-token / cursor-refresh-token;IDE state.vscdb(只读当前用户);CURSOR_ACCESS_TOKEN | Cursor |
| 环境变量 OLLAMA_API_KEY(不是 ~/.ollama/id_ed25519.pub) | Ollama Cloud |
| ~/.kimi-code/credentials/kimi-code.json;只读 ~/.kimi/credentials/kimi-code.json;KIMI_API_KEY | Kimi |
| ~/.config/github-copilot/hosts.json;OpenCode ~/.local/share/opencode/auth.json;COPILOT_GITHUB_TOKEN / GITHUB_TOKEN / GH_TOKEN | Copilot |
| ~/.local/share/devin/credentials.toml($XDG_DATA_HOME/devin/;Windows %LOCALAPPDATA%\devin\);DEVIN_API_KEY / WINDSURF_API_KEY | Devin |
| ~/.cline/data/settings/providers.json | Cline |
| macOS 钥匙串 Claude Code-credentials,然后 ~/.claude/.credentials.json(只读) | Claude |
| 面板粘贴:OpenCode Go API key;可选 Console cookie / 工作区 | OpenCode Go |
订阅令牌:<profile>/data/dsh-plugin-oauth-subs/auth.json(0600)。OpenCode Go 账号:同目录 opencode-go.json。模型选择:models.json。
工作原理
| 平面 | 作用 |
| 订阅面板 | 登录 / 导入 / 退出,同步模型 |
| llm-pi-ai | DSH 调用面;订阅家族走本机代理,OpenCode Go 直连其 API |
| 回环 | http://127.0.0.1:8318/{codex,grok}/v1/responses、/glm/v1/messages(Completions 残留 /glm/v1/chat/completions 留到下次 sync)、/{kiro,antigravity,cursor,ollama,kimi,copilot,devin,cline}/v1/chat/completions |
| 上游 | 使用刷新后的订阅令牌或活动 OpenCode Go API key |
面板关闭后,DSH 继续使用已配置的路由。代理只监听回环地址,并用本地凭证 DSH_OAUTH_SUBS_API_KEY 鉴权;OpenCode Go 不经过它。技术栈与模块树:AGENTS.md。上游对照:docs/oauth.md。
缓存
完整 session-772f7f3a-… SkillStar 会话验收(oauth-codex / gpt-5.6-terra-fast,211 次调用,71 分钟):
| | 2026-08-26 事故 | 0.0.14 亲和头之后 |
| 加权缓存命中 | 27.4% | 95.6% |
| 前缀复用(中位) | — | 99.6% |
| 亲和丢失 | 47 / 90 零缓存 | 0 |
| 前缀改写 | — | 1 次适配器重建 + 9 次压缩 |
| TRANSPORT 故障 | 29 | 0 |
剩下的未缓存几乎都是新的工具输出(delta),加上预期的前缀改写:退出 plan(step 55,169k)和 DSH 压缩(330k);每次改写后的下一拍复用约 99%。健康规则:加权命中 ≥ 80%,亲和丢失为 0,且无 TRANSPORT。压缩 / request/header 重建造成的零缓存不会判失败。细节见 docs/error.md。
诊断
npm run analyze -- path/to/session.jsonl
node --experimental-strip-types scripts/analyze-session.ts --json path/to/session.jsonl
node --experimental-strip-types scripts/analyze-session.ts --fail-below 80 path/to/session.jsonl
npm run analyze -- --dir ~/.dsh/sessions --since 30d [--until ISO] [--json] [--compare base.json]
目录模式按 provider 与模型汇总所有会话(明文或 zstd,同一会话 id 只算一份):按调用序号的命中率、宿主重试、300s 空闲超时、首字节、流内静默、连接池空闲;--compare 对照之前保存的 --json 报告,按每 1k 次调用输出差值。
分析器给每步打标 cold_start / delta / compaction / rebuild / affinity_miss,避免把压缩会话误判成分片回归。也可 import dsh-plugin-oauth-subs/analyze-session。
Fast / 模型 / 推理
登录和对话走官方客户端身份;UA / 指纹见各 src/oauth/<id>/README.md。对照仓库见 docs/oauth.md。面板 模型 页签:按系列勾选(默认全开,900K 除外)。推理等级在 Harness 会话模型菜单里设,不在「模型」页签。Fast 和 900K 都更耗额度。
| 系列 | Fast | 窗口 | 思考 |
| Codex GPT-6 Astra / Sol / Luna 和 GPT-5.6 Sol / Terra / Luna | 可以。-fast → Priority(service_tier: "priority" + x-codex-routing-hint;store: false) | 258K 默认;-900k(872K) | low / medium / high / xhigh / max |
| 其余 Codex | 只剩 GPT-5.5:可以,-fast → Priority。GPT-5.4 / 5.4-mini / Spark 已下线(订阅账号 400 “not supported when using Codex with a ChatGPT account”) | 258K(无 -900k) | low–xhigh(无 minimal) |
| Grok | 不行。2026-08-30:83.34 对 82.80 tok/s(0.994)。更早的 id 拒绝该字段 | — | 4.6:low / medium / high / xhigh(不选 = high);4.5:无 xhigh |
| GLM | — | — | 5.3 / Flash:low / high / max(默认 max;无 medium;disabled 会 400)。Turbo:开着,无深度。只有 Flash 是 GLM 图文行 |
| Kiro | — | — | GPT-5.6:off / low / medium / high / xhigh / max(off → 线上 none)。Opus 5 / 4.8 / 4.7 和 Sonnet 5 另有 xhigh;4.6 家族到 max;Haiku / 开源权重:无。目录:kiro.dev/docs/models(不含 Auto) |
| Antigravity | 不行 | Cloud Code 目录;见家族模型说明 | 取决于上游模型 |
| Cursor | 按模型提供 -fast 变体 | 登录后 GetUsableModels + AvailableModels;离线回落 15 行 | 按家族发送注册表参数;见家族模型说明 |
| Ollama Cloud | 不行 | 登录后 live GET /api/tags(静态 17 行 Cloud 快照作回落)。窗口来自 POST /api/show 的 model_info.<family>.context_length。无额度条 | off / low / medium / high / max(off → 线上 none) |
| Kimi | 不行 | 登录后 live GET /coding/v1/models(静态 kimi-for-coding / highspeed / k3 / k3-256k,256k/32k)。前缀哈希缓存 | off / minimal / low / medium / high / xhigh / max → thinking.effort |
| Copilot | 不行 | 登录后 live GET {api}/models(静态楼 2026-09-23 按 GitHub 官方 docs 数据表 + models.dev github-copilot 重刷)。前缀哈希 + X-Interaction-Id | 目录声明才保留 reasoning_effort |
| Devin | 可以。-fast 是真后端变体(不是 Codex Priority),不过 applyFastMode | 登录后 live GetCliModelConfigs(2026-09-23:49 家族 / 81 个 picker 行;静态回落同镜像) | 按家族映射到后端 chat_model_uid(defaultUid);thinking / fast / 1m 收成独立 picker 行 |
| Cline | 不行 | 登录后 live GET /ai/cline/recommended-models(静态 feed 快照回落) | minimal / low / medium / high / xhigh / max → reasoning_effort(max→xhigh) |
| Claude | 不行 | 静态目录,逐行钉 pi-ai anthropic.json(Claude 订阅集合,并用 Kiro 行交叉核对) | 宿主原生分派:自适应 id(Opus 5 / 4.8 / 4.7、Sonnet 5 / 4.6、Fable)→ output_config.effort(4.6 家族止于 max);经典 id 保持 budget thinking |
| OpenCode Go | 不行 | Completions 28 行 + Responses 6 行;见模型审查 docs/model-audit-2026-09-26.md | 依具体模型;推理等级键遵循 DSH 闭集 |
Codex Priority 回显 created=auto / completed=default 不能当确认(openai/codex#14204)。2026-08-26 Luna:88.3 对 57.5 tok/s(1.54 倍);2026-08-30 交错均值 1.33 倍(1.90 再 0.93)。只影响生成吞吐;首 token 时间和缓存不变。
额度
| 订阅 | 接口 | 显示 |
| ChatGPT Codex | chatgpt.com/backend-api/wham/usage | 套餐等级(Plus / Pro / Team …)+ 5 小时窗口 + 每周窗口,展示剩余百分比和重置时间 |
| ChatGPT Codex 重置 | …/wham/rate-limit-reset-credits 与 /consume | 银行的周窗口重置券和过期时间;Codex 卡片上按券各一颗确认按钮 |
| xAI Grok | cli-chat-proxy.grok.com/v1/billing?format=credits + /v1/user?include=subscription + grok.com GetGrokCreditsConfig(gRPC-web) | 套餐徽章(SuperGrok / X Premium+ …)、Grok Code 准入标、带周期区间的用量条、产品分项;{val} 美分字段在计费账号下发时转美元行(月度包含池 / 按需封顶 / 预付余额) |
| 智谱 GLM | api.z.ai 或 open.bigmodel.cn 的 monitor/usage/quota/limit | 套餐徽章(Lite / Pro / Max)+ Coding Plan 积分窗口;站点随当前账号 |
| AWS Kiro | q.<region>.amazonaws.com/getUsageLimits | 本周期用量、上限,以及适用的试用或赠送额度 |
| Google Antigravity | daily-cloudcode-pa 的 loadCodeAssist + fetchAvailableModels(prod 仅 5xx / 传输失败回落) | 套餐徽章(Pro / Ultra / Free / Standard)+ SkillStar 模型分组剩余条和重置时间 |
| Cursor | api2.cursor.sh DashboardService/GetCurrentPeriodUsage | 套餐徽章(Free / Pro / Pro+ / Ultra …)+ 包含额度美元数(includedSpend/limit,美分 → $已用/$总额)和分项剩余百分比 |
| Ollama Cloud | 没有文档化的额度 JSON | 不显示额度条 |
| Kimi Code | api.kimi.com/coding/v1/usages + /me | /me.user_level_name 套餐徽章 + 剩余条;API 没给重置时刻就不编 |
| GitHub Copilot | api.github.com/copilot_internal/user | 套餐徽章(Free / Pro / Pro+ / Business / Enterprise)+ Premium 剩余百分比 |
| Devin | server.codeium.com SeatManagementService/GetUserStatus | 套餐徽章(Pro / Max / Teams / Enterprise / Free / Trial)+ Prompt / Flow / Flex 点数桶(已用 / 月度额度,随 plan_end 重置)+ 美元超额余额 + 层可见时的每日 / 每周剩余条 |
| Cline | api.cline.bot /users/me + /users/{id}/balance(微美元)+ /users/me/plan;ClinePass 另有 /plan/usage-limits | 套餐徽章 + 预付额度余额($x.xx);ClinePass 才有 5 小时 / 每周 / 每月条。credit 账号没有窗口条 |
| Claude (Anthropic) | api/oauth/usage(limits[]:session / weekly_all / weekly_scoped)+ 1-token 探针打 /v1/messages 读统一限额头 | 5 小时 + 每周剩余条与重置时间;模型专属周条(如 Fable,走 weekly_scoped / 7d_oi 头 / seven_day_ 字段);429 也照样报利用率 |
| OpenCode Go | Console /console/api/{orgs,go/status,billing/status,user};旧工作区回落 | 按账号显示 Go 用量、余额;提供 Console cookie 时可显示邮箱 |
约每分钟刷新一次,也可点 刷新额度。进度条:hsl(剩余 × 1.2, 78%, 38%)。Codex pro → Pro 20x / $200,prolite → Pro 5x / $100。Plus/Pro 可能有银行的周窗口重置券——每张未用券在 Codex 卡片上各一颗确认按钮(Harness 风险确认后 POST …/consume,请求体 { redeem_request_id },并带 idempotencyKey)。消耗的是 周额度窗口。Grok 没有对应能力。Ollama Cloud 没有文档化的额度 JSON(/api/quota 404);卡片 idle,不画额度条。
配置
| 选项 | 默认 | 说明 |
| port | 8318 | 本机代理端口 |
| provider | oauth | 同步到 DSH 的路由 ID 前缀;每个家族都是 oauth-<id>(oauth-codex、oauth-grok……) |
| dataDir | profile 数据目录 | auth.json、models.json 与 proxy-key 位置 |
| grokLogin | device | device 或 pkce |
| proxyUrl | 设置页 / 环境 | 模型 / 额度 / 登录出站 HTTP(S) 代理 |
| cursorProxy | — | Cursor 上游代理(http:// 或 socks5://),用于区域门模型 |
开发
npm test
npm run analyze -- path/to/session.jsonl
见 CONTRIBUTING.md。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
lingdong0128-sys/dsh-plugin-oauth-subs
把各类 AI 订阅账号接入工作台,统一管理额度与模型路由
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1