Skip to content
dsh.fish
Bundle

dsh-paste-collapse

AI 输入框粘贴大段文本自动缩略为 [Paste #N +M lines] 小序号标签(编号不可改);👁 点击预览全文(点外关闭)、✎ 编辑名称、↺ 恢复纯原文;无删除按钮,删输入框标签文本即消失;发送时自动展开原文并加固定方括号纯标识块分隔(编号与输入框一致);slash 命令参数展开不加装饰;代理可用 myds_read_captured 工具按编号读取标签对应文本。

Source
huenjie
stars
2 stars
License
MIT
Updated
Updated 12 hours ago

Readme

# dsh-paste-collapse — DSH 静态插件:大段文本粘贴自动缩略

**中文** | [English](https://github.com/huenjie/dsh-paste-collapse/blob/main/README.en.md)

> 真正的**静态 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 许可
```

---

## 使用

安装:

```powershell
dsh plugin --profile web add dsh-paste-collapse
```

移除:

```powershell
dsh plugin --profile web remove dsh-paste-collapse
```

安装/移除后重启 `dsh web` 生效。

---

## 开发

```powershell
# 从本地目录安装(改代码后 remove + add 重新生效;同版本 add 不会更新,需改版本号)
dsh plugin --profile web add 本仓库目录路径
```

Install

dsh plugin --profile web add github:huenjie/dsh-paste-collapse

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source