前言¶
DSH 的对话界面里,每条消息气泡下方有一条操作栏,放着复制、点赞、点踩、分支等按钮、时间戳,以及其他插件塞进这一行的按钮和信息。原生实现只在最新一轮消息上常显这条操作栏,历史消息要鼠标悬停才会出现。
排查历史消息、回看上文时,悬停是个多余的动作:你得一条一条点过去才能看到时间或复制按钮。dsh-visible-action-row 把这个行为改成所有消息的常显,不改内容、不改位置。
这是什么¶
DSH(桌面版 / Web 版)插件,维护者 Bobnemimimmi,MIT 许可,当前包版本 0.2.0。社区目录将其归在「客户端」分类下。
它做一件事:用一条 scoped CSS 可见性覆盖,把每条消息(用户消息和 DSH 消息)的操作栏都保持成最新一轮那样的常显状态。原生渲染、原生位置、原生内容全部复用,不新增任何可见 UI。
核心能力¶
- Always visible:用户与 DSH 消息的操作栏全部常显,含历史消息;悬停前后一致。
- Native content:按钮、时间与第三方插件塞进该行的内容原样显示,不重新生成、不改格式。
- Zero config:无设置项、无开关、无存储、无后端、无网络请求,安装即生效。
- Clean uninstall:卸载后恢复原生「仅最新一轮常显」行为,不残留 DOM / CSS / 配置。
- Minimal & safe:不扫描 DOM、无 MutationObserver、无轮询;仅调整
opacity,按钮行为与悬停效果不变。
为什么能这么小:它不走 DOM 注入,只是把操作栏根节点原本依赖悬停才置为可见的 opacity 覆盖掉。
安装与启用¶
官方给出四种安装路径,优先用 npm。
通过 npm 安装¶
dsh plugin --profile web add dsh-visible-action-row
npm 安装拿到的是发布时构建好的成品,无需任何构建授权。
通过 DSH Desktop 安装¶
- 打开侧栏 插件(Plugins)页;
- 点击 添加插件(Add plugin)旁的箭头,选择 安装第三方插件(Install a third-party plugin);
- 输入
dsh-visible-action-row安装,安装完毕后点击 立即启用。
从 GitHub 安装¶
dsh plugin --profile web add github:Bobnemimimmi/dsh-visible-action-row
注意这条路径会运行本包的 prepare 自构建。pnpm ≥ 10 首次 add 会拒绝并要求授权,按提示把打印的 allowBuilds 键加入 profile 的 pnpm-workspace.yaml 后重跑。
本地目录 / tarball¶
dsh plugin --profile web add ./dsh-visible-action-row
启用¶
命令行安装后重启 DSH 即生效:桌面版重启应用,Web 版重启 dsh web。桌面版的 profile 名是 desktop,把上面命令里的 --profile web 换成 --profile desktop 即可。
卸载与迁移¶
卸载:
dsh plugin --profile web remove dsh-visible-action-row
重启后恢复原生行为。
如果你之前用的是旧包 dsh-always-status-bar,建议先移除再装新包——旧包只覆盖时间戳,且其锚点在 DSH 0.2.x 中已变更,在新版里实际是空转:
dsh plugin --profile web remove dsh-always-status-bar
dsh plugin --profile web add dsh-visible-action-row
适用场景与注意¶
适合:希望在长对话里直接看到每条消息的时间和操作按钮,或者依赖操作栏上的第三方插件按钮的开发者。
不适合:希望操作栏只在最新一轮出现以减少视觉噪音的场景。这个插件没有开关,装上就是全局常显。
环境要求:DSH 桌面版或 dsh web(二进制安装 / 源码启动均可),需要 dsh CLI(或按 DSH 文档以源码方式运行 pnpm dsh)。README 中写明的已验证环境是桌面版 0.2.1-rc.5(Windows 11)与源码启动的 Web 0.2.2-alpha.2(Windows 11),两者加载同一套前端产物;macOS / Linux 未单独实测,但同一份 client bundle 不含平台分支。
版本兼容风险:插件依赖三个前端锚点来定位操作栏。若升级 DSH 后操作栏不再常显,请核对以下锚点是否仍存在于 packages/client/ui-chat/src/client/chat/:
MessageIconActions.tsx→ 操作栏根节点的data-clockTurnTailNodeView.tsx→data-actions-revealChatNodeSeat.tsx→data-chat-flow-kind
另外两点使用前应确认:插件以当前 dsh 进程权限运行,安装前应检查其源码与 MIT 许可证;仓库目前的关注度不高(GitHub 2 stars、1 forks),升级 DSH 前最好先看一眼 Issue 区。
结尾¶
这个插件的价值很窄:把一个由悬停触发的可见性改成常显,代价是一条 scoped CSS,没有配置面、没有后端、没有卸载残留。如果你觉得历史消息的操作栏探不到是痛点,它是最小改动的那一种解法。
目录页:https://www.skillhub.cn/plugins/Bobnemimimmi/dsh-visible-action-row
仓库:https://github.com/Bobnemimimmi/dsh-visible-action-row