DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

aa2246740 /

aa2246740/dsh-oauth-login

Verified

Pi-native multi-provider OAuth login for DeepSeek Harness. Independent store — never touches official CLI auth files.

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@d690f1ef

dsh-oauth-login

中文 | English

把 ChatGPT、Claude、Grok、Copilot、OpenRouter、Kimi 的 OAuth 登录和智谱 GLM Coding Plan 接到 DeepSeek Harness。复用 Pi Agent 的 provider 适配器,凭据只写 DSH 自己的 $DSH_HOME/.dsh-oauth-auth.json。

厂商公开 OAuth 就按其流程登录;智谱使用官方 Coding Plan API Key。官方 codex login、Claude Code、grok CLI、Pi Agent 的 ~/.pi/agent/auth.json,这里不读也不写。

长什么样

下面保留的是早期 OAuth-only 版本装进 dsh web 后的实拍截图,不是设计稿。当前 0.2.0 入口已改为 设置 → 订阅登录,并新增智谱套餐接入和 OpenRouter 模型同步;旧截图不展示这些新增功能。

设置页里的语言跟着 Harness,这台机器当时是中文。

设置里的厂商列表,都还没登录

点 GitHub Copilot 的「登录」。插件向 GitHub 要 device code,卡片变成「正在等待授权」,并给出 github.com/login/device。官方 CLI 的登录文件不会被创建。

点登录之后,Copilot 进入等待授权

Copilot 正在等授权码,其余厂商仍未登录

Grok 那张绿点是写进 $DSH_HOME/.dsh-oauth-auth.json 的占位授权,用来拍「已登录 / 退出」。不是真的 xAI 会话,文件内容没有出现在任何截图里。

Grok 已登录,Copilot 仍在等授权

命令行读的也是 DSH 这份 store,不是官方 CLI 的登录文件。status 不打印 token。Codex 未登录时退出码是 1。ls 用来确认 ~/.pi、~/.codex、~/.claude 没被碰过。

CLI status、独立 store、未登录时退出 1

安装

需要 Node 22.19+,以及能跑起来的 DeepSeek Harness。

npx @deepseek-ai/dsh web

另开一个终端,在 Harness 旁边装这个插件。file: 前缀必须留着。

git clone https://github.com/aa2246740/dsh-oauth-login.git
dsh plugin --profile web add file:./dsh-oauth-login

写成 ./dsh-oauth-login 会被装成符号链接。本插件把 DSH 运行时当成 peer dependency,必须用 file: 拷进 profile,Node 才能从那边解析依赖。

重启 dsh web。打开 设置 → 订阅登录。对话里选 pi-… 路由。

dsh plugin --profile web exec dsh-oauth-login login openai-codex
dsh plugin --profile web exec dsh-oauth-login login xai
dsh plugin --profile web exec dsh-oauth-login login zai-coding-cn
dsh plugin --profile web exec dsh-oauth-login status

旧版 DSH 的 .pi-login-auth.json 只在下次写入时迁到新文件名,不会当成 Pi Agent 的登录文件。

支持哪些登录

设置页 Harness 路由 Pi provider 凭据方式
ChatGPT Codex pi-openai-codex openai-codex OAuth
Claude Pro/Max pi-anthropic anthropic OAuth
xAI Grok pi-xai xai OAuth
GitHub Copilot pi-github-copilot github-copilot OAuth
OpenRouter pi-openrouter openrouter OAuth
Kimi For Coding pi-kimi-coding kimi-coding OAuth
智谱 GLM Coding Plan pi-zai-coding-cn zai-coding-cn Plan API Key

Radius 没做。它要自己配网关。

OpenRouter 模型同步与免费筛选

OAuth 登录成功后自动拉取官方模型目录;已登录时,DSH 服务每 15 分钟 同步一次。重启先显示本地缓存,过期再更新。也可在模型菜单或 设置 → 订阅登录 → OpenRouter 点击刷新模型,手动刷新间隔至少 60 秒。

模型菜单支持全部 / 仅免费,按官方实时价格标注免费 · 有限额, 并显示工具调用能力、上下文长度、上次同步时间。同步失败保留旧列表并标为 缓存;新增模型会进入实际调用适配器,后台更新不会替你切换当前模型。

免费不代表无限调用,仍受 OpenRouter 速率、每日额度和供应商容量限制。 免费请求会使用零价格上限,禁用付费模型回退及已知收费插件;曾标为免费的 型号变成收费或下架后,不会静默按付费方式调用。账户/组织强制启用的收费 插件不受 DSH 控制,请先在 OpenRouter 关闭这类强制规则。

目录缓存不含凭据,独立保存为 $DSH_HOME/.dsh-oauth-openrouter-models.json。 详细边界与验证约定见 OpenRouter 模型同步。

智谱 GLM Coding Plan

智谱公开的 Coding Plan 接入方式是套餐专用 API Key,不是面向第三方插件的 网页 OAuth。点击智谱卡片的连接套餐后,插件会打开官方 Coding Plan 个人页,再请你把 Key 粘贴到本机 DSH 页面。官方接口为 https://open.bigmodel.cn/api/coding/paas/v4。

插件不会读取 BigModel Cookie、浏览器存储、网页内容,也不会从其他应用 提取 Key。只有你选择 pi-zai-coding-cn 路由时,保存的 Key 才会交给 Pi 的 zai-coding-cn 适配器发送。 从 0.2.1 起,模型列表同时提供 glm-5.3 普通版(纯文本)和 glm-5.3-flash(文本与图片),两者可以独立选择,不会互相替换。 默认仍为 Flash,已有会话的模型选择不变,也保留 Coding Plan 的旧模型。 插件补齐尚未进入 Pi 目录的模型描述:两者均为 1M 上下文,支持 low / high / max 思考强度,默认 max。详见 智谱官方模型切换说明。

登录文件在哪

OAuth 授权与 Plan API Key 只写 $DSH_HOME/.dsh-oauth-auth.json,权限是当前用户可读写。不要把这份文件、API Key、回调 URL、授权码或 token 贴到公开 Issue。私下报告见 SECURITY.md。

厂商自己的搜索和出图

官方 DSH 会注册 web_search,再经 ctx.web 打出去,默认又用 DEEPSEEK_API_KEY 走一轮 DeepSeek Messages。OAuth 账号自己的 hosted tool 就被盖住了。

在这些路由上,插件会从模型可见 schema 里拿掉 DSH 的 web_search / web_fetch,改挂厂商自己的工具。

路由 Hosted tools
pi-xai web_search、x_search、image_generation
pi-openai-codex web_search、image_generation
pi-anthropic web_search_20250305

Copilot、OpenRouter、Kimi、智谱不挂 hosted tool。OpenRouter 免费请求另有零价格和收费插件保护,见上文;DeepSeek 官方对话不改。

这些工具走的是该厂商的订阅 / tool 额度,不再要 Exa、Perplexity 或 DeepSeek Search。服务端搜索痕迹不会再当成 DSH 工具去跑。Grok 搜索 hop 里的空 Think,以及正文开始之后才冒出来的旁白 Think,会从流里丢掉。托管出图写入附件库,显示在助手那一轮。

Hosted tools 是这一次请求的能力。只有调用方带了 tools 列表,插件才会去做去重和注入。自动审批、标题生成这类不带 tools 的纯文本调用保持纯文本。

要继续用 DSH 自己的搜索:

- id: llm-oauth-login
  name: dsh-oauth-login
  config:
    nativeTools: false

nativeImage: false 只留搜索,去掉出图。

模型失败时

插件不另写一套重试。Chat 使用官方 dsh-llm-retry 的次数、退避和取消机制。插件兼容已确认的分类缺口:Codex 路由的 WebSocket error 及已知可恢复关闭码从 PI_AI_ERROR 修正为 TRANSPORT,服务器 overloaded 文案修正为 SERVER,智谱国内 Coding Plan 路由的 HTTP 429 / 业务码 1310 从 RATE_LIMIT 修正为 QUOTA。流内错误和抛出的错误使用同一规则,其他路由与已明确分类的错误保持原样。

正常 Agent 请求使用 prepareCall 固定模型与提供方状态,直接流式调用使用 stream。两个入口均应用上述错误兼容;已准备请求继续使用原始 prepared.stream,不会为了补重试而重新选择提供方或丢失请求快照。

码 通常是什么 怎么做
RATE_LIMIT 请求限流或高峰。很多 HTTP 429 落在这里。 等完默认五次自动重试,再发一条。
QUOTA 套餐、用量窗、余额。 再试也补不回来,去查厂商套餐。
TIMEOUT / TRANSPORT 空闲断流或网络。 先按原有预算自动恢复;耗尽后检查网络。
SERVER 对端 5xx / 部分 overloaded。 和其他暂时故障一样。
AUTH / MISSING_CREDENTIAL 没登录、没有 Plan Key 或凭据被拒。 设置 → 订阅登录。Chat 有时把 AUTH 显示成 “API key is invalid”。

429 不等于繁忙,也不等于额度耗尽。智谱 1305 高峰繁忙仍按 RATE_LIMIT 自动重试;1310 周/月额度耗尽按 QUOTA 停止短间隔自动重试并显示额度提示。插件只读取该路由错误 JSON 的顶层业务码,不按请求示例、嵌套字段或含糊文案猜测额度状态。

RC8 默认对暂时故障自动重试五次,然后本轮结束。Continue 失败或输入框卡住,开新对话。

不另外设置 WS 重试次数。Pi AI 0.82.1 在首个事件前的 WS 故障可在同一次调用内转 SSE;首个事件后的传输故障会记住该会话需要 SSE,再由 DSH 的下一次重试接上。保留同一个会话 ID,已降级的会话不会每条消息又从 WS 开始。不会为了凑满五次而延迟 SSE 降级。

要加大次数而不改插件代码,给 llm-oauth-login 行加配置:

- id: llm-oauth-login
  name: dsh-oauth-login
  config:
    retryPolicy:
      mode: normal
      maxRetries: 7
      backoff:
        initialDelayMs: 1000
        maxDelayMs: 30000
        jitterRatio: 0.1

mode: always 会把每一种失败都重试到成功或取消,可能烧额度。Creator Mode / 宿主模型的超时走你在对话里选的那条路由,不是这个插件。

代理

在 设置 → 订阅登录 → 网络代理 中分别配置 HTTP 和 WebSocket。每项有独立开关、地址和端口;地址默认填入 http://127.0.0.1,端口留空供用户填写。只影响本插件,不修改系统代理、进程环境变量、DSH 核心或 Pi AI 依赖源码。

设置 行为
开启并填写端口 使用指定的 HTTP(S) CONNECT 代理,优先于环境变量和自动发现;连接失败不会偷偷直连。
开启、默认地址且端口留空 保留原有自动发现:环境变量 → DSH_OAUTH_PROXY → 可用的 macOS 系统代理 → 经验证的本机端口 → 直连。不会默认连接 80 端口。
关闭 该协议直接连接,即使进程里存在代理变量;保存的地址保留。

例如本机 HTTP / 混合代理端口为 45678 时,两项都可填地址 http://127.0.0.1、端口 45678 并开启。WS 使用代理不等于关闭或强制启用 WS;降级后的 SSE 使用 HTTP 那一项。纯 SOCKS 端口不适用于这些设置。

保存后用于新请求;正在进行的调用不被中断。修改 WS 代理后,新调用会关闭旧的会话 WS 连接并重新选路,但不会清除已有 SSE 降级状态。首次升级服务端插件仍需重启 DSH,之后保存页面设置不需要重启。代理连通能减少网络故障,不能保证上游永不繁忙或断连。

配置单独保存在凭据文件旁的 .dsh-oauth-proxy.json,不改 OAuth 凭据文件。更多说明见 网络代理与恢复机制。

许可

Apache-2.0。这是社区插件,和 DeepSeek、Pi Agent 以及上面这些 OAuth 厂商都没有隶属关系。

—/ 5

No ratings yet

Verified DSH bundle

Commit d690f1efee7d

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout