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

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

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

小夜