前言¶
在使用 DeepSeek Harness(DSH)进行智能体开发时,经常需要复制大量代码、日志或文档到对话框中。大段文本会挤占界面,不仅难以阅读,也可能影响模型的上下文理解。传统做法是手动截断,或者直接粘贴后忍受糟糕的排版。
DSH 的设计理念是「一切皆插件」,社区提供了针对这一场景的解决方案。下面介绍一个针对大段粘贴内容的折叠与展开插件。
插件简介¶
matata2017/dsh-paste-collapse 是一个客户端插件,将 DSH 编写器中的大段粘贴内容折叠为 Codex 风格的占位符,并在发送前在主机端展开。插件不写入磁盘,不节省 token,仅作为显示层面的便利。
核心功能¶
折叠阈值与占位符规则¶
插件遵循 Codex 的规则,当粘贴内容达到一定长度时触发折叠:
- 阈值:1000 字符(对应 Codex 中的
LARGE_PASTE_CHAR_THRESHOLD) - 占位符格式:
[Pasted Content 12000 chars] - 同大小连续粘贴:
[Pasted Content 12000 chars] #2、#3… - 计数规则:每个大小的粘贴独立计数
- 展开规则:FIFO(先进先出),先出现的占位符先获取文本
- 无文本占位符:保持原样发送给模型
药丸按钮¶
每个折叠的粘贴内容会在编写器顶部显示一个药丸按钮,包含:
- 粘贴内容的第一行(截断到 16 个字符)
- 字符数(使用简写,如 6.7k 代替 6684)
- 点击可打开侧边面板,显示完整文本、字符数、复制按钮和关闭按钮
- 按
Esc或点击外部可关闭侧边面板 - 药丸使用 DSH 原生配色(仅 CSS 变量,无硬编码十六进制值),支持亮色和暗色主题
已发送消息的药丸¶
已发送的回合也会以药丸形式显示粘贴内容,而不是原始文本:
- 气泡将粘贴内容渲染为一个小芯片,包含预览和字符数
- 点击可打开与编写器相同的侧边面板
- 气泡会先询问客户端,再询问主机,因此即使客户端丢失了文本(如重启),消息仍可能显示药丸
- 当客户端和主机都丢失文本时,消息回退为纯文本
客户端与主机双端处理¶
插件分为两部分:
- 客户端 (
client.js):负责将粘贴内容转换为占位符,并管理药丸和侧边面板 - 主机端 (
lib/index.js):负责在模型读取回合前将占位符展开为原始文本
安装与启用¶
在 DSH 配置目录中执行:
# 在 DSH 配置目录执行
dsh plugin add dsh-paste-collapse
或通过本地链接方式:
{
"dependencies": {
"dsh-paste-collapse": "link:D:\\work\\huanghao\\dsh-paste-collapse"
}
}
典型用法¶
- 复制一段超过 1000 字符的文本(如代码片段或长日志)
- 在 DSH 编写器中粘贴,界面会自动将长文本折叠为占位符,并在顶部显示药丸
- 点击药丸可查看完整文本或直接复制
- 按下发送后,主机端会在
agent/pre-step阶段将占位符展开为原始文本,模型接收完整的粘贴内容
已发送的回合会保留药丸显示,方便回顾长文本内容。
适用场景与注意事项¶
适用场景¶
- 需要频繁粘贴大量代码或文本的开发者
- 希望保持对话界面整洁的用户
- 需要快速查看粘贴内容预览和字符数的场景
注意事项¶
- 文本仅在内存中存储,主机重启后文本会丢失,占位符将保持原样发送给模型
- 插件不节省 token,模型仍会看到全部内容
- 仅在主机回复时触发折叠(主机尝试两次,每次最多等待 5 秒)
- 删除的占位符会从主机记忆中移除
- 已发送的回合保留文本,不会因编写器清空而丢失
- 主机端最多保留最近 50 条文本,客户端最多保留最近 100 条文本
总结¶
matata2017/dsh-paste-collapse 提供了一种在 DeepSeek Harness 中管理大段粘贴内容的直观方式。它通过占位符和药丸按钮减少界面噪音,同时在发送前展开内容,确保模型获得完整的上下文。插件遵循 Codex 的设计规则,与现有工作流兼容。
- 插件目录:https://www.skillhub.cn/plugins/matata2017/dsh-paste-collapse
- GitHub:https://github.com/matata2017/dsh-paste-collapse