dsh-workbuddy-provider

中文文档
0.2.4发布于 2026/11/03MITTypeScriptES Module零依赖

将WorkBuddy桌面应用程序模型(WorkBuddy CN和WorkBuddy AI)带入DeepSeek Harness,重用每个应用程序自己的登录:没有单独的密钥,没有第二次登录。

中文使用文档
文档目录12 节
  1. 这是什么
  2. 安装
  3. 运行与使用
  4. 配置
  5. 路径解析优先级
  6. 路径默认值
  7. 配置文件
  8. 插件状态文件
  9. DSH 版本兼容
  10. 已知限制
  11. 许可证
  12. 本地开发

dsh-workbuddy-provider

中文 · English

把 WorkBuddy 桌面 App(国内版与国际版)的模型接进 DeepSeek Harness 的插件。它复用 App 自己的登录态,不需要单独的密钥或二次登录。

这是什么

模型选择器里多出两个分组:WorkBuddy CN(国内版)与 WorkBuddy AI(国际版),登录了哪个就有哪一组,两个都登录则两组并存。每组列出该网关的模型目录、账户剩余积分,以及每个模型的倍率与促销活动。两个 App 的账号、积分与模型互不相通。文本、图片与工具调用都走 App 自己的通道;流式与取消直达上游,中断回复即中断计费。

模型目录取自编程客户端,不是 App 内部智能体看到的那一份:目录请求携带桌面 User-Agent 与内置 CLI 版本号,网关据此返回编程用的模型名单。插件用 App 自带的 Electron 二进制读取 App 加密的登录文件,并把副本存到 $DSH_HOME/dsh-workbuddy-provider/,App 关掉后请求仍能继续。

本插件的详情页里只有一张卡片,两个 App 共用:顶部两个页签切换 WorkBuddy CN 与 WorkBuddy AI,下面是登录状态与积分摘要,再往下是「模型」与「余额」两个页签。会话使用本插件的模型时,输入框旁显示一枚积分徽章。

插件卡片:顶部切换 WorkBuddy CN 与 WorkBuddy AI,下面是登录状态、积分摘要与「模型」「余额」页签

安装

需要已安装并登录的 WorkBuddy 桌面 App:国内版对应 WorkBuddy CN 分组,国际版(WorkBuddy AI)对应 WorkBuddy AI 分组,装一个或两个都行。仅支持 macOS。

dsh plugin --profile web add dsh-workbuddy-provider
dsh web

从源码检出安装时,把工作区目录本身装进 profile 即可;plugin_manager 会把它链接进去。

运行与使用

安装后 dsh web 启动 Harness,启动输出会打印带 token 的页面地址。之后的操作都在页面里,不用再碰命令行:

  • 选模型:模型选择器里挑 WorkBuddy 分组下的模型,像内置模型一样发起对话。
  • 管理模型:在插件页打开本插件的卡片,选顶部的 WorkBuddy CN 或 WorkBuddy AI 页签。「模型」页签列出该 App 目录里的全部模型,开关决定哪些出现在选择器里,按账号保存。
  • 看余额:「余额」页签显示该 App 可用余额与构成,只在打开时查询;打开卡片会分别读取两个 App 的余额。
  • 登录态变化:桌面 App 里登录、登出或切换账号后,插件在一个轮询周期内(默认 30 秒)自动跟随,无需重启。
  • 排除故障:App 未安装、登录文件读不出时,卡片给出原因和一个可复制的 Agent 修复提示词;目录拉取失败时,选择器退回上次保存的目录,卡片标明来源。

进阶:状态文档与写路由挂在 Harness 源上,路径如 /plugins/dsh-workbuddy-provider/cn/status(国际版为 /ai/)。状态文档可直接 curl 查看;写路由(刷新目录、设置模型显隐)要求随状态文档下发的进程内密钥,没有密钥的请求一律拒绝。环回绑定是网络边界,不是授权。

适配器通过绑定在 127.0.0.1 的环回 shim 通信,由环回 Host 与 Origin 校验加进程内 bearer 保护。bearer 不转发到上游:上游请求带的是凭据存储里的真实凭据,拿到 bearer 也换不到它。

配置

路径解析优先级

按下面的顺序取第一个给出该路径的来源:

  1. 配置:profile 的 cordis.yml 中 dsh-workbuddy-provider.variants.<App>.authFile / electronBinary
  2. 环境变量:WORKBUDDY_CN_AUTH_FILE / WORKBUDDY_AI_AUTH_FILE、WORKBUDDY_CN_ELECTRON_BIN / WORKBUDDY_AI_ELECTRON_BIN
  3. 默认路径:各 App 在 macOS 上的安装位置(见下表)

配置或环境变量显式指定的路径不可用时报错,不会静默回退到默认值:点名要用某个文件,悄悄换成另一个会掩盖问题。默认路径不存在不算错误,只报告「未安装」。点名过的路径在卡片状态区标出来源;全走默认时不显示。

路径默认值

项目国内版 workbuddy-cn国际版 workbuddy-global
桌面登录文件 authFile~/Library/Application Support/CodeBuddyExtension/Data/Public/auth/workbuddy-desktop.info同目录 / workbuddy-desktop-ai.info
Electron 二进制 electronBinary/Applications/WorkBuddy.app/Contents/MacOS/Electron/Applications/WorkBuddy AI.app/Contents/MacOS/Electron
环境变量(登录文件)WORKBUDDY_CN_AUTH_FILEWORKBUDDY_AI_AUTH_FILE
环境变量(Electron)WORKBUDDY_CN_ELECTRON_BINWORKBUDDY_AI_ELECTRON_BIN

两个 App 把登录文件写进同一个 CodeBuddyExtension 目录,只靠文件名区分。插件只读这个文件,从不写入。Electron 二进制按 bundle id 校验(com.tencent.workbuddy.mac / com.workbuddy.workbuddy-ai),路径上换成别的 App 会直接报错。

插件还从 App 包读两项不来自配置的信息,同样按 App 区分:Contents/Info.plist 里的 App 版本(写进模型目录与对话请求的 User-Agent),以及 Contents/Resources/app.asar.unpacked/cli/package.json 里内置 CLI 的版本。

配置文件

dsh-workbuddy-provider:
  # 重新读取桌面登录态的频率,毫秒。默认 30000。
  credentialPollMs: 30000
  # 按 App 覆盖路径;整个 variants 段可省略,省略即全部走默认路径。
  variants:
    workbuddy-cn:
      authFile: /path/to/workbuddy-desktop.info
      electronBinary: /path/to/WorkBuddy.app/Contents/MacOS/Electron
    workbuddy-global:
      authFile: /path/to/workbuddy-desktop-ai.info
      electronBinary: /path/to/WorkBuddy AI.app/Contents/MacOS/Electron

只覆盖一条时,另一条仍走默认值。variants 下的键就是模型选择器里的 provider id:国内版 workbuddy-cn,国际版 workbuddy-global。

插件状态文件

插件自己写的文件全部在 $DSH_HOME/dsh-workbuddy-provider/ 一个目录里,每个 App 一套:

文件作用
.workbuddy-cn-auth.json / .workbuddy-ai-auth.json凭据副本:token 刷新成功后写入,App 关闭时作为回退
.workbuddy-cn-catalog.json / .workbuddy-ai-catalog.json按账号保存的模型目录,拉取失败时的退路
.workbuddy-cn-model-visibility.json / .workbuddy-ai-model-visibility.json每账号的模型显隐偏好

$DSH_HOME 默认为 ~/.dsh,可用同名环境变量覆盖。启动时会把留在 $DSH_HOME 根下的文件移进这个目录,显隐偏好与目录缓存因此不丢。这些文件都能直接删,只丢缓存和偏好,下次启动重新生成。

DSH 版本兼容

本插件支持内核窗口 >=0.2.1-rc.1 <=0.2.1-rc.5 || >=0.2.2-alpha.2 <=0.2.2-alpha.3,也就是 0.2.1 的 rc.1 到 rc.5,加上 0.2.2 的 alpha.2 到 alpha.3,以 engines.dsh 声明为准。loader 只校验这一条,跳过 peer 范围检查;内核超出窗口时启动直接失败,不降级。这两条线互不同源,已知差异(路由注册形式、剪贴板 hook、模型角标透传)与不做版本探测的原则,见 docs/adr/0002-kernel-version-window.md。

已知限制

  • 仅 macOS:App 发现、Electron 定位与登录文件默认路径都按 macOS 实现;Windows 未实现。
  • 跟随桌面 App 登录:凭据完全来自 App 自己的登录态,没有独立的密钥可用;App 未登录时对应分组不可用。
  • 积分徽标依赖内核:模型的限免/折扣角标在 0.2.2 alpha 内核上显示,0.2.1 rc 内核静默不显示(见兼容 ADR)。
  • 目录短于 App 内:按价格档位排除的条目会在卡片标注「已隐藏 n 个档位」,目录以编程客户端名单为准,与 App 内智能体的名单可能不同。

许可证

MIT © 2026 zerolu

本地开发

pnpm install
pnpm run check   # lint、typecheck、覆盖率阈值、构建与 tarball 校验,改动后提交前必须全绿
pnpm run build
pnpm run watch   # 监视构建,喂给本地 dsh web server 调试
pnpm exec vitest run tests/host/<name>.spec.ts   # 跑单个测试文件

发布走 npm trusted publishing:改好版本号并提交后 pnpm run tag 生成带注释的标签,推送标签触发工作流校验并发布;细节见 .github/workflows/release.yml。

架构与背后的决策见 AGENTS.md、GLOSSARY.md 与 决策记录。

版本与发布记录

dsh-workbuddy-provider 共发布 8 个版本,首次发布于 2026/11/01;过去 12 个月发布了 8 个版本。

版本发布日期距今
0.2.4latest2026/11/03今天
0.2.32026/11/021 天前
0.2.22026/11/012 天前
0.2.12026/11/012 天前
0.2.02026/11/012 天前
0.1.12026/11/012 天前

关于 dsh-workbuddy-provider 的常见问题

dsh-workbuddy-provider 是什么?

将WorkBuddy桌面应用程序模型(WorkBuddy CN和WorkBuddy AI)带入DeepSeek Harness,重用每个应用程序自己的登录:没有单独的密钥,没有第二次登录。

如何安装 dsh-workbuddy-provider?

在项目目录运行 npm install dsh-workbuddy-provider,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@deepseek-ai/cordis(^4.0.6-alpha.1)、@deepseek-ai/dsh-llm(>=0.2.1-rc.1 <=0.2.1-rc.5 || >=0.2.2-alpha.2 <=0.2.2-alpha.3)、@deepseek-ai/schemastery(^3.18.5)、@deepseek-ai/dsh-settings(>=0.2.1-rc.1 <=0.2.1-rc.5 || >=0.2.2-alpha.2 <=0.2.2-alpha.3)、@deepseek-ai/dsh-llm-pi-ai(>=0.2.1-rc.1 <=0.2.1-rc.5 || >=0.2.2-alpha.2 <=0.2.2-alpha.3)、@deepseek-ai/dsh-attachment(>=0.2.1-rc.1 <=0.2.1-rc.5 || >=0.2.2-alpha.2 <=0.2.2-alpha.3)、@deepseek-ai/dsh-home-paths(>=0.2.1-rc.1 <=0.2.1-rc.5 || >=0.2.2-alpha.2 <=0.2.2-alpha.3)、@deepseek-ai/dsh-host-webserver(>=0.2.1-rc.1 <=0.2.1-rc.5 || >=0.2.2-alpha.2 <=0.2.2-alpha.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

dsh-workbuddy-provider 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

dsh-workbuddy-provider 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

dsh-workbuddy-provider 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.19.0 || >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

dsh-workbuddy-provider 可以商用吗?

dsh-workbuddy-provider 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

dsh-workbuddy-provider 还在维护吗?

最新版本 0.2.4 发布于 2026/11/03(今天);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/11/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。