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

WorkBuddy 模型接入 2424830124/dsh-workbuddy

DeepSeek Harness
24248301244 天前有提交已提供中文文档扫描:含敏感能力

将workbuddy后端接入dsh,让你在dsh中使用workbuddy的模型消耗workbuddy的积分

32.9/100
综合分
4
GitHub 星标
—
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 2424830124/dsh-workbuddy
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 35 处,展示前 35 条)
  • 发起网络请求
    client/index.js:23
    void fetch('/workbuddy/client-log', {
  • 发起网络请求
    client/index.js:644
    const response = await fetch(`${API}${path}`, {
  • 写入剪贴板
    client/index.js:1102
    await navigator.clipboard.writeText(value)
  • 写入本地文件
    src/llm/adapter.js:83
    writeFileSync(REJECTED_DUMP_PATH, JSON.stringify({
  • 发起网络请求
    src/llm/adapter.js:736
    return await fetch(`${route.endpoint}/v2/chat/completions`, {
  • 读取本地文件
    src/panel/api.js:64
    const hash = createHash('sha256').update(readFileSync(self)).digest('hex').slice(0, 8)
  • 读取本地文件
    src/panel/api.js:65
    return `api.js #${hash} (${statSync(self).mtime.toISOString().slice(0, 16)}Z)`
  • 读取本地文件
    src/panel/api.js:221
    if (isMask) maskBytes ??= await readFile(MASK_PATH)
  • 读取本地文件
    src/panel/api.js:222
    else iconBytes ??= await readFile(ICON_PATH)
  • 发起网络请求
    src/catalog/availability.js:187
    const response = await fetch(`${route.endpoint}/v2/chat/completions`, {
  • 读取本地文件
    src/catalog/availability.js:275
    const parsed = JSON.parse(readFileSync(ledgerPath(regionId), 'utf8'))
  • 写入本地文件
    src/catalog/availability.js:304
    mkdirSync(ledgerDir(), { recursive: true })
  • 写入本地文件
    src/catalog/availability.js:305
    writeFileSync(ledgerPath(regionId), JSON.stringify({
  • 发起网络请求
    src/core/http.js:22
    response = await fetch(url, {
  • 读取本地文件
    src/catalog/model-prefs.js:40
    const parsed = JSON.parse(readFileSync(prefsPath(regionId), 'utf8'))
  • 写入本地文件
    src/catalog/model-prefs.js:57
    mkdirSync(prefsDir(), { recursive: true })
  • 写入本地文件
    src/catalog/model-prefs.js:60
    writeFileSync(staging, JSON.stringify({
  • 写入本地文件
    src/catalog/model-prefs.js:66
    renameSync(staging, prefsPath(regionId))
  • 执行外部命令固定命令
    src/core/regions.js:138
    const child = spawn('cmd', ['/c', 'start', '""', `"${url}"`], {
  • 执行外部命令来自配置/变量
    src/core/regions.js:152
    const child = spawn(command, [url], { detached: true, stdio: 'ignore' })
  • 读取本地文件
    src/catalog/catalog-cache.js:95
    const parsed = JSON.parse(readFileSync(path, 'utf8'))
  • 写入本地文件
    src/catalog/catalog-cache.js:182
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    src/catalog/catalog-cache.js:186
    writeFileSync(staging, JSON.stringify({
  • 写入本地文件
    src/catalog/catalog-cache.js:194
    renameSync(cachePath(regionId), previousPath(regionId))
  • 写入本地文件
    src/catalog/catalog-cache.js:198
    renameSync(staging, cachePath(regionId))
  • 读取本地文件
    src/catalog/official-list.js:61
    const parsed = JSON.parse(readFileSync(listPath(regionId), 'utf8'))
  • 写入本地文件
    src/catalog/official-list.js:104
    renameSync(listPath(regionId), `${listPath(regionId)}.cleared-${Date.now()}`)
  • 写入本地文件
    src/catalog/official-list.js:112
    mkdirSync(listDir(), { recursive: true })
  • 写入本地文件
    src/catalog/official-list.js:115
    writeFileSync(staging, JSON.stringify({
  • 写入本地文件
    src/catalog/official-list.js:123
    renameSync(staging, listPath(regionId))
  • 写入本地文件
    src/core/paths.js:32
    mkdirSync(dir, { recursive: true, mode: 0o700 })
  • 读取本地文件
    src/core/paths.js:47
    return JSON.parse(readFileSync(pluginFile(name), 'utf8'))
  • 写入本地文件
    src/core/paths.js:60
    writeFileSync(staging, JSON.stringify(value, null, options.pretty === true ? 2 : 0), { mode: 0o600 })
  • 写入本地文件
    src/core/paths.js:61
    renameSync(staging, target)
  • 写入本地文件
    src/core/paths.js:62
    if (options.mode !== undefined) chmodSync(target, options.mode)
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-workbuddy 在 DeepSeek Harness(DSH)里使用 WorkBuddy 的模型。 装好之后,WorkBuddy 的模型会直接出现在 DSH 的模型选择器里,和内置模型一样用;另有一个设置页管理两个账号、查看实时倍率与繁忙程度、挑选用哪些模型。 | Provider 路由 | 部署 | | @huai_xin/dsh-workbuddy/cn | https://www.workbuddy.cn | | @huai_xin/dsh-workbuddy/intl | https://www.workbuddy.ai | 非官方项目。 与腾讯 / WorkBuddy 官方无任何关联,不使用其商标授权,也不分发其代码。 它只是一个第三方客户端插件,按公开可观测的接口工作。请自行确认使用方式符合你所在地区的法律与 WorkBuddy 的服务条款。仓库里不含任何真实账号数据——示例与截图一律是假数据。 强烈建议配合 dsh-model-picker 一起使用。 这是同一个作者的另一个插件,它读取本插件发布的客户端状态服务,在模型选择器里直接显示每个部署的实时积分、模型的探测结论、繁忙状态与实时倍率——不用打开设置页就能挑模型、看状态。 两个插件都装上即可联动,无需任何配置。
展开完整文档(README 剩余 1 节)
dsh-workbuddy

在 DeepSeek Harness(DSH)里使用 WorkBuddy 的模型。

装好之后,WorkBuddy 的模型会直接出现在 DSH 的模型选择器里,和内置模型一样用;另有一个设置页管理两个账号、查看实时倍率与繁忙程度、挑选用哪些模型。

| Provider 路由 | 部署 |
| @huai_xin/dsh-workbuddy/cn | https://www.workbuddy.cn |
| @huai_xin/dsh-workbuddy/intl | https://www.workbuddy.ai |

非官方项目。 与腾讯 / WorkBuddy 官方无任何关联,不使用其商标授权,也不分发其代码。
它只是一个第三方客户端插件,按公开可观测的接口工作。请自行确认使用方式符合你所在地区的法律与 WorkBuddy 的服务条款。仓库里不含任何真实账号数据——示例与截图一律是假数据。

强烈建议配合 dsh-model-picker 一起使用。
这是同一个作者的另一个插件,它读取本插件发布的客户端状态服务,在模型选择器里直接显示每个部署的实时积分、模型的探测结论、繁忙状态与实时倍率——不用打开设置页就能挑模型、看状态。
两个插件都装上即可联动,无需任何配置。

安装

从 npm 安装到某个 profile
dsh plugin --profile <profile> add @huai_xin/dsh-workbuddy

也可以在 Web UI 的插件管理里安装(效果相同)。

装完重启 DSH,然后 /workbuddy login cn 或 /workbuddy login intl 授权。

用法

登录

/workbuddy login cn # 大陆版:打开授权页,浏览器里点一下就行 /workbuddy login intl # 海外版 /workbuddy login all # 两个都登录 /workbuddy status # 账号、到期时间、模型数 /workbuddy logout cn # 退出:删凭据,并把它的模型从选择器里移除 /workbuddy refresh cn # 手动续期 /workbuddy models cn # 这个账号当前能用哪些模型 /workbuddy check cn # 检测哪些模型真的可用(详见下文)

登录完去设置页把想用的模型开关打开,它们就会出现在模型选择器里(默认全部停用)。
两个部署各自独立登录,互不影响。

与 dsh-model-picker 联动

本插件会向客户端发布一个状态服务(@huai_xin/dsh-workbuddy/state),我的 dsh-model-picker 插件读取它,在模型选择器里做两件事:

- 显示积分:每个部署的实时余额直接出现在选择器里,不用打开设置页;
- 优化显示:模型的探测结论(可用 / 限流 / 无权限…)、繁忙状态与实时倍率跟着模型一起展示,启用了哪些就显示哪些。

两个插件都装上即可联动,不需要任何配置。状态由本插件自动加载与刷新(每 5 分钟一次,打开设置页的动作也会触发),选择器那边只管读。

设置页

设置 → WorkBuddy,两张卡片。

账户:表格是转置的,两个部署并排对比。

| | ● 大陆版 [今日已签到] | ● 海外版 |
| 账号 | 示例账号 | 900000001 |
| 到期 | 2027/01/16 09:00:00 | 2027/04/21 12:00:00 |
| 积分 | 1280.00 ⟳ | 360.00 ⟳ |
| 操作 | [更换账号] [退出登录] | [更换账号] [退出登录] |

- 部署名旁的圆点是登录状态(绿=已登录 / 黄=等待授权 / 红=已过期 / 灰=未登录)。
- 积分旁的 ⟳ 只刷新这一行。
- 右上角一个「续期」,两个部署一起续,未登录的跳过。
- 签到按钮(只有大陆版有)跟在部署名右边。
- 未登录的部署整列只显示一个「登录」按钮。

模型:顶部标签切换查看哪个部署(只切换查看,不影响登录)。

设置面板

- 按能不能用分两组:可用模型 / 不可用模型,后者默认折叠。
- 每行:圆点是判定颜色(绿=可用 / 黄=排队或无权限 / 红=不可用 / 灰=未检测),右侧依次是 可用性 · 促销 · 繁忙程度 · 实时倍率,最后是该模型的启停开关。
- 模型默认全部停用,你手动打开哪些,选择器里就有哪些;这份选择在退出登录后也保留。
- 点一行展开详情:描述、上下文、最大输出、模态、思考档位、倍率、繁忙程度、促销。
- 工具栏:搜索、「全部启用 / 全部停用」、「⟳ 刷新列表」、「检测可用性」。全部启用作用于可用分组,全部停用作用于两个分组。
- 开关立即生效,选择器马上跟着变。

积分与签到

- 启动约 15 秒后自动签到一次,之后每天本地 0 点再签到一次。
- 签到是幂等的,重启不会重复发积分。
- 海外版没有签到接口,只显示积分。

关于"哪些模型真的能用"

目录里列了不等于能用。这个插件会真的发一个请求去验证,而不是看目录字段猜。

- 大陆版:探测不产生任何消耗,可以随便点。
- 海外版:每个模型探测一次约 1 token,所以自动检测每天最多一次,「检测可用性」按钮可以手动随时点。

判定的三种结论(只有前两种会进「不可用模型」组):

| 标签 | 含义 |
| 不可用 | 模型 id 在网关上不存在(已下架,目录里的僵尸条目) |
| 无权限 | 账号档位不够,或请求被网关拦截 |
| 未知 | 其它拿不到结论的报错(5xx、凭据问题等),悬停可看原始报文 |
没被证伪的不当成不能用,所以「未知」仍留在可用分组里。判定有效期 12 小时。

真实对话里如果某个模型回「不存在」或「无权限」,插件会直接记下来,不用等下次检测。

数据存在哪

全在 $DSH_HOME/dsh-workbuddy/ 一个目录里,删掉它就等于把插件恢复出厂:

| 文件 | 内容 |
| credentials.json | 两个部署的令牌(0600 权限) |
| catalog-<部署>.json | 模型目录缓存 |
| availability-<部署>.json | 可用性判定 |
| enabled-<部署>.json | 你启用过哪些模型(退出登录不删) |
| official-<部署>.json | 从账号名单导入的列表 |

凭据不写进宿主的 .credentials.yaml,避免和别的插件混在一个文件里。

常见问题

装完没反应 / 面板报 404? 改了插件代码需要重启 DSH,重新启用插件不算。装新版本同理。

选择器里看不到某个模型? 它默认是停用的:去设置页把它的开关打开。如果退出过登录,模型会全部隐藏,重新登录后你启用过的那些会原样回来。

某个模型显示「不可用」但我想试? 可以直接把开关打开——手动决定永远优先于检测结果。

倍率显示「未知」? 目录里没给这个模型的实时倍率。插件不会用旧值兜底、也不会猜。

为什么没有"关闭思考"的开关? 上游只声明了"可否关闭思考"这个字段,却从没给出能兑现它的请求参数(实测过),所以只能调档位。

许可

MIT,见 LICENSE。再次说明:本项目为第三方非官方插件,与腾讯 / WorkBuddy 无关联。

开发、排障、二次开发请看 AGENTS.md;上游接口与实测记录在 docs/workbuddy-protocol.md。
预览分享卡片长什么样 ↓2424830124/dsh-workbuddy
分享 · DeepSeek Harness Hub
2424830124/dsh-workbuddy

将workbuddy后端接入dsh,让你在dsh中使用workbuddy的模型消耗workbuddy的积分

回到顶部