明天就下线:把 WorkBuddy 模型接进 DeepSeek Harness 的那条路,我赶在最后一天学完了

DeepSeek Harness 接入 WorkBuddy 的那条路,两天后就没了

DeepSeek Harness 刚出不久,我就刷到可以把 WorkBuddy 的模型接进 DSH 的教程。但一直拖着,没去实践。

现在终于要动手了,访问了项目仓库,才知道要下线了。但我还有一天的体验时间,学习一下吧。

写下这段话的时候,我盯着仓库首页的「停止维护公告」,有一种很具体的感觉——这条刚摸到手的路,还有 48 小时就断了。

这个项目叫 dsh-workbuddy-connect。它做的事一句话就能说清:把 WorkBuddy 桌面端里能用的模型,原封不动地搬进 DeepSeek Harness 的模型选择器里。

DSH 模型选择器中的 WorkBuddy 分组

上图是我实际跑起来的样子。模型下拉框里,DeepSeek 账号分组下面多了一整个 WorkBuddy 分组:Hy4 preview、Hy3、Hy3-X、Step-5-Preview、Space-Bunny、Deepseek-V4.1-Flash……每个模型名后面还跟着积分倍率(x0.29、x0.00)和促销标记(限时免费、夜间免费、独家限免)。输入框底部显示着当前账号的积分余额。

零配置。 装上、重启、就能用。


一、三条必须知道的事实

先把最关键的信息摆出来,这决定了你要不要赶在明天之前动手:

时间 事件
2026-10-20 作者发布停止维护公告:不再处理新功能请求与 PR,不再提供更新、兼容性修复及问题支持
2026-10-20 WorkBuddy 开始限制非官方客户端发出的请求 ← 这是停维的直接原因
2026-10-22 仓库计划下线(就是明天)

先说第二条,因为它是整件事的因果起点。

README 里的原话是:

2026 年 10 月 20 日起,WorkBuddy 开始限制非官方客户端发出的请求。单从技术角度看,这类校验不难跨越。不过,送的模型额度既然附带了使用场地要求,WorkBuddy 已明确希望区分官方客户端与第三方接入,本项目尊重这一边界,不再继续适配。使用官方 WorkBuddy 客户端当然最安全。

这段话值得逐句读。

「单从技术角度看,这类校验不难跨越」——作者把话说得很明白:这确实是个技术门槛,不是算法难题。

「不过,送的模型额度既然附带了使用场地要求」——但模型额度是有附带使用场景约束的。这不是随手发出来的免费额度,是有商业考量的资源。

「本项目尊重这一边界」——所以作者选择了停,而不是选择绕过。

这一点我觉得是整件事里最值得尊重的地方。技术上能绕,作者不绕;平台划了线,作者就停手。这在开源生态里其实相当少见——很多项目遇到平台封堵的第一反应是「升级对抗」,而不是「我重新评估一下这样做对不对」。

公告的最后一句也写得很实在:

同时,由于个人时间和精力有限,本项目即日起停止维护……项目仓库计划于 2026 年 10 月 22 日下线。

仓库首页的停止维护公告

所以从时间线上看,这不是一个「宣布弃坑、慢慢腐烂」的软着陆,是公告、限制、收紧、下线,四天之内一气呵成。


二、它是怎么做到的?

值得花点时间理解原理,因为理解了才能判断自己的方案能不能扛住。

插件的技术路线,拆开看是三层:

第一层:复用桌面端登录态

它不要求你重新填 API Key,而是直接读取本机 WorkBuddy 桌面 App 的登录凭据。账号切换自动跟随,国内版和国际版各用各的,互不干扰。

第二层:本地起一个 OpenAI 兼容的 shim

DSH 需要标准的 OpenAI 协议接口,而 WorkBuddy 的上游协议有几个「不标准」的地方,插件要在中间这层补上:

  • 强制流式响应
  • tool_choice 传字符串形式而非对象
  • 特定的 CLI 请求头

第三层:通过公开扩展点注册 provider

用 DSH 的 dsh-llm-pi-ai 扩展点把 workbuddy 这个 provider 注册进去,然后把模型目录、账号、积分、推理档位一并接进来。

整个实现是自包含的——上游提交记录里写得很清楚:

Self-contained DSH bundle: reuses the WorkBuddy desktop app's sign-in (read-only), serves a loopback OpenAI-compatible shim that applies the upstream wire quirks (forced streaming, string tool_choice, CLI headers), and registers the workbuddy provider through the public dsh-llm-pi-ai extension points.

用一句话概括:它是「读本地登录凭据 + 起本地代理 + 套进 DSH 插件体系」的组合,不涉及任何服务端改动。

这也就解释了为什么平台方一收紧就能立刻失效——整条链路都跑在官方客户端之外,官方只要在校验层加一道「你是不是我发的请求」的判断,就够了。


三、它做到了什么程度?

在停维之前,这个小插件的完成度其实相当高。几个细节能看出作者是认真做的:

国内版与国际版并存

两版各自显示分组、各自跟随登录状态、各自算积分。只装一版就只出现一个分组,退出一版对应分组就消失。设置里两张卡片分别展示各自账号和余额。

积分余额速览

选中 WorkBuddy 模型时,输入框底部直接显示剩余积分。积分不自动轮询——每次读取都是真实计费查询,挂载时读一次,之后可以点积分文字前方的 ↻ 手动刷新。

费率比例和促销徽章

每个模型名后直接显示积分倍率(GLM-5.2 · x0.79、Hy3 · x0.00),促销徽章(限时免费、夜间折扣)也跟在后面。数据以服务端为准,每次启动 DSH 时同步。

推理档位设计得很有分寸

这是我觉得最见功力的一块。作者没有拍脑袋给所有模型补齐统一的 low/high/max 档位,理由写得很清楚:

WorkBuddy 中模型的推理档位信息目前分散在上游接口与客户端自身的私有 UI 逻辑中,且模型目录变化很快。若插件根据经验为所有未声明模型补齐统一档位,就需要持续追赶这些未公开、没有稳定契约的产品逻辑。

实测还发现,有些模型虽然接受 reasoning_effort 参数,却可能忽略未知值并回退到默认行为;一次请求返回成功,并不能证明某个档位真实可用。

所以对没有声明档位的模型,它让用户主动授权后动态检测——发少量请求,逐个确认哪些档位真的被上游接受。作者还特意声明:「结果只表示当前上游接受该档位,不承诺它一定改变推理效果、速度或积分消耗。」

这份克制,在插件类项目里非常罕见。 很多同类插件是「我猜一个档位糊上去,能用就行」。

还有企业账号积分

国内版企业账号走企业计费接口读周期额度,卡片会显示「企业额度」和周期重置时间。国际版企业账号则因为计费接口未验证,仍按个人版接口读。


四、如果你想赶在明天之前试一次

版本必须和 DSH 内核严格匹配,不匹配会导致 DSH 启动失败。npm 上的最新版不一定适合你:

DSH 内核 推荐插件版 备注
0.2.1-rc.2 0.7.9 npm latest;仅适配这一内核
0.2.1-rc.1 0.7.7 内核升到 pi-ai 1.3.0;必须移除历史遗留的 0.87.1 overrides
0.2.0-rc.2 0.7.6 上一代内核线;不要停留在有注册表回归的 0.7.2
0.2.0-rc.1 0.7.0 0.7.1 起不再支持 rc.1,请停留本版
0.1.5 – 0.1.7 0.6.5 旧内核最终版;0.7.0 起仅面向 0.2.0

Web 版安装(以 0.2.1-rc.2 内核为例):

dsh plugin --profile web add dsh-workbuddy-connect@0.7.9
dsh web

TUI 版:

dsh plugin --profile dsh-tui add dsh-workbuddy-connect@0.6.5
dsh --profile dsh-tui

⚠️ TUI 的终端壳 @deepseek-harness-tui/dsh-tui 需要 0.10.0-beta.5 及以上,更早版本装这个插件会启动失败(events is not iterable)。

Desktop 版要格外小心。 部分 Desktop 发行版(尤其官方 Electron 版)的 desktop profile 由 App 自己管理,官方版会直接拒绝独立 CLI 的 --profile desktop。别盲改 App 管理的目录,也别绕过校验。

验证标准:重启对应界面后,模型选择器出现「WorkBuddy / WorkBuddy AI」分组,并且从分组里选一个模型完成一次简短对话、能正常回复,才算成功。

日常运维命令:

# 查登录状态和剩余积分
dsh plugin --profile web exec dsh-workbuddy-connect status

# 诊断
dsh plugin --profile web exec dsh-workbuddy-connect doctor

# 清理凭据副本(国际版加 --provider workbuddy-ai)
dsh plugin --profile web exec dsh-workbuddy-connect logout

注意 logout 只是删插件自留的凭据副本,不动桌面 App 自己的登录,也不保证模型分组一定消失(App 的凭据文件还在就会继续生效)。


五、但我得说两句不太顺耳的

这个项目的 README 里有一节「免责声明」,写得比停维公告还重。我把关键的几条摘出来:

第三方接入存在账号风险。 官方服务条款对未经授权的第三方接入设有限制。使用本项目可能导致账号或功能受限、账号封禁、服务暂停或终止。能够正常调用、正常扣费,不代表获得官方授权或不存在账号风险。

最后那半句加粗的话,值得多读两遍。

「能用」和「被允许」是两件事。插件跑得通、扣费正常,这些都不能证明官方认可这个接入方式。停维公告里那句「使用官方 WorkBuddy 客户端当然最安全」,听起来像是客套,但配合这半句免责声明读,分量就完全不一样了。

如果你的账号绑着公司业务、绑着额度、绑着别的什么东西——那么为了省几块钱去接一个官方已经明确要限制的第三方客户端,性价比是负的。 官方客户端就在桌面上,点开就能用,没有任何学习成本。

而如果只是个人尝鲜、纯个人账号、丢了也不心疼——那用一天看看、玩明白了、明天卸掉,也没什么问题。

这才是我觉得这次「学习一下」最有价值的地方。 不是学怎么装这个插件——那只是一条 npm 命令。是搞清楚:

  1. 一个模型额度,是可以在多个 Agent 框架之间流转的。 理解了 shim + provider 注册这套机制,你就知道这事的上限在哪里。
  2. 平台方的「渠道校验」是真实有效的。 它不需要破解协议,只需要区分请求来源。
  3. 开源项目的生命周期受平台政策支配。 一个 1549 star、187 fork、两天内发了 30 多个版本的活跃项目,说没就没了。

六、然后呢?生态已经自己接上了

这是我这几天最意外的一点。原来的项目要死了,但社区没有跟着死。

GitHub 搜索 workbuddy dsh 能看到一批接力项目,而且大多还在活跃更新:

项目 Star 最近推送 做什么
ardeyouxipianyi/workbuddy2api-hub 2262 10-20 多账号反代网关,支持 Codex / Claude Code / DSH 与标准 OpenAI 客户端
dingminhua/dsh-connect-workbuddy 230 10-20 英文版接入,只读额度概览
XDTrees/dsh-xdpool 201 10-17 多账号自动容错、十三家扫码登录、76 家免费额度聚合、用量看板、本地 OpenAI 网关
Axiaohungry/dsh-llm-workbuddy 71 10-21 在 DSH 里用 WorkBuddy API
masknull/dsh-workbuddy-connect 52 10-20 内置登录、侧栏额度展示、模型自由开关、每日自动签到
dsh-plugin-lab/dsh-workbuddy-bridge 13 10-20 原生嵌入「设置 → 插件 → 插件配置」

生态其实很自然:原项目提供的是一个具体实现,而它解决的是「把 WorkBuddy 额度接进 DSH」这个通用需求。作者不做了,社区按各自的需求分头实现——有的做多账号聚合,有的做反代网关,有的做更细的模型路由。

有个反直觉的细节:在停维公告发布的同一天(10-20),上面好几个项目都还在推送代码。公告说「不再继续适配」,但社区用行动给了另一个答案。

不过我得把这话说完整——接力的这些项目,面对的是同一个平台约束。原项目作者选择「尊重边界、就此停手」,社区这些项目则在继续做同样的事。这不是说谁对谁错,但如果你的账号有商业价值,风险判断还是得自己做。

顺便提一句,原 README 里推荐的 hana-workbuddy-connect 仓库(给 HanaAgent 做接入)现在已经 404 了。


七、最后

仓库明天下午就下线。到那时候,1,549 个 star、187 个 fork、32 个 npm 版本、30 多个社区替代项目,会一起变成一段历史。

但我一点也不觉得白折腾。

这三十来天里,1549 个人看过这个项目,187 个人 fork 了它,有人帮忙排查问题、有人提交 PR、有人在 issue 里留下几百条讨论。一个人的时间精力有限,但这个东西的的确确便利过一批人。

作者在公告最后写道:

非常感谢大家这段时间的使用、反馈和贡献,也谢谢每一位帮忙测试、排查问题和提交 PR 的朋友。特别高兴这个小插件曾给大家带来便利!

「曾」这个字用得特别准。

那么,就这样吧。趁它还在,装一次,看看它长什么样,然后体面地跟它说再见。

本文信息核实于 2026-10-21。仓库地址:github.com/corrinehu/dsh-workbuddy-connect(MIT 协议)。文中所有版本号、Star 数、推送时间均为当日实测。