DeepSeek Harness:大段粘贴内容的折叠与展开插件

前言

在使用 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"
  }
}

典型用法

  1. 复制一段超过 1000 字符的文本(如代码片段或长日志)
  2. 在 DSH 编写器中粘贴,界面会自动将长文本折叠为占位符,并在顶部显示药丸
  3. 点击药丸可查看完整文本或直接复制
  4. 按下发送后,主机端会在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye