DSH Plugins Marketplace

DSH Plugins

Plugins

/

Development & Infrastructure

/

dsh-workbuddy-hub

l

dsh-workbuddy-hub

Manifest valid★ 2

WorkBuddy Switching Hub for DSH: LLM provider + multi-account ledger (credits/check-in/expiry/cooldown/one-click switch). All-in-one, self-contained, privacy-masked.

UI (client)hasBundlePatch

dsh-workbuddy-hub (显示名:Workhoney)

界面/看板上显示为 Workhoney;dsh-workbuddy-hub 是包名(内部标识)。

效果图

① 网页界面 —— 宽屏台账表格、实时额度、限流状态、积分有效期分段 (GET /dsh-workbuddy-hub/board,或抽屉里点「网页版」):

网页界面

② 悬浮球主界面 —— 多账号台账、一键切号、签到状态、实时额度:

悬浮球主界面

③ 悬浮球里的 DeepSeek-V4.1-Flash 冷却时间 —— 显示该模型下被限流的账号与精确解禁倒计时(后台每 10 分钟主动探测自动登记):

DeepSeek-V4.1-Flash 冷却时间

WorkBuddy 转接中枢 —— 一个插件同时提供两件事:

  1. 转接(provider):把 WorkBuddy 桌面端的模型接进 DeepSeek Harness,像官方 provider 一样出现在模型选择器里。
  2. 记录(ledger):多账号台账悬浮球 —— 手机号(脱敏)、积分、签到(含每日自动签到)、积分有效期、限流冷却 CD、一键切号、无感登录新账号。

自包含:不需要 WorkDaddy,不需要 dsh-workbuddy-connect。 账号凭据、手机号索引、积分缓存都存在插件自己的数据目录里(~/.dsh/workbuddy-data/)。


安装

dsh plugin --profile desktop add dsh-workbuddy-hub
# 装完重启一次 DSH

⚠️ 与 dsh-workbuddy-connect 互斥:两者都注册 workbuddy 这个 provider id, 而 DSH 对重复 provider all-or-nothing 拒绝。装 hub 前请先卸载 connect:

dsh plugin --profile desktop remove dsh-workbuddy-connect

前置条件

依赖必要性说明
WorkBuddy 桌面端必需任意版本均可(无版本门槛,见下)。必须已登录至少一个账号
Windows当前实现凭据解密依赖 WorkBuddy 自带的 Electron 运行时
WorkDaddy不需要已完全自包含。仅"假退出登录"与"今日用量明细"会受影响

WorkBuddy 版本要求:没有

检查项结果
插件内版本硬编码0 处
版本校验规则任意数字版本(5.5.x / 5.6.x / 5.7.x / 未来版本均可)
版本来源运行时探测,非写死

实测:WorkBuddy 5.6.2 与 5.7.7 均正常工作(跨 7 个版本)。

但有两个硬性前提

1|.exe 必须叫 workbuddy.exe (国际版为 workbuddyai.exe)。大小写不敏感,但文件名不能改。

2|WorkBuddy 的 Electron 二进制必须能被发现 —— 满足任一条即可:

#途径说明
1环境变量 WORKBUDDY_ELECTRON_BIN最可靠,可覆盖任意安装位置
2注册表卸载项需有 InstallLocation 或 DisplayIcon
3默认路径%LOCALAPPDATA%\Programs\WorkBuddy\WorkBuddy.exe

为什么必需:WorkBuddy 的 accessToken 是加密的,解密要把 ELECTRON_RUN_AS_NODE=1 传给 WorkBuddy 自己的 Electron 运行时才能取到密钥。 找不到二进制 = 凭据解不开 = 模型选择器里没有 WorkBuddy 分组。


🔴 首次安装最常见的问题

症状:装好插件、重启 DSH 后,模型选择器里完全没有 WorkBuddy 分组,也没有任何提示。

成因:WorkBuddy 装在非默认位置,且没有可用的注册表记录 → 三条发现路径全部失效。

解决:设置用户环境变量后重启 DSH:

# 把路径换成你自己机器上的 WorkBuddy.exe
[Environment]::SetEnvironmentVariable(
  'WORKBUDDY_ELECTRON_BIN',
  'D:\Your\Path\WorkBuddy\WorkBuddy.exe',
  'User')

自检(推荐先跑这个)

GET http://127.0.0.1:<DSH端口>/dsh-workbuddy-hub/selfcheck

它会主动检查环境变量、默认路径、常见安装位置、登录文件,并给出可直接照做的建议:

{
  "ok": true,
  "selfCheck": {
    "platform": "win32",
    "workbuddy": {
      "envVar": "WORKBUDDY_ELECTRON_BIN",
      "envValue": "D:\\Your\\Path\\WorkBuddy\\WorkBuddy.exe",
      "envOk": true,
      "defaultPathOk": false,
      "foundElsewhere": ["D:\\Your\\Path\\WorkBuddy\\WorkBuddy.exe"],
      "advice": "ok"
    },
    "authFile":   { "exists": true, "encrypted": true },
    "ownedData":  { "accounts": 8 }
  }
}

advice 的四种取值:

情形建议
没登录过提示先去 WorkBuddy 桌面端登录一次(附期望路径)
找不到程序提示设置 WORKBUDDY_ELECTRON_BIN(并说明为何必需)
装在非默认位置直接给出探测到的完整路径
一切正常ok

/health 也内嵌了同样的 selfCheck,方便一眼排查。


能做什么

转接:WorkBuddy 模型 → DSH

注册 workbuddy 与 workbuddy-ai 两个 provider,模型选择器里直接出现 Deepseek-V4.1-Flash、GLM、Kimi 等(实测 32 个)。 凭据复用 WorkBuddy 桌面端登录态,账号在 App 里切换后自动跟随。

记录:多账号台账(悬浮球)

点右下角悬浮球展开。抽屉头部按钮:+ 登录新账号 / 签到 / 网页版 / 刷新 / ★ Star / ×

信息说明
手机号 / 昵称一律脱敏(156****912* / 好…来)—— 后四位只露 3 位
实时额度(上游权威)每账号的真实总额度与剩余,来源 POST /v2/billing/meter/get-user-resource
套餐数 + 即将到期有套餐 3 天内到期会标 ⚠(建议优先用快作废的)
剩余积分 + 有效期分段3 天内到期的会标 ⚠
签到状态含每日自动签到结果
限流冷却 CD自建台账(~/.dsh/workbuddy-rate-limit-ledger.json)
今日用量带 synced 标志,区分「0」与「未采集」

轮换顺序:可用 → 积分最早过期(先花快作废的)→ 今日用得少 → 余额多。

实时额度(替换掉拿不到的「今日用量」)

原有的「今日用量 / 今日请求数」在 WorkDaddy 卸载后无法统计: 原数据源(它的 credit-usage.db)已删除,且上游没有任何用量查询端点(实测 8 个候选路径全 404)。

但上游提供了逐套餐的额度接口,信息反而更准确:

POST {billingBase}/v2/billing/meter/get-user-resource
     body: { ProductCode: "p_tcaca", Status: [0,3], ... }
返回: CapacitySize / CapacityUsed / CapacityRemain  总额度 / 已用 / 剩余
      CycleStartTime / CycleEndTime                  周期(= 积分有效期)
      DeductionEndTime                               扣费截止(过期时间戳)
      PackageName / SubProductName                   套餐名

因此 UI 用 「实时额度 + 套餐数 + 即将到期数」 替换了那两个指标。 这与切号无关:它逐账号解密凭据后直接查上游,不需要该账号是当前登录账号。

签到(含每日自动签到)

  • 手动:抽屉里点「签到」,对所有已备份账号逐一签到
  • 自动:启动后跑一次 + 每 60 分钟一次,逐账号容错、跳过今日已签
  • 原理:逐个解密该账号自己的凭据调官方接口,不切换当前登录账号

台账写在 ~/.dsh/workbuddy-checkin-ledger.json。

限流冷却(CD)自动登记

为什么要做:用户实测撞上 429 后,台账里没有记录 —— 因为原来只有手动命令 (workbuddy-ledger.cjs limit --text "..."),没人跑就永远记不上。

现在三层保障:

机制触发说明
主动探测每 10 分钟自动逐账号发一次 max_tokens:1 的轻量请求;撞到 429 自动登记(含解禁时间),探到可用则自动清除 CD 记录
报错上报POST /dsh-workbuddy-hub/ledger/record把 DSH 的 429 报错原文 POST 过去,自动识别账号(缺省=当前登录账号)与解禁时间
手动探测POST /dsh-workbuddy-hub/ledger/probe立即跑一轮,不必等定时器

查看台账:GET /dsh-workbuddy-hub/ledger(含探测调度状态) 清理过期:POST /dsh-workbuddy-hub/ledger 或加 ?clear=1

探测成本:max_tokens: 1,可忽略;被限流的账号不消耗额度。 账号之间间隔 1.5 秒,避免探测本身把账号打成限流。

操作:一键切号

悬浮球里点「切到此账号」→ 优先走本地 API(若有),不可用时自动回落内置切号逻辑 (复制账号备份到官方登录位,原子替换)→ 再把凭据镜像给 DSH,切完立刻生效。 响应里的 via 字段标明实际走了哪条路径。

登录新账号(无感登录)

抽屉点「+ 登录新账号」→ 打开浏览器扫码 → 自动入库。 不退出当前账号,新账号直接进插件自己的账号库。

网页版看板

GET /dsh-workbuddy-hub/board(点「网页版」按钮用系统浏览器打开)—— 完整宽屏表格 + 冷却队列 + 倒计时 + 登录入口 + 30 秒自动刷新。

隐私

手机号与昵称在任何输出面都不完整显示:悬浮球抽屉、网页版看板、/state API 响应。 (/state 是 HTTP 路由,本机任意进程都能读,所以 API 层也必须脱敏。)


架构

dsh-workbuddy-hub
├── lib/vendor/            ← 内置 dsh-workbuddy-connect(MIT,见 LICENSE.connect.txt)
│   ├── connect-index.js       provider 注册 / 凭据解密 / 目录刷新
│   └── connect-heartbeat.js   环回端点 + WorkBuddy Electron 密钥提取
├── lib/index.js           ← 宿主:台账路由 + 切号 + 签到 + 登录 + 自检
└── lib/client.js          ← 客户端:悬浮球 + 抽屉(原生 DOM,不用 iframe)

~/.dsh/workbuddy-data/     ← 插件自持数据(首次自动迁移)
├── accounts/<uid>.info        账号凭据
├── accounts-index.json        手机号 / 昵称 / uin 索引
└── credit-cache.json          积分缓存(含有效期分段)

为什么内置 vendor 而不是重写:凭据解密必须用 ELECTRON_RUN_AS_NODE=1 跑 WorkBuddy 自己的二进制取 atRestSecretKey。这段逻辑重写风险极高、且要跟进 DSH 内核与 pi-ai 的 API 变更, 因此内置上游 MIT 代码并保留其版权声明。


数据流

WorkBuddy App ──登录态──> 加密 auth 文件
                              │
                    lib/vendor 解密(Electron 密钥)
                              │
                              ▼
                   workbuddy provider ──> DSH 模型选择器

~/.dsh/workbuddy-data/accounts/*.info ──> 台账 / 切号 / 签到
                              │
                              ▼
                   悬浮球 / 网页版看板

故障排查

症状处理
模型选择器没有 WorkBuddy 组先跑 /selfcheck 看 advice;或查 /health 的 provider.ok
悬浮球看不到账号GET /selfcheck 看 ownedData.accounts;为 0 就用「登录新账号」加一个
切号后 DSH 没变看返回的 credentialMirror 字段(hardlink-alive 表示正常)
签到失败GET /dsh-workbuddy-hub/checkin/state 看台账里的 message
与 connect 冲突两个都注册 workbuddy,卸载其一

License

MIT。

lib/vendor/ 内含 dsh-workbuddy-connect(MIT, Copyright (c) 2026 Corrine Hu)的 未修改副本(仅调整了相对 import 路径),其许可证见 lib/vendor/LICENSE.connect.txt。

Comments

Loading…

From the same category

awesome-dsh-plugin

by awesome-dsh-plugin

A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表

Development & Infrastructure

★ 18.4k

CC0-1.0

Python

Oct 11, 2026

Index only — not installable

by 0xsline

DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.

Development & Infrastructure

★ 1.2k

CC0-1.0

Python

Oct 10, 2026

Index only — not installable

by pax-beehive

Open-source CLI, schemas, resolver, and DSH agent tools for DSH Plugin Hub

Development & Infrastructure

★ 406

MIT

TypeScript

Oct 6, 2026

Index only — not installable

by xiajiajun516

DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.

Development & InfrastructureManifest valid

★ 177

MIT

TypeScript

Oct 11, 2026

dsh plugin --profile web add dsh-config-manager

by yjh051108

推荐组件(非必须):DeepSeek Harness 运行时注入器;已随 dsh-routing-suite 单仓库化保留,本仓库继续维护/发布。

Development & InfrastructureManifest valid

★ 165

TypeScript

Sep 18, 2026

dsh plugin --profile web add @dsh-external/dsh-super-injector

by jigjoy-ai

A CLI that turns a goal into a pull request - and a sandbox for testing concurrent AI coding agents on the Mozaik runtime.

Development & Infrastructure

★ 124

MIT

TypeScript

Oct 2, 2026

Index only — not installable