dsh-paste-collapse
dsh-plugin
- Stars
- 2
- Language
- JavaScript
- Created
- Aug 27, 2026
- Updated
- Sep 4, 2026
Introduction
dsh-paste-collapse — DSH 静态插件:大段文本粘贴自动缩略
中文 | English
真正的静态 Cordis 插件包(双半:Host + 浏览器 Client)。 装入
dsh webprofile 后,重启dsh web即自动加载,无需动态重建、无需再次授权。适配 dsh v0.1.2-rc.1。
功能
1. 大段文本粘贴自动缩略
在 AI 输入框中粘贴文本时:
| 粘贴内容 | 行为 |
|---|---|
| 真换行(掐掉首尾空白后仍多行) | 立即缩略,不看字数 |
| 单行且 ≥ 100 字 | 缩略 |
| 其它(短单行、仅首尾伪换行) | 正常粘贴 |
"伪换行"不算换行:首尾的空白/空行(如复制命令自带的行尾
\r\n)先掐掉再判断; 孤立的\r(char 13)在网页里不产生可见换行,同样不算。真换行即是一个段落 → 缩略, 行数按掐掉首尾空白后的内容统计;存储与 ↺ 恢复仍保留原始字符。
- 缩略后输入框只保留
[Paste #N +M lines]标记(编号为小号连续整数,无冗长时间戳; 命名后为[Paste #N | 名字 +M lines]),插入点前后的已有内容保留。 - 完整文本由浏览器端
localStorage持久保存(最多 32 条、每条最多 50,000 字),Host 侧仍保留最近 8 条进程内存兜底,不写入 Host 硬盘。 - 输入框内部图片插入区(粘贴图片出现的位置)渲染标签芯片(只有按钮与编号),从左到右:
- 👁 预览:点击弹出完整内容卡片(可滚动);点卡片外任意处、点卡片右上角 ✕、 或再点同块 👁 即关闭(不随悬停自动弹出/隐藏)
- ✎ 编辑名称:给这块起名(如
版本A),同步更新输入框标签为[Paste #N | 版本A +M lines],发送时也显示在块标识里;留空提交即清除名字。 编号不可修改(编号是唯一标识,由插件分配) - ↺ 恢复原文:将对应标签回写为纯原文(不带任何块说明),直接回到输入框继续编辑
- 没有删除按钮:直接在输入框里删掉标签文本,芯片自然消失
- 页面刷新后,输入框暂存的
[Paste #N +M lines]标签会先从浏览器缓存恢复, 不再因为客户端内存清空而变成无法引用的普通字符串;序号也会持久化,避免刷新后复用旧编号。 - 发送后,消息里的
[Paste #N +M lines]标签会在"发出去"的那一刻自动展开为完整原文 (本地缓存优先,Host 取回兜底),模型直接收到原文,无需再调用工具;输入框内仍保持标签样式。 - 展开时原文会被一对纯标识首尾行包裹(零语义解说,原文内容零改动),
标识编号与输入框标签编号完全一致,只带:编号、可选自定义名、行数,例如:
这样连续粘贴的多块(例如要对比的两段代码)在模型侧边界清晰、编号与输入框一致, 又不会被插件加任何解释性文字。[Paste #12 | 版本A | 342 lines] <原文本> [End #12] [Paste #13 | 版本B | 210 lines] <原文本> [End #13] - 三处文本统一为同一套简洁短词:输入框
[Paste #N +M lines](命名后带| 名字)、 芯片名称 #N、发送块[Paste #N ...]/[End #N](同一编号,不会出现 输入框是#12、发给 AI 却是#1之类的不一致);↺ 回写为纯原文,不带块说明。 - 旧版插件的
[Pasted text #N +M lines]标签仍会被识别、展开与编辑(兼容)。 - 带参数的 slash 命令(例如
/agent-teams [长文本])会在命令提交前展开参数, 但不加块装饰(纯替换),避免破坏命令解析。 - 仅当展开取不到原文(例如浏览器缓存被清理且 Host 进程也已重启)时,标签才会原样发出,
此时代理可调用工具
myds_read_captured按编号读回完整文本处理。
目录结构
dsh-paste-collapse\
├── package.json # 包声明:dsh.bundle.patch + dsh.client(零依赖)
├── cordis.patch.yml # 挂载声明:把 dsh-paste-collapse 一行插入 profile 插件树
├── lib\
│ ├── index.js # Host 半:/myds/captured 路由 + myds_read_captured 工具
│ └── client.js # 浏览器半:粘贴拦截 + 标签编辑 + 原文持久化 + 发送时自动展开
├── test\
│ └── expander.test.cjs # 冒烟测试
├── README.md # 本文档
└── LICENSE # MIT 许可
使用
安装:
dsh plugin --profile web add dsh-paste-collapse
移除:
dsh plugin --profile web remove dsh-paste-collapse
安装/移除后重启 dsh web 生效。
开发
# 从本地目录安装(改代码后 remove + add 重新生效;同版本 add 不会更新,需改版本号)
dsh plugin --profile web add 本仓库目录路径