cnskycn / dev-workbench

목록에 있음

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

main기타 소스 보기

설치

npx -y @deepseek-ai/dsh plugin --profile web add github:cnskycn/dev-workbench

이 설치 명령은 GitHub 저장소 주소에서 생성된 확인되지 않은 시작점입니다.

README

유지 관리자가 작성한 문서 스냅샷입니다.

GitHub에서 보기 ↗
커밋 1575d37동기화 2026. 8. 18.

🛠 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.jsbootServer()),否则坏插件仍可能卡死启动。详见下文「崩溃自愈」。


🚀 使用

插件开发安全流程

  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.triggerconversation.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

저장소 정보

언어
JavaScript
라이선스
MIT
마지막 업데이트
2026. 8. 17. PM 2:15

신중하게 설치하기

소스 코드, 권한, 수명 주기 스크립트, 의존성 및 네트워크 접근을 검토하고 신뢰하지 않는 플러그인은 격리 환경에서 테스트하세요.