DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

cnskycn /

dev-workbench

Topic repository only

DSH (DeepSeek Harness) plugin dev workbench: draft/publish/rollback safety

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@1575d376

🛠 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

脚本会自动:

  1. 将 lib/ 复制到 DSH web 档案的 node_modules/dev-workbench/
  2. 在 ~/.dsh/profiles/web/cordis.patch.yml 追加 insert: dev-workbench
  3. 重启 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()),否则坏插件仍可能卡死启动。详见下文「崩溃自愈」。


🚀 使用

插件开发安全流程

  1. 新建草稿:在工作台点击「+ 新建草稿」,填写插件名,粘贴 package.json / lib/index.js(host)/ lib/client.js(browser)三个文件内容,保存草稿。
  2. 草稿验证:草稿仅存于 ~/.dsh/dev-plugins/,不会写进 cordis.patch.yml,即使写坏也不影响 DSH 启动。
  3. 一键发布:验证无误后点击「发布」,草稿被复制为永久插件并写入 cordis.patch.yml。
  4. 回滚:若发布后发现问题,在工作台一键「停用」(写 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)。

本插件遵循三条安全原则:

  1. inject 为空数组 —— 不声明任何服务依赖,避免因 styles 等服务不存在而 pending。
  2. 不注入 UI slot —— UI 用原生 DOM 实现,不触碰 single 槽位(如 settings.trigger、conversation.hero.workspace),不与官方插件冲突。
  3. 所有 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

MIT

—/ 5

No ratings yet

Manifest verification required

Commit 1575d376084b

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout