dsh-collab:在 DSH 里做多用户协作房间

前言

用 DeepSeek Harness(DSH)做智能体开发时,多人往往各自开着本地 DSH:讨论、任务分工、改代码、审变更,只能靠即时通讯或 issue 来回贴,很难和「当前工作区里正在跑的那一轮 Agent」对齐。若把整台 Host 的 DSH UI 或文件系统暴露给协作者,边界也不好控。

dsh-collab(npm 包名 @kanchengw/dsh-collab)由维护者 kanchengw 发布,分类为工作流,在 DSH 里增加仅限受邀用户的协作房间:同一安装包在运行时区分 Host(房间工作区、邀请、Gateway、唯一权威的 Host Agent 会话)与 Participant(从本机 DSH 加入,共享工作区,并可做不移交房间权限的私有 Side Work)。它不暴露 DSH UI 监听端口,也不让 Participant 直接访问 Host Agent 或 Host 文件系统。项目状态为 pre-1.0;当前 MVP 每个 DSH 实例只支持一个活跃房间。依赖 DSH 0.2.0-rc.2,非 0.2.x 线版本不在此快照的兼容目标内。

这是什么

一句话:dsh-collab 是面向 DSH 的多用户协作房间插件,讨论、任务、变更集与审阅都落在房间工作区与 DSH 原生左右侧栏里。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。安装插件前,插件以当前 DSH 进程权限运行,宜自行查看源码与许可证。

核心功能

README 中已写明的能力如下(房间界面按 Activity / Tasks / Changes / Reviews 组织,嵌入 DSH 左右 Sidebar):

  • 从 Git 工作区创建仅限邀请的协作房间。
  • 在房间内共享讨论与工作进展。
  • 创建任务、关联 ChangeSet、指定审阅者并批准变更。
  • 双向发布并同步带版本的工作区快照。
  • 通过 Host 控制的 apply 流程审阅并应用变更。
  • Participant 可在本机 DSH Agent 上运行私有 Side Work,不转移房间权威。
  • 经可信私有网络、EasyTier 虚拟网络,或用户自备的 wss:// 端点连接。

同一包装在各机器上,角色由本地可信会话与 token 证据在运行时选定,而非单独的 Participant 构建或预分配端口。Collab Gateway 是独立的 HTTP/WebSocket 监听,仅服务 /collab,负责邀请与房间 token 鉴权、权限、事件账本与审批;不代理 DSH UI 或通用 DSH API。反向代理或隧道由用户自备,仅在 Host 选择公网 wss:// 时需要。

Host 从 Git 目录创建 Room Workspace;初始快照包含已跟踪与未被 ignore 的未跟踪文件,合计上限 1 GiB;忽略项与 .git 元数据不包含在内。Participant 也可发布工作区版本;房间保存版本历史、ChangeSet 与审阅状态。勿把凭据放在被 Git 跟踪、会进入协作快照的文件里。

环境要求

组件 要求
DSH 0.2.0-rc.2
Node.js >=22(CI 使用 Node.js 24)
pnpm 11.19.0
Host 工作区 Git 仓库
EasyTier 模式 Windows 下首次使用需准备 no-TUN 制品

安装与启用

插件面向 DSH web profile。安装后需重启或重载 DSH;插件使用 DSH 原生目录选择器,不另提供 Electron 或浏览器目录选择器。

从 npm 安装

dsh plugin --profile web add @kanchengw/dsh-collab

若 DSH 从源码检出运行,使用该检出目录下的 CLI:

pnpm dsh plugin --profile web add @kanchengw/dsh-collab

从源码构建后本地加入

git clone https://github.com/kanchengw/dsh-collab.git
cd dsh-collab
corepack enable
pnpm install --frozen-lockfile
pnpm build
dsh plugin --profile web add (Get-Location).Path

典型用法

Host:建房间并邀请

  1. 打开原生 DSH 会话并选择一个 Git 工作区。
  2. 在左侧栏打开 Collab Rooms,创建房间工作区。
  3. 在 Collab 设置中选择 Private network、EasyTier virtual network 或 Custom WSS endpoint。
  4. 分享房间并创建邀请。
  5. 经可信渠道把邀请发给协作者。

同一邀请在 一小时内 可被多名 Participant 接受,应视作房间密码妥善保管。

Participant:凭邀请加入

  1. 安装相同版本的 dsh-collab。
  2. 打开 Collab Rooms,粘贴邀请。
  3. 填写显示名称并加入。
  4. 等待初始工作区快照下载完成(加入界面会显示文件数与总大小)。
  5. 打开房间绑定的 DSH 工作区,在共享文件上协作。

已有活跃房间时不能同时再加入另一房间;需先停止或断开当前房间。Participant 重启后不会自动重连,需要时使用 Connect。

连接模式怎么选

模式 适用情况 说明
Private network Host 与 Participant 在同一可信 LAN、VPN 或 overlay 经 ws:// 通告可达私有 IP
EasyTier virtual network 跨网可达且 Host 无公网地址 可选虚拟网;社区共享节点为 best effort
Custom WSS endpoint Host 自备 TLS 反向代理或隧道 插件不创建或运维该端点

明文 ws:// 仅接受回环、RFC1918/链路本地、100.64.0.0/10、ULA 及 IPv6 链路本地;公网 IP 与主机名需用户自备 wss://。安装插件、启动 DSH 或列出已保存房间本身不会下载 EasyTier、不会启动 Gateway;仅在有明确的分享或加入动作时才会启动 EasyTier。

持久化、安全与当前限制

Host 房间状态默认位于 DSH_HOME/collab/v1/state.json;其中不保存邀请密钥、短效房间 token 与 Participant 简历凭据原文,而是保存 durable resume 凭据的 SHA-256 摘要及房间/成员绑定。畸形或不支持的 Host 状态文件会阻止 Gateway 启动,而不会静默覆盖房间历史。暂停或移除成员会撤销当前房间 token 与 durable resume 凭据。

安全上:勿暴露 DSH UI 监听;邀请与房间 token 为 bearer 凭据,勿贴到公开 issue、截图或日志;Participant 无法访问共享 Room Workspace 之外的 Host 文件系统。漏洞请按仓库 SECURITY.md 私下报告。

当前限制(README 摘录):每个 DSH 实例一个活跃协作房间;每房间一个权威 Host Agent 队列;Host 工作区必须为 Git;工作区快照合计上限 1 GiB;EasyTier 每实例一个活跃 EasyTier 房间,社区共享节点可用性不保证;无内置中继、CA、公网隧道或路由器协同。

结尾

若你需要在各自本地 DSH 上协同同一 Git 工作区、走任务与 ChangeSet 审阅,又不愿把 Host 整机的 Agent 与 UI 开放出去,dsh-collab 把协作收拢在独立 Gateway 与房间工作区里,是 DSH 0.2.0-rc.2 线下可安装的 workflow 类插件。

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

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

Xiaoye