Ianzhyh/workbuddy-to-dsh

workbuddy-to-dsh

把本机 WorkBuddy 桌面端已登录的模型原生接进 DeepSeek Harness:本地桥 + 数据控制台 + dsh 原生插件(自带 bridge/控制台,单文件夹即可安装)

待分类codebuddycordisdeepseek-harness

WorkBuddy 本地 API 桥

🌏 English summary: README.en.md

把本机 WorkBuddy 的模型能力(DeepSeek / GLM / Kimi / MiniMax 等), 经一个本地桥变成本机的 OpenAI 兼容、Anthropic 兼容与 OpenAI Responses 三套接口 —— Claude Code、Codex、opencode、Cursor、Trae、 Cherry Studio、NextChat、LobeChat、Open WebUI 等任何支持自定义 Base URL 的客户端都能直连。

凭据有两种来源:已登录的 WorkBuddy 桌面端,或者 dsh 插件里的「插件登录」—— 没装过桌面端也能用,只需在浏览器完成一次授权(凭据由插件加密保管:Windows 用 DPAPI,其他平台用文件密钥)。

另附一个网页控制台(状态 / 启停 / 诊断 / 模型注册 / 用量 / 体检 / 对话测试), 中 / 英双语(右上角切换,选择记在本机), 以及一个可选的 DeepSeek Harness(dsh)原生插件(见下方说明)。

一句话:WorkBuddy 的模型额度 → 本地 API → 你惯用的任意 AI 客户端。

关键词(便于检索,按关心的问题分组):

你在找什么 · 相关词 把 WorkBuddy 用起来 · WorkBuddy · WorkBuddy 本地 API · WorkBuddy 模型桥 · WorkBuddy 中转 · WorkBuddy 插件 接某个客户端 · WorkBuddy 接入 Claude Code · WorkBuddy 接入 Codex · WorkBuddy OpenAI 兼容 API · WorkBuddy Anthropic Messages 兼容 · WorkBuddy Responses 兼容 · Claude Code 自定义 API · opencode / Cursor / Trae / Cherry Studio / NextChat / LobeChat / ChatBox / Open WebUI 接入 接 DeepSeek Harness · DeepSeek Harness 插件 · 在 DSH 里用 WorkBuddy · WorkBuddy 接入 dsh · dsh workbuddy · dsh 模型路由 · provider workbuddy 技术特性 · openai-compatible · anthropic-compatible · llm proxy · local model bridge · 零依赖 Node.js · 仅监听 127.0.0.1 · 本机凭据自用

DeepSeek Harness 用户:一个插件装下全部能力

在 DeepSeek Harness(dsh) 里用上 WorkBuddy 的模型,本仓库提供的是 原生 dsh 插件 + 本地 API 桥 + 可视化控制台的完整组合 —— 装完模型直接出现在 dsh 的模型选择器里,日常需要的接入、管理、监控、运维能力也全在同一个插件内。

一键即用:装完插件,三步开始对话

步骤 · 操作 · 需要配置 1 · 安装插件(dsh「添加插件」填 GitHub 地址 / dsh plugin add ... / tgz) · 无 2 · 设置 → WorkBuddy → 「账号」→「开始登录」(授权页自动打开) · 无 3 · 浏览器授权完成,回模型选择器选一个模型 · 无

  • 没装桌面端也能用:插件内设备码登录,不下载、不安装 WorkBuddy 客户端。
  • 装了桌面端更省事:已登录的账号自动复用,第 2 步都可以跳过。
  • 不填任何东西:不需要 API Key、Base URL、令牌、端口或环境变量;桥由插件自动拉起,控制台在第一次打开数据页时按需拉起。
  • 国内 / 国际版自动预选:登录区域跟随现有账号或桌面端域名,不用每次手动切。
  • 模型选择器即时刷新:登录、切号、重启桥后自动广播目录更新,不需要重启 dsh。
  • 聊天页闭环:未登录时空会话里直接「连接 WorkBuddy」;已有对话遇到凭据失效时,顶部胶囊位会变成登录入口。对话页顶部常驻「积分 N」(悬停看套餐余量 / 今日已用 / 最近一次,点一下刷新);每轮回复末尾显示本轮积分(优先按本轮 tokens 与本地账本核对)。
  • 模型名自带倍率:选择器/聊天顶部直接显示 DeepSeek-V4.1-Flash · ×0.11,免费模型标「免费」,不用再翻模型详情。
  • 凭据不裸奔:DPAPI / 文件密钥 + AES-GCM 加密保存;同一账号的桌面/插件双凭据自动合并,401/403 自动接管。

聊天页里,常用的都在手边

位置 · 显示 · 说明 模型名 · DeepSeek-V4.1-Flash · ×0.11 / · 免费 · 倍率来自模型目录,选模型时就能看到;不用点进详情 对话页顶部 · 积分 715 · 悬停看套餐余量 / 今日已用 / 最近一次调用;余量 ≤30% 变黄、≤10% 变红;点一下强制刷新。读取失败时保留上次余额并标红;已有对话但未登录/凭据异常时,这里直接变成登录入口 每轮回复末尾 · 本轮 0.03 积分 · 优先用宿主给出的本轮 tokens 与本地请求账本核对,拿到实际扣费;旧宿主或核对不上时退回「最近一次已完成请求」估算并标 ≈(悬停有说明) 空会话欢迎区 · 连接 WorkBuddy · 未登录时直接发起浏览器授权,不用先进设置页;成功后模型选择器自动刷新

×0.11 是积分消耗倍率,不是人民币单价;免费模型直接标「免费」。
积分胶囊、登录入口、每轮成本都在 dsh 对话页;完整用量曲线、请求明细和 CSV 仍在设置页的「用量 / 请求」里。

能力清单:

能力 · 说明 零配置接入 · 不需要 API Key、不需要手填端点 —— 桌面端已登录就直接复用;没装桌面端可在插件里完成一次浏览器授权,凭据由插件 DPAPI / 文件密钥 + AES-GCM 加密保管 原生模型路由 · 运行时注册 provider: workbuddy,不写任何配置文件;上游加减模型自动跟随 模型管理 · 勾选启用 / 禁用、同步到 dsh、体检(可用性 · 消耗倍率 · 实测成本)、详情与 CSV 导出 账号切换 · 登录目录下多个账号一键切换(自动重启桥、清缓存);同一账号的多份登录快照自动合并成一行(不会再看到两个一样的账号),可给账号起自定义名字便于区分 积分与用量 · 积分余额;1 / 7 / 30 天趋势(次数 / tokens / 积分)、积分排行、CSV 导出;视频/图片单列提交次数与消耗积分(提交前后余额差估算) 缓存与成本 · 同一会话自动补稳定的 conversation_id(header + body),让上游前缀缓存真正命中;用量页与请求明细显示上游回报的缓存命中率/命中 tokens(没回报显示「—」,不写 0);「账实差额」对比余额变化与本地账本,差额注明可能来自客户端内使用/估算 失败归因 · 失败统一分到 channel / account / auth / rate_limit / quota / tool_history / stream / upstream / request;请求页显示归因,概览对账号/通道/额度问题提示“不要连续重试” 请求明细 · 逐条记录(模型 / 耗时 / token / 积分 / 结果),失败标红、上游错误码一键复制 环境诊断 · 逐项检查按优先级排序(红色项不解决,模型就不会出现);含客户端安装布局体检(两个 WorkBuddy 客户端被装进同一目录会被点名并给出修法);另有 CLI 自检 doctor.mjs 对话测试 · 多轮流式对话,按轮次显示 token / 扣分 / 耗时,附桥日志 每日签到 · 自动签到(不开控制台也会签)+ 手动领取 同时服务其它客户端 · 桥讲 OpenAI / Anthropic / Responses 三套协议 —— Claude Code、Codex、opencode、Cherry Studio 等直接接入 视频生成(本地 API) · 文生视频 / 首尾帧 / 参考图三种模式,异步提交 + 查询(可长轮询,上游同步完成时 200 直接返回)+ 下载跳转;走 WorkBuddy 账号积分,详见 docs/VIDEO-GENERATION.md 图片生成(本地 API) · 文生图 / 图生图两种模式,异步提交 + 查询(可长轮询,上游同步完成时 200 直接返回产物/失败原因)+ 下载跳转;另提供标准 `POST /v1/images/generations`(URL/b64_json、同步等待/202 降级),Cherry Studio / Open WebUI 等可直接用;与视频共用临时 key 与错误契约,详见 docs/IMAGE-GENERATION.md 中英双语 · 控制台与 dsh 设置页(9 个标签页)全部双语,右上角 EN / 中 切换

在 dsh 里直接装:设置 → 插件 → 添加插件,填

github:Ianzhyh/workbuddy-to-dsh

安装源保持默认即可(GitHub 地址由 pnpm 直接拉取,国内镜像只影响 npm 依赖)。 也可以走命令行(安装路线、验收清单与故障排查见 docs/INSTALL.md):

dsh plugin --profile desktop add github:Ianzhyh/workbuddy-to-dsh
npm 包名 workbuddy-to-dsh 已按可发布形态准备好;发布后「添加插件」里直接填
workbuddy-to-dsh 即可(npm 名 dsh-plugin-workbuddy 已被他人占用,不要填它)。

装完重启一次 dsh,模型选择器里直接多出 WorkBuddy。

插件登录需要 v1.8.0 或更高版本。从 dsh 市场安装时请确认上架版本;
旧版(≤1.7.0)仍要求 WorkBuddy 桌面端登录态。
### ⚠️ 请先读这一段(免责与边界)
这是一个自托管的开源工具:欢迎自用、欢迎分享源码,但它是非官方路径,风险自担。
- 非官方路径。 它依赖 WorkBuddy 未公开的上游协议与登录凭据格式(**插件登录
不需要桌面端**,但同样走非官方设备码接口)。上游随时可能改动协议或收紧风控
(已经发生过——见故障排查里的真实案例),**可用性
无任何保证,且不承诺任何兼容性**。把它当作「随时可能需要更新甚至失效的
互操作性实现」,而不是稳定服务。
- 只驱动你自己的账号。 它只读取你自己机器上已登录的桌面账号,或你在插件里
明确授权的那一个插件账号,消耗该账号自身的配额。请勿用它做多账号池化、
代他人调用、或任何形式的转售 / 托管服务 —— 那既违背本项目的设计初衷,也最容易
触发上游风控(殃及所有用户)。
- 请确认你符合 WorkBuddy 的服务条款。 使用前请自行阅读并确认;若条款不允许,
请不要使用本项目。
- 无担保。 按 MIT 许可"按现状"提供。作者不对账号风控、额度异常或任何损失负责。
若你需要长期稳定、可商用的模型接入,请申请官方 API。
- 自担风险的分享是欢迎的:转发仓库链接、写教程、提 PR 都可以;但请不要
打包转售、绑定付费,或以本项目名义收集任何人的凭据。
兼容性分档见 docs/COMPATIBILITY.md;上游失效/项目停更时
怎么退回官方客户端、数据在哪,见 docs/SUNSET.md。安全报告方式见
.github/SECURITY.md。

这个项目与同类工具的关系

  • 方向与 claude-code-router 相反:

CCR 把别家的 API 注入 Claude Code;本项目把 Claude Code 等发给 WorkBuddy 的 模型额度导出成标准 API——两者互补而非竞争。

  • 与 WorkBuddy2API 集群(社区 20+ 同目标项目)的差异:本项目刻意保持

单账号 · 不落明文凭据 · 零运行时依赖 · 自包含(桌面凭据现取现解; 插件登录凭据以 DPAPI / 文件密钥 + AES-GCM 加密保存);默认不提供多账号池化与 任务自动化——如果你的需求是后者,社区里已有更对口的工具。限流自动切号是显式 opt-in 的本机自有账号切换(默认关闭,见插件配置),不导出凭据、不做公网中转, 也不代表支持池化或转售。

  • 上游协议是未公开接口:所有同类项目都在同一片雷区里,失效与修复是常态。

本项目的对策是把排查写清楚(症状、证据、处置), 而不是承诺稳定。

- 详细的风险与边界见 注意事项 与 docs/SECURITY.md。

本仓库还提供一个 DeepSeek Harness 原生插件(dsh-plugin/): 装进 dsh 后,模型选择器里直接多出 provider WorkBuddy,设置里多一页 9 个标签页的数据面板; 插件自带桥与控制台,拷一个文件夹就能用。它是可选的 —— 不用 dsh 的话, 前面说的本地 API 照常可用,只是没有那个原生集成。

只在本机回环地址上工作,不对外暴露,不内置任何密钥。

# ── 第 1 步:跑起来(所有用法都需要,与 dsh 无关)──────────────────────
git clone https://github.com/Ianzhyh/workbuddy-to-dsh.git
cd workbuddy-to-dsh
# 然后双击 启动.cmd —— 桥和控制台都会自动起来,不需要 npm install

# 或者只要桥、不开控制台:
bridge\start-bridge.cmd

跑起来后,去控制台「客户端接入」页签拿 Base URL 与令牌填进你的客户端 (见 接入你的客户端)。到这里就已经能用了。

# ── 第 2 步(可选):再装进 DeepSeek Harness ──────────────────────────
# 只有用 dsh 的人需要。三种方式装的是同一个插件,任选一种。

# 方式一:一条命令直装(v1.1.0 起,仓库根已声明 dsh.bundle)
dsh plugin --profile desktop add github:Ianzhyh/workbuddy-to-dsh

# 方式二:release 附件(tgz 安装包,无构建、无需 allowBuilds 授权)
#   从 GitHub Releases 下载 dsh-plugin-workbuddy-<版本>.tgz 后:
dsh plugin --profile desktop add ./dsh-plugin-workbuddy-1.21.0.tgz

# 方式三:从源码(插件在 dsh-plugin/ 子目录,接第 1 步的 git clone)
dsh plugin --profile desktop add workbuddy-to-dsh/dsh-plugin
# 装完重启一次 dsh;之后:设置 → WorkBuddy
三种方式装的是同一个插件。方式一/二由 npm 装仓库根包(Loader 行 name =
workbuddy-to-dsh,对应根目录的 cordis.patch.yml);方式三按子目录安装
(name = dsh-plugin-workbuddy,对应 dsh-plugin/cordis.patch.yml)。
两份 patch 除 name 外完全一致,改动时需同步。
插件是自带一切的独立包(npm run vendor 生成的 vendor/ 里含桥与控制台),
可以直接把 dsh-plugin/ 文件夹拷给别人,对方不需要本仓库。
安装路线、验收清单与九条故障排查见 docs/INSTALL.md。

它解决什么问题

WorkBuddy 的上游后端本身就讲 OpenAI 协议,官方只是没有开放公开入口,鉴权依赖桌面端 的登录会话。所以就协议层面而言,只需要一个薄薄的转发层。

真正的工程难点在于从 WorkBuddy 5.6.0 起,官方开启了 AtRest 加密:登录文件里的 accessToken / refreshToken 从明文 JWT 变成了 AES-256-GCM 信封,而解密密钥不落盘、 只存在于客户端进程内。这让所有在进程外读取该文件的既有工具全部失效。

本项目的做法是请客户端自己完成解密:以 ELECTRON_RUN_AS_NODE=1 运行 WorkBuddy.exe,调用它自己的原生绑定 loggerGet(),由客户端交出它本来就在用的 那把密钥。没有任何密钥被写进代码或磁盘,登录文件也始终只读。

没装桌面端时走另一条路:插件的「插件登录」用设备码在浏览器完成授权,桥直接使用 插件自己保管的凭据(Windows 用 DPAPI、其他平台用文件密钥保护密钥,AES-GCM 信封;不依赖桌面端进程)。

这里刻意不做「破解」:不逆向密钥派生、不硬编码密钥、不改写登录文件。
密钥始终由客户端进程提供,本项目只是把它的结果用起来 —— 这也是它能长期跟上
客户端版本变化的原因。实现细节见 lib/atrest.mjs。

前置条件

条件 · 说明 Node.js · 18 或更高(开发验证于 22.22.2)。无 npm 依赖,无需 npm install WorkBuddy 桌面端 · 已安装且已登录,进程可用(模型由它铸造的令牌驱动);或者不装桌面端,用 dsh 插件里的「插件登录」完成一次浏览器授权(凭据由插件加密保管,见 dsh-plugin/README) DeepSeek Harness · 可选。只有要接入 dsh 时才需要;桥本身对任意 OpenAI 客户端都可用 操作系统 · Windows(已验证)。macOS / Linux 的路径与调用逻辑已实现、也在 CI 矩阵里跑过单测,但凭据解密未实测

复用桌面端登录态目前只支持 Windows:解密的密钥不在本包里,每次由 WorkBuddy 客户端
自己的 Electron 原生绑定现取,这条路只在 Windows 上验过。插件包虽然声明了 os: ["win32"],