DSH WorkBuddy Connect
corrinehu/dsh-workbuddy-connect将 WorkBuddy 桌面 App 包含的模型自动接入 DeepSeek Harness,在 DSH 对话窗口里零配置使用。
把本机已安装的 ZCode CLI 接成 DSH 的 `zcode` 模型路由:流量全部由官方二进制签名,插件自身不发请求、不伪造客户端请求、不把凭据传出本机(plan token 只在内存中解密并交还官方 CLI),不需要 API Key,付费一次性与免费 app-server 两条通道并存;v0.3.0 起内建 HTTP MCP 工具桥,工具调用走 DSH 的审批面;有契约文档与 node --test 测试门禁背书。
DSH 的 safe provider:把本机 ZCode CLI(zcode.cjs,ZCode 0.17.0)作为一个 zcode 路由接进 DSH 的 LLM 层。一个 LlmAdapter,无运行时依赖(dependencies 为空),Node ≥ 22。
这个插件的三件事(三件全部成立,第三件分两步走):
toolPolicy 非 dsh-owned 或桥起不来时自动退回 CLI 主导形态。审批走 DSH 现役审批面(桥的执行带 Agent 句柄);toolAllowlist/toolDenylist 为配置透传,语义未在本机实测验证。DSH 生态里接第三方模型的插件,本质差异只有一个问题:谁来当 harness。harness 指「工具怎么执行、多步循环怎么走、上下文怎么管」这三件事。三类插件正好站在光谱两端:
· 本插件(当前版本) · 自建 harness 类第三方 provider 插件 · 抽 token 反代类插件 模型额度来源 · ZCode CLI 官方二进制 · 各自的官方 CLI 二进制 · 逆向出的私token harness 归属 · v0.3.0 起工具执行归 DSH(MCP 桥;整轮编排仍由 ZCode 驱动) · DSH 主导 · 插件自建 工具执行 · DSH 工具管线(MCP 桥回传;dsh-owned 时生效) · DSH 工具管线(审批/沙箱全生效) · 插件自实现 网络请求 · 官方二进制签发 · 官方二进制签发 · 插件伪造客户端直连 风控/封号面 · 无 · 无 · 有(如 ZCode 通道 405 [3012] 惩罚阶梯) DSH harness 增强(审批、沙箱、子代理、压缩) · 审批生效(MCP 桥带 Agent 句柄走 DSH 审批面);沙箱/子代理/压缩仍未接 · 全部生效 · 部分自实现
为什么曾经是「CLI 主导」——旧判断与它的实测推翻。 本插件最初判断「ZCode 不卖裸模型接口」:它只卖「跑一轮任务」(-p 一次性 / app-server 会话),额度又绑定官方签名通道,看起来没有把 DSH 工具 schema 投进去的通道。这个判断已被实测推翻(2026-10-26 probe5:免费套餐上的模型经 MCP 桥成功调用工具)。v0.3.0 起 MCP 工具桥已产品化:插件把桥挂在自己的 loopback 路由上,经 session/create 的 mcpServers 参数注册给 ZCode(协议取自 zcode.cjs schema 取证,stdio/http 两形 union),DSH 工具经 HTTP 桥回传执行。toolPolicy 非 dsh-owned、或桥启动失败时,自动退回「整轮委托给 ZCode、DSH 只做壳层」的旧形态——桥的任何失败都是降级,不是报错。
DSH 市场里已有两条同走官方 CLI 委托路线的 ZCode 插件,都是认真维护的作品,收录本插件前先说清它们为什么不同:
dsh-zcode-cli-proxy / dsh-zcode-plan-bridge:单路线常驻 app-server(Start Plan 账号注入),真流式,跟进 ZCode CLI 新版(3.16.x)与 DSH 0.2.1 更激进。适合想让 ZCode 会话常驻、跟进新 CLI 的用户。docs/dsh-provider-contract.md)背书。适合要付费/免费可切、看重可测契约与 fail-closed 语义的用户。zcode 只是 DSH 模型列表里的一行——同一会话随时切回 DSH 原生 provider,ZCode 留作纯文本任务的额度补充。-p 子进程;免费起步套餐走 app-server 通道(插件把账号表注入进程、plan token 只在本机内存里交还官方 CLI 使用),两条都是官方二进制自签。--mode guarded 非交互行为依旧未实测(见已知限制)。toolAllowlist/toolDenylist 只是配置透传,是否真收窄 ZCode 的模型可见工具面未在本机实测验证(probe8 因 provider 路由不通未拿到模型侧工具面)。ZCode 作为 MCP 客户端的实际行为(工具命名、调用频率)同样未实测。-p 路线超长历史直接报错而不截断——宁可失败不答错题。免费路线走 stdin 无此限制。--model/--effort,付费路线下模型目录是静态的两个 id;免费路线经 app-server 真实下发。-p 一次性交给 zcode.cjs(恒带 --mode guarded),免费路线经 app-server session/send。StreamChunk 顺序投影(block-start → delta* → block-end → usage → finish),空输出与不可识别输出永不静默成功。tools、temperature/maxTokens/非空 stop、reject 政策下的 image/file block,各配稳定错误码。passEnv,宿主其他变量不外泄;NODE_OPTIONS 强制并入 ipv4-first DNS 修复,未知 flag 丢弃不透传。GET/POST /plugins/dsh-zcode-cli/state;「套餐」下拉自 2026-10-25 起是传输选择(免费=app-server,付费=-p),两者都是官方 CLI 子进程。不做什么:不做模型发现(ZCode 没有免配额的模型列表)、不猜计费(150% 倍率无服务端读数前不宣称)、不伪造 sessionId、不写 ZCode 的 setting.json / provider_config.json。
pwsh -File scripts/install-env.ps1 看 dry-run,确认后 pwsh -File scripts/install-env.ps1 -Apply(已存在且不同的变量默认跳过,需 -Force 覆盖)。package.json dependencies 与 cordis.patch.yml 里加本包条目(改前备份)。细节、契约表与实测基线见 docs/dsh-provider-contract.md。
node scripts/run-tests.mjs # AC11 行尾 → tsc --noEmit → build → tsc client → build:client → 包入口点 → 测试面计数 → node --testtests/ 下 15 个 *.test.mjs;脚本里的显式清单、docs/dsh-provider-contract.md 的「测试面」计数与磁盘实点三者必须一致,否则门禁在跑测试前就停。用例总数同样锁死(194,EXPECTED_TEST_CASES 与文档「测试用例」行),删掉一个 test() 块也会让门禁变红。MCP 工具桥由 tests/mcp-bridge.test.mjs 覆盖(协议握手、loopback/token 门禁、schema 校验、agent 平面解析、fail-closed 降级)。免费路线由一个实现了 app-server 协议的 fake CLI 端到端覆盖(流式/短答/resume/死会话/准入),浏览器半边字面量由 tests/client.test.mjs 逐项钉住。
toolPolicy: reject 只拒绝下发 DSH 的工具 schema,关不掉 ZCode CLI 内部的工具能力;--mode guarded 下 CLI 内部工具行为未验证。本 provider 不宣称「工具已禁用」。-p 形态把整轮 prompt 放进 argv,同机其他进程可读。不要把凭据写进 prompt。1309(套餐到期),-p 成功时的 stdout 形状、sessionId 获取、guarded 非交互行为、150% 计费均无读数(免费路线的 app-server sessionId 已可用)。sessions.json 用带 pid + uuid 的临时名 + rename,无跨进程锁。完整清单(L1–L10)见 docs/dsh-provider-contract.md 的「已知限制」。