Back to home@huenjie

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 web profile 后,重启 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 本仓库目录路径