DeepSeek Harness 的独立 OAuth / 订阅套餐 LLM 插件。用 dsh plugin add…
39.3/100
综合分
6
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ziyou979/dsh-llm-oauth该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 16 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/21) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-llm-oauth(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 03:44:20
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 26 处,展示前 26 条)
- 读取本地文件lib/index.js:514
const value = (await readFile(path, "utf8")).trim(); - 写入本地文件lib/index.js:523
await mkdir(dirname(path), { recursive: true }); - 写入本地文件lib/index.js:526
await writeFile(temporary, `${value}\n`, { - 删除本地文件lib/index.js:537
await unlink(temporary); - 读取本地文件lib/index.js:1325
const raw = await readFile(this.path, "utf8"); - 写入本地文件lib/index.js:1336
await mkdir(dirname(this.path), { recursive: true }); - 写入本地文件lib/index.js:1337
await writeFile(this.path, `${JSON.stringify(next, null, 2)}\n`, "utf8"); - 发起网络请求lib/client.js:15
const response = await fetch(`${BASE}${path}`, { - 写入剪贴板lib/client.js:325
navigator.clipboard?.writeText(userCode); - 读取本地文件bin/login.mjs:43
const raw = await readFile(this.path, 'utf8') - 写入本地文件bin/login.mjs:55
await mkdir(dirname(this.path), { recursive: true }) - 写入本地文件bin/login.mjs:56
await writeFile(this.path, `${JSON.stringify(next, null, 2)}\n`, 'utf8') - 读取本地文件scripts/prepare.mjs:20
if (!existsSync(tsdown)) { - 执行外部命令来自配置/变量scripts/prepare.mjs:26
const result = spawnSync(process.execPath, [tsdown, '--config', config], { - 写入本地文件scripts/prepare.mjs:37
mkdirSync(join(root, 'lib'), { recursive: true }) - 读取本地文件scripts/prepare.mjs:38
run(existsSync(join(root, 'tsdown.prepare.config.ts')) - 读取本地文件bin/device-id.mjs:11
const value = (await readFile(path, 'utf8')).trim() - 写入本地文件bin/device-id.mjs:18
await mkdir(dirname(path), { recursive: true }) - 写入本地文件bin/device-id.mjs:21
await writeFile(temporary, `${value}\n`, { flag: 'wx', mode: 0o600 }) - 删除本地文件bin/device-id.mjs:26
} finally { await unlink(temporary) } - 读取本地文件scripts/smoke.mjs:20
const host = await readFile('lib/index.js', 'utf8') - 读取本地文件scripts/smoke.mjs:23
const client = await readFile('lib/client.js', 'utf8') - 发起网络请求src/client/api.ts:54
const response = await fetch(`${BASE}${path}`, { - 读取本地文件src/store.ts:27
const raw = await readFile(this.path, 'utf8') - 写入本地文件src/store.ts:41
await mkdir(dirname(this.path), { recursive: true }) - 写入本地文件src/store.ts:42
await writeFile(this.path, `${JSON.stringify(next, null, 2)}\n`, 'utf8')
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-settings@deepseek-ai/dsh-util-values@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
3 张 · 点击查看大图功能亮点
- OAuth登录
- 订阅套餐接入
- 多服务商支持
README
由 DeepSeek 最新模型翻译生成dsh-llm-oauth
DeepSeek Harness 的独立 OAuth / 订阅套餐 LLM 插件。用 dsh plugin add 装进自己的 profile,即可登录并使用订阅模型。这是独立仓库,不改 DeepSeek Harness 本体。
设置 → OAuth / 订阅
官方 dsh-llm-pi-ai 只走 API Key,没有 OAuth 登录/刷新。本插件复用同一份 catalog 包 @earendil-works/pi-ai,并把 CredentialStore 接进去,请求时会自动刷新订阅 token。
仓库形态对齐官方插件文档——第一个插件、发布 / 安装:
- package.json → dsh.bundle.patch + 可选 dsh.client(Web 设置页)
- cordis.patch.yml 插入一行插件
- prepare 在 git 安装时把 src/ 打成 lib/(含 lib/client.js)
- 函数形态:导出 name、inject、Config、apply,无 export default
支持的订阅
| 你想用的订阅 | provider id | 说明 |
| Grok(SuperGrok / X Premium) | xai | 模型 id 来自已安装的 pi-ai catalog。
展开完整文档(README 剩余 1 节)
dsh-llm-oauth
DeepSeek Harness 的独立 OAuth / 订阅套餐 LLM 插件。用 dsh plugin add 装进自己的 profile,即可登录并使用订阅模型。这是独立仓库,不改 DeepSeek Harness 本体。
设置 → OAuth / 订阅
官方 dsh-llm-pi-ai 只走 API Key,没有 OAuth 登录/刷新。本插件复用同一份 catalog 包 @earendil-works/pi-ai,并把 CredentialStore 接进去,请求时会自动刷新订阅 token。
仓库形态对齐官方插件文档——第一个插件、发布 / 安装:
- package.json → dsh.bundle.patch + 可选 dsh.client(Web 设置页)
- cordis.patch.yml 插入一行插件
- prepare 在 git 安装时把 src/ 打成 lib/(含 lib/client.js)
- 函数形态:导出 name、inject、Config、apply,无 export default
支持的订阅
| 你想用的订阅 | provider id | 说明 |
| Grok(SuperGrok / X Premium) | xai | 模型 id 来自已安装的 pi-ai catalog。 |
| GitHub Copilot | github-copilot | 可选 Enterprise URL 默认留空,即公开的 github.com。 |
| ChatGPT 订阅(当前方式) | openai | Sign in with ChatGPT,走 pi-ai 的官方流程(需要 @earendil-works/pi-ai ≥ 1.0.0)。不要再在第一方插件里给 openai 配 API Key:同一个路由只能有一个提供方。 |
| ChatGPT / Codex 订阅(legacy) | openai-codex | 设备码流程,用于 GPT-5.x Codex 模型。必须先在 ChatGPT 设置里打开设备码授权,见下文。有封号风险。 |
| Anthropic 订阅 | anthropic | |
| OpenRouter | openrouter | catalog 很大,确认需要再开启。 |
| Kimi For Coding | kimi-coding | |
模型列表来自已安装的 @earendil-works/pi-ai catalog,本插件不维护私有模型表。要更新 catalog,升该依赖并重新构建即可。
开启模型 vs 登录
安装后默认休眠:catalog 里有上述订阅,但 providers: {},不会往模型选择器灌入成百上千个模型。
| 概念 | 含义 | 怎么做 |
| 开启 (enable) | 向 llm 注册路由;模型选择器出现该提供方 | 设置 → OAuth / 订阅 点「开启」,或 /oauth enable xai,或登录时自动开启 |
| 登录 (login) | 写入 pi-ai-oauth.json 订阅 token | 设置面板「登录」、/oauth login xai,或终端 bin/login.mjs |
| 关闭 (disable) | 从选择器移除;保留已存 token | 设置面板「关闭」或 /oauth disable xai |
只有已开启的提供方会出现在模型列表,并与设置 → 模型里的 API 配置(DeepSeek / pi-ai)并列。
安装
dsh plugin --profile web add github:ziyou979/dsh-llm-oauth
本地 checkout:
dsh plugin --profile web add ./dsh-llm-oauth
或
dsh plugin --profile web add link:E:/ProjectCollection/TSProjects/dsh-llm-oauth
验证层已挂上:
dsh --profile web --dump-config
首次从 Git 安装若提示不允许跑 prepare,按 CLI 提示在该 profile 的 pnpm-workspace.yaml 里放行(pnpm ≥10 默认拒绝生命周期脚本):
allowBuilds:
dsh-llm-oauth: true
然后重新 add。也可以直接用已构建的 lib/(本仓库提交了构建产物时可跳过)。
设置 → OAuth / 订阅
Web 端在设置侧栏会多一页 OAuth / 订阅(在「模型」与「插件」之间):
- 列出 catalog 中每个订阅提供方
- 徽章:已开启 / 未开启、已登录 / 未登录、浏览器登录进行中
- 操作:开启、关闭、登录、退出登录(都在本页点按钮完成,不必在聊天框输入 /oauth)
- 登录成功会写入 token,并自动开启
- 设备码显示在页面提示区(可复制);授权链接会尽量新开标签,弹窗被拦时点 打开授权页
openai-codex 等需要「选择登录方式」的提供方,Web 端会自动选设备码。
Sign in with ChatGPT(openai,需要 pi-ai ≥ 1.0.0)会在 Host 侧起 pi-ai 的 127.0.0.1:1455 回调。浏览器和 Host 在同一台机器时会自动完成;无法回连时(远程 Web、端口被占),设置页会出现粘贴框,把浏览器最终地址贴回来即可;聊天里等价命令是 /oauth code openai <redirect-url-or-code>。
提供方开启(并登录)后,也会出现在设置 → 模型,与 API Key 路由并列:
开启订阅后的设置 → 模型
API Key 提供方仍在 设置 → 模型 精调。OAuth 的开启与登录在本插件这一页完成。
Host 提供轻量 HTTP API(同机 Web 使用):
| 方法 | 路径 | Body |
| GET | /dsh-llm-oauth/status | — |
| POST | /dsh-llm-oauth/enable | { "provider": "xai" } |
| POST | /dsh-llm-oauth/disable | { "provider": "xai" } |
| POST | /dsh-llm-oauth/login | { "provider": "xai" } |
| POST | /dsh-llm-oauth/code | { "provider": "openai", "code": "<redirect-url-or-code>" } |
| POST | /dsh-llm-oauth/logout | { "provider": "xai" } |
ChatGPT:openai(当前)与 openai-codex(legacy)
openai 就是 pi-ai 的 Sign in with ChatGPT:浏览器最后落在 Host 的 127.0.0.1:1455 回调上,由 Host 换取 token,不需要额外开关,也不需要设备码授权。回连不到 Host 时,把最终重定向地址贴回来即可(设置页粘贴框,或 /oauth code openai …)。
一个注意点:openai 同时是第一方 API Key 的路由 id。如果在设置 → 模型里配了 openai 的 API Key,再在这里开启 openai 会撞 DUPLICATE_ADAPTER;本插件会在开启前检测并明确报错,告诉你要移除哪一边。
ChatGPT / Codex:先打开设备码授权
Web 端的 openai-codex 走 设备码,不用本机 :1455 浏览器回调。ChatGPT 默认藏着这个入口,需要先打开:
1. 打开 ChatGPT → 设置,进入 应用与连接器(或当前界面里的 连接器 / Codex)。
2. 找到 Codex,打开 为 Codex 启用设备代码授权。
3. 回到本插件设置页,对 openai-codex 点「登录」,再打开授权链接并输入页面上的设备码。
为 Codex 启用设备代码授权
没开这个开关时,即使用户码是对的,授权页也会拒绝。本插件已经自动选了设备码方式,缺的是 ChatGPT 侧的许可。
风险: 用设备码或任何非官方客户端做 Codex / ChatGPT OAuth 登录,可能导致 ChatGPT 账号被限制或封禁。OpenAI 会把这当成在官方 Codex / ChatGPT 应用之外使用订阅。若要试,请用可丢弃的号,不要拿主力号或付不起损失的付费号登录。本插件无法防止或解除封禁。
命令行 / 斜杠命令
启动 Web 后在输入框:
/oauth status
/oauth list
/oauth enable xai
/oauth login xai
/oauth disable xai
/oauth logout xai
/oauth login 会马上返回授权链接和验证码(不会一直转圈)。浏览器里完成登录后再执行 /oauth status,或刷新设置页。后台会继续轮询直到登录结束。
凭据写到 $DSH_HOME/pi-ai-oauth.json(默认 ~/.dsh/pi-ai-oauth.json)。
需要终端(或提供方仍要求交互式提问)时:
node bin/login.mjs --list
node bin/login.mjs xai
已安装进 profile 后:
node %USERPROFILE%\.dsh\profiles\web\node_modules\dsh-llm-oauth\bin\login.mjs xai
登录后请确认该提供方已开启,再在模型选择器里选对应 provider 与 catalog 模型。过期 token 由 pi-ai 在请求路径上刷新。
也可以在 settings.yaml 里手写:
llm-oauth:
providers:
xai: {}
不要和 llm-pi-ai 抢同一条路由
dsh-base 会挂载休眠的 dsh-llm-pi-ai。如果你又在 settings 的 llm-pi-ai: 里配置了 xai / github-copilot 等相同 provider id,会 DUPLICATE_ADAPTER。
- 订阅 / OAuth → 只用本插件
- API Key(DeepSeek、官方 OpenAI API)→ 继续用 llm-deepseek / llm-pi-ai
开发
pnpm install
pnpm test
pnpm run build
node bin/login.mjs --list
@deepseek-ai/* 是宿主提供的 peer;完整测试需要本机已安装或链接这些依赖。Git 安装构建不对宿主 peer 做类型检查。
兼容更新
- 锁文件中的 Pi 已升级到 0.85.1,其 Codex 目录包含 gpt-6-astra。
- 已对照 Harness 0.1.5-rc.2(源码提交 c291e7961a)调整:提取消息首项的系统提示、传递选中的推理强度、兼容 ToolCallId 改名,同时保留旧版 CallId 支持。
- Settings 接入使用 SettingsProvider.installSection 服务 API;deepEqualJson 从宿主 peer @deepseek-ai/dsh-util-values 导入,避免引用新版 dsh-settings 已移除的独立导出。
- 锁文件已移除第三方镜像 tarball 地址,项目 .npmrc 使用官方 npm 源,修复 issue #1。正常 Git 安装可执行 prepare,无需跳过脚本。
限制
- 模型列表跟随 @earendil-works/pi-ai;本插件不维护私有模型表
- 图片输入仅限 pi-ai input 含 image 的模型;图片字节经宿主 attachments 服务读取(仅用户消息)
- 无完整 native replay 签名
- Web 端没有独立 OAuth 回调服务器(device code / 打开 URL)
- 普通 OpenAI API、DeepSeek 官方仍走 API Key
- 设置 → 模型 页只精调 API Key(llm-deepseek / llm-pi-ai);OAuth 开启与登录在 设置 → OAuth / 订阅
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ziyou979/dsh-llm-oauth
DeepSeek Harness 的独立 OAuth / 订阅套餐 LLM 插件。用 dsh plugin add…
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目