🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

第三方订阅接入 kinoward/dsh-plugin-subhub

DeepSeek Harness
kinoward74 天前有提交已提供中文文档扫描:含敏感能力

用订阅账户的模型对话、识图与生成图片

31.5/100
综合分
6
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kinoward/dsh-plugin-subhub
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · market
装得上吗
静态安装检查有提示项,装前建议看一眼 README
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 74 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-plugin-subhub(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 21:25:56

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 45 处,展示前 42 条)
  • 写入本地文件
    src/index.js:371
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    src/index.js:372
    appendFileSync(path, `[${new Date().toISOString()}] ${message}\n`);
  • 读取本地文件
    src/index.js:853
    return JSON.parse(readFileSync(path, "utf8"));
  • 读取本地文件
    src/index.js:913
    const stale = Date.now() - statSync(lockPath).mtimeMs > STALE_LOCK_MS;
  • 删除本地文件
    src/index.js:915
    rmSync(lockPath, { force: true });
  • 发起网络请求
    src/index.js:929
    const response = await fetch(REFRESH_TOKEN_URL, {
  • 删除本地文件
    src/index.js:968
    rmSync(lockPath, { force: true });
  • 写入本地文件
    src/index.js:975
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    src/index.js:976
    writeFileSync(path, JSON.stringify(data, void 0, 2) + "\n", { mode: 384 });
  • 写入本地文件
    src/index.js:980
    chmodSync(path, 384);
  • 发起网络请求
    src/index.js:1003
    const response = await fetch(`${baseURL}/models?client_version=0.0.0`, {
  • 发起网络请求
    src/index.js:1399
    const iterator = this.request(imageDispatch, watchdog.signal, baseURL, auth, () => {
  • 发起网络请求
    src/index.js:1440
    return await fetch(`${baseURL}/responses`, {
  • 读取本地文件
    src/index.js:1552
    return `${file}:${statSync(file).mtimeMs}`;
  • 删除本地文件
    src/index.js:1683
    rmSync(target, { force: true });
  • 删除本地文件
    src/index.js:1686
    rmSync(`${target}.lock`, { force: true });
  • 发起网络请求
    src/index.js:1734
    const response = await fetch(url, {
  • 发起网络请求
    src/index.js:1790
    response = await fetch(url, { headers, signal });
  • 发起网络请求
    src/client.js:213
    const response = await fetch(`${base}${path}${sep}locale=${encodeURIComponent(uiLocale)}`, {
  • 写入剪贴板
    src/client.js:282
    writeClipboard(text).then((ok) => {
  • 发起网络请求
    src/device-flow.js:21
    return fetch(url, {
  • 发起网络请求
    src/device-flow.js:104
    const exchangeResponse = await fetch(`${ISSUER}/oauth/token`, {
  • 发起网络请求
    src/providers/github.js:106
    const response = await fetch(`${baseURL}/models`, {
  • 发起网络请求
    src/providers/github.js:139
    const probe = await fetch(`${baseURL}${path}`, {
  • 发起网络请求
    src/providers/xai.js:124
    let response = await fetch(`${baseURL}/models-v2`, { headers });
  • 发起网络请求
    src/providers/xai.js:126
    response = await fetch(`${baseURL}/models`, { headers });
  • 读取本地文件
    src/piai.js:132
    readFileSync() {
  • 读取本地文件
    src/piai.js:135
    const data = JSON.parse(readFileSync(path, "utf8"));
  • 写入本地文件
    src/piai.js:147
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    src/piai.js:148
    writeFileSync(path, JSON.stringify(data, void 0, 2) + "\n", { mode: 384 });
  • 写入本地文件
    src/piai.js:152
    chmodSync(path, 384);
  • 读取本地文件
    src/piai.js:177
    const stale = Date.now() - statSync(lockPath).mtimeMs > STALE_LOCK_MS;
  • 删除本地文件
    src/piai.js:179
    rmSync(lockPath, { force: true });
  • 删除本地文件
    src/piai.js:197
    rmSync(lockPath, { force: true });
  • 删除本地文件
    src/piai.js:206
    rmSync(path, { force: true });
  • 删除本地文件
    src/piai.js:209
    rmSync(`${path}.lock`, { force: true });
  • 读取本地文件
    src/piai.js:217
    for (const entry of readdirSync(dir)) {
  • 读取本地文件
    src/piai.js:221
    data = JSON.parse(readFileSync(join(dir, entry), "utf8"));
  • 读取本地文件
    src/piai.js:240
    return `${file}:${statSync(file).mtimeMs}`;
  • 写入本地文件
    login.js:62
    mkdirSync(dirname(target), { recursive: true });
  • 写入本地文件
    login.js:63
    writeFileSync(target, JSON.stringify(data, void 0, 2) + "\n", { mode: 384 });
  • 写入本地文件
    login.js:66
    chmodSync(target, 384);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/dsh-tools@deepseek-ai/dsh-llm@deepseek-ai/dsh-settings@deepseek-ai/dsh-timeout
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 接入第三方订阅账户
  • 浏览器授权登录
  • 模型对话与识图

为 DeepSeek Harness 接入第三方订阅账户(目前支持 OpenAI / ChatGPT、xAI (Grok)、GitHub Copilot,全部通过浏览器授权登录)

README

由 DeepSeek 最新模型翻译生成
Dsh Plugin Subhub English · 中文 = 22.19" /> 把第三方订阅账户接入 DeepSeek Harness,使用订阅覆盖的模型进行对话:文字对话、图片理解、图片生成与图片编辑。 目前支持 OpenAI(ChatGPT)、xAI(Grok)、GitHub Copilot 订阅——全部通过浏览器授权登录你的订阅账户。密钥类服务 DeepSeek Harness 已内置,请直接在「模型」页添加。 可用模型、使用额度和响应速度由订阅服务商及你的账户决定。服务商调整服务后,部分功能可能暂时不可用。 安装 - 已安装 DeepSeek Harness(dsh),Node.js 22.19 或更高版本。 dsh plugin --profile web add github:kinoward/dsh-plugin-subhub dsh web dsh web 即启动 web profile(等同 dsh --profile web)。安装完成后请重新启动 DeepSeek Harness。
展开完整文档(README 剩余 1 节)
Dsh Plugin Subhub

English · 中文

= 22.19" />

把第三方订阅账户接入 DeepSeek Harness,使用订阅覆盖的模型进行对话:文字对话、图片理解、图片生成与图片编辑。

目前支持 OpenAI(ChatGPT)、xAI(Grok)、GitHub Copilot 订阅——全部通过浏览器授权登录你的订阅账户。密钥类服务 DeepSeek Harness 已内置,请直接在「模型」页添加。

可用模型、使用额度和响应速度由订阅服务商及你的账户决定。服务商调整服务后,部分功能可能暂时不可用。

安装

- 已安装 DeepSeek Harness(dsh),Node.js 22.19 或更高版本。

dsh plugin --profile web add github:kinoward/dsh-plugin-subhub
dsh web

dsh web 即启动 web profile(等同 dsh --profile web)。安装完成后请重新启动 DeepSeek Harness。

快速开始

1. 登录 —— 打开 设置 → 第三方订阅,在想要接入的订阅卡片上点击「登录」(例如 OpenAI 订阅 卡片对应 ChatGPT 账号、xAI Grok 订阅 卡片对应 SuperGrok / X Premium+ 账号),在浏览器中打开授权链接并输入一次性码(码 15 分钟内有效)。完成授权后页面会自动同步,订阅随即出现在模型选择器中。
2. 选择模型 —— 点击输入框左下角的模型选择器(显示当前模型与推理等级),点「模型」,在 OpenAI 订阅 分组下选择想用的模型;需要时可在同一菜单中调整推理等级。可用模型与推理等级随账户自动同步显示。
3. 使用图片 —— 上传图片并提问、描述画面生成图片,或要求编辑图片:

- 查看:“这张图片里有什么?” / “帮我提取图片中的文字。”
- 生成:“生成一张雨夜霓虹街道的电影感插画。”
- 编辑:先上传图片(或使用刚生成的图片),然后说 “把天空改成晚霞,其他内容保持不变。” 编辑会使用当前对话中最近的一张图片;没有图片时,请先上传一张。

图片理解、生成与编辑都需要支持图片输入的模型,模型信息中会标明(「支持图片」标签)。

账户管理

- 重新登录 / 退出登录 —— 打开 设置 → 第三方订阅:「重新登录」可更换账户;「退出登录」会删除本插件保存的登录信息。
- 更新插件 —— 再次执行安装命令,然后重新启动 DeepSeek Harness。
- 停用插件 —— 打开 设置 → 插件 → 插件列表,停用 dsh-plugin-subhub。

命令行登录(可选)

没有图形界面时,可以使用随包登录脚本完成登录。先进入所用 profile 的目录,再运行:

node node_modules/dsh-plugin-subhub/login.js

脚本会打印授权链接和一次性码:在浏览器打开链接、输入码后,凭据会写入 ~/.dsh-plugin-subhub/openai-auth.json。登录完成后,打开一次 设置 → 第三方订阅,订阅即可出现在模型选择器中。随包脚本目前只覆盖 OpenAI;其他服务商请在「第三方订阅」页完成登录。

界面预览

以下为 DeepSeek Harness Web 界面内插件的浏览器窗口截图,浅色与深色主题:

设置 → 第三方订阅(未登录):

设置 → 第三方订阅(已登录):

「模型」页展开的 OpenAI 订阅(已登录):

对话中使用图片(图片理解):

对话中生成图片(文生图):

对话中编辑图片(图生图):

安全与隐私

- 未自定义保存位置时,登录信息保存在 ~/.dsh-plugin-subhub/-auth.json,每个服务商一个文件(如 OpenAI 为 openai-auth.json、xAI 为 xai-auth.json);
- 插件创建或更新这些文件时,会将访问权限限制为仅当前系统用户可读写;
- 插件不会读取 Codex CLI 或其他程序保存的登录信息,安装后需要在本插件中单独登录一次;
- 退出登录会删除本插件当前使用的登录文件;
- xAI 登录复用官方 Grok CLI 的同一套 OAuth 流程,属于社区支持路径,xAI 可能随时调整;
- 不要分享登录文件、一次性码或其他账户信息,也不要把它们提交到 Git 或 Issue。

支持

- GitHub Issues —— 报告问题或提出建议,发送前请删除账户信息和其他敏感内容。

各服务名称与 Logo 均为其各自所有者的商标。

许可

MIT License
预览分享卡片长什么样 ↓kinoward/dsh-plugin-subhub
分享 · DeepSeek Harness Hub
kinoward/dsh-plugin-subhub

用订阅账户的模型对话、识图与生成图片

这是你的仓库?认领条目

回到顶部