DSH-Official-WorkBuddy-Credit-Proxy
DSH 官方版 · WorkBuddy 积分反代 —— 把本机 WorkBuddy 账号合并为自动故障转移的模型池,接入 DeepSeek Harness 官方版(含 DSH 内核 0.1.7 兼容修复、启动自动同步账号、卡片内 OAuth 扫码添加)
- Stars
- 7
- Language
- JavaScript
- Created
- Sep 25, 2026
- Updated
- Oct 5, 2026
Introduction
RotaKit · DSH 官方版 WorkBuddy 积分池
把本机登录过的 WorkBuddy / CodeBuddy 账号合并成一个自动故障转移的 DeepSeek Harness 模型池,附带一整套积分自动化。
你在桌面端登过几个号,池里就有几个号 —— 不用手动录入,不用一个个切换。哪个号限流了、积分用完了、令牌失效了,请求自动落到下一个能用的号上。
来源与署名。 RotaKit 是独立维护的改编版,基于
XDTrees/dsh-workbuddy-xdpool(MIT,作者 XDTrees)。账号凭据解密移植自dingminhua/dsh-connect-workbuddy,shim 的加固与错误映射参照corrinehu/dsh-workbuddy-connect,两者均为 MIT。原版文档见UPSTREAM-README.md。
功能总览
一、多账号池
| 能力 | 说明 |
|---|---|
| 自动发现账号 | 读本机桌面端登录快照(国内 / 国际两套),一个文件一个号,无需手动导入 |
| 按权重选号 | 空闲越久的账号权重越高;取权重最高的前 5 个再洗牌,避免长尾账号被反复抽中 |
| 会话粘性 | 同一对话固定用同一个账号,缓存不失效;账号不可用时自动换绑并固定新号 |
| 在途租约 | 同一账号并发超过 2 个请求时让路,避免把限流风险堆在一个号上 |
| 冷却分级 | 429(限流)与 5xx(网关故障)分开计数 —— 网关抖动不再污染限流历史 |
| 按模型冷却 | 某个模型被限流只影响该模型,同账号其他模型照常可用 |
| 凭据熔断 | 连续 3 次被拒的账号移出池 30 分钟,并标「需重新登录」,不再无声消失 |
| 额度门槛 | 余额低于可服务门槛(默认 50)的账号自动跳过 —— 余额恢复后自动回到池中,无需任何操作 |
| 积分保留 | 可给单账号设保留线,低于该线不再派活 |
| 手动停用 | 可停用指定账号,与自动跳过分开管理 |
| 选号预算 | 单次请求最多尝试 8 个不同账号;同一请求内不会重复选到同一账号 |
二、模型目录
- 从上游实时拉取,带积分倍率、免费 / 夜间折扣标签、图片能力、思考档位、上下文窗口
- 标记「无可用账号」的模型:某模型没人能服务时一眼可见
- 标记「成本未知」:上游未公布倍率时不再默默留空
- 目录刷新带重试:网络抖动不再把正常列表打回兜底
- 实测输出上限:可发现网关对
max_tokens的静默钳制
三、积分自动化
每项任务可单独配置执行时刻,默认:
| 任务 | 默认时刻 | 内容 |
|---|---|---|
| 每日签到 | 09:00 | 领取当日签到积分 |
| 活跃上报 | 10:00 | 上报活跃状态 |
| 任务奖励 | 11:00 | 报名并领取任务奖励 |
| 连登奖励 | 12:00 | 连登档位兑换与抽奖 |
| 猫猫旅行 | 09:00 / 21:00 | 出发与领取 |
细节处理:
- 漏跑补跑:某个时刻在应用关闭期间过去了,启动后立即补跑,不用等到明天
- 签到结果分开呈现:
今日已签 21/21 —— 本次新领 16 个。「已签到」与「本次领到积分」是两件事,混在一起会让人误以为有账号失败 - 每账号签到时间:区分「本次领到」与「发现今天已领过」两个时刻 —— 上游不提供签到时间,所以只报插件能作证的时刻
- 收益账本落盘:跨天自动清零,重启不丢
四、请求可观测
| 能力 | 说明 |
|---|---|
| 请求记录 | 时间、模型、账号、结果、总耗时、排队、首字、token 数、轮换次数 |
| 排队时长统计 | 按模型给出 p50 / p95 / 平均排队时长 —— 用数据选模型,而不是凭感觉 |
| 输出速度 | 每次请求的 tok/s 与 p50 / 最小 / 最大,按模型聚合 |
| 消耗账本 | 今日 / 近 7 天 / 本月消耗(由插件累积观测;上游无时间窗接口) |
| 请求形状诊断 | 上游 400 时记录请求形状(参数名、消息条数、工具数、字符数) |
五、界面
- 双区域标签:国内版 / 国际版各自独立 —— 账号、积分、模型目录、未保存草稿全部隔离,两边同时生效
- 可折叠列表:池中账号 / 模型 / 请求记录三块默认收起,卡片不占地方
- 响应式布局:窄窗口(≤640px)自动堆叠
- 主题三态:跟随系统 / 浅色 / 深色,写在宿主声明主题变量的那一层,切换立即生效
- 状态标记:冷却中、需重新登录、额度不足、已保留 —— 每种都有自己的原因与对策
- 一键清除:只要有任何可清除状态(冷却 / 熔断 / 按模型缓存)按钮就出现,点了真的清干净
六、请求链路
- 固定端口:国内 8120 / 国际 8121 —— 重载不会换端口,宿主不再「Connection error」
- 只绑回环、强制 loopback
Host/Origin、常量时间比较令牌、请求体上限 64MB - 上下文超限自动压缩重试,压缩目标取「按窗口」与「按原文一半」的较小值
- 错误归因:池为空时如实报原因(限流 429 / 额度耗尽 402 / 全部停用 403 / 需重登 401),不再一律 401
用数据选模型(实测结论)
来自真实请求记录,不是推测:
| 模型 | 样本 | 排队 p50 | 排队 p95 | 输出速度 p50 | 倍率 |
|---|---|---|---|---|---|
deepseek-v4.1-flash | 57 | 4.2s | 6.0s | 263 tok/s | 0.11 |
glm-5.3-flash | 2 | 6.7s | 23.2s | 40 tok/s | 0.06 |
小样本提醒:glm-5.3-flash 只有 2 个样本,排队数字分歧极大(1.6–23s),速度数字则一致。倍率便宜但速度慢约 6 倍。
卡片里的「按模型排队时长」会持续累积样本,样本多了结论才可靠。
目录结构
.
├── lib/
│ ├── index.js 宿主端:账号池、shim、模型目录、调度器(构建产物)
│ ├── client.js 浏览器端卡片(构建产物)
│ ├── bin.js CLI(构建产物)
│ └── index.d.ts 类型(构建产物)
├── patches/ 针对上游 1.6.1 原版的改动脚本(幂等,可重放)
├── tools/ 账号导入、重启验证等辅助脚本
├── cordis.patch.yml 插件注册补丁
├── package.json 清单(dsh.bundle / dsh.client 都在这里)
├── screenshots.json 卡片截图清单
├── assets/ 截图
├── README.md 本文件
├── README.en.md 英文版
├── UPSTREAM-README.md 上游原版文档
└── CHANGELOG.md 上游变更记录
四个 lib/ 产物随仓库提交,安装时不需要任何构建步骤。
patches/ 与 tools/ 是开发期脚本,安装和运行都用不到:patches/ 记录当初是怎么从上游 1.6.1 一步步改到现在的(幂等,每个脚本先把原文件备份成 *.orig-<标记>),tools/ 是账号导入与重启验证的小工具。日常使用只看 lib/。
安装
# 1. 装进 DSH profile(仓库根目录就是插件本体)
# 默认 profile 是 desktop,也可换成你自己的
git clone https://github.com/2861292267/DSH-Official-WorkBuddy-Credit-Proxy.git \
~/.dsh/profiles/desktop/node_modules/dsh-rotakit
# 2.(可选)二维码兜底依赖,纯 JS、无原生编译
# 登录链接已能自动打开;只有上游不返回 authUrl 时才回退二维码,此时才需要它
cd ~/.dsh/profiles/desktop/node_modules/dsh-rotakit && npm i qrcode
# 3. 确认 profile 的 bundles 里有它
# ~/.dsh/profiles/<你的profile>/package.json → dsh.profile.bundles 应含 "dsh-rotakit"
然后重启 DeepSeek Harness。 模型选择器里会出现 WorkBuddy XD Pool 分组。
宿主插件不会热重载。 改了
lib/下的文件必须完全退出应用再启动,否则运行中的实例仍在用内存里的旧代码。
验证方式
每个结论都有对应的可复现验证,核心几类:
| 验证 | 检查什么 |
|---|---|
| 选号逻辑 | 额度门槛、冷却分级、按模型冷却、熔断、租约、粘性、同请求不重复选号 |
| 错误归因 | 每种失败类型映射到正确的状态码与原因 |
| 签到语义 | 「已签到」与「本次领到」分开;已签到标记不虚报积分 |
| 计数口径 | available 与实际可选账号一致,不虚高 |
| 界面 | 中英文案 1:1、CSS 类完整、运行时探针、渲染输出 |
测试共 31 套,全部通过。
安全须知
- 插件只读取本机桌面端已经存在的登录态,不发起任何登录流程。卡片内扫码是可选操作,只在明确点击后打开,走的是桌面客户端自己的接口,没有绕过任何鉴权,消耗的是你自己的账号与积分。
- 令牌只在本机内存与回环 shim 之间传递,卡片上显示的账号一律脱敏。
- shim 只绑
127.0.0.1,强制回环来源校验。
免责声明
本项目仅供个人学习和研究使用,仅驱动使用者自己的账号在本机调用。请遵守 WorkBuddy 的服务条款;因使用本项目产生的任何后果由使用者自行承担。
许可
MIT。上游版权归 XDTrees 所有,另有部分代码来自 dingminhua、corrinehu(均为 MIT),详见 LICENSE 与文件内的署名注释。