dsh-workbuddy-hardened:WorkBuddy 连接插件的加固分叉

前言

在 DeepSeek Harness 里用 dsh-connect-workbuddy 把本机 WorkBuddy 账号接到智能体时,常见现象是界面提示「API 密钥无效」或「当前请求的额度已用尽」,而 node lib/bin.js status --json 仍显示 signed-in、余额正常。上游 5.13.1 已处理部分网关错误(例如 global 区的 11128 channel_reject),但在过期身份串、封号换号连锁、以及业务码 6004 被误译成欠费文案等方面,仍可能放大风险或误导排查。

wzs39/dsh-workbuddy-hardened 是 dsh-connect-workbuddy@5.13.1 的分叉加固版:不重写业务逻辑,vendor/ 保留上游原样,patches/ 里四个补丁经 build.mjs 打到 lib/,可用 node build.mjs --diff 逐行审计;verify.mjs 覆盖 47 项行为验证。维护者为 wzs39,分类为 admin-security,仓库见 GitHub,目录页见 SkillHub。

这是什么

一句话定位:在保留上游包名与 Cordis 配置继承的前提下,对 WorkBuddy 连接插件做最小差异加固,降低「过期 UA、封号拖垮账号池、单模型 6004 被当成额度用尽」三类可测问题的影响。

上游基线:vendor/ 来自 dingminhua 的 dsh-connect-workbuddy@5.13.1(MIT)。本仓库为非官方分叉,与上游作者无关。

四个补丁在做什么

01 · version-sync

配置与计费通道里的 PRODUCT_UA 不再写死为旧版 WorkBuddy/5.8.3 ... CLI/2.161.0,改为运行时从本机 WorkBuddy 安装目录读取:

  • 应用版本:%LOCALAPPDATA%\Programs\WorkBuddy\resources\install-manifest.json 的 appVersion
  • CLI 版本:...\resources\app.asar.unpacked\cli\package.json(包名 @genie/agent-cli)的 version

解析失败则回退原常量。APP_VERSION 由 PRODUCT_UA 派生,X-IDE-Version 一并校正。说明:此 UA 用于产品配置通道(如 /v3/config、计费),不是 chat 的 CLIENT_UA;chat 仍按上游设计以 CLI agent 身份会话。

02 · identity-sanitizer

上游用 breakIdentityClauses() 处理以 you are ... 开头的身份句,避免触发 11128。DSH 运行上下文里还有「DeepSeek Harness implementation checkout / Web GUI URL」等句式。补丁把三类 span 纳入同一正则,在词边界插入不可见断点(U+200B),分词顺序不变、网关侧连续子串被打断。范围仅这三种句式;README 标明此为预防性加固,并非像 you are ... 那样用真实 DSH prompt 量过的修复。

03 · account-quarantine

在 isFailoverWorthy() 的排除列表中加入 account_restricted。账号处于封号态时请求直接失败,不再自动换下一个号重放同一请求,避免把剩余账号逐个「连锁烧掉」。policy_reject、hard_credit、soft_rate 等仍可触发换号。

04 · model-detour

业务码 6004 表示「该模型频率窗口用尽,可换模型或等重置」,上游却经 soft_rate → quota_exceeded 让宿主固定显示额度用尽。补丁在同一账号内按目录换模型重试(最多 3 级),不碰账号池;带图请求只选 multimodal 候选;成功时在回答头部说明实际模型,并写明与 6004、积分无关。若阶梯全失败,恢复原始 6004 行为。边界:这是绕过单模型窗口,不是绕过全局限流;多模型同时进窗口时仍需等待或换账号。

安装与启用

安装方式来自仓库 README:用本地 file: 依赖替换 profile 里的注册表版本,包名刻意仍为 dsh-connect-workbuddy,以便继承已有 cordis.patch.yml 中的账号与 region 配置。

1、把本仓库放到你的插件目录。

2、编辑 profile 的 package.json:

"dsh-connect-workbuddy": "file:../../plugins/dsh-workbuddy-hardened"

3、在 profile 目录安装依赖并重启 DSH:

cd <your-dsh-home>\profiles\desktop
pnpm install --no-frozen-lockfile

重建与验证(在仓库根目录):

node build.mjs
node build.mjs --diff
node verify.mjs

修改 lib/ 或补丁后须再次 pnpm install:profile 使用 hoisted 的 file: 依赖时,内容会被拷贝进 node_modules,不重装会继续跑旧副本。

可选配置(非补丁):在 profile 中打开 usageIdentity: true,补全 X-IDE-* 等用量侧头部,与补丁 01 解析出的版本一致;默认关闭,可随时关回。

回滚:把 package.json 改回 "dsh-connect-workbuddy": "5.13.1" 后 pnpm install --no-frozen-lockfile;或移走 patches/ 中单个文件再 node build.mjs。

典型用法与自检

状态与上游 CLI 一致:

node lib/bin.js status --json

复现补丁 04 是否在你账号上生效(需已有 vault,仅发简短测试请求;若无账号处于 6004 窗口会提示 nothing to detour from 并以 0 退出):

node tools/detour-live.mjs
node tools/detour-live.mjs --vault <dir> --account <accountId>

适用场景与注意

适合:已在 DSH 中使用 WorkBuddy 连接插件,且遇到过 global 身份/封号换号/6004 文案与真实限流不符等问题,并愿意审计四个补丁 diff 的维护者或高级用户。

务必注意:

  • 插件以当前 DSH 进程权限运行,安装前应阅读源码、LICENSE 与 THIRD_PARTY_NOTICES.md。
  • README 明确:未验证加固能否降低上游封号概率;能做的是去掉已知可测放大器,不承诺不被封。
  • Node 引擎要求:^22.19.0 || >=24.0.0(见 package.json)。
  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;本插件星标以目录页为准(资料中为 0)。

结尾

dsh-workbuddy-hardened 把对 dsh-connect-workbuddy@5.13.1 的差异收敛到四个可审计补丁与 47 项自动化验证,在不大改上游架构的前提下,同步本机 WorkBuddy 版本身份、克制 DSH 上下文指纹、隔离封号换号、并在 6004 场景下同账号换模型重试。需要细节与 diff 时,以 GitHub 仓库 README 为准;浏览分类与简介可打开 SkillHub 插件页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye