@vithrive/dsh-workbench-menu
v0.1.0
Published
工作台 Workbench:DeepSeek Harness 侧边栏「新会话」下方的功能/插件统一入口容器(下拉收纳式工作台)
Readme
@vithrive/dsh-workbench(工作台 / Workbench)
DeepSeek Harness 侧边栏「新会话」下方的功能 / 插件统一入口容器。以插件形式实现,纯增量、不改官方插件。
是什么
- 在左侧栏 「新会话」按钮正下方 增加一个 工作台 / Workbench 按钮。
- 点击按钮后自动下拉出已注册的功能选项。
- 点击某个选项即可打开对应的功能页面/面板:
- 注册项提供
onOpen回调时,由该插件打开自己的对话框 / 视图(如 chicheng-cron 的定时任务); - 注册项提供
url时,Workbench 在应用内浮层中打开该页面,不跳离 DSH。
- 注册项提供
- 自动“收纳”当前已有的 chicheng-cron 定时任务 入口:检测到
[data-dsh-cron-host]后,把原生定时任务按钮从侧边栏隐藏,并作为 Workbench 下拉项提供。 - 侧边栏为窄 rail(折叠)状态时,点击 Workbench 会弹出浮层菜单,不依赖侧边栏宽度。
安装(本地开发验证)
# npm 正式安装
cd ~/.dsh
dsh plugin --profile web add "@vithrive/dsh-workbench"
# 本地开发/源码验证(目录名仍可叫 dsh-workbench)
dsh plugin --profile web add "link:../../plugins/dsh-workbench"安装后重启 dsh web 并刷新页面。
第三方插件如何接入
无需直接依赖本包;在客户端插件中向全局注册表登记即可:
const wb = window.__dshWorkbench__
if (wb) {
wb.register({
id: 'my-feature', // 唯一 id
label: '我的功能', // 下拉显示名
description: '一句话说明', // 可选
icon: '⚡', // 可选:字符串 emoji、React 元素、或 (size)=>ReactNode
order: 10, // 可选:越小越靠前
onOpen: () => {
// 在这里打开你自己的功能对话框 / 面板 / 页面
},
// 或者提供 URL 页面,由 Workbench 内嵌打开:
// url: '/api/xxx/page',
})
}如果插件可能在 Workbench 之后加载,可同时监听一次 window.__dshWorkbench__ 变为可用:
function ensureWb(cb) {
if (window.__dshWorkbench__) return cb(window.__dshWorkbench__)
const timer = setInterval(() => {
if (window.__dshWorkbench__) {
clearInterval(timer)
cb(window.__dshWorkbench__)
}
}, 300)
}API
wb.register(entry):注册一个工作台选项;返回注销函数。wb.unregister(id):注销选项。wb.getItems():获取当前选项快照。wb.subscribe(fn):订阅选项变化。
目录结构
plugins/dsh-workbench/
package.json
cordis.patch.yml
README.md
LICENSE
lib/
index.js # 服务端 half(本插件为空实现,能力在客户端)
client.js # 客户端 half(ModuleLoader 单文件)License
MIT
