dsh-dock

by mattismegevand

0 UI 增强github 检测到 manifest package.json#dsh收录于 08-16

DeepSeek Harness插件专属停靠系统

A plugin-owned docking system for DeepSeek Harness Web plugins

安装

dsh plugin --profile web add github:mattismegevand/dsh-dock

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

English | 中文

面向 DeepSeek Harness Web UI、由插件自行拥有的停靠系统。它为浏览器插件提供稳定的 keyed 面板 slot 和 ctx.dock 服务,无需修改 Harness 仓库。

MIT License dsh-plugin

面板并排停靠的 dock 工作台

功能

  • 支持左侧、右侧、底部和浮动面板,并可将同一区域的面板组成标签组。
  • 支持指针与键盘调整大小、拖动标题栏、边缘预览以及 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

原始 README: https://github.com/mattismegevand/dsh-dock/blob/main/README.zh.md ↗