dsh-scratchpad: 共享悬浮文本编辑器

前言

在 DeepSeek Harness(DSH)插件开发中,需要展示或编辑大段文本时,通常没有内置的 UI 组件。dsh-scratchpad 提供了一个解决方案:它是一个共享的悬浮文本表面,插件可以通过客户端服务 scratchpad 打开它,用于阅读或就地编辑。

插件简介

dsh-scratchpad 是由 joao-paulo-santos 维护的 DSH 插件。

它自身不包含用户界面,主要作为底层服务存在。其他插件通过注入 scratchpad 服务来调用它,实现文本的显示与编辑。插件无持久化存储,文本生命周期仅限于当前 DSH 会话。

安装与启用

安装前需确保你已拥有 DeepSeek Harness 的 checkout,并配置好对应的 profile(示例中使用 web)。

  1. 安装命令如下,将插件添加到当前 profile:
pnpm dsh plugin --profile web add ~/dsh-plugins/dsh-scratchpad
  1. 安装后验证 profile 配置是否正确:
pnpm dsh --profile web --dump-config
  1. 重启 Harness 后,注入了 scratchpad 服务的插件即可使用该功能。

核心功能

该插件提供了两种模式,通过 editable 参数切换。

Read 模式(默认)

  • 行为:文本只读,不可编辑。
  • 交互:支持滚动、选择、复制。仅支持关闭操作。
  • 关闭方式:点击背景遮罩或关闭按钮。

Edit 模式

  • 行为:文本可编辑,提供保存和取消选项。
  • 交互:
    • 保存:调用 onSave 回调,并将编辑后的文本返回给调用方,随后关闭 Pad。
    • 取消:丢弃编辑内容,关闭 Pad。
    • 关闭:按下 Escape 键直接关闭,并丢弃编辑内容。
  • 快捷键:Ctrl/Cmd + Enter 可直接保存编辑内容。
  • 注意:点击背景遮罩在 Edit 模式下不会关闭 Pad,防止误操作导致数据丢失。

典型用法

其他插件在客户端代码中注入 scratchpad 服务后,调用 open 方法。

// consumer client half, inject: ['scratchpad', 'slots', …]
ctx.scratchpad.open({
  title: 'Section preview',        // 可选的头部文本
  text: bigText,                   // 必需的字符串
  editable: true,                  // false (默认): 只读查看器
  onSave: (text) => { … }          // 编辑模式:唯一的返回通道
})

依赖与注意事项

功能限制

  • 存储限制:文本大小限制为最多 2MB 的字符串。
  • 无持久化:Pad 状态存活于会话切换(模块作用域),但在页面刷新后丢失。
  • 校验:onSave 回调必须在 editable: true 时使用,否则会抛出异常。

依赖项

  • dsh-diff-view:若要在 Pad 中渲染 mode: 'diff' 内容,需要安装此插件;否则 Diff 模式会降级为普通的“前后对比”视图。
  • dsh-granular-prompt:这是一个依赖本插件的示例,它利用 scratchpad 实现了全文查看、分段替换和 Diff 审查功能。

生态说明

作为 DSH 生态中的插件,它遵循 MIT 许可证。建议在安装前检查源码与许可证,确保符合项目规范。

羽毛球分组比赛记分
小程序二维码

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

小夜