dsh-nb-plugin
DSH(DeepSeek Harness)客户端插件:用一个右侧浮动按钮 + 设置页,逐项显示或隐藏界面区域。
⚠️ 安装默认会隐藏输入框和悬浮按钮(刷新后 DSH 看起来像只读模式)。这是设计好的,不是 bug;
⌘⇧H/Ctrl+Shift+H或 设置 →「界面显隐」可一键恢复。详见 整蛊指南。
功能
- 22 个开关,分三组:
- 侧边栏:整体、会话列表、面板入口、设置入口;
- 会话:主面板、标题栏、标题栏按钮、对话内容、消息按钮、输入区、工作区选择、模式选择、附件区、模型选择、权限选择、计划开关;
- 外壳:右侧面板、右侧内容、底部栏、顶部工具、拖拽手柄、浮层与挂件。
- 细粒度靠插槽锚点:精细开关定位到
data-slot="…"包装器(DSH 插槽出口渲染的display:contents锚点),所以能只隐藏「附件区」「模型选择」,而不动整个输入框。 - 点哪藏哪:面板/设置页里的「拾取元素」进入拾取模式,鼠标悬停高亮、点击即隐藏该元素(
+按钮、发送按钮这类没有插槽的零件也能藏),Esc 取消;已拾取的元素在列表里逐个恢复或一键全部恢复。 - 悬浮按钮自带开关:面板里的「悬浮按钮」一行可以把这个入口本身隐藏;隐藏后按钮不再渲染,但显隐状态照常生效。
- 设置菜单项:设置 →「界面显隐」,和浮动面板共用同一份状态,按钮被隐藏时也能从那里改回来。
- 快捷键:
⌘⇧H/Ctrl+Shift+H一键切换全部区域(「全部显示」同时恢复悬浮按钮)。 - 安装默认:全新安装时输入区和悬浮按钮都隐藏,界面干净;从设置页或快捷键把两者找回来。
安装
npm install dsh-nb-plugin
dsh plugin --profile desktop add dsh-nb-plugin
本地开发时也可以直接链接目录:
dsh plugin --profile desktop add "file:$PWD"
整蛊指南:让你的好朋友也装上这个 NB 插件
一句话:一条命令,他的输入框就没了。 先说清楚:这不是破坏,所有隐藏都可逆,恢复方法就在下面的「救他」里。
剧本
- 把
npm i dsh-nb-plugin丢给他,配文「NB 插件,装上界面干净很多」; - 他装完刷新页面 —— 输入框消失了;
- 他去找右边那个能救命的浮动按钮 —— 按钮也没了(默认值里两个一起藏);
- 他开始在群里问:「DSH 怎么不能打字了?」
因为这不是改了什么配置,而是全新安装的默认状态:输入区 + 悬浮按钮同时隐藏,看起来就像 DSH 突然变成了只读模式。重启、清缓存、换个浏览器都没用 —— 清掉存储后加载的还是同一套默认值。
救他(请务必备好这套话术)
| 动作 | 结果 |
|---|---|
⌘⇧H / Ctrl+Shift+H |
全部显示,输入区和悬浮按钮一起回来 |
| 设置 →「界面显隐」→ 打开「输入区」「悬浮按钮」 | 只恢复这两个,其他保持原样 |
整蛊等级(想加码就往下翻)
| 等级 | 操作 | 朋友的反应 |
|---|---|---|
| 轻度 | 只关「输入区」 | 「输入框呢?」 |
| 默认 | 直接装 | 「输入框和按钮怎么都没了?」 |
| 进阶 | 再点一下「沉浸模式」 | 「DSH 是不是崩了?」 |
| 地狱 | 用「拾取元素」把发送按钮也点掉 | 「我连发送按钮都找不到了……」 |
⚠️ 地狱档注意:拾取的元素不受「全部显示」影响,必须在面板的「已拾取元素」里点
×或「全部恢复」。整完记得告诉他,不然他真的要重装 DSH 了。
良心声明
本插件不联网、不上报、不碰 DSH 的安装文件,只往 localStorage 写一个状态、往页面插一张样式表。卸载插件即彻底恢复;清掉站点数据只会回到出厂默认(输入区仍然是隐藏的,记得按快捷键打开)。
别对不熟的同事、更别对生产环境干这事 —— 友谊比乐子贵。
找回界面
初始状态没有任何浮动入口,三种办法:
- 设置 →「界面显隐」:打开「悬浮按钮」,或直接把「输入区」打开;
⌘⇧H/Ctrl+Shift+H:「全部显示」会把所有区域连同悬浮按钮一起恢复;- 已经装过的老版本升级:v1 的旧状态会迁移,悬浮按钮保持可见(不会被新版默认值吞掉)。
拾取元素
面板或设置页点「拾取元素」进入拾取模式:
- 鼠标移到任意界面元素上会高亮描边;
- 点击即隐藏,元素会出现在「已拾取元素」列表里(显示它的 aria-label / 文本 / 标签名);
Esc或点「取消」退出拾取,不做任何修改;- 列表里的
×恢复单个,全部恢复清空所有拾取。
选择器由插件生成:优先落在最近的 data-slot 插槽锚点上,否则用最近的区域锚点 + tag:nth-child(n) 路径,并校验全页唯一才接受。所以 + 附号按钮、发送按钮、某个标签页这类没有插槽的元素也能精确命中。DOM 结构大改(升级 DSH)后个别选择器可能失效,用列表里的 × 清掉重新拾取即可。
状态存储
浏览器 localStorage:
| 键 | 内容 |
|---|---|
dsh.ui-visibility.v2 |
{ "hidden": ["composer"], "dock": false, "custom": [{ "selector": "…", "label": "…" }] } |
dsh.ui-visibility.v1 |
旧版纯数组格式,首次加载时自动迁移并删除 |
v2 不存在时:有 v1 就迁移(悬浮按钮视为显示),两者都没有就用安装默认值。默认值不会立刻写盘,第一次交互后才持久化。拾取的元素存在 custom 数组里,最多 60 条。
版本
1.4.0:新增「拾取元素」模式(点哪藏哪)与工作区/模式选择开关,区域共 22 个;拾取结果随状态持久化。1.3.0:区域从 10 个粗粒度扩到 20 个,新增会话列表、面板入口、设置入口、标题栏按钮、消息按钮、附件区、模型选择、权限选择、计划开关、右侧内容;面板按侧边栏/会话/外壳分组。1.2.1:补全repository/homepage/bugs元数据,npm 页面可直达 GitHub。1.2.0:安装默认同时隐藏输入区与悬浮按钮;包名改为dsh-nb-plugin。1.1.0:悬浮按钮可隐藏、设置页菜单项、默认隐藏输入区、状态升级到 v2。1.0.0:初始版本,纯浮动面板。
开发
扁平 JS 客户端模块,无需构建:
client.js:window.__ModuleLoader__.load({ id: 'dsh-nb-plugin', ... })注册客户端模块、浮动面板、设置页与样式;index.js:空 Host 半边;cordis.patch.yml:把自身 insert 进 DSH 组合。
模块 id 必须与包名一致,否则客户端模块图找不到对应 factory。
License
MIT
No comments yet. Be the first to write one.