DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@vennahlot/dsh-tabs

Tabs

Chrome 风格的 DSH 聊天会话标签页:按你的顺序排列垂直或水平标签栏,可折叠的标签组,每个标签对应一个会话,或显示最多四个实时窗格的拆分视图。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @vennahlot/dsh-tabs@0.1.2
README兼容性版本
dsh-tabs: a vertical tab strip with three tab groups (one collapsed) and a two-pane split

兼容性与来源证明

Tabs 以 @vennahlot/dsh-tabs 发布,当前版本为 0.1.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/10/24

版本

0.1.2stable
2026/10/24

相关插件

正在加载相关插件…

最新版
0.1.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
134.7 kB
文件数
8
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
0
最近提交
2026/10/23
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Plugin Wallpaper Enginedsh-plugin-wallpaper-engineDSH web GUI 的 Wallpaper Engine 背景:将本地 Wallpaper Engine 壁纸渲染到聊天背景中——通过内置的 WebWallGL 引擎实时渲染 Scene 和 Web,直接播放 Video——配备 iOS 风格的液态玻璃效果,可调节模糊/遮罩/bClaude Designdsh-claude-designDeepSeek Harness 插件:来自 baoyu-design 的 claude-design 技能。智能体将画板画布写入文件,并在本地画布编辑器中打开它们。Claude Slidesdsh-claude-slidesDeepSeek Harness 插件:来自 baoyu-design 的 claude-slides 技能。代理会将可编辑的幻灯片演示文稿写入文件,并在本地幻灯片编辑器中打开。Genui@changfenhuang/dsh-genuiDeepSeek Harness 的 GenUI:通过 ```dsh-ui``` 代码围栏在助手回复中内嵌渲染交互式 UI 组件——布局、图表、绘图、表单、测验、mermaid、3D 场景,以及回传给模型的操作事件循环。随附用于教授代码围栏的主机插件

README

dsh-tabs

Chrome-style tabs for DeepSeek Harness (DSH) chat sessions, in the Web GUI.

dsh-tabs: a vertical tab strip with three tab groups (one collapsed) and a two-pane split

  • A tab strip in your order. Opening a chat adds a tab at the end. Only opening, closing and dragging change the order; switching tabs never moves one.
  • Vertical or horizontal. Down the side (drag its edge to resize it, 180–560 px) or along the top like a browser.
  • Tab groups. Each has a name and a colour and can be collapsed. "Group by project" builds them from the chats' workspaces.
  • Splits. A tab holds one session or up to four live panes side by side. Drag a tab onto a pane's edge to split it, or onto its centre to replace or swap it.
  • Nothing stops. Closing a tab only takes it off the strip: the session keeps running in DSH's session list (the drawer), and ⌥⇧T reopens it.
  • Notifications. A bell collects one notification per question from any open tab, and you can answer short ones right there. ☾ Focus turns off the banners.
  • Subagents and jobs. A chip in each pane's header lists them; click a subagent to open it beside the pane.

The page appears as Tabs in the sidebar. Files, Terminal and file previews open on the session's normal full page (⤢); Back to tabs returns.

Install

Requires DSH with the Web GUI (dsh web).

dsh plugin --profile web add @vennahlot/dsh-tabs

Or from a clone, to hack on it:

git clone https://github.com/vennahlot/dsh-tabs.git
dsh plugin --profile web add link:$PWD/dsh-tabs

Then restart dsh web and refresh the page. The bundle adds its own profile row (cordis.patch.yml); the only option is stateFile (default ~/.dsh/dsh-tabs/state.json).

Shortcuts

KeysAction
⌥1 … ⌥8, ⌥9Tab n, the last tab
⌥[ ⌥]Previous / next tab
⌥OOpen a recent chat
⌥WClose the focused pane
⌥⇧TReopen the last closed tab
⌥←↑↓→Move focus between panes
⌥FFull page of the focused pane
⌥BShow or hide the drawer
⌥NNotifications

They also appear in DSH's shortcut reference. ? on the page explains the mouse actions.

For other plugins

dsh-tabs declares two slots that other bundles may fill:

SlotKindShows
tabs.menubar.itemlist, root scopeA small item on the page's menu bar (for example a usage gauge).
tabs.pane.sidekeyed, session scopeA side panel inside a pane, opened from the pane header.

Inject them with ctx.slots.inject('<slot>', () => ctx.slots.register({ name: '<slot>', … }, Component)) so your bundle waits until dsh-tabs is loaded and works without it.

Development

Plain JavaScript, no build step: index.js is the Host half (the state file and its route) and client.js is the Client half (the page). See DESIGN.md for how they work.

npm test        # the pure tab moves (node:test, no dependencies)
npm run check   # syntax check of both halves

After a change to client.js, refresh the page. A change to index.js needs a DSH restart.

License

MIT