前言¶
在 DSH(DeepSeek Harness)里贴日志、配置片段或长段说明时,输入框和聊天记录很容易被大段文本占满,阅读和回看都不方便。常见做法是手动删改或分段发送,既费事又容易漏内容。下面介绍的 dsh-collapse-paste 是维护者 Mrsong123456 发布的纯客户端 UI 插件:把输入框里达到阈值的多行粘贴、以及已发送的长用户消息,在界面上折叠成紧凑内联标签;发给模型的内容始终是完整原文,不做截断或改写。
这是什么¶
dsh-collapse-paste 归类为 DSH 客户端插件,当前 npm 包版本为 0.2.4,许可证 MIT。它在浏览器页面内增强输入区与消息区的展示,不改动 DSH 核心发送逻辑;折叠只影响显示,存储与提交给模型的文本与原生粘贴、原生发送一致。插件在 SkillHub 目录 可检索,源码与说明见 GitHub:Mrsong123456/dsh-collapse-paste。
核心功能¶
输入框:多行粘贴折叠为 chip¶
- 粘贴的纯文本达到阈值时(默认 ≥ 3 行),整段在输入框内折叠为一个内联标签,文案形如
X 字符 / Y 行。 - 标签样式与 DSH 原生
@文件reference chip 对齐(22px、同一套 token、省略号);用 Backspace 可原子删除整块折叠内容。 - 点击标签可展开原文,再点可收起。
- 发送时自动还原全文,模型收到的内容与未装插件时普通粘贴一致。
消息区:已发送长消息折叠¶
- 已发送的用户消息若达到阈值(默认 600 字符 或 12 行,满足其一即折叠),右侧显示蓝色标签:
X 字符 / Y 行 · 点击展开。 - 点击就地展开;消息末尾另有「点击收起」,无需滚回顶部。
- 折叠仅隐藏正文,时间戳与复制、编辑、删除等操作条仍可用;不改存储内容。助手回复不受影响。
失败策略与兼容性¶
插件依赖 DSH 0.2.1 一代的 Lexical 内部接口(如 __lexicalEditor、_nodes、文本叶子样式)以及消息区 DOM(data-chat-flow-kind、userStack 等)。与当前环境不匹配时会 fail-open(退回原生行为),不阻塞 DSH 启动。
| 环境 | 状态 |
|---|---|
| DSH Desktop 0.2.1-rc.2 | 已在 Windows 桌面版手动验证 |
| DSH Web(同一版本) | 未单独验证,预期一致 |
| DSH ≤ 0.2.0 / ≥ 0.3 | 未验证,可能失效 |
package.json 中 engines.dsh 要求 >=0.2.1-rc.2。
安装与启用¶
最简单方式是通过 npm 一条命令安装(无需本地构建):
dsh plugin --profile desktop add dsh-collapse-paste
pnpm 11 默认有约 24 小时的发布年龄保护,刚发版后无版本号安装可能仍是上一版;若要立刻装指定版本:
dsh plugin --profile desktop add dsh-collapse-paste@0.2.4
也可从 GitHub 安装(仓库含已构建的 lib/):
dsh plugin --profile desktop add github:Mrsong123456/dsh-collapse-paste
安装后需 重启 DSH(桌面版重启应用;Web 端重启 dsh web)。卸载:
dsh plugin --profile desktop remove dsh-collapse-paste
配置¶
在 DSH 内打开 设置 → 折叠多行粘贴(Settings 侧栏偏底部)。
| 字段 | 默认 | 说明 |
|---|---|---|
| 启用输入框折叠 | 开 | 关闭后立即展开当前草稿,之后粘贴保持原生 |
| 输入框:最小行数 | 3 | 粘贴至少这么多行才折叠 |
| 输入框:最小字符数 | 0 | 额外字符下限,0 表示只看行数 |
| 发送后折叠长消息 | 开 | 关闭后消息区立即恢复完整显示 |
| 消息折叠:最小字符数 | 600 | 与行数任一达到即折叠 |
| 消息折叠:最小行数 | 12 | 与字符数任一达到即折叠 |
设置保存在当前浏览器的 localStorage(key:dsh-collapse-paste.config.v1),保存后立即生效,无需重启;换浏览器或设备不会同步。
典型用法¶
日常使用无需额外命令,安装并重启后即可:
- 在输入框 Ctrl+V 粘贴多行文本(默认满 3 行即出现
字符 / 行标签),确认草稿区不再被全文撑开。 - 需要核对内容时 点击标签展开,改完或确认无误后再发送;发送后模型侧仍是完整原文。
- 发送超长用户消息后,在聊天记录里通过右侧蓝色标签展开/收起,底部「点击收起」便于长消息阅读。
- 若只想保留输入框折叠、不想折叠历史消息,在设置里关闭「发送后折叠长消息」即可。
隐私、权限与适用注意¶
插件在 DSH 页面内运行,会监听全局 paste 事件(只读剪贴板纯文本,不拦截文件粘贴),并用 MutationObserver 观察输入框与聊天 DOM 以计数与折叠;阈值写入本机 localStorage。不发起网络请求,不收集、不上传数据。
DSH 插件以当前 DSH 进程的用户权限运行;安装第三方插件前请自行审阅源码与许可证(本插件 MIT)。SkillHub 等为社区目录站点,与 DeepSeek / 幻方无官方从属关系。
已知限制(来自 README):Lexical 内部结构随 DSH 升级可能变化,失效时静默退回原生;展开/收起状态仅在当前页面内存,刷新后恢复默认折叠;消息区折叠为纯显示层,虚拟滚动重建行时会重新套用折叠;设置不随 DSH profile 跨设备同步。
输入框折叠思路致谢自 @comecaramelos/dsh-collapse-multiline-paste(Robe ComeCaramelos,MIT):文本保留在 TextNode,chip 不贡献提交文本,故草稿与原生粘贴逐字节一致。
结尾¶
dsh-collapse-paste 面向经常在 DSH 里粘贴日志、文档块或发长提示的用户:界面更紧凑,发送与存储仍是全文。目录页:SkillHub - dsh-collapse-paste;仓库与完整说明:GitHub - Mrsong123456/dsh-collapse-paste。