前言¶
DeepSeek Harness(DSH)的理念是“一切皆插件”。在 Web UI 中扩展右侧面板时,常见的痛点是面板的入口依赖于特定 Tab 插件的按钮,导致通用性不足。dsh-right-dock 解决了这个问题,它提供了一个容器级的常驻入口,让其他插件能够通过坐席机制挂载标签页,且面板采用推挤模式,不会遮挡主对话区。
插件介绍¶
dsh-right-dock 是 DeepSeek Harness Web UI 的右侧栏平台。该插件由 Momojie-S 维护,采用 MIT 许可证。
它通过右缘常驻的图标 Rail(类似 VS Code 的 activity-bar)提供容器级入口。当 Dock 打开时,面板会向左侧推挤对话区域,压缩主区宽度而非遮挡;在窄屏模式下(<1024px),面板会自动切换为浮层抽屉。其他插件可以通过 rightdock.tab 坐席挂载自己的标签页。
环境要求¶
- DeepSeek Harness:
>= 0.1.0-rc.6(已验证至0.1.1-rc.2) - Node.js:
>= 20(仅构建期需要,构建过程零 npm 依赖)
核心功能¶
- 容器级 Rail:右缘常驻图标 Rail,有 Tab 时显示。点图标可打开/切换 Dock,点当前激活图标可收起。Rail 在 Dock 关闭后依然存在。
- 推挤式 Dock:面板与 Rail 并排布局。宽屏下 Rail 固定占用 40px,Dock 打开时再向左推挤主对话区。
- 多标签挂载:允许其他插件通过
rightdock.tab坐席注册标签页。 - 响应式抽屉:窗口宽度小于 1024px 时,Dock 自动变为浮层抽屉,点击背景可关闭。
安装与启用¶
在项目目录下执行安装命令,然后启动 Web 服务。
dsh plugin --profile web add ./plugins/dsh-right-dock
dsh web
使用方法¶
插件提供了 rightdock 服务供其他插件调用。
1. 挂载标签页¶
插件作者通过 slots.inject 注册标签页,并利用挂载回调中的 ctx.get('rightdock') 设置图标和渲染逻辑。
// 你的插件 client 部分
const inject = ['slots']
function apply(ctx) {
const slots = ctx.get('slots')
slots.inject('rightdock.tab', () => {
// 挂载回调触发时 dock 服务必然已就绪
const dock = ctx.get('rightdock')
// 设置标签页图标
dock?.setTabIcon('my-tab', MyIcon16)
// 注册标签页内容
return slots.register(
{
name: 'rightdock.tab',
id: 'my-tab',
order: 10,
label: '我的标签'
},
(props) => {
// props.activeTabId: 当前激活的 tab id
// props.dockWidth: 宽屏模式下的宽度
return React.createElement('div', {
style: {
display: props.activeTabId === 'my-tab' ? 'flex' : 'none',
height: '100%'
}
}, '...')
}
)
})
}
2. 控制面板¶
任意插件的 client 部分可以通过获取服务来控制 Dock 的打开、切换或关闭。
// 获取 dock 服务(未安装时为 undefined)
const dock = ctx.get('rightdock')
// 打开指定标签页
dock?.openTab('my-tab')
注意事项¶
- 已废弃:该插件已于 2026-09-11 标记为废弃。DSH 0.1.5 重构了侧栏体系,提供了官方的
rightbar槽位与内置面板。建议新开发的 0.1.5+ 面板类插件改用官方侧栏槽位体系。 - 权限与安全:作为 DSH 进程运行,安装前请检查源码与许可证。
结尾¶
dsh-right-dock 曾是构建 DSH Web 右侧面板的一种实现方案,其推挤式布局和容器级入口的设计具有一定的参考价值。随着 DSH 生态的发展,目前推荐使用官方 0.1.5+ 版本的 rightbar 体系。更多技术细节可参考 GitHub 仓库。