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

WorkBuddy 多账号仪表盘 functy23/dsh-workbuddy-connect-functy

DeepSeek Harnessv0.13.20
functy238 天前有提交已提供中文文档扫描:含敏感能力

【已归档】上游风控持续加强、UA/请求头格式频繁变动,适配已难以为继。后续开发移步

42.5/100
综合分
10
GitHub 星标
706
npm 周下载
—/5
用户评分

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

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

状态速览

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

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

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

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 15:48:42

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 50 处,展示前 32 条)
  • 发起网络请求
    lib/index.js:156
    const doFetch = options.fetch ?? ((...args) => globalThis.fetch(...args));
  • 执行外部命令来自配置/变量
    lib/index.js:3323
    const child = spawn(command, [...args], {
  • 读取本地文件
    lib/index.js:3570
    const manifest = JSON.parse(readFileSync(join(dir, "package.json"), "utf8"));
  • 写入本地文件
    lib/account-cli-BhPh0s5r.js:40
    await rename(temp, filename);
  • 写入本地文件
    lib/account-cli-BhPh0s5r.js:67
    await mkdir(dirname(filename), {
  • 写入本地文件
    lib/account-cli-BhPh0s5r.js:73
    await writeFile(temp, content, {
  • 删除本地文件
    lib/account-cli-BhPh0s5r.js:79
    await rm(temp, { force: true });
  • 读取本地文件
    lib/account-cli-BhPh0s5r.js:89
    await lstat(lockPath);
  • 读取本地文件
    lib/account-cli-BhPh0s5r.js:111
    return await readFile(lockPath, "utf8");
  • 写入本地文件
    lib/account-cli-BhPh0s5r.js:131
    await writeFile(claim, `${process.pid}\n`, {
  • 删除本地文件
    lib/account-cli-BhPh0s5r.js:143
    await rm(lockPath, { force: true });
  • 删除本地文件
    lib/account-cli-BhPh0s5r.js:149
    await rm(claim, { force: true }).catch((error) => {});
  • 写入本地文件
    lib/account-cli-BhPh0s5r.js:201
    await writeFile(lockPath, `${process.pid}\n`, {
  • 删除本地文件
    lib/account-cli-BhPh0s5r.js:220
    await rm(lockPath, { force: true });
  • 读取本地文件
    lib/account-cli-BhPh0s5r.js:371
    text = await readFile(plistPath, "utf8");
  • 读取本地文件
    lib/account-cli-BhPh0s5r.js:431
    const saved = JSON.parse(await readFile(path, "utf8"));
  • 读取本地文件
    lib/account-cli-BhPh0s5r.js:529
    pkg = parseJsonObject(await readFile(cliPackagePath(bundle), "utf8"));
  • 读取本地文件
    lib/account-cli-BhPh0s5r.js:646
    const saved = JSON.parse(await readFile(savedPath, "utf8"));
  • 发起网络请求
    lib/account-cli-BhPh0s5r.js:1733
    response = await fetch(`${chatBase(credential)}/v2/chat/completions`, {
  • 发起网络请求
    lib/account-cli-BhPh0s5r.js:1779
    response = await fetch(`${chatBase(credential)}/v2/plugin/auth/token/refresh`, {
  • 发起网络请求
    lib/account-cli-BhPh0s5r.js:1844
    const response = await fetch(`${chatBase(credential)}/v3/config`, {
  • 发起网络请求
    lib/account-cli-BhPh0s5r.js:1884
    const response = await fetch(`${chatBase(credential)}/console/enterprises/personal/models`, {
  • 发起网络请求
    lib/account-cli-BhPh0s5r.js:1940
    const response = await fetch(`${billingBase(credential)}/v2/billing/meter/get-user-resource`, {
  • 发起网络请求
    lib/account-cli-BhPh0s5r.js:2012
    const response = await fetch(`${CN_BILLING_BASE}/v2/billing/meter/get-enterprise-user-usage`, {
  • 执行外部命令来自配置/变量
    lib/account-cli-BhPh0s5r.js:2931
    const child = execFile(bin, [...args], {
  • 执行外部命令来自配置/变量
    lib/account-cli-BhPh0s5r.js:3007
    const child = execFile(regPath, [
  • 执行外部命令来自配置/变量
    lib/account-cli-BhPh0s5r.js:3282
    execFile(electronPath, [HELPER_SCRIPT_ARGUMENT_FLAG, HELPER_SCRIPT], {
  • 删除本地文件
    lib/account-cli-BhPh0s5r.js:3766
    await rm(this.ownPath, { force: true });
  • 删除本地文件
    lib/account-cli-BhPh0s5r.js:3767
    await rm(`${this.ownPath}.lock`, { force: true });
  • 写入本地文件
    lib/account-cli-BhPh0s5r.js:3967
    mkdirSync(dirname(path), { recursive: true });
  • 执行外部命令固定命令
    lib/account-cli-BhPh0s5r.js:6116
    const token = execFileSync("wmic", [
  • 执行外部命令固定命令
    lib/account-cli-BhPh0s5r.js:6129
    const out = execFileSync("ps", [
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

功能亮点

  • 多账号轮换
  • 额度展示
  • 接入模型到Harness
v0.13.112026-10-06
输入框那两个小控件可配置了,额度徽标可以点开看分账号额度,设置页也不再等上游才出画面。 · 输入框额度徽标 · 移到 composer 那一行的最右侧,排在上下文占用右边。位置由 flex order 决定:DSH 把上下文占用控件追加在插槽条目之后,且插槽出口是 display:contents,只靠 DOM 顺序会落在它左边。 · 点击展开分账号面板,实现方式照 DSH 自己的上下文占用弹框(ContextMeter),不是另发明一个:同一套定位与关闭原语(useAnchoredPosition + useDismissOnOutsidePointer + Esc)、同样 portal 到 document.body(否则会被 composer 的 overflow 裁掉)、同一套菜单材质(--dsw-specific-menu + backdrop-filter + --dsw-elevation-prominent)、同样 min(264px, 100vw - 24px) 宽度、同样的「标题行 + 4px 容量条 + dl/dt/dd 行」结构。 · 面板内按 WorkBuddy / WorkBuddy AI 分组,每组一行一个已添加账号:有上限显示"剩余 / 上限",没读过显示「尚未读取」而不是 0,没有账号的产品整组不出现。 · 两个新开关 设置页「侧边栏」分组内,与侧边栏额度卡片开关并列、彼此独立: | 开关 | 字段 | 作用 | |---|---|---| | 输入框额度徽标 | composerCreditVisible | 那一行的余额徽标 | | 输入框检测按钮 | probeControlVisible | 模型选择器旁的思考强度检测控件(关掉后仍可在设置页模型列表里检测) | 字段缺失(旧宿主)一律按"显示"处理 —— 升级不会替你拿走任何表面。同时修掉分组自身的渲染条件:原先只看侧栏那两项偏好,三个独立偏好下会把第三个开关一起藏起来。 · 设置页不再空等 · 状态文档按产品缓存进 localStorage(键 dsh-workbuddy-connect-functy/status/,用法与 @mars-sea/dsh-commandcode-provider 同构,读写都容忍 storage 缺失或抛错):进页面先渲染上次的账号与余额,再并行拉实时数据替换,读失败保留屏幕内容。 · 账号区新增「刷新账号」:一次刷新两版所有已登录账号的余额与状态(只刷账号,模型目录仍走各自的「刷新列表」)。 · 删掉设置页里「仪表盘」那一行入口:仪表盘现在只从侧栏额度卡片进入。 · 本版数据 · pnpm run check:55 files / 763 tests 全过;pnpm run test:engine 全过 · 产物 14 files,shasum 266ff6240e176ec19a5c8cb5d47b047027b75c55 · 版本 0.13.11 · 对照 DSH 0.1.7-alpha.1 / 0.2.0-rc.1 / 0.2.0-rc.2 装法不变:dsh plugin --profile add dsh-workbuddy-connect-functy 详见 CHANGELOG.md。
v0.13.102026-10-06
刷新 npm 包的 git 出处:仓库历史经过一次身份重写 —— 早先在本机全局 git 身份未配置时推入的提交被登记成了另一个名字,现已在全部提交与 tag 上统一为维护者账号 functy23。 重写只改署名,文件内容逐字节未变:main 的 tree 哈希(4d1806cf9101b4b14e4a0a98f00f08bec8cc83cc)与 27 个 tag 指向的 tree 与重写前完全一致,提交数(194)与代码均无改动。本版据此重新构建并发布,使 npm 包记录到的提交与实际仓库对齐。 说明:GitHub 侧「删除贡献者列表里的旧署名」另需 GitHub Support 处理(该列表取自仓库的 mentionable users,不由提交历史决定),与本次发版无关。
v0.13.92026-10-05
思考强度探测不再被一次网络抖动判成「检测不出来」,失败也终于说得清原因。 · 修复:探测只报 TypeError: fetch failed 截图里那条 baseline status 0: transport error: TypeError: fetch failed 属于传输失败——请求根本没到上游(实测同一请求随后重放返回 200 + SSE,宿主侧重跑直接给出 validating)。本版把两件事分开: | 情况 | 处理 | |---|---| | 传输失败(DNS / connect / TLS,请求没到) | 退避 400ms / 1200ms 重试两次,每次重试都计入请求数 | | HTTP 应答(401 / 429 / 400…) | 只问一次——那已经是上游对这次请求的结论 | | 探测自身 30 秒超时 | 不重试——会超时的请求不会因为重试而通过,只会把停顿变三倍 | 失败行也不再被 fetch 的固定一句话吃掉,新增共用的 cause 链渲染(src/fetch-failure.ts): 修前 baseline status 0: transport error: TypeError: fetch failed 修后 baseline status 0 (3 attempts): transport error: TypeError: fetch failed; cause: Error: connect ECONNREFUSED 127.0.0.1:7891 覆盖 undici 的 cause、happy-eyeballs 的 AggregateError 逐地址原因、超时的 TimeoutError;聊天、探测、令牌刷新三处共用同一条渲染。 · 并入上游 #54:桌面 IDE 归属头 chat 与 probe 请求补上 X-IDE-Type / X-IDE-Name / X-IDE-Version,版本取与 User-Agent 同一个解析出来的桌面 App 版本;refresh、catalog、billing 三条路径保持不带该头族。 · 本版数据 · 测试 pnpm run check:55 files / 743 tests 全过(新增 describer 8 例、重试 6 例、IDE 头断言) · pnpm run test:engine 全过;发布产物 14 files / 225.5 kB,shasum e4a5b472704e804c0c4ffc9268db686bd6315ab5 · 版本 0.13.9 · 对照 DSH 0.1.7-alpha.1 / 0.2.0-rc.1 / 0.2.0-rc.2 装法不变:dsh plugin --profile add dsh-workbuddy-connect-functy 详见 CHANGELOG.md。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
[!IMPORTANT] 本仓库已归档(archived),不再维护。 上游风控还在持续加强:除了已有的渠道校验,UA 与请求头格式也在反复变动(X-Conversation-、acp-connection-id、X-No- 的取值与组合一再调整,每次变动都得重新对齐)。继续跟着官方客户端做字节级模仿已经越来越难,失效速度超过了可维护的节奏。 后续开发已移步至 functy23/dsh-workbuddy-panel —— 把 workbuddy2api 网关托管进 DSH:进程托管、模型自动发现、账号与登录管理全部收在插件内。 本仓库的代码、文档与 Release 仅作历史存档保留:不再接受 Issue / PR,不再发新版,也不保证仍然可用。 dsh-workbuddy-connect-functy corrinehu/dsh-workbuddy-connect 的 Functy 分支:仪表盘界面、多账号轮换与额度展示,把 WorkBuddy 桌面 App 的模型接到 DeepSeek Harness。 Issues • Changelog • / English ⚠️ 先说风险:上游正在收紧,随时可能用不了 2026-10-20 起,WorkBuddy 对话网关启用了针对第三方客户端的渠道校验,本插件(以及所有同类第三方接入)都可能被直接拒绝。
展开完整文档(README 剩余 1 节)
[!IMPORTANT]
本仓库已归档(archived),不再维护。

上游风控还在持续加强:除了已有的渠道校验,UA 与请求头格式也在反复变动(X-Conversation-、acp-connection-id、X-No- 的取值与组合一再调整,每次变动都得重新对齐)。继续跟着官方客户端做字节级模仿已经越来越难,失效速度超过了可维护的节奏。

后续开发已移步至 functy23/dsh-workbuddy-panel —— 把 workbuddy2api 网关托管进 DSH:进程托管、模型自动发现、账号与登录管理全部收在插件内。

本仓库的代码、文档与 Release 仅作历史存档保留:不再接受 Issue / PR,不再发新版,也不保证仍然可用。

dsh-workbuddy-connect-functy

corrinehu/dsh-workbuddy-connect 的 Functy 分支:仪表盘界面、多账号轮换与额度展示,把 WorkBuddy 桌面 App 的模型接到 DeepSeek Harness。

Issues • Changelog • / English

⚠️ 先说风险:上游正在收紧,随时可能用不了

2026-10-20 起,WorkBuddy 对话网关启用了针对第三方客户端的渠道校验,本插件(以及所有同类第三方接入)都可能被直接拒绝。

- 典型报错:400 / code 11128 / Illegal API invocation from an unapproved channel,中文提示「请求被拦截,请重新发送」「这次调用没通过渠道校验,可能不是官方客户端发出的」。
- 校验维度在持续增加:已确认的有系统提示词开头的固定句(DSH 核心注入的 You are an AI agent powered by DeepSeek Harness.),以及请求头格式(X-Conversation- 系列、acp-connection-id、X-No- 的用法)。历史版本已经因为漏掉 X-Conversation- 三件套、发错 X-No- 而各被拦过一次。
- 本插件是跟着官方客户端做字节级模仿,属于猫鼠游戏:上游改一次,插件就可能失效一次,直到有人再适配。没有任何版本能保证长期可用。
- 账号风险真实存在:本轮排查中,一个 CN 账号的 refresh token 被上游吊销(invalid_grant: User disabled),另一个被判定「账号存在异常行为,已被限制使用」(403 / 11140)。频繁重试、批量轮换、异常调用节奏都可能加速这一判定。
- 上游 corrinehu/dsh-workbuddy-connect 已于 2026-10-20 停止维护,明确表示「尊重这一边界,不再继续适配」此类校验,仓库计划 2026-10-22 下线。本仓库曾是这个方向的独立分支,现已归档停止维护(见顶部说明),这条路到这里为止。

请自行评估是否值得用你的账号承担这个风险。 介意的话,直接用官方 WorkBuddy 客户端。

这是 corrinehu/dsh-workbuddy-connect 的分支,不是上游本体。上游 npm 包仍叫 dsh-workbuddy-connect(当前 0.7.8,只认 DSH 0.2.1-rc.2)。本仓库发在 dsh-workbuddy-connect-functy,界面和账号模型都走了另一条线。

国内版 WorkBuddy 与国际版 WorkBuddy AI 同时支持:装哪个 App 就出现哪个模型分组,两个都装就两组并存,各自用自己的账号与积分。

和上游差在哪

对照上游稳定版 0.7.8(2026-10-17)。两边都有的不写进「本仓库才有」。

| | 上游 dsh-workbuddy-connect 0.7.8 | 本仓库 0.13.17 |
| 界面 | 设置里两张旧插件卡片 | 侧栏额度卡 + 中栏仪表盘 + 设置分区页(账号按产品合并成卡片,额度/用量/token/恢复时间都在名字下一行) |
| 账号 | 跟桌面 App 当前这一份登录 | 多账号池:轮换、扫码、令牌、桌面凭证;删除后不会被 30 秒扫描加回来;同一产品的账号合并在一张卡片里 |
| 额度 | 只在设置卡片上 | 侧栏一眼可见,可切「剩余 / 用量」样式,可关掉;设置页每账号显示剩余 / 已用 / 请求数 / token / 恢复时间 |
| DSH | 只 0.2.0-rc.2 | 只 0.2.1-rc.x(见下方「支持的 DSH 版本」) |
| 更新提醒 | 右下角更新条 | 无(未移植) |
| npm | dsh-workbuddy-connect | dsh-workbuddy-connect-functy |

两边都有:国内/国际分组、图片输入、推理档位检测、模型显隐、国内企业额度、选择器里的倍率与促销徽章、Windows Electron 发现、按区域识别 effort 拒绝码。

请求身份:chat 送出的是 WorkBuddy/<v> WorkBuddy/<v> CLI/<v> 的 UA(两服都是 WorkBuddy,不带 AI——两个官方包的网关代理都这么拼)、X-IDE- 归属头、X-Agent-Intent: craft / X-Agent-Purpose: conversation / X-Agent-Type: main / x-codebuddy-request: 1 / X-Private-Data: true,以及共享同一 traceId 的 traceparent + B3 + X-Trace-ID。会话头按官方规则分三层生命周期:X-Conversation-ID 一次会话稳定、X-Conversation-Request-ID 一轮稳定、X-Conversation-Message-ID 每请求新;空闲 30 分钟换会话、10 分钟换轮。chat 不带 Origin/Referer(官方原生客户端也不带),控制台接口仍然带。两服的 chat 头完全相同,只有 URL、X-Domain 和版本号按区域取;请求体差异也只有国际服补 system 消息、去掉 reasoning_effort: off 两条。

展示

对话里直接用 WorkBuddy 模型(输入框显示倍率与推理档位,底栏有用量和额度):

模型选择器按 WorkBuddy / WorkBuddy AI 分组,带倍率与免费标记:

设置页管账号池、周期额度与模型列表:

勾选要出现在选择器里的模型:

功能

- 开箱即用:装上并启用后,对话里直接选 WorkBuddy 模型。插件复用桌面 App 的登录,账号切换会跟。
- 仪表盘:侧栏底部一张额度卡,点开中栏看完整面板;设置 → DSH-WorkBuddy 管账号、模型、上下文长度和推理档位检测。卡片本身可以关掉。
- 多账号轮换:同一产品可放多个账号。请求在可用账号之间轮换;被上游限流的会暂时搁置,稍后自动重试。添加方式:扫码、网页令牌、桌面端凭证。
- 额度:侧栏可显示剩余额度或「已用 / 总量」;国内企业账号走企业计费接口。
- 图片输入:多数模型支持粘贴或拖入图片。
- 推理档位:上游声明了的直接显示。没声明的,Web / Desktop 可在选择器里点「推理等级」手动检测(会发少量请求,可能扣积分)。
- 模型显隐:按登录账号分别保存。隐藏只影响选择器,已有会话不受影响。

安装

前置:已安装并登录 WorkBuddy 桌面 App(国际版同理)。核心必须对上,否则 DSH 起不来。

⚠️ 此次更新跨度较大,并未经过充分测试,更新后可能出现显示问题以及其他更严重的问题。
升级前建议备份 ~/.dsh(尤其 .workbuddy-.json 状态文件与 profiles/<profile>/cordis.patch.yml)。

本版另有两处不兼容变化:entry id 改为 llm-workbuddy-functy;locale 命名空间改为 settings.workbuddy.functy / panel.workbuddy.functy。与上游 dsh-workbuddy-connect 同时安装会因 provider id 冲突导致发消息失败,请只保留一个。

支持的 DSH 版本(只此一条线)

| 版本 | 是否支持 | 说明 |
| 0.2.1-rc.x(实测 0.2.1-rc.2) | ✅ 支持 | 本版按这条线的 kernel 与 pi-ai 1.1.0 编译并实测 |
| 0.2.0-rc.x | ❌ 不支持 | 其 dsh-llm-pi-ai 基于 pi-ai ^0.87.1,与本版锁定的 1.1.0 冲突,进程里会同时存在两代 pi-ai,请求在发出 HTTP 之前就报 PI_AI_ERROR |
| 0.1.7-alpha.x | ❌ 不支持 | 同上,那一线基于 pi-ai ^0.85.1 |
| 0.2.1 之后的 prerelease | ⚠️ 未验证 | peer range 不接受,需要显式改动 |

peerDependencies 已收窄到 ^0.2.1-rc.1 与 @earendil-works/pi-ai ^1.1.0,所以在装错的宿主上包管理器会直接拒绝安装,而不是装完才发现模型不能用。

本版 0.13.17 只支持 DSH 0.2.1-rc.x(实测 0.2.1-rc.2)。不要装在 0.1.7-alpha.x 或 0.2.0-rc.x 上 —— 原因见下。

不要装 npm 上的 dsh-workbuddy-connect。 那是上游包,和本仓库不是同一条线。

从界面安装

DSH 的 添加插件 对话框接受:npm 包名(可带版本)、Git 地址、tarball、或本机绝对路径。

1. 打开 设置 → 插件(有的客户端写「扩展管理」)。
2. 选 添加插件。
3. 填下面任一标识,确认:

dsh-workbuddy-connect-functy

或:

github:functy23/dsh-workbuddy-connect-functy

4. 装完刷新页面;没生效就重启 DSH 客户端。桌面 App 由它自己拉起 profile,不要用 dsh --profile desktop 当启动命令。

从命令行安装

把 <profile> 换成实际 profile(web / desktop)。

从 npm(推荐):

dsh plugin --profile <profile> add dsh-workbuddy-connect-functy

从 GitHub(仓库里已有预构建 lib/,git 安装不会跑 prepack):

dsh plugin --profile <profile> add github:functy23/dsh-workbuddy-connect-functy

Web
dsh plugin --profile web add dsh-workbuddy-connect-functy
dsh web

Desktop(DSH 0.2+ 才让 CLI 管 desktop profile)
dsh plugin --profile desktop add dsh-workbuddy-connect-functy

DSH 0.2 之前 CLI 不接受 desktop profile,请走上面的界面安装。套壳桌面 App(如 DSH NEXT)的 CLI 入口是自带的 desktop-cli,它要求 PATH 上有 pnpm。

配置入口:

设置 → 模型 ← 不显示 WorkBuddy 两行(有意如此)设置 → 内置插件 → workbuddy-connect ← 只读运行状态,不是配置入口侧栏底部 ← 额度卡,点开中栏仪表盘设置 → DSH-WorkBuddy ← 账号、模型、侧栏显示聊天模型选择器 ← WorkBuddy / WorkBuddy AI 分组

命令行

CLI 二进制仍叫 dsh-workbuddy-connect(和 provider id 一样没改,避免已装用户的脚本对不上):

dsh plugin --profile <profile> exec dsh-workbuddy-connect status
dsh plugin --profile <profile> exec dsh-workbuddy-connect accounts
dsh plugin --profile <profile> exec dsh-workbuddy-connect doctor

默认国内版;加 --provider workbuddy-ai 走国际版。accounts 只读。logout 只删插件自留副本,不动桌面 App 的登录。

已知限制

- 在 macOS 的 Web / Desktop 下验证过(DSH 0.2.1-rc.2,Node 22+)。Windows 依次探 Local 与 Roaming AppData;WSL 优先读挂载的 Windows 用户目录。用户名不一致时用 WORKBUDDY_AUTH_FILE / WORKBUDDY_AI_AUTH_FILE。
- 侧栏两个显示偏好要宿主能写设置;状态文档没有对应字段时,设置页不画开关。
- 国际版模型目录来自 App 界面接口,属私有实现,可能失效;届时按「本账号上次成功目录 → 内置目录」降级。
- 国际版企业计费未验证;无凭据时该版模型分组不再显示。
- 依赖 WorkBuddy 客户端接口,App 更新后插件可能要跟。
- 网关的渠道校验是最容易失效的一环:它按「请求是否像官方客户端」判定,判定维度在增加(系统提示词开头、X-Conversation- 三件套、acp-connection-id、X-No- 的用法)。上游改一次,插件就可能整体不可用,直到有人再适配。
- 本插件当前按官方客户端的字节级特征做对齐,不做任何风控规避(不改 IP、不伪造设备指纹、不做批量注册)。因此上游若引入新的维度(设备、频率、签名),本插件不会尝试绕过。

免责声明

仅供个人学习研究,只驱动使用者自己的账号在本机调用。遵守 WorkBuddy 服务条款;后果自负。与腾讯、WorkBuddy、DeepSeek 均无关联。

关于封禁与稳定性的明确说明(不重复上方风险框,只补可操作的部分):

- 本插件通过模仿官方客户端的请求特征来通过网关校验。这类校验属于对方单方面随时可变的机制,本仓库无法承诺任何可用性期限,也不保证你的账号不会因此被限制或封禁。
- 上游自 2026-10-20 起收紧后,社区里已出现账号被限制的实例(含本仓库排查过程中的两个)。建议只用自己的账号、控制调用频率、不要用于批量或多开场景。
- 如果出现 400 / 11128,先确认是不是上游又换了校验维度,而不是急着反复重试 —— 重试本身可能加速风控判定。把 requestId 附在 issue 里比反复试更有用。
- 不提供任何规避风控、批量注册、多账号池规模化使用的支持。

致谢

- corrinehu/dsh-workbuddy-connect(MIT)— 上游本体。
- Mars-Sea/dsh-commandcode-provider(MIT)— 设置页、仪表盘与账号行的布局。
- franksong2702/dsh-codex-connect(Apache-2.0)— 插件结构与输入框「推理等级」控件的参照。
- Sliverkiss/workbuddy2api(MIT)— 上游协议参照。

许可证

MIT © 2026 Corrine Hu and Functy
预览分享卡片长什么样 ↓functy23/dsh-workbuddy-connect-functy
分享 · DeepSeek Harness Hub
functy23/dsh-workbuddy-connect-functy

【已归档】上游风控持续加强、UA/请求头格式频繁变动,适配已难以为继。后续开发移步

回到顶部