ChaYeWuu/dsh-hyperworkbuddy ↗★ 2

dsh-hyperworkbuddy

管理WorkBuddy多账号并暴露兼容端点 适合已安装WorkBuddy,需在DSH中直连其模型或对外提供API端点的用户。

包名
dsh-hyperworkbuddy
兼容性
待验证
Harness 依赖范围
0.2.0-rc.2
Cordis 依赖范围
^4.0.2
版本
0.1.0
许可证
MIT
最近更新
2026年10月11日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ChaYeWuu/dsh-hyperworkbuddy

使用

重启后打开 设置 → WorkBuddy,面板分五块:

  1. OpenAI 兼容端点——一个对外总开关,外加 API Key 一键复制。 关掉只停掉对外端点(释放端口),DSH 里的模型照常可用。
  2. 国内版分区——WorkBuddy 的账号与模型,带自己的对外端点地址(默认 http://127.0.0.1:8791/v1)。
  3. 国际版分区——WorkBuddy AI 的账号与模型,带自己的对外端点地址(默认 http://127.0.0.1:8792/v1)。 两版的账号、模型、端口互不干扰:同名模型在两区走的是不同上游。
  4. 用量——今日与累计的请求数 / 输入输出 token / 缓存命中率,近 7 天柱状图,以及今日的分账号、分模型明细。
  5. 导入区——「重新扫描并刷新」「链接登录」「导入单个账号」,底部是第三方导入。

每个分区可折叠,收起后只剩标题行。分区里:

  • 账号:显示来源、状态、积分(含套餐明细可展开)、模型数、到期时间, 可单独刷新积分 / 刷新模型 / 停用 / 移除。所有操作都有进行中反馈。
  • 模型开关:每个模型一个复选框,另有「全部开启 / 全部关闭」。上游声明了推理档位的 模型会在下面列出档位(low / medium / high / xhigh / max),默认档位高亮。

模型在 DSH 里分成两组:WorkBuddy 与 WorkBuddy AI。

链接登录

「链接登录」向官方申请授权链接并自动在默认浏览器打开,登录完成后账号自动入库:

  1. 选择版本,点击「生成授权链接」(授权页自动打开)
  2. 在浏览器中完成登录
  3. 返回面板,账号自动出现(授权窗口 10 分钟,插件每 2 秒轮询一次)

一键刷新与一键签到

  • 一键刷新(两个版本均有):批量刷新该版本全部账号的模型目录与积分。
  • 一键签到(仅国内版):批量为全部账号签到,完成后自动刷新积分。 上游返回 10001(当日已签)按成功处理。国际版无签到体系,按钮不显示。

推理档位与探测

档位优先采用上游在目录里声明的 supportedEfforts。上游没声明时,模型条目下方 会出现「探测档位」按钮:

  1. 逐个档位(low / medium / high / xhigh / max)发一条 max_tokens: 1 的最小请求
  2. 只记录上游接受的档位
  3. 一旦遇到限流、额度不足或登录失效立刻中止,并且不写入任何结论—— 这些情况说明不了档位是否有效

探测会消耗少量额度,因此只在手动触发时执行;结果持久化在状态文件里, 上游的声明始终优先于探测结果。

第三方导入

面板底部的「第三方导入 → WorkBuddy2API-Hub 导入」用于从其他 WorkBuddy 管理面板 迁移账号,接受:

  • WorkBuddy2API-Hub 的导出文档({"format":"workbuddy-accounts","accounts":[…]})
  • 裸账号数组、单个账号对象、桌面客户端凭据({auth, account})
  • cockpit 风格的 snake_case 行(access_token / refresh_token / expires_at)

导入时区域以 token / 域名为准(不信任行里可能过期的 realm),易变字段 (冷却、错误、停用标记)一律丢弃,逐行容错。

用量看板

面板里的「用量」区块记录每次请求,数据只落本机:

  • 今日 / 累计:请求数、失败数、输入 token、输出 token、缓存命中率;
  • 近 7 天:按天的 token 柱状图;
  • 今日明细:分账号、分模型两张表(账号行会标出失败次数)。

统计从 $DSH_HOME/.hyperworkbuddy-usage.jsonl 折出来——每次调用追加一行 JSON, 读取时按天聚合,只保留最近 8 天。这张流水同时也是排查问题的依据: 想知道某个账号到底跑了多少、某个模型是不是在烧额度,看这里即可。

面板上的「清空记录」需要点两次才会执行(第二次变成「确认清空」),清空后流水文件也会删掉。 流水的写入失败不会影响正常请求——写不进去就只是不再记录。

状态文件位置

账号与开关存放于宿主提供的 home 目录下(桌面版为 ~/.dsh/profiles/desktop/):

文件内容
.hyperworkbuddy-accounts.json账号池(含明文 token)
.hyperworkbuddy-state.json对外端点开关、逐模型显隐
.hyperworkbuddy-endpoint-key自动生成的对外 API Key
.hyperworkbuddy-usage.jsonl请求流水(每次调用一行 JSON)

早期版本优先读取 $DSH_HOME(~/.dsh),与桌面版宿主不一致,会导致账号 在两个文件间分叉。现在启动时会自动迁移账号更多的那一份,并在原文件旁保留 .migrated-from-legacy 备份。

两个端点的分工

插件给每个版本起两个端点,这是「关掉对外端点不影响 DSH」的实现方式:

内部端点对外端点
端口随机(不占用配置端口)配置端口(8791 / 8792)
鉴权仅进程内密钥面板里的 API Key
用途DSH 自己的 providerCodex / Claude Code 等外部客户端
开关始终在跑面板总开关

所以关掉总开关时:对外端口真的释放,外部客户端连不上;而 DSH 侧连的是内部端点, 模型选择器、对话、故障切换一切照常。

多账号是怎么工作的

  • 自动发现:每 30 秒重扫桌面 App 的凭据文件,App 里换账号 DSH 侧自动跟随。
  • 手动导入:面板里粘贴 token,账号写入 $DSH_HOME/.hyperworkbuddy-accounts.json。
  • 选取策略:优先选「使用次数最少」的账号,同档次按游标轮转,避免把负载压在一个账号上。
  • 会话亲和:同一个会话(DSH 会自动带上会话标识)一旦成功用过某个账号,后续请求继续走它。 这不是为了均衡,而是为了命中上游的提示缓存——上游缓存按账号隔离,同一段前缀换账号就要重算。 该账号不可用(停用 / 冷却 / 额度耗尽)时自动退回轮询策略,不会把请求卡住。
  • 失败切换:某个账号遇到额度不足(402)/ 限流(429)/ 会话失效(401)/ 上游 5xx 时,自动换下一个账号重试,并对该账号做指数退避冷却(首次 60 秒,翻倍至 1 小时)。全部账号都失败时返回最后一个真实错误。
  • token 续期:access token 临近过期(5 分钟)时自动用 refresh token 续期。
  • 按版本隔离:国内版端点只用国内版账号,国际版端点只用国际版账号。

外部客户端接入

把面板里对应分区复制的地址与 API Key 填进任意 OpenAI 兼容客户端:


## 配置

在 profile 的 `cordis.patch.yml` 里覆盖:

```yaml
- id: llm-hyperworkbuddy
  name: dsh-hyperworkbuddy
  config:
    port: 8791              # 国内版端点端口,0 表示随机
    portAI: 8792            # 国际版端点端口,0 表示随机
    endpointEnabled: true   # 端点总开关的初始值(之后可在面板里随时改)
    apiKeys: []             # 外部客户端使用的 Key;留空用自动生成的密钥
    hiddenModels: []        # 初始隐藏的模型 id(之后可在面板里逐个切换)
    followDesktop: true     # 是否自动跟随桌面 App 登录

端点总开关与逐模型开关在面板里改过之后,以面板为准并持久化在 $DSH_HOME/.hyperworkbuddy-state.json;上面的配置只在首次运行时作为初始值。