Han-1413141/dsh-sticky-disclosure ↗★ 1
dsh-sticky-disclosure
DSH Web client plugin: pins expanded collapsible tags (Think / tool cards / command cards...) to the top of the conversation viewport once their header scrolls out of view, with a collapse hotkey (Ctrl+Alt+C).
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Han-1413141/dsh-sticky-disclosure说明文档
阅读完整 README ↗dsh-sticky-disclosure
English | 中文
DSH Web 客户端插件:展开中的可折叠标签(Think 思考行、工具卡片、命令卡片、上下文注入行等所有 DisclosureRow)在滑出聊天视口顶部之后,会把标题“钉”在视口顶部,让你随时可以收起它;并提供一键全部收起的快捷键。

为什么需要它
Think 思考行、工具卡片等区块的收起按钮就是它的标题行。当区块展开且内容很长时,往下读会把它顶出屏幕——此时唯一的收起控件在屏幕外,只能一路滚回去点。本插件在标题滑出视口顶部的瞬间,在视口顶部生成一枚浮动的 affix chip,把「收起」留在你眼前;区块收起或滚回可见时 chip 自动消失,不留痕迹。
行为
- 聊天流里的每个可折叠区块(
data-open根节点下的[data-disclosure-row]标题行)在展开状态下,一旦整行标题滑出会话滚动区([data-conversation-scroll])的上边缘,就会在滚动区顶部出现一枚 affix chip(小药丸按钮),显示该区块的标题(如Think、工具名)。 - 点击 chip = 收起原区块:对原标题行派发真实
click,走应用自己的 React 状态,行为与点击原标题行完全一致;收起后 chip 立即消失。 - 把标题滚回可视区域时 chip 自动消失(内容保持展开)。
- 多个滑出的区块按文档顺序排成一行(超宽自动换行),互不遮挡。
- 快捷键
Ctrl+Alt+C(macOS⌘+Option+C):一次性收起当前所有已滑出屏幕的展开区块。 - 流式输出、切换会话、展开/收起状态变化都由
MutationObserver+ 滚动监听自动同步;插件卸载(HMR / 停用)时全部还原。
遮挡关系
- dock 固定在会话滚动区的顶部边缘,水平对齐聊天内容的 32px 内边距。
z-index: 15:高于聊天内容(0–6),低于应用浮层(20)与所有弹窗/对话框(100/1000 级),因此不会盖住权限弹窗、设置面板或欢迎遮罩。- chip 全部使用应用设计令牌(
--dsw-*系列:背景、边框、阴影、字号),自动跟随深色/浅色主题与字体;带入场动画并尊重prefers-reduced-motion。
快捷键设计
刻意不用 Escape:应用的对话框与 popup 已占用 Escape。Ctrl+Alt+C 不与应用任何快捷键冲突,并且:
- 在输入框聚焦时同样生效——这是最常见的状态(焦点往往留在输入框);