dsh-zcode-native:把 ZCode 桌面端接进 DSH 派活闭环

前言

在 DSH(DeepSeek Harness)里跑智能体时,常见做法是换模型、接 MCP,或自己写子进程通道。若你已经在 macOS 上用 ZCode 桌面 app 做项目级编码,又希望 DSH 里的模型能把整段任务交给 ZCode、等它做完再把答案取回,就需要一条不依赖 ZCode CLI 或 stdio 的桥。社区插件 dsh-zcode-native(维护者 ORIOW)走 ZCode 的 CDP 调试端口读写界面 DOM,同时提供本机状态看板与原生子代理工具 subagent_zcode,把「派活—等待—取答」收成闭环。下面介绍它是什么、怎么装、怎么用,以及使用时的硬约束。

这是什么

dsh-zcode-native 是 DSH 的原生插件,分类为工作流。一句话定位:把 ZCode 桌面 app 变成 DSH 的子代理后端 / 派活通道——宿主里的模型可以把完整任务派给 ZCode,完成后取回答案。实现上不依赖 ZCode 的 CLI、stdio 或其他通道;只要桌面上开着带 CDP 端口的 ZCode 即可。

插件在架构上拆成两个半身:

  • host 半身(lib/index.js 等,跑在 DSH 宿主 Node 进程):HTTP 路由(仅 loopback)、CDP 客户端连 127.0.0.1:<debugPort>、只读状态采集、派活状态机、原生子代理 provider(注册名 zcode)。
  • client 半身(lib/client.js,注入 DSH Web 界面):右侧边栏「ZCode 看板」tab、设置卡里控制看板开关的选项。client 只通过同源 HTTP 读 host 路由,不直连 CDP。

目录页:skillhub.cn/plugins/ORIOW/dsh-zcode-native。源码与说明:github.com/ORIOW/dsh-zcode-native(当前发布版本 v0.1.0,许可证 MIT)。社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

核心功能

本机 HTTP 接口(host,仅 loopback)

  • GET /plugins/dsh-zcode-native/status:只读快照,含账号摘要(不暴露 token 正文)、客户端可达性与版本、套餐、catalog 模板等;在 cacheMs 内返回缓存。
  • POST /plugins/dsh-zcode-native/ask:派活。请求体 {"prompt": "..."}(上限 64 KiB),写入 ZCode 输入框并取回答案;多请求在插件内串行排队,生成中会返回 busy。

工具 subagent_zcode

把 ZCode 注册为 DSH 原生子代理后端。模型可见参数只有:

  • description(必填):任务简短描述(3–5 个词);
  • prompt(必填):完整自包含的任务文本(ZCode 看不到当前 DSH 对话)。

取消或超时会尝试点击 ZCode 的「停止生成」,避免空转生成阻塞后续派活。派活前会记录标题栏项目名;中途切换会话会以 session-changed 失败,不会误用其他项目的回答。

侧边栏 ZCode 看板

DSH 右侧边栏出现「ZCode」tab:账号、套餐到期、余额接口可达性(插件实测余额 API 常报参数错误,看板如实显示不可用、不猜测数值)、客户端版本、catalog 模板数等;约每 60 秒自动刷新,也可手动刷新。可在设置卡关闭(偏好存 localStorage,key dsh-zcode-native:sidebar,默认开启)。

配置项

可在 profile 的 cordis.patch.yml insert 块里覆盖(定义于 lib/index.js 的 Config):

字段 类型 默认值 说明
debugPort number 9222 ZCode 的 CDP 调试端口
cacheMs number 15000 /status 快照缓存有效期(毫秒)
askTimeoutMs number 600000 派活等待答案超时(毫秒)

前置条件与安装

环境

  • macOS(Windows / Linux 未验证);DSH Desktop 与 ZCode 3.17.1。
  • ZCode 必须用 CDP 端口启动,且需先完全退出(Cmd+Q)再从终端启动,否则 Electron 单实例会拒绝 --remote-debugging-port:
/Applications/ZCode.app/Contents/MacOS/ZCode --remote-debugging-port=9222

仓库也提供 scripts/zcode-debug.sh(默认 9222,会先退旧实例再启动)。

安装与启用

在 DSH 里装最省事:设置 → 插件 → 安装插件,粘贴:

github:ORIOW/dsh-zcode-native#v0.1.0

等价 CLI(只装依赖,装完还须在插件页勾选启用 dsh-zcode-native):

dsh plugin --profile web add "github:ORIOW/dsh-zcode-native#v0.1.0"

装完重启 DSH Desktop(host 半身不热重载)。开发时可本地 link: 挂载或 .tgz/绝对路径安装,详见 README 的 B、C 两节。

安装前建议自行浏览源码与 MIT 许可证;插件以当前 DSH 进程权限运行,会读取 ~/.zcode/v2/credentials.json 并按 ZCode 同源算法解密信封,token 仅用于本机请求 https://zcode.z.ai 的套餐相关接口,不回显、不进 HTTP 响应。

典型用法

装好后在 DSH 里正常对话即可,模型可调用 subagent_zcode,也可直接 POST /plugins/dsh-zcode-native/ask。README 中的示例意图如下:

用 ZCode 查一下 ~/Projects/foo 里 pnpm test 为什么在第 3 个用例挂掉,把根因和改法带回来。

把这个仓库的 lib/ask.js 通读一遍,列出所有会抛错的分支和它们的错误码。

三条硬规则(ZCode 看不到 DSH 对话):

  1. prompt 必须自包含:路径、验收标准写全,不要用「上面那个文件」。
  2. 派活前让 ZCode 停在目标项目会话:composer 只属于当前可见会话;切走会 session-changed 失败。
  3. 一次一件活:串行队列,忙时新任务为 busy。

默认最多等 10 分钟(askTimeoutMs 可调)。派活日志在 ~/Library/Logs/DSH Desktop/harness.log,关键字 [zcode-native];prompt 与答案正文不进日志,只记长度。

适用场景与注意

适合:已在 macOS 上用 ZCode 3.17.1 做项目编码,希望在 DSH 工作流里把独立子任务(读仓、跑测、通读文件等)交给 ZCode,并在界面侧边栏一眼看到账号与套餐状态。

注意:

  • 插件不会替你启动 ZCode 或切换项目;CDP 端口、目标会话都需你手动准备好。
  • 一次只服务一个 ZCode 会话,派活串行;界面 DOM 随 ZCode 版本变化可能导致选择器失效(当前按 3.17.1 校准)。
  • 所有 HTTP 路由仅接受 loopback,非本机来源 403。

结尾

dsh-zcode-native 把 ZCode 桌面端接成 DSH 的状态看板、CDP 派活闭环与原生子代理后端,适合「DSH 编排 + ZCode 动手」的分工。进一步了解可打开 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜