- Home
- Plugins
- Tools & Capabilities
- dsh-collab
L
dsh-collab
lhenlihai-hub/dsh-collab
Minimal room-based real-time code collaboration plugin for DeepSeek Harness. Install it, enter a room number and password, then collaborate with Yjs.
Install
dsh plugin --profile web add github:lhenlihai-hub/dsh-collabREADME
dsh-collab
English | 中文
DeepSeek Harness (dsh) 插件:极低门槛的多人代码协作。
用户只需要安装插件,打开 dsh 右侧的 👥 面板,输入同一个房间号 + 信任密码,就能开始一起编辑同一个代码缓冲。
- 不需要注册账号。
- 不需要用户部署任何服务器。
- 插件自动启动本地协作服务。
- 默认连接方式会自动尝试公共中继和本机服务。
- 实时协同使用 Yjs(CRDT)。
- 内置最基础的 commit 快照和工作记录。
- 支持一键卸载。
这是刻意保持简单的 MVP/框架:一个房间、一个共享代码缓冲、内存态历史。后续可以加多文件、多项目、持久化。
功能
- 🔢 房间号 + 密码:创建房间后把房间号和密码发给同伴即可加入。
- 👤 随机身份:不注册、不登录,自动生成随机中文名和颜色,可修改。
- ⚡ Yjs 实时协同:多人同时编辑,自动合并冲突。
- 📦 基础 commit:编辑者可以提交当前快照,附上说明。
- 📋 工作记录:自动记录创建房间、加入、离开、提交等事件。
- 🧹 一键卸载:面板底部可以直接卸载插件并提示重启。
- 🌍 内置公共中继配置:用户不需要自己部署;项目维护方只需部署一次公共 relay。
安装
每个参与者只需要在自己的 dsh 中安装同一个插件:
# 从源码目录本地安装
cd dsh-collab
npm install
npm run build
dsh plugin --profile web add link:$(pwd)
# 或发布到 npm/GitHub 后
dsh plugin --profile web add dsh-collab
装完重启 dsh web,右侧会出现 👥 入口。
使用
- 创始人打开 👥 面板。
- 输入一个房间号(例如
1024)和你想设置的信任密码。 - 点击 创建房间。
- 把“房间号 + 密码”告诉同伴。
- 同伴在各自 dsh 的 👥 面板中填入同样的房间号、密码,点击 加入房间。
- 进入后即可实时编辑;编辑者可以填写提交说明并点击 提交 留下快照。
服务器地址默认保持
auto即可。它会自动尝试公共中继,失败时回退到本机/局域网服务。高级用户也可以手动填写其他 relay 地址。
不填密码的人以只读身份加入;填错密码会被拒绝。
一键卸载
打开 👥 面板,拉到底部,点击 一键卸载插件 并确认。
插件会调用 dsh 官方插件管理命令移除自己,然后提示重启 dsh web。也可以手动执行:
dsh plugin --profile web remove dsh-collab
用户零部署说明
插件自身已经包含完整的协作服务:
- 本机服务:每个安装插件的 dsh 都会自动启动
ws://0.0.0.0:47823/relay。 - 公共中继:客户端默认还会尝试项目维护的公共中继地址。这个中继只需要项目维护方部署一次,普通用户不需要做任何部署。
- 自建 relay(可选,仅高级用户):仓库提供
server/relay-server.mjs,项目维护方或高级用户可以部署到任意公网服务器。
发布到 GitHub/npm 前,请把
src/client/app.tsx中的PUBLIC_RELAY_URL改成你实际部署的公共 relay 地址。未部署时auto会自动回退到本机/局域网服务。
因此普通用户的完整路径就是:安装插件 → 重启 dsh → 输入房间号/密码 → 协作。
开发
npm install
npm run build # 产出 lib/index.js(宿主半侧)+ lib/client.js(浏览器半侧)
npm run typecheck # 类型检查
npm run relay # 启动独立公共 relay(可选)
结构
src/
├── index.ts # dsh 宿主半侧:本地 relay + 配置/卸载路由
├── collab-server.ts # 房间/密码/Yjs 同步/commit/工作记录
├── uninstall.ts # 一键卸载实现
└── client/
├── index.tsx # dsh 浏览器半侧入口
├── app.tsx # 房间面板 + 编辑器 + 提交历史 + 工作记录 + 卸载
└── styles.ts
server/
├── relay-server.ts # 独立公共 relay 源码
└── relay-server.mjs # 构建后可直接运行的公共 relay
cordis.patch.yml # dsh 插件 bundle patch
工作原理
- 宿主半侧是标准 Cordis 插件,
inject: ['webServer', 'appExit']。 - 插件启动一个绑定
0.0.0.0的 WebSocket relay,路径为/relay。 - 浏览器半侧默认以
auto方式连接:公共中继优先,本机地址回退。 - 房间内通过 Yjs update 做实时协同。
commit消息会把当前代码快照存入内存并广播给所有成员。event消息形成工作记录。/collab/uninstall仅允许本机访问,并调用官方 dsh CLI 移除插件。
安全说明
- 当前是信任密码模型,密码通过 WebSocket 明文传输,适合可信局域网或测试环境。
- 公共 relay 上,房间密码就是唯一的编辑凭证;请使用足够随机的密码。
- 公网正式使用建议启用 TLS(wss),并考虑后续增加持久化和更完整的账户体系。