dsh-collapse-paste:多行粘贴与长消息折叠,发送仍保留全文

前言

在 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

  1. 粘贴的纯文本达到阈值时(默认 ≥ 3 行),整段在输入框内折叠为一个内联标签,文案形如 X 字符 / Y 行。
  2. 标签样式与 DSH 原生 @文件 reference chip 对齐(22px、同一套 token、省略号);用 Backspace 可原子删除整块折叠内容。
  3. 点击标签可展开原文,再点可收起。
  4. 发送时自动还原全文,模型收到的内容与未装插件时普通粘贴一致。

消息区:已发送长消息折叠

  1. 已发送的用户消息若达到阈值(默认 600 字符 或 12 行,满足其一即折叠),右侧显示蓝色标签:X 字符 / Y 行 · 点击展开。
  2. 点击就地展开;消息末尾另有「点击收起」,无需滚回顶部。
  3. 折叠仅隐藏正文,时间戳与复制、编辑、删除等操作条仍可用;不改存储内容。助手回复不受影响。

失败策略与兼容性

插件依赖 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),保存后立即生效,无需重启;换浏览器或设备不会同步。

典型用法

日常使用无需额外命令,安装并重启后即可:

  1. 在输入框 Ctrl+V 粘贴多行文本(默认满 3 行即出现 字符 / 行 标签),确认草稿区不再被全文撑开。
  2. 需要核对内容时 点击标签展开,改完或确认无误后再发送;发送后模型侧仍是完整原文。
  3. 发送超长用户消息后,在聊天记录里通过右侧蓝色标签展开/收起,底部「点击收起」便于长消息阅读。
  4. 若只想保留输入框折叠、不想折叠历史消息,在设置里关闭「发送后折叠长消息」即可。

隐私、权限与适用注意

插件在 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye