DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

yueyexiayu /

yueyexiayu/dsh-OAuth

Verified

DSH desktop plugin: log in to Grok and ChatGPT Codex with official OAuth

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@e5e6ff6a
官方设备授权、Host 凭据与登录条的原创示意,非账号截图

OAuth · 账号管理

在插件页面和输入框旁管理 Grok 与 Codex 登录,不复制认证协议。

DeepSeek Harness 桌面端的官方 OAuth 设备登录、多账号切换与删除入口。

简体中文 · English

v0.1.5 · MIT · DSH desktop plugin

核心能力 · 工作方式 · 快速开始 · 账号与配置 · 验证


针对个人 DSH 桌面工作流的参考实现。插件详情页管理 Grok 与 Codex 的登录账号,输入框下方继续显示当前提供方状态;授权由官方已注册的 flow 完成,token 只留在 Host。请先核对自己的 DSH 版本与提供方权限,不直接照搬个人配置。

核心能力

🔑 官方设备登录

插件页展示账号与登录按钮;设备码由官方 flow 处理,不自行重写轮询或 PKCE。
🔄 多账号与模型联动

添加账号时先归档当前凭据;没有对应账号的平台不会进入会话模型目录或模型切换入口。
🧭 会话感知状态

跟随官方模型投影,切换会话/模型清除旧账号,不为读历史恢复 Agent。
🧩 补齐缺失路由

沿用官方模型目录,保留已有列表和配置,用版本号处理并发修改。
🛡 Host 内凭据

不把 token 写入 Client 或对话,也不读取其他 CLI 的 auth.json。
🧾 明确操作结果

区分本地退出与远端吊销失败;凭据成功保存不冒充路由配置也成功。

工作方式

当前会话确定提供方,官方授权流程处理设备码并提交 Host 凭据,登录条显示实际结果。

使用官方 authorization.begin({key, method: "oauth", interaction, signal}),由 llm-pi-ai flow 负责设备码、轮询、PKCE、期限及提交。当前账号仍写入官方凭据键;其他账号保存为本插件的授权记录,切换时把选中记录写回对应官方键。正常续期由官方适配器负责,页面刷新时会同步当前账号的归档副本。

快速开始

需要官方 DSH 桌面版及对应 Grok / ChatGPT Codex 账号权限。原适配面向 Grok/SuperGrok/X Premium 与 ChatGPT Plus/Pro Codex;最终以官方接口实际接受的账号为准。

export DSH_HOME="${DSH_HOME:-$HOME/.dsh}"
git clone https://github.com/yueyexiayu/dsh-OAuth.git "$DSH_HOME/plugins/OAuth"

将下项合并到 $DSH_HOME/profiles/desktop/cordis.patch.yml,保留其他插件;OAuth 大小写一致:

- insert:
    - id: OAuth
      name: ../../plugins/OAuth/lib/index.js

⌘Q 完全退出 DSH 后重开,进入「插件 → 账号登录」页面管理 Codex 与 Grok 账号;输入框下方仍提供当前提供方的登录、换号、刷新与退出入口。按官方 notice 完成设备授权。不使用 CLI 插件管理改 desktop profile,不需要重建官方桌面包。

账号与配置

项目 行为
当前账号 Host 的 $DSH_HOME/.credentials.yaml,键为 llm-pi-ai/xai、llm-pi-ai/openai-codex
已保存账号 oauth-accounts/grok-*、oauth-accounts/gpt-* 授权记录;界面只读取安全状态,不向 Client 返回 token
支持平台 仅 Codex(openai-codex)与 Grok(xai)
切换 先归档当前账号,再把选中账号写回对应官方凭据键
删除 删除当前或已保存账号,并尝试远端吊销;本地删除与远端失败分别报告
模型可见性 账号记录不存在时,llm.listModels 对 Codex/Grok 返回空列表;有账号时恢复原模型目录。使用 apiKeyEnv 的路由不受 OAuth 删除影响
会话选择 官方只读 sessionQuery.observeSession,modelSelection.next ?? lastUsed
默认模型 仅无sessionId新入口,或已确认存在但无模型选择的空会话采用
API Key 路由 明示退出 OAuth 不改变该认证,不擅自切换方式
路由补全 官方 settings.describe/mutate,保留已有路由/模型,版本冲突重查
取消、竞态与失败语义
  • 添加账号、换号或退出先取消同凭据 key 的授权并等待官方 authorization/settled。卸载、取消和会话切换到其他提供方中止本插件发起的 flow;不保证任意忽略取消的第三方实现。
  • 无效sessionId返回400,不存在404,模型/账号不匹配或已切换409。历史读取、格式、投影及持久化异常明确失败,不回落无关全球账号。
  • Client 订阅模型投影,Host 异步完成后再次核对归属,旧请求不覆盖新状态。后台查询不清除操作错误。
  • 刷新需合法 access token;缺少有效期采用官方默认,给出时须有限正数。省略 refresh token 保留旧值;字段存在但无效时拒绝并保留旧凭据。已完成轮换的有效凭据不会因后续配置失败或卸载丢弃。
  • 远端不支持吊销时明确报失败;本地凭据仍删除,分别显示结果。不支持的交互prompt与授权/提交失败直接显示,不假装成功。
  • 已知凭据在错误中脱敏,不声称识别任意未知 opaque token。不读取或改写 ~/.grok/auth.json / ~/.codex/auth.json,仓库不含账号凭据。

验证

cd "$DSH_HOME/plugins/OAuth"
for file in lib/*.js scripts/*.mjs test/*.mjs; do node --check "$file" || exit 1; done
node --test

可选官方组件验证:

DSH_OFFICIAL_NODE_MODULES=/absolute/path/to/official/node_modules node --test scripts/verify-official.mjs

自动测试使用合成数据和内存凭据队列,覆盖账号列表、登录归档、切换、删除、模型可见性门禁、平台限制和错误状态,不读写真实账号。本次在 DSH 0.2.2-rc.1 桌面运行中重启,确认插件页显示 v0.1.5,并验证删除账号后 Codex/Grok 模型组从会话模型选择器消失;未执行真实新增账号授权或远端吊销。

许可

MIT License。卸载只移除本插件的desktop加载项后完整重启;不要把删除插件当成已完成远端吊销。

授权交给官方,状态显示事实。 · Read in English →
—/ 5

No ratings yet

Verified DSH bundle

Commit e5e6ff6a1827

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