跳到正文
dsh-market 浏览插件 GitHub EN

xxww0098/dsh-plugin-oauth-subs

通过 OAuth 和本地代理,将 ChatGPT Codex、xAI Grok、智谱 GLM、AWS Kiro、Google Antigravity 与 Cursor 订阅接入 DeepSeek Harness。

Star 数 ★ 8 分类 身份与通信 收录于 2026-09-03

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add github:xxww0098/dsh-plugin-oauth-subs

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。

README

简体中文 | English

CI

把 ChatGPT / Codex、xAI Grok、智谱 GLM、AWS Kiro、Google Antigravity、Cursor、Ollama Cloud、Kimi Code Plan、GitHub Copilot、Devin Agent、Cline 的订阅,以及 OpenCode Go API key 接到 DeepSeek Harness。订阅家族通过本机回环代理;OpenCode Go 直连其 API。模型路由使用 DSH 的 openai-responses、openai-completions、anthropic-messages 三种 api。

订阅工作台 —— 额度页签、账号卡片与供应商栏

安装

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
ChatGPT(Sign in with ChatGPT) 官方开源客户端流程:dynamic_agent_client 注册 → 颁发 oaiapp_ client;127.0.0.1 回环;ID token 按 JWKS 验签 openai-responses api.openai.com/v1/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
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
面板粘贴: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 不经过它。开发、安装与发布:docs/development.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

Codex 缓存命中 Codex 亲和丢失与 TRANSPORT

剩下的未缓存几乎都是新的工具输出(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。面板 模型 页签:按系列开关(默认全开);每行的窗口徽标可点开,在该行上限内自定义输入窗口。推理等级在 Harness 会话模型菜单里设,不在「模型」页签。Fast 和更大的窗口都更耗额度。目录如何对照各家接口更新见 docs/models.md。

系列 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 默认;可自定义到 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(无更大窗口) 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:400K 套餐输入上限;可自定义到官方 1M 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;离线回落静态目录 按家族发送注册表参数;见家族模型说明
Ollama Cloud 不行 登录后 live GET /api/tags(静态 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(静态回落同镜像) 按家族映射到后端 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)
OpenCode Go 不行 Completions + Responses 两条路由 依具体模型;推理等级键遵循 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 账号没有窗口条
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。

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。