前言¶
在 DeepSeek Harness(DSH)插件开发中,需要展示或编辑大段文本时,通常没有内置的 UI 组件。dsh-scratchpad 提供了一个解决方案:它是一个共享的悬浮文本表面,插件可以通过客户端服务 scratchpad 打开它,用于阅读或就地编辑。
插件简介¶
dsh-scratchpad 是由 joao-paulo-santos 维护的 DSH 插件。
它自身不包含用户界面,主要作为底层服务存在。其他插件通过注入 scratchpad 服务来调用它,实现文本的显示与编辑。插件无持久化存储,文本生命周期仅限于当前 DSH 会话。
安装与启用¶
安装前需确保你已拥有 DeepSeek Harness 的 checkout,并配置好对应的 profile(示例中使用 web)。
- 安装命令如下,将插件添加到当前 profile:
pnpm dsh plugin --profile web add ~/dsh-plugins/dsh-scratchpad
- 安装后验证 profile 配置是否正确:
pnpm dsh --profile web --dump-config
- 重启 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 许可证。建议在安装前检查源码与许可证,确保符合项目规范。