安装
npx -y @deepseek-ai/dsh plugin --profile web add github:cnskycn/dev-workbench此安装命令根据 GitHub 仓库地址生成,是未经验证的安装起点。
README
维护者编写的文档快照。
🛠 dev-workbench
DSH (DeepSeek Harness) 插件开发工作台
解决开发 DSH 插件时的死循环难题:永久插件一旦写坏(例如抢占官方 single 槽位、语法错误、注入不存在的服务),会导致 DSH 重启后无法启动、无法自愈。本工作台提供草稿验证 → 一键发布 → 一键回滚/停用/卸载的安全开发流程,配合桌面端自带的崩溃自愈 / 安全模式,让坏插件永远卡不死 DSH。
Topic:
dsh-plugin· 平台: DSH web 档案 · 语言: JavaScript (ESM)
✨ 功能
| 功能 | 说明 |
|---|---|
| 草稿验证 | 在 ~/.dsh/dev-plugins/<name>/ 开发测试,不写入 cordis.patch.yml,零污染 |
| 一键发布 | 草稿验证通过 → 复制到 node_modules/<name> + 写入 cordis.patch.yml(永久生效) |
| 停用 / 启用 | 坏插件一键 disabled: true 停用,立即失效,可随时恢复 |
| 彻底移除 | 一键删除 patch 条目 + 包文件 + 草稿 |
| 触发热加载 | 修改配置后请求 loader 热重载,尽量免重启 |
Web UI 以原生 DOM 浮动按钮(右下角 🛠)注入,inject 为空数组,不依赖任何 UI slot、永不 pending、永不崩溃——这是它区别于普通皮肤插件的关键安全设计。
📦 安装
方式一:脚本一键安装(推荐)
node install.js
脚本会自动:
- 将
lib/复制到 DSH web 档案的node_modules/dev-workbench/ - 在
~/.dsh/profiles/web/cordis.patch.yml追加insert: dev-workbench - 重启 DSH(或硬刷新页面 Ctrl+F5)
方式二:手动安装
# 1. 复制包到 DSH web 档案
cp -r lib ~/.dsh/profiles/web/node_modules/dev-workbench/lib
cp package.json ~/.dsh/profiles/web/node_modules/dev-workbench/
# 2. 在 cordis.patch.yml 追加(若尚未存在)
# - insert:
# - id: dev-workbench
# name: 'dev-workbench'
# 3. 重启 DSH
安装后,网页右下角出现 🛠 按钮,点击打开工作台面板。
需要 DSH 桌面端已启用崩溃自愈 / 安全模式(
electron/main.js的bootServer()),否则坏插件仍可能卡死启动。详见下文「崩溃自愈」。
🚀 使用
插件开发安全流程
- 新建草稿:在工作台点击「+ 新建草稿」,填写插件名,粘贴
package.json/lib/index.js(host)/lib/client.js(browser)三个文件内容,保存草稿。 - 草稿验证:草稿仅存于
~/.dsh/dev-plugins/,不会写进cordis.patch.yml,即使写坏也不影响 DSH 启动。 - 一键发布:验证无误后点击「发布」,草稿被复制为永久插件并写入
cordis.patch.yml。 - 回滚:若发布后发现问题,在工作台一键「停用」(写
disabled: true)或「移除」(彻底删除),无需手改文件。
REST API
Host 端注册于 /api/dev-workbench/*:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/dev-workbench/status | 列出已装插件 + 草稿 + 状态 |
| POST | /api/dev-workbench/save-draft | 保存/新建草稿 {name, files} |
| POST | /api/dev-workbench/publish | 发布草稿为永久插件 {name} |
| POST | /api/dev-workbench/disable | 停用 {id} |
| POST | /api/dev-workbench/enable | 启用 {id} |
| POST | /api/dev-workbench/remove | 彻底移除 {id} |
| POST | /api/dev-workbench/hot-reload | 请求配置热加载 |
🧠 设计原理与安全性
DSH 插件通过 cordis.patch.yml 的顶层 - insert: 块在启动时被 loader 加载;insert 条目支持 disabled: true 停用;id 行支持带或不带引号(如 id: mc-skin)。
本插件遵循三条安全原则:
inject为空数组 —— 不声明任何服务依赖,避免因styles等服务不存在而pending。- 不注入 UI slot —— UI 用原生 DOM 实现,不触碰
single槽位(如settings.trigger、conversation.hero.workspace),不与官方插件冲突。 - 所有 handler try/catch 兜底 + 模块级路由去重 —— 即使热重载(disable→enable)也不会触发
duplicate exact route错误。
🛟 崩溃自愈(配套桌面端机制)
dev-workbench 解决"日常安全开发";electron/main.js 的崩溃自愈解决"已写坏导致起不来"的最后一层:
- 启动失败(服务器起不来 / 进程秒退)且存在第三方插件时,自动生成
.safe-boot.patch.yml临时禁用全部第三方插件,用--patch重启进入安全模式。 - 支持草稿临时层
~/.dsh/dev-plugins.active.yml作为--patch叠加(不污染cordis.patch.yml)。 - 正常退出写入
.last-boot.json,用于下次启动的崩溃检测。
两者配合:日常用工作台安全开发,意外崩溃由桌面端自动进安全模式兜底。
📄 License
仓库信息
- 开发语言
- JavaScript
- 许可证
- MIT
- 最后更新
- 2026年8月17日 14:15
谨慎安装
请检查源代码、权限、生命周期脚本、依赖与网络访问;不受信任的插件应先在隔离环境中测试。