🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

WorkBuddy 桥接 dsh-plugin-lab/dsh-workbuddy-bridge

DeepSeek Harnessv0.5.5
dsh-plugin-lab3 天前有提交已提供中文文档扫描:含敏感能力

DSH 插件:把 WorkBuddy 桌面 App 里的模型接入 DeepSeek…

47.4/100
综合分
26
GitHub 星标
533
npm 周下载
—/5
用户评分

数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-workbuddy-bridge
npm 源 · dsh-workbuddy-bridge 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-workbuddy-bridge @ 0.5.5
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 07:01:31

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 45 处,展示前 33 条)
  • 读取本地文件
    lib/index.js:81
    if (existsSync(this.path)) try {
  • 读取本地文件
    lib/index.js:82
    const parsed = JSON.parse(readFileSync(this.path, "utf8"));
  • 读取本地文件
    lib/index.js:123
    if (!existsSync(directory)) mkdirSync(directory, { recursive: true });
  • 写入本地文件
    lib/index.js:123
    if (!existsSync(directory)) mkdirSync(directory, { recursive: true });
  • 写入本地文件
    lib/index.js:129
    writeFileSync(temporary, `${JSON.stringify(document, null, 2)}\n`, { mode: 384 });
  • 写入本地文件
    lib/index.js:130
    renameSync(temporary, this.path);
  • 读取本地文件
    lib/index.js:217
    if (existsSync(this.path)) try {
  • 读取本地文件
    lib/index.js:218
    const parsed = JSON.parse(readFileSync(this.path, "utf8"));
  • 读取本地文件
    lib/index.js:258
    if (!existsSync(directory)) mkdirSync(directory, { recursive: true });
  • 写入本地文件
    lib/index.js:258
    if (!existsSync(directory)) mkdirSync(directory, { recursive: true });
  • 写入本地文件
    lib/index.js:264
    writeFileSync(temporary, `${JSON.stringify(document, null, 2)}\n`, { mode: 384 });
  • 写入本地文件
    lib/index.js:265
    renameSync(temporary, this.path);
  • 读取本地文件
    lib/heartbeat-DYtNMdMm.js:63
    text = await readFile(plistPath, "utf8");
  • 读取本地文件
    lib/heartbeat-DYtNMdMm.js:124
    const saved = JSON.parse(await readFile(path, "utf8"));
  • 读取本地文件
    lib/heartbeat-DYtNMdMm.js:218
    document = JSON.parse(await readFile(cliPackagePath(bundle), "utf8"));
  • 读取本地文件
    lib/heartbeat-DYtNMdMm.js:319
    const saved = JSON.parse(await readFile(savedPath, "utf8"));
  • 发起网络请求
    lib/heartbeat-DYtNMdMm.js:1258
    response = await fetch(`${chatBase(credential)}/v2/chat/completions`, {
  • 发起网络请求
    lib/heartbeat-DYtNMdMm.js:1289
    const response = await fetch(`${chatBase(credential)}/v2/plugin/auth/token/refresh`, {
  • 发起网络请求
    lib/heartbeat-DYtNMdMm.js:1336
    const response = await fetch(`${chatBase(credential)}/v3/config`, {
  • 发起网络请求
    lib/heartbeat-DYtNMdMm.js:1376
    const response = await fetch(`${chatBase(credential)}/console/enterprises/personal/models`, {
  • 发起网络请求
    lib/heartbeat-DYtNMdMm.js:1432
    const response = await fetch(`${billingBase(credential)}/v2/billing/meter/get-user-resource`, {
  • 发起网络请求
    lib/heartbeat-DYtNMdMm.js:1495
    const response = await fetch(`${CN_BILLING_BASE}/v2/billing/meter/get-enterprise-user-usage`, {
  • 执行外部命令来自配置/变量
    lib/heartbeat-DYtNMdMm.js:2287
    execFile(REG_BIN, [
  • 执行外部命令来自配置/变量
    lib/heartbeat-DYtNMdMm.js:2327
    const child = execFile(bin, [...args], {
  • 读取本地文件
    lib/heartbeat-DYtNMdMm.js:2520
    statSync(candidate);
  • 执行外部命令来自配置/变量
    lib/heartbeat-DYtNMdMm.js:2614
    execFile(electronPath, [HELPER_SCRIPT_ARGUMENT_FLAG, HELPER_SCRIPT], {
  • 读取本地文件
    lib/heartbeat-DYtNMdMm.js:2640
    accessSync(path, constants.X_OK);
  • 删除本地文件
    lib/heartbeat-DYtNMdMm.js:3107
    await rm(this.ownPath, { force: true });
  • 删除本地文件
    lib/heartbeat-DYtNMdMm.js:3108
    await rm(`${this.ownPath}.lock`, { force: true });
  • 写入本地文件
    lib/heartbeat-DYtNMdMm.js:4061
    await writeFile(workbuddyHostHeartbeatPath(), JSON.stringify(document), "utf8");
  • 删除本地文件
    lib/heartbeat-DYtNMdMm.js:4067
    await rm(workbuddyHostHeartbeatPath(), { force: true });
  • 执行外部命令固定命令
    lib/heartbeat-DYtNMdMm.js:4135
    const token = execFileSync("wmic", [
  • 执行外部命令固定命令
    lib/heartbeat-DYtNMdMm.js:4148
    const out = execFileSync("ps", [
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-atomic-write@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-model-selection@deepseek-ai/dsh-client-ui-plugin-manager@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 接入桌面App模型
  • 零配置使用
  • 原生嵌入插件配置
展开完整介绍(75 字)↓

DSH 插件:把 WorkBuddy 桌面 App 里的模型接入 DeepSeek Harness,零配置直接用。(原生嵌入"设置-插件-插件配置")

v0.5.52026-10-29
· Changes · chore(deps): bump fast-uri from 3.1.8 to 3.1.9 (#23) @[dependabot[bot]]( · Bug Fixes · fix(wire): 11-128 按真实请求体重写指纹,零宽方案退役 (#26) @zlZayn · Compatibility · fix(wire): 11-128 按真实请求体重写指纹,零宽方案退役 (#26) @zlZayn
v0.5.42026-10-26
· Changes · fix(wire): 国际版聊天注入 X-Trace-ID/X-Conversation-\* 身份头组,通过 11128 渠道校验 (#22) @monesyilya3-Niko
v0.5.32026-10-22
· Changes · Bug Fixes · fix(wire): 签名清洗扩到 assistant 回显;user/tool 保持逐字节不变 (#20) @zlZayn · Compatibility · fix(wire): 签名清洗扩到 assistant 回显;user/tool 保持逐字节不变 (#20) @zlZayn
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-workbuddy-bridge 把 WorkBuddy 桌面 App 的模型接进 DSH 对话窗口 WorkBuddy desktop models in DeepSeek Harness 各版本改动 → Releases(与 npm 版本一一对应) 简体中文 · English [!NOTE] 凭据不出本机:登录状态取自 WorkBuddy 桌面 App 自己的凭据文件,插件只在本机留一份加密副本;浏览器半边拿不到令牌,界面里也永远不出现凭据原文。 国内版 WorkBuddy 与国际版 WorkBuddy AI 并存:装哪个 App 就出现哪个模型分组,两个都装就两组并排,各自用自己的账号与积分。模型直接出现在 DSH 的模型选择器里,不必为它单独配一个 provider。 中文界面截图:国内版在模型选择器中自成一组,模型名后直接跟积分倍率与促销徽章;装国际版则出现「WorkBuddy AI」组。 能力 - 开箱即用 —— 装完启用,模型分组自己出现。 - 两版隔离 —— 国内版与国际版各自分组,模型、账号、积分互不混用,只跟随各自 App 的登录状态。 - 推理档位 —— 上游声明了档位的模型直接可选;没声明的可在插件页手动检测。 灯泡表示能切档位;上游已声明的模型也亮着,只是不需要检测。
展开完整文档(README 剩余 1 节)
dsh-workbuddy-bridge

把 WorkBuddy 桌面 App 的模型接进 DSH 对话窗口 WorkBuddy desktop models in DeepSeek Harness

各版本改动 → Releases(与 npm 版本一一对应)

简体中文 · English

[!NOTE]
凭据不出本机:登录状态取自 WorkBuddy 桌面 App 自己的凭据文件,插件只在本机留一份加密副本;浏览器半边拿不到令牌,界面里也永远不出现凭据原文。

国内版 WorkBuddy 与国际版 WorkBuddy AI 并存:装哪个 App 就出现哪个模型分组,两个都装就两组并排,各自用自己的账号与积分。模型直接出现在 DSH 的模型选择器里,不必为它单独配一个 provider。

中文界面截图:国内版在模型选择器中自成一组,模型名后直接跟积分倍率与促销徽章;装国际版则出现「WorkBuddy AI」组。

能力

- 开箱即用 —— 装完启用,模型分组自己出现。
- 两版隔离 —— 国内版与国际版各自分组,模型、账号、积分互不混用,只跟随各自 App 的登录状态。
- 推理档位 —— 上游声明了档位的模型直接可选;没声明的可在插件页手动检测。
灯泡表示能切档位;上游已声明的模型也亮着,只是不需要检测。
能切档位的模型会带一个默认档位(上游声明了就按声明,否则取 high),因此选择器里不再出现「Default」这一项。
档位里的 Off 表示「不发送档位参数」:两个接口都不接受这个字面量,所以插件不会把它发出去;实际是否关闭思考由上游决定,插件不做保证。
- 积分可见 —— 每条回复下方显示本次消耗,模型选择器旁常驻剩余积分。拿不到数字时不显示。
- 模型显隐 —— 卡片「模型」标签里勾选哪些模型出现在选择器里,按登录账号分别保存。
- 图片输入 —— 多数模型可直接粘贴或拖入图片;纯文字模型会明确说明。
- 三种界面 —— Web / Desktop / TUI;仅 TUI 无手动检测。

中文界面截图:对话窗口里每天看到的样子:币图标与余额、推理档位灯泡,再往右是模型名——都排在同一行。

中文界面截图:插件页:上面是配置表单,下面两张卡片各跟随自己 App 的登录状态。

安装

前置只有一条:已安装并登录 WorkBuddy 桌面 App(国际版为 WorkBuddy AI App)—— 插件复用 App 的登录状态。

dsh plugin --profile web add dsh-workbuddy-bridge
dsh web

Desktop 与 TUI 把 --profile web 换成 desktop / dsh-tui(TUI 需较新版本的终端插件 @deepseek-harness-tui/dsh-tui,版本要求见其文档)。

也可以从源码安装:

bash
git clone https://github.com/dsh-plugin-lab/dsh-workbuddy-bridge.git
cd dsh-workbuddy-bridge
pnpm install && pnpm build
dsh plugin --profile web add "$PWD"

⚠️ 上面那步 pnpm install 不能省:按路径挂载时,依赖要由仓库自己装好(见本地开发装法),漏装则插件显示「未运行」(ERR_MODULE_NOT_FOUND)。

插件页

侧边栏 插件(Plugins) → 已安装 → 点 DSH WorkBuddy Bridge。配置区在描述下面,保存即生效:

- 登录文件路径(国内版 / 国际版)—— 留空即用 App 自己的位置。
- 允许推理档位检测、使用上游声明的最大上下文窗口 —— 两个开关。

中文界面截图:「模型」标签:勾选哪些模型出现在选择器里,同时看窗口与倍率。

中文界面截图:左「检测」:每个推理模型一行,点按钮确认它接受哪些推理档位;右「积分」:总余额,下面是各套餐的余量条。

为什么是手动检测

WorkBuddy 接口不保证档位信息可靠——有的模型接受 reasoning_effort 却忽略未知值。所以插件不猜:按需对单个模型发少量真实请求确认;结果只表示上游当前接受该档位,不承诺它改变推理行为。已声明档位的模型跳过这一步,直接用声明值。机制与取舍见 docs/ARCHITECTURE.md。

中文界面截图:已声明档位的模型:灯泡点亮、档位直接可选,检测按钮禁用。

兼容与限制

无凭据的分组不显示。宿主版本下限、平台支持、模型清单从哪来与已知缺口 → docs/COMPATIBILITY.md。

设计取舍 → docs/ARCHITECTURE.md;发版流程 → docs/PUBLISHING.md;维护者文档地图 → AGENTS.md。

免责声明

- 本项目仅供个人学习和研究使用,仅驱动使用者自己的 WorkBuddy 账号在本机调用,请勿用于商业用途。
- 使用者需遵守 WorkBuddy 的服务条款;因使用本项目产生的任何后果,由使用者自行承担。
- 本项目与腾讯、WorkBuddy、DeepSeek 均无关联,未获其授权或认可;文中出现的名称仅用于描述兼容关系,其商标权利归各自所有。

致谢

- Sliverkiss/workbuddy2api(MIT)— WorkBuddy 上游协议的参照实现。
- franksong2702/dsh-codex-connect(Apache-2.0)— DSH 插件结构与 provider 注册的参照。

许可

MIT。

贡献

缺陷与需求走仓库 Issues。
预览分享卡片长什么样 ↓dsh-plugin-lab/dsh-workbuddy-bridge
分享 · DeepSeek Harness Hub
dsh-plugin-lab/dsh-workbuddy-bridge

DSH 插件:把 WorkBuddy 桌面 App 里的模型接入 DeepSeek…

回到顶部