dsh-authinone

by stormycry-cryp

工具与能力github收录于 08-23

dsh-AuthInOne:DeepSeek Harness 一体化插件——Provider 登录、API 与自定义 OpenAI 兼容 Provider 配置、模型切换、纯文本模型的可选视觉兜底等

dsh-AuthInOne is a DeepSeek Harness plugin for Provider login, API and custom OpenAI-compatible Provider setup, model switching, optional vision fallback for text-only models,…

安装

dsh plugin --profile web add github:stormycry-cryp/dsh-authinone

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 简体中文

dsh-AuthInOne 封面

dsh-AuthInOne 是 DeepSeek Harness 的 Provider 与用量插件,把账号登录、API 与自定义 OpenAI-compatible Provider、模型切换、仅面向纯文本主模型的可选视觉兜底、Token 用量和费用统计放进 DSH 原生的「模型」与「用量」设置页。

模型越接越多,登录方式和账单也越攒越乱,dsh-AuthInOne 把这些麻烦收进 DSH 的「模型」和「用量」两页里,让蓝色大肥鱼安心开饭,也让你看清每一次调用花了多少。

OpenAI Codex 使用带 state、S256 PKCE 与 loopback callback 的浏览器 OAuth。Kimi Code 打开 Provider 返回的完整授权链接,底层仍是 RFC 8628 device flow;短码已在链接内,用户通常只需登录并确认授权。xAI Grok、Anthropic、GitHub Copilot、Command Code、Cursor、Google Antigravity 与 Kiro 均明确标为实验性兼容。本机安装后的 Host 已逐项到达相应授权边界并停在用户确认之前;mock/fixture 测试覆盖换取凭据或轮询、refresh token 轮换、拒绝、超时、取消、登出、模型路由和凭据脱敏。

Alpha v0.2.0-alpha.4 · 精确兼容目标为官方 DSH 47f9438 · 自包含引导程序内部调用官方 DSH 插件命令,并让 Web 回到原端口 · Release notes · MIT · 社区维护,不代表 DeepSeek 或 OpenAI。

pnpm dlx github:Stormycry-cryp/dsh-AuthInOne#v0.2.0-alpha.4 install --profile web

这条命令由本包自己提供。它会先核验正在运行的标准 DSH Host,再调用官方 dsh plugin 安装路径,最后让 Host 在同一个 URL 上完成替换。无需修改 DSH 核心、手改 profile、另开第二个 Web 实例或使用临时端口。源码 checkout 和非默认端口写法见安装、升级与卸载。

如果 AuthInOne 对你有帮助,欢迎在 GitHub 仓库点一个 Star,支持项目继续完善。

启动后进入设置 → 模型或设置 → 用量。浏览器只接收聚合用量、脱敏状态、授权链接和流程需要的用户码。OAuth verifier、授权码、device code、access token 与 refresh token 只留在 Host;插件不会导入 ~/.codex/auth.json、OpenCodex 状态、Cookie、浏览器存储、OTP 或其他产品的凭据。

给 Agent 的指令 把文档里的 pnpm dlx … install --profile web 当成一个完整操作执行,不要拆成手工 dsh plugin add 加自创重启。AuthInOne 引导程序必须完成监听进程核验、官方安装、原 URL 恢复,并报告 ready 后再验收 UI。不得另开第二个 Web 实例、改临时端口、修改 DSH、手改 profile YAML 或读取凭据。如果引导程序拒绝未知启动方式或 DSH owner 指纹,停止并展示原错误,不要猜。

适合这些场景

  • 想在 DSH 内使用 OpenAI Codex 或 Kimi Code 登录,或明确选择带风险标识的兼容登录。
  • 需要继续使用 DSH 原生模型页管理 API Key 或自定义 OpenAI-compatible Provider。
  • 想切换未来会话的默认模型,又不替换 DSH 的单会话模型选择器。
  • 希望只在当前主模型明确声明为纯文本输入时,用独立配置的视觉模型描述图片。
  • 需要可重建的 Provider/模型/工具 Token 用量与可审计费用。

DSH 模型设置中的 Provider 状态与 OpenAI Codex 官方账号授权

DSH 用量设置中的 Token 活动、模型消耗与费用统计

其他真实 DSH 截图包括 Auth 登录弹窗、模型页操作区、深色用量页、浅色窄屏、深色窄屏与秒级时间范围。

已验证能力

能力 状态 验证方式 最低 DSH 环境
OpenAI Codex 浏览器账号授权 已验证到用户确认边界 真实导航到 auth.openai.com;本地 mock issuer 覆盖 callback、state/PKCE、换取凭据、刷新、拒绝、过期、取消、登出、撤销与脱敏 官方 DSH 47f9438 加包内 compat owner
Kimi Code 授权连接 实验性,已验证到用户确认边界 安装后的 Host 返回 Kimi 完整授权链接,不会把 Host 内的 device code 交给浏览器;短码已在链接中时,界面不再要求用户重复输入 官方 DSH 47f9438 加包内 compat owner
七种账号兼容流程 实验性,已验证到用户确认边界 xAI、Anthropic、GitHub Copilot、Command Code、Cursor、Antigravity 与 Kiro 分别到达预期授权边界;mock 完成后会注册并在登出时释放对应模型路由 官方 DSH 47f9438 加包内 compat owner
Provider 套餐额度 上游可取时 best effort Codex、Kimi、xAI、Anthropic、Cursor 与 Antigravity 只向 Remote 投影无凭据用量;上游无返回、字段不完整、不支持或无法可靠算出百分比时,模型页不渲染额度区域 官方 DSH 47f9438 加包内 compat owner
套餐/API 预设 可用,并显示厂商限制 OpenAI、xAI、Gemini、Anthropic、Kimi Code、GLM Coding Plan 与 ModelStudio/Qwen 预设通过 DSH 写入凭据;GLM 与 Qwen 的使用范围提示仍在页面显示 官方 DSH 47f9438 加包内 compat owner
DeepSeek API Key 与真实模型调用 仅 API Key 原生 Provider 保持连接;真实 DeepSeek 调用进入用量页,浏览器未接触密钥 DSH 0.1.0-rc.6
自定义 OpenAI-compatible Base URL、请求头与模型映射 DSH 原生能力 插件保留原生模型卡片,只读取公开 Provider 投影 DSH 0.1.0-rc.6
未来会话默认模型与连接测试 已验证 安装后的模型页 contribution 与 Host/Remote 链路完成实测 官方 DSH 47f9438 加包内 compat owner
纯文本主模型的视觉兜底 已验证 PNG/JPEG/WebP/GIF 沿用 DSH ImageBlock 引用;多图、原生多模态直通、关闭兜底、失败、恢复与分叉均有无密钥覆盖 官方 DSH 47f9438 加包内 compat owner
跨会话用量与费用 已验证 真实 DSH session log 重建出 26,383 Token 的 KPI、热力图、模型、Provider、Token 桶与费用 DSH 0.1.0-rc.6
用量页导航图标 已验证 包内通用 owner 投影 keyed icon seat;插件注入 currentColor 16 px 三竖线,未知 section 仍使用原生回退 官方 DSH 47f9438 加包内 compat owner

账号登录支持矩阵

Provider 流程 稳定性 已验证授权边界 刷新/登出/模型路由 套餐额度
OpenAI Codex 浏览器 OAuth,state + S256 PKCE + loopback Stable auth.openai.com 有/有/有 primary 与 secondary window,best effort
Kimi Code 基于 RFC 8628 的完整授权链接 Experimental www.kimi.com 有/本地登出/有 best effort
xAI Grok 设备登录 Experimental accounts.x.ai 有/有/有 周或月窗口,best effort
Anthropic 浏览器/手动输入兼容登录 Experimental compatibility claude.ai 有/本地登出/有 best effort
GitHub Copilot 设备登录 Experimental compatibility github.com 有/本地登出/有 未提供
Command Code 浏览器 loopback 兼容登录 Experimental compatibility commandcode.ai 按返回的账号凭据刷新/本地登出/有 未提供
Cursor 浏览器 PKCE 兼容登录 Experimental compatibility cursor.com 有/本地登出/有 best effort
Google Antigravity 浏览器 PKCE 兼容登录 Experimental compatibility accounts.google.com 有/本地登出/有 best effort
Kiro Builder ID 设备登录 Experimental compatibility view.awsapps.com 有/本地登出/有 未提供
Qwen 账号 OAuth 已停止 Unsupported 不提供启动操作 无 无

“本地登出”表示当前核验到的兼容协议没有可用 revoke endpoint,插件会先删除自己的 DSH credential 并注销模型路由。浏览器不会拿到保存的凭据。稳定性标签描述实现风险,不代表厂商赞助、认证或合作。

30 秒安装、升级与卸载

使用包内引导程序安装或升级不可变 tag。

pnpm dlx github:Stormycry-cryp/dsh-AuthInOne#v0.2.0-alpha.4 install --profile web

引导程序会发现 http://127.0.0.1:3080/ 的唯一监听进程,确认它是标准 DSH Host,校验精确支持的 DSH owner 产物,通过官方 DSH 插件命令完成 add,再安排一个脱离当前 Host 的同端口替换进程。安装命令会在旧 Host 停止前返回;浏览器可能短暂断开,但必须由原 URL 恢复。

当前 DSH 使用非默认 loopback 端口时,传入准确 URL。

pnpm dlx github:Stormycry-cryp/dsh-AuthInOne#v0.2.0-alpha.4 install --profile web --url http://127.0.0.1:3090/

DSH 从源码 checkout 启动时,引导程序通常会从监听进程的工作目录自动识别;运维人员也可以显式传入。

pnpm dlx github:Stormycry-cryp/dsh-AuthInOne#v0.2.0-alpha.4 install --profile web --source-root /path/to/deepseek-harness

原 URL 恢复后可读取脱离进程的状态。

pnpm dlx github:Stormycry-cryp/dsh-AuthInOne#v0.2.0-alpha.4 status --profile web

卸载也走同一条自包含路径。

pnpm dlx github:Stormycry-cryp/dsh-AuthInOne#v0.2.0-alpha.4 uninstall --profile web

引导程序只接受不含凭据的 loopback HTTP origin,以及标准 DSH 启动方式:已安装的 dsh 可执行文件,或显式/自动识别的 DSH 源码根目录。自动监听核验目前支持 macOS 与 Linux,并要求系统提供 lsof。端口存在多个监听进程、监听进程不是 DSH、owner 产物未知或启动来源无法核实时,会在停止 Host 前明确失败;不会换到另一个端口。脱离进程的状态文件只写在所选 profile 下,不序列化环境变量或凭据。

profile dependency 与 Bundle row 仍由官方 DSH CLI 维护。不要复制 lib/、创建 workspace link、手改 profile YAML 或手动应用 patch。卸载会释放页面、模型页 contribution、Remote namespace、Host service、样式与监听器。DSH session、插件 settings 与 credential reference 会保留,删除数据必须另行明确执行。完整生命周期和失败规则见自包含安装与同端口重启设计。

模型页与官方 Auth

API Key Provider 的新增、编辑与删除仍在 DSH 原生卡片完成。自定义 Base URL、请求头、协议、模型映射和端点模型发现也归原生页面。AuthInOne 补充紧凑的连接与默认路由区域,并在两个原生新增 Provider 按钮上方放置全宽的添加 Auth 登录和添加套餐/API Key。单会话切换仍使用 DSH 会话模型选择器。

模型摘要只显示已经配置的 API/套餐/自定义 Provider 与已持久化的 Auth 账号。Auth 目录只留在「添加 Auth 登录」弹窗;取消、失败、过期或从未开始的条目不会生成占位卡。账号连接后摘要会立即刷新,Auth 实例使用自身模型 adapter 与退出流程,不会误走通用 Base URL 测试。

每个 Auth 入口共用一套 Host 登录事务,覆盖开始、脱敏状态、取消、可选一次性输入、刷新、登出与 dispose。浏览器/loopback 流程把 state 与 PKCE verifier 留在 Host。设备流程把 device code 留在 Host,只展示验证链接和 user code。凭据先写入 DSH credentials,随后才注册模型 adapter;终止性刷新失败或登出会注销路由。取消若撞上凭据写入,会补偿删除。远端撤销在本地删除以后 best effort 执行,并受超时限制。

OpenAI Codex 的协议值对照其公开 login server、auth manager和 PKCE helper。Kimi 设备轮询遵循 RFC 8628 的 pending 与 slow_down 语义。其余兼容流程沿用经过核验的 Provider/公开客户端行为,并保持 Experimental 标识。

套餐/API 入口包含 OpenAI API、xAI API、Google Gemini API、Anthropic API、Kimi Code 套餐 Key、GLM Coding Plan 与 ModelStudio/Qwen Coding Plan。GLM 与 Qwen 预设保留厂商的支持工具或交互用途限制。API Key 是独立连接方式,永远不会算作账号 Auth。

连接测试由 Host 请求已配置 OpenAI-compatible 端点的 /models。带凭据请求会拒绝重定向,响应正文按流式字节上限读取。Client 只收到成功状态、延迟、模型 id 或经过归类的失败信息,不会收到请求头、上游响应正文或凭据。

视觉兜底

视觉兜底默认关闭,入口位于设置 → 模型。用户只能选择已经激活、且 DSH 适配器明确声明支持 image 输入的 Provider 与模型。仅当主模型明确不包含图片能力时兜底才运行;主模型声明支持图片时原请求保持直通,能力未知也不会被插件擅自判成纯文本。

面对纯文本主模型,插件把原始 DSH 附件引用、兜底路由、提示版本、返回描述与 Provider 实报 usage 记录为带插件来源的普通 DSH 持久消息;真正发往主模型的请求只把图片块替换成已经记录的文字描述。恢复与分叉复用该描述;切换兜底模型只影响之后的新图片,不重跑已有历史。

本期输入范围与 DSH 第一版图片附件完全一致:PNG、JPEG、WebP 与 GIF。不支持音频、视频、PDF、图片生成、浏览器 object URL、Host 路径或插件自有 base64 存储。图片字节由 DSH 附件存储持有和校验,Provider 适配器通过 DSH Host credentials 解析凭据;视觉设置 RPC 不接收凭据。

视觉辅助调用在用量页单独显示为“视觉辅助调用”和“视觉辅助 Token”,同时保留真实 Provider/模型归属。Provider 没有返回可靠 usage 时保持未知,没有价格时保持未定价。无凭据或上游失败时不会继续把不可用图片请求交给纯文本主模型,而是返回可恢复的 VISION_FALLBACK_FAILED,且不把上游响应细节写入会话日志。

用量筛选与统计口径

  • 时间、Provider 与输出价格共享同一查询上下文,驱动 KPI、热力图、模型 Token 消耗、榜单、Token 桶和费用。
  • 时间采用界面所示 IANA 时区内的 YYYY-MM-DD HH:mm:ss 闭区间。Host 转成确定的 UTC [start, endExclusive) 查询。近 7 天、近 15 天与近 30 天只填充范围,仍由用户点击应用。
  • 输出价格只读取 USD/1M output Token 目录桶。区间为 [0,1)、[1,5)、[5,15)、[15,+∞)与未定价,互不重叠。缺价或非 USD 都归入未定价,不做静默换汇。
  • 刷新保留全部筛选。失败会留在页面上,不会用空结果覆盖最后一次成功数据。
  • 每日 Token 活动固定以最近 365 个日期组成七行日历;没有匹配调用的日期仍保留空格,每周与累计模式沿用既有聚合语义。
  • 模型调用按实际事件时间统计;工具调用是另一个维度。当前 DSH 并不为每条工具事件记录权威 owner plugin,页面只显示持久工具名,不猜插件归属。
  • 总 Token 等于 uncached input、output、cache read 与 cache write 之和。reasoning 单独显示,避免 Provider 已把它计入 output 时重复计算。缺失桶保持未知。
  • 低于 1M 的 Token 使用 locale 千分位,1M 到 1B 使用 M,1B 以上使用 B,完整数值仍保留在 title 与无障碍标签中。

内置 deepseek-usd-2026-08-14 目录只包含 2026-08-14 从 DeepSeek 官方价格页核验的 DeepSeek-V4-Flash 与 DeepSeek-V4-Pro 美元记录。每行都有来源 URL、核验/更新时间、生效日期、币种和明确 Token 桶费率。拿不到可靠价格时显示未知或部分费用,不伪造 0,也不会借用另一个 Provider 的价格。

安全与数据边界

AuthInOne 不创建独立数据库。统计(含视觉辅助来源与 Provider 实报 usage)从 DSH session 重建,非敏感覆盖项写入插件自己的 DSH settings namespace,OAuth 与 API 凭据继续归 DSH credentials。图片字节留在 DSH 附件存储,不会复制进插件 settings。插件不扫描用户目录、浏览器存储、Keychain、Codex/OpenCodex 文件、.env 或无关数据库。

授权 URL 与 device user code 是当前登录事务的公开操作指引。Remote DTO 没有 verifier、authorization code、device code、access token、refresh token、原始身份、上游正文或 credential value。自动测试会检查这些字段不会进入 Remote 或日志。仓库截图不包含授权 URL、账号、token、user code 或 API Key。

Provider 响应同时受请求超时和流式字节上限约束。带凭据的连接测试拒绝重定向。alpha.2 安全 diff scan 完整检查 74 个新增或修改项,发现两项中危网络边界问题,并在发布前用 Node 24 复现与定向测试确认修复。

兼容性

DSH 环境 Host/用量页 模型状态与默认路由 添加 Auth 登录 用量图标
官方 DSH 47f9438,标准添加一次 AuthInOne 可用 可用 可用 三竖线插件图标
未知/新版 DSH owner artifact 安装明确失败 不挂载 不挂载 不挂载
卸载插件后 消失 仅原生页面 消失 消失

官方 DSH 47f9438 没有暴露模型页与设置导航所需的三项通用组合 seat。本包因此携带官方 Settings General 与 Models 两个 runtime owner 的精确 47f 衍生版本。Bundle patch 只禁用这两个官方 row,并从同一个 AuthInOne 包挂载兼容 owner;新增内容仅为 settings.models.insights、settings.models.actions 与 keyed settings.section.icon 投影。Auth、Provider、用量与视觉业务仍由独立的 AuthInOne registration 持有。

Host 会在创建插件状态前核对官方 owner 的版本和 client SHA-256,Client 也会拒绝已经存在的 seam。Owner 变化或 DSH 已有原生 seam 时会明确报 AUTH_IN_ONE_COMPAT_UNSUPPORTED_DSH,不会静默覆盖或重复注册。卸载后,Bundle 覆盖层与兼容 row 一起消失,官方 owner 自动恢复。全程不 patch DOM、不使用 --patch、不手改 profile,也不修改 DSH checkout。DeepSeek MIT 声明与精确来源见 THIRD_PARTY_NOTICES.md。

架构与插件边界不变量记录了插件自持内容、core 唯一允许的通用 seam、dispose、降级与自动门禁。

本插件没有声称什么

  • 它不是 DeepSeek、OpenAI 或任何模型厂商的官方产品,也不代表厂商背书。
  • 它没有声称每种兼容登录都稳定或得到厂商背书。七个入口明确标为 Experimental,Qwen 账号 OAuth 已停止且不可用。
  • 它不替换 Models 业务、附件管线、session log 或会话模型选择器;仅在精确 DSH 47f9438 上用源码衍生 compat owner 替换两个 Settings owner row,从同一 Bundle 保留原生行为并增加通用 seat。
  • 当适配器没有提供模态元数据时,它不推断模型支持或不支持视觉。
  • 它不把图片理解范围扩展到音频、视频、PDF 或图片生成。
  • 它不会伪造缺失 Token、价格、币种换算、工具归属或登录成功。

本地开发

使用 Node ^22.19 或 >=24 与锁定的 pnpm 项目。

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
DSH_SOURCE_ROOT=/path/to/deepseek-harness pnpm verify:boundaries
pnpm build
pnpm pack --dry-run

仓库提交 lib/,因为 GitHub 安装不会运行构建。本包没有 prepare,安装时不需要 lifecycle script 权限。

来源与许可证审计

AuthInOne 业务逻辑、credential representation、settings 字段、测试、README 文案与产品交互文案均为本仓库独立编写。兼容 owner runtime 是官方 DSH 47f9438 Settings General/Models 源码的明确归因 MIT 衍生版本,见 THIRD_PARTY_NOTICES.md。本机 OpenCodex 源码只用于职责与失败状态对照,详情见 clean-room 对照与 alpha.2 来源审计。

以下仓库只用于能力碰撞与公开 seam 研究 usage-report、openai-codex-auth、codex-provider、polyglot、usage-meter、cost-ledger与 dsh-web-ui。没有复制或 vendoring 它们的源码、README、CSS、组件结构、schema 或测试。

运行时依赖为 Zod(MIT)。构建期 Provider transport 依赖为 @earendil-works/pi-ai 0.82.1(MIT),它被打入已提交的 Host artifact,不会进入 DSH profile 的运行时依赖。Cursor 兼容流程使用 @cursor/sdk 1.0.24,遵循 Cursor SDK License 与 Terms of Service;它被打入 Host artifact,并保持 Experimental。开发工具还包括 React、tsdown、Vitest 与 Testing Library(MIT)、TypeScript(Apache-2.0)和 Lightning CSS(MPL-2.0)。本仓库使用 MIT。

DeepSeek、OpenAI、Codex 与其他 Provider 名称和商标归各自权利人所有。页面中的名称只说明兼容性,不代表赞助、认证或背书。

原始 README: https://github.com/Stormycry-cryp/dsh-AuthInOne/blob/main/README.zh-CN.md ↗