DSH 开发者在输入长文本(代码片段、长日志、文档)时,往往面临上下文溢出或消息结构混乱的问题。手动截取或简单拼接不仅效率低,还容易打断对话流。dsh-paste-collapse 插件通过在浏览器端拦截粘贴操作,将大段文本自动转换为紧凑的标签,发送时再还原为完整上下文。
插件定位¶
这是一个 DSH 静态插件(Static Cordis Plugin)。它是一个真正的静态包,包含 Host(后端逻辑)和浏览器 Client(前端交互)。插件由 huenjie 维护,许可证为 MIT。
安装该插件后,装入 dsh web profile 并重启 dsh web,即可自动加载,无需动态重建或再次授权。
核心功能¶
该插件主要解决大段文本粘贴的展示与传输问题:
- 自动缩略
在 AI 输入框粘贴文本时,系统会先掐掉首尾空白。若内容仍为多行,或单行长度超过 100 字,则会自动缩略为[Paste #N +M lines]标签。 - 本地缓存持久化
浏览器端使用localStorage保存粘贴记录,最多缓存 32 条,每条最多 50,000 字。Host 侧仅保留最近 8 条进程内存作为兜底,不写入硬盘。 - 交互操作
- 👁 预览:点击图标弹出完整内容卡片,点击卡片外部或关闭按钮即可关闭。
- ✎ 编辑名称:给粘贴块起名,标签会同步更新为
[Paste #N | 名字 +M lines]。 - ↺ 恢复原文:点击图标将标签回写为纯原文。
- 删除:没有独立的删除按钮,直接在输入框删除标签文本即可移除芯片。
- 发送时自动展开
消息发出时,标签会自动展开为完整原文。展开格式包含纯标识首尾行(如[End #N]),编号与输入框标签一致,模型直接接收原文,无需调用工具。 - 兼容性
- Slash 命令:带参数的 slash 命令(如
/agent-teams [长文本])在提交前展开参数,但不加块装饰,避免破坏命令解析。 - 旧版兼容:旧版标签
[Pasted text #N +M lines]仍会被识别与展开。
- Slash 命令:带参数的 slash 命令(如
安装与启用¶
使用以下命令安装:
dsh plugin --profile web add dsh-paste-collapse
安装后重启 dsh web 即可生效。
典型用法¶
- 粘贴多行文本或单行超过 100 字的内容,输入框会立即出现
[Paste #1 +34 lines]标记。 - 点击 👁 图标预览完整内容。
- 点击 ✎ 图标给粘贴块起名,例如
版本A,标签变为[Paste #1 | 版本A +34 lines]。 - 点击 ↺ 图标将标签回写为纯原文,继续编辑。
- 直接在输入框删除标签文本,芯片自然消失。
- 提交对话时,标签自动还原为原文发送。
技术细节¶
- 判断逻辑:孤立的
\r(char 13)在网页里不产生可见换行,不触发缩略。只有掐掉首尾空白后仍为多行或单行 >= 100 字时才缩略。 - 目录结构:插件包包含
package.json、cordis.patch.yml、Host 逻辑 (lib/index.js) 和浏览器逻辑 (lib/client.js)。 - 兜底机制:仅当展开取不到原文(浏览器缓存被清理且 Host 进程已重启)时,标签才会原样发出。此时代理可调用
myds_read_captured工具按编号读回完整文本。
适用场景与注意¶
适合智能体开发中需要频繁粘贴代码或长文档的场景。注意该插件以当前 dsh 进程权限运行,建议在安装前检查源码与许可证。
总结¶
该插件通过静态包形式降低了部署复杂度,解决了大段文本粘贴的上下文管理问题。更多详情与源码,可访问:GitHub。