dsh-dock
English | 中文
> 面向 DeepSeek Harness Web UI、由插件自行拥有的停靠系统。它为浏览器插件提供稳定的 keyed 面板 slot 和 ctx.dock 服务,无需修改 Harness 仓库。
 
功能
- 支持左侧、右侧、底部和浮动面板,并可将同一区域的面板组成标签组。
- 支持指针与键盘调整大小、拖动标题栏、边缘预览以及
Alt+Shift+方向键停靠。 - 支持延迟分离子项,并在拖动取消时回滚。
- 按会话保存带版本的
localStorage布局,并限制保留的 scope 数量。 - 在低于配置的紧凑断点时折叠侧边面板。
- 面板移动、隐藏或切换标签时保持组件挂载。
- 提供会话标题栏启动器,以及供多面板功能使用的逻辑启动器组。
面板 API
先通过 ctx.dock 注册元数据,再使用相同 id 向 keyed dock.panel slot 提供内容:
const disposePanel = ctx.dock.registerPanel({
id: 'terminal',
title: 'Terminal',
icon: '>_',
defaultLocation: 'bottom',
})
ctx.slots.inject('dock.panel', () => ctx.slots.register({
name: 'dock.panel',
key: 'terminal',
}, TerminalPanel))面板组件会收到 panelId、visible、location、closePanel、activatePanel、setPanelTitle 和 beginPanelDrag。隐藏面板仍保持挂载。子项拖动可以返回新的 panelId 与 rollback;取消或卸载时 dock 会调用回滚。
Harness 兼容性
插件使用 shell.overlay、conversation.session.header.utilities 和 conversation.input.right。可逆 frame adapter 会寻找 sidebar、conversation 与 details 的语义锚点,插入网格占位,并在卸载时恢复所有被修改的内联样式。
安装
需要 dsh CLI(Node.js 22.19+ 或 24)和 pnpm 10+。
从 npm 安装
dsh plugin --profile web add @mattismegevand/dsh-dock从 GitHub 安装
dsh plugin --profile web add github:mattismegevand/dsh-dock从 Git 安装拉取的是源码,因此首次 add 时 pnpm 会运行包的 prepare 构建。pnpm ≥10 会先拒绝该行为:请把 pnpm 打印的精确包名复制到 profile 的 pnpm-workspace.yaml 的 allowBuilds 条目中,然后重新运行同一条 add 命令。
本地开发
git clone https://github.com/mattismegevand/dsh-dock.git
cd dsh-dock
corepack pnpm install
corepack pnpm check:all
dsh plugin --profile web add .配置
所有会随部署变化的尺寸与阈值都属于经过验证的 Loader 配置,包括紧凑断点、拖动阈值、持久化上限、默认停靠尺寸、最小尺寸和浮动边界。
- id: dock
name: '@mattismegevand/dsh-dock'
config:
compactBreakpoint: 860
maxPersistedScopes: 64
defaultBottomSize: 340相关插件
- dsh-terminal — VS Code 风格的 Ghostty 终端面板。
- dsh-open — 会话标题栏中 Codex 风格的工作区“打开”菜单。
- dsh-git — 按会话隔离的工作树 Review 面板。
模型体验
Dock UI 贡献
#### 模型看到的内容
无。插件只注册浏览器布局、界面、持久化和客户端服务;不会增加提示词、工具 schema、消息或模型可见结果。
#### Token 影响
不会向模型请求或响应增加 token。
#### KV Cache 影响
无。插件不会改变模型输入,因此不会使主请求缓存前缀失效或位移。
已知限制
- Frame adapter 依赖当前 AppFrame 的语义锚点和三列模板;宿主不满足该契约时会明确报错。
- Dock 有意不实现任意嵌套的编辑器分屏或弹出浏览器窗口。
- 布局仅保存在当前浏览器,不会跨 profile 或设备同步。
许可证
MIT