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

模型聚合台 lifeiyu-44/dsh-model-hub

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

把 WorkBuddy 与 Qoder 模型接入并统一管理账号

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add lifeiyu-44/dsh-model-hub
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 5 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 39 处,展示前 19 条)
  • 读取本地文件
    lib/index.js:48
    const SCHEMA_V1 = readFileSync(join(HERE, "schema.sql"), "utf8");
  • 写入本地文件
    lib/index.js:58
    await mkdir(dirname(path), {
  • 读取本地文件
    lib/index.js:510
    if (!existsSync(path)) continue;
  • 读取本地文件
    lib/index.js:514
    parsed: parseAuthDocument(readFileSync(path, "utf8"))
  • 写入本地文件
    lib/index.js:530
    mkdirSync(dir, {
  • 写入本地文件
    lib/index.js:548
    writeFileSync(path, JSON.stringify(doc), {
  • 读取本地文件
    lib/index.js:563
    const doc = JSON.parse(readFileSync(path, "utf8").replace(/^ FEFF/, ""));
  • 读取本地文件
    lib/index.js:594
    names = readdirSync(dir).filter((name) => name.endsWith(".json"));
  • 读取本地文件
    lib/index.js:602
    const parsed = parseAuthDocument(readFileSync(source, "utf8").replace(/^ FEFF/, ""));
  • 发起网络请求
    lib/index.js:1256
    const response = await fetch(`${openapiBase}${PATH_EXCHANGE}`, {
  • 发起网络请求
    lib/index.js:1285
    const infoResponse = await fetch(`${openapiBase}${PATH_USERINFO}`, {
  • 写入本地文件
    lib/index.js:1798
    await mkdir(join(path, ".."), { recursive: true });
  • 写入本地文件
    lib/index.js:1799
    await writeFile(path, JSON.stringify(payload, null, 2), "utf8");
  • 发起网络请求
    lib/index.js:1892
    } : await deps.dialect.request({
  • 发起网络请求
    lib/index.js:1901
    resp = await fetch(nextBody.url, {
  • 发起网络请求
    lib/index.js:2235
    const response = await fetch(url, {
  • 发起网络请求
    lib/index.js:2478
    const response = await fetch(url, {
  • 写入本地文件
    lib/index.js:3730
    mkdirSync(dir, {
  • 删除本地文件
    lib/index.js:3760
    rmSync(path, { force: true });
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-llm@deepseek-ai/dsh-llm-pi-ai@deepseek-ai/dsh-settings@deepseek-ai/dsh-atomic-write
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

把 WorkBuddy / Qoder CN 的模型统一接入 DeepSeek Harness,带多账号池、凭据自动接管、请求记录与诊断

README

由 DeepSeek 最新模型翻译生成
dsh-model-hub 把本机 WorkBuddy(国际/国内) 与 Qoder CN 的模型统一接进 DeepSeek Harness,带多账号池、凭据自动接管、请求记录与诊断。 面板里的「?」按钮有同样的使用说明——不用翻这个文件也能用。 它能做什么 | 能力 | 说明 | | 多平台接入 | WorkBuddy 25 个模型 + Qoder CN 10 个模型并列出现在 DSH 模型选择器里,id 带 hub- 前缀(hub-workbuddy-global/…、hub-qoder-cn/…) | | 账号管理 | 面板内增删账号、启用/禁用、设为当前、单账号测试;同一账号按 uid 去重,绝不重复出现 | | 多账号池 | 手动优先 + 故障切换(401/402/403/429/5xx 自动换下一个账号,上限 min(池大小,3))+ 熔断(连续 3 次凭据类失败冷却 10 分钟) | | 凭据自动接管 | WorkBuddy 桌面端加密登录态由插件内置解密(向 App 的 native binding 取密钥,AES-256-GCM 解信封);Qoder 用 PAT 换 jobToken | | 请求记录 | 每次上游尝试一行:token 数、TTFT、tok/s、状态码、归属账号;故障切换时失败那次与成功那次都可见 |
展开完整文档(README 剩余 1 节)
dsh-model-hub

把本机 WorkBuddy(国际/国内) 与 Qoder CN 的模型统一接进 DeepSeek Harness,带多账号池、凭据自动接管、请求记录与诊断。

面板里的「?」按钮有同样的使用说明——不用翻这个文件也能用。

它能做什么

| 能力 | 说明 |
| 多平台接入 | WorkBuddy 25 个模型 + Qoder CN 10 个模型并列出现在 DSH 模型选择器里,id 带 hub- 前缀(hub-workbuddy-global/…、hub-qoder-cn/…) |
| 账号管理 | 面板内增删账号、启用/禁用、设为当前、单账号测试;同一账号按 uid 去重,绝不重复出现 |
| 多账号池 | 手动优先 + 故障切换(401/402/403/429/5xx 自动换下一个账号,上限 min(池大小,3))+ 熔断(连续 3 次凭据类失败冷却 10 分钟) |
| 凭据自动接管 | WorkBuddy 桌面端加密登录态由插件内置解密(向 App 的 native binding 取密钥,AES-256-GCM 解信封);Qoder 用 PAT 换 jobToken |
| 请求记录 | 每次上游尝试一行:token 数、TTFT、tok/s、状态码、归属账号;故障切换时失败那次与成功那次都可见 |
| 全功能界面化 | 记录保留清理、渠道展开模型清单、按账号的今日消耗、认证结果区、使用说明,全部在面板里 |

安装

从 GitHub 装(普通用户)

构建产物(lib/、client.js)已随仓库提交,装完即可用,不需要本地构建:

dsh plugin add github:lifeiyu-44/dsh-model-hub

也可以在 GUI 里:侧边栏 插件 → 添加插件 → 粘贴 github:lifeiyu-44/dsh-model-hub。

指定版本(tag)安装:

dsh plugin add github:lifeiyu-44/dsh-model-hub#v0.1.0

装完重启 DSH,到 设置 → 插件 → DSH Model Hub 配置账号。

前置条件:Node.js ^22.19.0 || >=24,以及 DSH 本体(插件通过 peerDependencies 使用宿主的 @deepseek-ai/dsh- 包,不会重复安装)。

从 npm 装

包发布后也可以直接按包名安装:

dsh plugin add dsh-model-hub

从源码开发(贡献者)

git clone https://github.com/lifeiyu-44/dsh-model-hub
cd dsh-model-hub
pnpm install
pnpm build # tsdown:产出 lib/ 与 client.js
pnpm test

然后按下面「本地部署」把它挂进 profile。

本地部署(改完源码后生效)

1) 构建 + 同步进 desktop profile + 临时 profile 真机启动验证 powershell -ExecutionPolicy Bypass -File scripts\deploy.ps1

2) 验证通过后真装进 desktop powershell -ExecutionPolicy Bypass -File scripts\deploy.ps1 -Install

3) 重启 DSH Desktop 生效出问题回滚: powershell -ExecutionPolicy Bypass -File scripts\deploy.ps1 -Rollback

部署脚本会做四件事:构建(tsdown)→ 同步 lib/ + client.js + package.json 到 profile(并维护依赖 junction)→ 在临时 profile 里真机启动、核对 status.json 与 shim 端口 → 把插件加进 profile 的 bundles。

注意:deploy.ps1 必须以 UTF-8 带 BOM 保存——PowerShell 5.1 读无 BOM 的中文注释会解析失败。

面板说明

设置 → 插件 → DSH Model Hub。四个栏:

账号

每行一个账号:状态点(绿=可用 / 黄=停用 / 红=熔断)、显示名(真实身份:WorkBuddy 解密出的昵称、Qoder userinfo 真名)、「当前」标记、meta(有凭据 · 今日 N 次 · X tokens · 熔断中 · 上次失败/成功)。

按钮:
- 开关:启用/禁用(禁用即退出池)
- 测试:真拉一次上游验活,成功解除熔断
- 设为当前:决定池头,请求优先用它
- 删除:软删(面板不再显示,重启不复活;凭据文件不受影响,但面板里无法恢复)

分组行上的 + 添加账号:
- WorkBuddy:扫描 vault 导入(幂等,软删账号不复活)
- Qoder:贴 PAT(pt- 开头),备注名留空则用 userinfo 真名

渠道

每行一个渠道:开关(关 = 该渠道模型从选择器彻底消失,凭据保留)、今日计数、「展开 ▾」查看该渠道自己的模型清单(名称 · 倍率 · 活动/等级标记)。

记录

今日摘要 + 最近 4 条明细 + 「查看全部 →」开弹层。

弹层:统计条(请求数/Tokens/平均 TTFT/平均速度/积分)+ 筛选(渠道、模型、时间范围)+ 完整明细表(时间/渠道/账号/模型/in/out/cache/TTFT/tok·s/耗时/状态) + 导出 CSV。

口径:tok/s = output tokens ÷ 解码时长(首 token 到达 → 流结束,不含 TTFT);TTFT 从请求到达 shim 算起,含建连。拿不到上游 usage 的行会标 并置灰。

诊断

凭据路径、token 有效期、shim 地址、上游最近一次错误原文(不翻译不概括,方便整段贴给作者)、记录开关状态、保留天数、记录管理(「立即清理」按保留天数删过期明细 / 「清空全部」两连确认)。

多账号怎么加

WorkBuddy(推荐:换号 + 一键认证)

1. 在 WorkBuddy 桌面端换登另一个账号
2. 面板点 一键认证 —— 插件读桌面端加密登录态,用 App 自身取密钥解密,验活,按 uid 去重后新增一行账号
3. 原来的账号仍保留(token 存在 %USERPROFILE%\.dsh\model-hub\workbuddy-tokens/,0600)

同一个账号重复认证只会刷新那一行,不会重复出现。

Qoder(贴 PAT)

面板「+ 添加账号」→ 贴 pt-…(到 <https://qoder.com.cn/account/integrations> 新建)→ 插件写 model-hub/qoder-pats/<slug>.pat(0600)→ 换 token 验活 → 入库 → 起 runtime。

切当前 / 故障切换

「设为当前」= 池头优先;请求失败(凭据类 4xx 或 5xx)自动换池里下一个账号重试,失败那次也记一行(account_id 是失败账号)。连续 3 次凭据类失败 → 熔断 10 分钟,到期自动解冻;全池冷却时仍按序兜底。

凭据从哪来(只读复用)

| 来源 | 读取方式 | 说明 |
| WorkBuddy 桌面端登录态 | %LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\workbuddy-desktop-ai.info | $wbEncrypted 信封;插件以 ELECTRON_RUN_AS_NODE 跑 WorkBuddy App 自身、调 loggerGet() 取密钥,内存里解密 |
| 插件自有 token | %USERPROFILE%\.dsh\model-hub\workbuddy-tokens\<sha256(uid)[:12]>.json | 解密后的明文,0600;每账号一个文件 |
| dsh-connect-workbuddy vault | %USERPROFILE%\.dsh\workbuddy-vault\<region>\<accountId>.json | 只读,历史来源 |
| Qoder PAT | ~/.dsh/qoder/pat、QODERCN_PAT 等环境变量、model-hub/qoder-pats/*.pat | 面板贴的 PAT 落在自有目录 |

安全边界:插件数据库只存凭据引用(文件路径),绝不存明文;日志与报错统一隐去 token/PAT 全文(只保留文件路径与前 6 位);桌面端 auth 文件与 vault 永不回写。写接口要求本机回环 + Origin 规则(网页来源必须回环,桌面壳/本地客户端放行)+ JSON content-type + body ≤64KB。

模型与思考档位

- WorkBuddy 目录不提供逐模型 reasoning 标记,但实测上游接受 reasoning_effort 参数 → 25 个模型统一声明支持(不支持的模型上游忽略参数)
- Qoder 按目录 is_reasoning 如实声明
- 选中支持思考的模型后,DSH 输入框的模型选择器出现「思考强度」(off/minimal/low/medium/high),按模型记忆
- 非 hub 模型(如 zai-coding-cn)是否有档位,取决于其 provider 配置里是否声明 reasoningEfforts

配置项

插件设置(Config,全部 volatile,改完即生效):

| 字段 | 默认 | 说明 |
| enabled | true | 总开关(装配期判定,关掉需重载插件退出) |
| recordEnabled | true | 是否记录请求(现读,关掉即停止写入) |
| retentionDays | 90 | 明细保留天数(启动清理 + 每 24h 清理;聚合永久保留) |

出问题看哪里

1. 诊断栏:凭据路径、token 有效期、上游错误原文
2. %USERPROFILE%\.dsh\model-hub\status.json:ok / modelCount / 失败原因(部署自检也读它)
3. 账号行:熔断中(至 HH:mm)/ 上次失败原因 / 测试按钮的 ✓✗
4. 常见写接口错误:origin_not_allowed / host_not_allowed = 非本机请求;bad_request = 参数不对;payload_too_large = body 超 64KB

已知限制

- WorkBuddy 渠道校验是军备竞赛(上游随时可能收紧)
- 目录拉取失败时渠道保持「无 runtime」,由下一次写操作/重启重试
- 5xx 触发的请求内换号对非幂等上游有重复副作用的理论可能(上限 min(池,3))
- 记录明细上限 2000 行(弹层全部显示靠表格滚动)

开发

pnpm build # tsdown:lib/ + client.js(client-load 测试吃产物,改客户端必须先 build)
pnpm test # vitest(36 文件 / 285 用例)
pnpm typecheck # tsc --noEmit

结构:

src/
index.ts # 装配层:开库 → HubState → 两渠道 ensureRuntime → 数据/写路由 → 保留清理 state/hub-state.ts # 状态中心:写操作编排、池与 runtime 同步 state/runtime.ts # 渠道 runtime:shim + provider 注册/重注册(热注册) state/selector.ts # 选号纯逻辑(手动优先/熔断/兜底) probe/prober.ts # 一键认证 / 单账号测试 / 贴 PAT routes/data.ts # 只读路由(summary/catalog/records/channels/diag) routes/write.ts # 写路由(九条操作 + 门禁 + 分发器) store/ # SQLite:schema、mutations(写侧)、queries(读侧)、retention、seed shim/server.ts # 本机回环 shim:唯一埋点处 + 请求内换号重试 channels/workbuddy/ # 凭据发现、vault 多账号、at-rest 内置解密、token-store、目录 channels/qoder/ # PAT→jobToken、COSY 签名、目录、对话方言(请求编码 + 双层 SSE) client/ # 面板:HubCard(四栏)、RecordsModal、AddAccountModal、HelpModal、ModelLabel docs/superpowers/ # 设计规格与实现计划 tests/ # 285 用例(含真实上游 live 用例,网络不通时会红)

许可

MIT
预览分享卡片长什么样 ↓lifeiyu-44/dsh-model-hub
分享 · DeepSeek Harness Hub
lifeiyu-44/dsh-model-hub

把 WorkBuddy 与 Qoder 模型接入并统一管理账号

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部