dsh-plugin-rightbar

DSH PLUGINUI 与外观

仓库 lo2589/dsh-plugin-rightbar

UI 与外观 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-plugin-rightbar 是 lo2589 维护的 UI 与外观 类 DSH 可安装插件, 仓库为 lo2589/dsh-plugin-rightbar,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-plugin-rightbar 是UI 与外观类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类UI 与外观 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-27 创建于 2026-10-27
README 12.5 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:lo2589/dsh-plugin-rightbar
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

UI 与外观
字段来自项目仓库与公开索引,中文说明由本站标注

上游标签

deepseek-harnessdshdsh-pluginpluginuiweb

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在UI 与外观场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-plugin-rightbar当前 L5 · 运行验证通过 低风险 0 未标注 有
nuwa-skill 未做沙盒验证 未标注 3.8 万 未标注 有
awesome-dsh-plugin L4 · 沙盒安装通过 低风险 1.8 万 0.1.1-rc.2 有
deepseek-balance-whale-widget L4 · 沙盒安装通过 低风险 4,492 0.1.7-rc.2 等 2 个 有
dsh-better-sidebar L4 · 沙盒安装通过 低风险 4,112 0.1.7-rc.2 等 10 个 有
dsh-deep-whale L4 · 沙盒安装通过 低风险 2,470 未标注 有

仓库档案

UI 与外观
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方lo2589仓库 dsh-plugin-rightbar · 默认分支 main
分类UI 与外观ui
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-27 · 2026-10-27最后推送 2026-10-27
本站收录2026-10-30首次进入本站目录的时间

README 全文

12.5 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-plugin-rightbar

给 DeepSeek Harness 网页端加一个「聊天右边那一列」:别的插件往这一列里挂标签页,而不是各自
position:fixed 抢位置、比 z-index。

> English: a shared right sidebar for DeepSeek Harness. Other plugins contribute tabs into the
> rightbar.tab slot instead of each pinning its own fixed panel. Web client only. See
> The contract for the integration surface.

  • 适用范围:只支持 Web 客户端(dsh.client.platform = web)。宿主半端是个空 apply,整个右栏都在浏览器里。
  • 版本:0.1.0 · 许可证 MIT · 插件 id rightbar · 标签页槽位名 rightbar.tab

它解决什么问题

Harness 没有「聊天旁边的一列」这个座位:

  • details 是 single 型槽位,而且已经被工具详情面板占着 —— 谁要占就得顶掉别人;
  • shell.overlay 只是一层没有布局协调的浮层 —— 能浮起来,但不管谁压着谁。

于是每个想贴边的插件都自己写 position:fixed; right:0:互相遮挡(谁 z-index 大谁赢)、各自去压
#root 的宽度(谁最后渲染谁生效)、留宽 / 收起 / 记住宽度各写一遍。

本插件往 shell.overlay 注册一个条目,用它的 children 声明一个新的 list 型槽位 rightbar.tab
(跟宿主 AppFrame 声明 sidebar / details 是同一个机制)。想贴边的插件往这个槽位注册标签页即可。


安装

前置:一个能跑 Web 客户端的 DeepSeek Harness(--profile web)。

方式 A:直接从 GitHub 装(推荐)

cd /path/to/deepseek-harness        # 需 node ≥ 22 在 PATH 上

node --import tsx/esm apps/cli/src/bin.ts plugin --profile web add github:lo2589/dsh-plugin-rightbar

(装了全局 dsh 命令的话,等价于 dsh plugin --profile web add github:lo2589/dsh-plugin-rightbar。
第一次装会 clone 整个仓库,一两分钟起步,属正常。)

方式 B:装本地目录(改代码时用)

cd /path/to/deepseek-harness
node --import tsx/esm apps/cli/src/bin.ts plugin --profile web add link:/path/to/dsh-plugin-rightbar

装完必须重启一次 dsh。 bundle 层是启动时组装的,不重启这个插件不会挂上去。

装完应该看到什么

页面右侧多出一列(默认展开,宽度 420px,可拖左边缘改宽;点右上角 › 收成 32px 竖条)。

⚠️ 如果右侧什么都没有,那是正常的:本插件自己不提供任何标签页,没有标签注册时整列不渲染
(同时把让出的宽度归零)。想先确认它装好了,打开自带的两个演示标签:

localStorage.setItem('rightbar.demo', 'true')   // 然后在浏览器里刷新页面

刷新后右侧会出现「演示 A」「演示 B」两个标签 —— 说明槽位声明、注册、渲染这条链是通的。

卸载

cd /path/to/deepseek-harness
node --import tsx/esm apps/cli/src/bin.ts plugin --profile web remove dsh-plugin-rightbar

然后重启一次。已经接入的插件不会崩:rightbar.tab 不再被声明,它们的 slots.inject 永远不触发。


给你自己的插件接入

最小可用例子(id 唯一,label 显示在标签上,order 决定标签顺序):

// 你的插件 client 半端 apply(ctx) 里
var slots = ctx.get('slots')
slots.inject('rightbar.tab', function () {
return slots.register(
{ name: 'rightbar.tab', id: 'my-plugin', label: '我的面板', order: 20 },
MyPanel,
)
})

为什么这么写:

  • slots.inject 会等声明出现,所以加载顺序无所谓:rightbar 晚一点挂上,你的注册会自动补进去;
    rightbar 卸载时自动撤销,重回来自动恢复(你不用重载)。
  • rightbar 对你始终是可选的。没装它,rightbar.tab 永远不被声明,这个 inject 永远不触发 ——
    保留你自己浮动的兜底,别把 rightbar 写成硬依赖。
  • 面板内只管填满给定的盒子(宽高由 rightbar 给)。三条硬性要求:
    1. 不要 position:fixed;
    2. 不要改 #root 的宽度(宽度只有 rightbar 写,写成 ` 上的--rightbar-w`);
    3. 不要自己造 z-index 去压别人。
  • 同一页面只有一个 rightbar:第二次声明 rightbar.tab 会被槽位注册表拒掉。

从别处切到自己的标签

比如工具栏按钮、URL 参数、宿主里某个动作之后,想直接激活你的标签:

window.dispatchEvent(new CustomEvent('rightbar:activate', { detail: { id: 'my-plugin' } }))

它只是窗口事件,不是 import —— 两个插件之间没有代码依赖,rightbar 没装时没人监听,无害。


自带的 skill(给 agent 看的)

装了这个插件,你的 agent 会话 skill 目录里会多一条 rightbar-tab —— 内容是"怎么给 rightbar 挂 tab":
槽位名、注册调用、三条硬性要求、把 rightbar 当可选座位的写法、rightbar:activate 事件,以及下面那个让位开关。

它由 cordis.patch.yml 的第二行 rightbar-skill 提供(src/skill.js,依赖为零:只调
ctx.skills.register(),读不到正文就只 warn 不启用)。所以以后让 agent 给你写新面板时,它不用读这个
仓库也知道该往哪挂。


让还没迁过来的面板让位(默认关)

别的插件的老面板如果是自己 position:fixed; right:0,会和右栏重叠。本插件能按下面这套处理,但
默认一个都不碰:

localStorage['rightbar.adopt'] 行为
不设 / off(默认) 什么都不做
declared 只处理自己加了 data-rightbar-adopt="1" 的面板
all 按样式猜:同时满足 fixed、right≈0、宽度 < 窗口 80%、高度 ≥ 120px 的 body 直接子元素
localStorage.setItem(&#x27;rightbar.adopt&#x27;, &#x27;declared&#x27;)   // 然后刷新页面

⚠️ 为什么默认关:

  • 只能靠样式猜,误伤面很大(模态、遮罩、toast、浮动工具栏都可能是 fixed + 贴右);
  • 收编动作只有一种 —— 把它的 right 改成 var(--rightbar-w),绝不搬 DOM。React 17+ 的合成事件挂在
    root 容器上,节点跨容器移动会让别人的事件与状态错乱;只改偏移量最坏是位置偏一点,不会让别人的插件崩;
  • 默认开启等于告诉生态"不用改代码,rightbar 会捡",契约就没人迁了。

被收编的面板会打上 data-rightbar-adopted=&quot;1&quot;;卸载或关掉时原样还回去(原来的 inline right
优先保留)。它只是兼容性照顾,不是契约 —— 正式做法仍是注册一个 tab。


契约(也给别人看的接口)

项 值
槽位名 rightbar.tab(kind: &#x27;list&#x27;、scope: &#x27;root&#x27;,由本插件声明)
注册签名 slots.register({ name: &#x27;rightbar.tab&#x27;, id, label, order }, Component)
让出的宽度 ` 上的 CSS 变量--rightbar-w(只有本插件写;无标签时为0px`)
激活事件 window.dispatchEvent(new CustomEvent(&#x27;rightbar:activate&#x27;, { detail: { id } }))
渲染方式 一次只渲染当前那一个标签(renderSlot(&#x27;rightbar.tab&#x27;, {}, { only: id }))
层级 z-index: 600(高于遗留浮动面板 500–530,低于全屏模态 9997+)
尺寸 默认宽 420 · 最小 280 · 最大窗口宽 70% · 收起时 32
浏览器偏好 localStorage:rightbar.open / rightbar.active / rightbar.width
演示标签开关 localStorage:rightbar.demo
让位开关 localStorage:rightbar.adopt(off 默认 / declared / all)
让位标记 面板上加 data-rightbar-adopt;被收编后变成 data-rightbar-adopted=&quot;1&quot;

测试

单测跑的是真的 SlotCore 和真的 React,所以要有一个 harness 仓库;而且必须在 harness 目录里跑
(tsx 在宿主那棵树里,从插件目录跑会 ERR_MODULE_NOT_FOUND):

cd /path/to/deepseek-harness
DSH_REPO=$PWD node --import tsx/esm /path/to/dsh-plugin-rightbar/tests/slot-core.mjs

DSH_REPO 不写的话默认取插件的同级目录 deepseek-harness。

覆盖到的 7 项:rightbar 不存在时别人的注册会等(不抛错)、声明本身、先等着的一方自动落进来、
第二次声明被拒、只渲染当前标签、卸载时标签一起撤、重新挂载时注册者自动回来。

⚠️ 这个单测抓不到层级遮挡和 Safari 裁剪这两类问题,它们必须在真页面上看(见下面报错记录)。

另外两个测试不需要 harness,直接从插件目录跑(纯 node):

node tests/skill-register.mjs   # 自带的 rightbar-tab skill:字段合法性、正文口径、正文读不到时只 warn
node tests/adopt.mjs            # 让位开关:默认关、只认声明、不碰自己的面板、卸载还原、all 模式的保守判据

tests/skill-registry.mjs 是集成检查:把 src/skill.js 挂到真的 SkillRegistry 上,
确认目录里有它、正文取得到、卸载后消失。它也需要 harness,跑法跟 slot-core 一样(换文件名即可):

cd /path/to/deepseek-harness
DSH_REPO=$PWD node --import tsx/esm /path/to/dsh-plugin-rightbar/tests/skill-registry.mjs

这条是必需的,不是锦上添花:单元测试里的 ctx.skills.register 是假的,抓不到"字段缺失"——
source 漏过一次,结果是 skill 能列出、加载时抛 TypeError(目录里看得见却用不了)。


常见问题

装完右侧空白 —— 正常,见上文「装完应该看到什么」:没有标签注册时整列不渲染。开演示标签或接入一个 tab。

右侧面板被别的插件盖住 —— 本插件层级是 600。如果对方压得更高,把对方迁进 rightbar.tab
(这是本插件存在的意义),或者给它提 issue。

Safari 里右侧一片空白(Chrome 正常) —— 宿主 .frame 是 overflow:hidden,#root 让窄后面板整个
落在 .frame 盒子外,Safari 照样按祖先裁剪。0.1.0 起面板与收起竖条用 ReactDOM.createPortal 挂到
document.body,已修;请确认真装上的是这个版本之后的。

宽度 / 展开状态记不住 —— 偏好存在 localStorage,隐私模式下读写会抛错,此时静默退回默认值(展开、420px)。

想默认收起 —— localStorage.setItem(&#x27;rightbar.open&#x27;, &#x27;false&#x27;)。


报错记录

每条:现象 → 根因 → 证据 → 修复。验证一律在真实 dsh 页面上截图 + 读 DOM,Chromium 和 Safari 各一遍;
只靠 SlotCore 单测抓不到下面任何一条。

2026-10-07 · 面板被另一个插件的浮动面板盖住

  • 现象:右侧一列只露出左边约 120px,其余被同层的「媒体展示台」面板压住。
  • 根因:rightbar 与其他插件的浮动面板同在宿主 overlay 层,按 z-index 比高低。rightbar 写成
    z-index:40,那个浮动面板是 500。
  • 证据:document.elementFromPoint 在面板中心命中对方的 .sc-head / .sc-title,不在 rightbar 内。
  • 修复:z-index 提到 600(高过 500–530 的浮动面板,低于 9997+ 的全屏模态);对方插件后来也改成
    软接入 rightbar.tab,不再自己浮着。

2026-10-07 · Safari 里右侧只有空白

  • 现象:Chrome 正常;Safari 26.4 里 #root 已让出宽度,右侧却一片空白。
  • 根因:overlay 层在宿主 .frame(overflow:hidden)里面,#root 让窄后面板(position:fixed)
    整个落在 .frame 的盒子之外。Chrome 让 fixed 元素逃出祖先裁剪,Safari 照样按 .frame 裁掉。
  • 证据:Safari 里面板在 DOM 中(x=1018, w=515, visibility:visible, opacity:1, z=600),
    elementFromPoint 命中 .rb-tabs,屏幕却是空的;临时把 .frame 的 overflow 改成 visible,
    面板立刻出现,改回即消失。Playwright 的无头 WebKit 复现不了,必须在真实 Safari 里查
    (Safari 设置 → 开发者 → 允许 Apple 事件中的 JavaScript,然后 osascript … do JavaScript)。
  • 修复:面板与收起竖条用 ReactDOM.createPortal 挂到 document.body,不碰宿主 .frame。

观察到但不属于 rightbar

  • 2026-10-07:页面加载时另一个插件自己的 HTTP 路由(GET /plugins//split)返回 HTTP 400,
    共 11 次;来源不是 rightbar。记在这里只是为了下次不必重新排查。

License

MIT — 见 LICENSE。

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-plugin-rightbar 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:lo2589/dsh-plugin-rightbar` 即可。

dsh-plugin-rightbar 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-plugin-rightbar 安全吗?

低风险。

dsh-plugin-rightbar 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-plugin-rightbar 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

UI 与外观
按星标排序,可作替代方案

nuwa-skill

nuwa-skill

女娲 DSH plugin 只需输入一个名字,就自动调研、提炼并验证任何人的心智模型、决策启发式与表达 DNA,生成可直接调用的思维视角 S

未标注验证等级 3.8 万 星

awesome-dsh-plugin

awesome-dsh-plugin

A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harnes

L4 · 沙盒安装通过 1.8 万 星

deepseek-balance-whale-widget

DeepSeek-Balance-Whale-Widget

DSH 界面右下角的常驻小鲸鱼余额挂件,实时显示 DeepSeek 账户余额、今日已用与每轮对话消耗,支持拖拽吸附、Q 弹动画与音效,开箱即

L4 · 沙盒安装通过 4,492 星

dsh-better-sidebar

DSH-better-sidebar

面向 DeepSeek Harness 的服务化侧边栏工作台插件,把文件编辑、终端、Git 变更、子代理任务与侧边对话整合进右侧栏与底部面板

L4 · 沙盒安装通过 4,112 星

dsh-deep-whale

dsh-deep-whale

DSH Web 鲸鱼娘皮肤系列(深海女仆工坊 maid-atelier)。

L4 · 沙盒安装通过 2,470 星

deepseek-design

deepseek-design

可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。

L4 · 沙盒安装通过 1,438 星

lo2589 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。