前言¶
在 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 許可證。建議在安裝前檢查源碼與許可證,確保符合項目規範。