dsh-auto-paste:輸入框大段粘貼自動存爲附件文件的 DeepSeek Harness 插件

前言

在 DSH(DeepSeek Harness)的 web profile 裏,往輸入框粘貼大段文本時,默認行爲是原始文本直接進入消息體。長日誌、長報錯、長文檔貼進去,消息本身很重,模型也必須在消息裏處理原文。

dsh-auto-paste 解決的就是這個問題:粘貼超過閾值的文本時,插件自動把內容保存爲當前會話工作區裏的附件文件,輸入框裏只插入一個路徑引用,模型按路徑讀文件即可。它由 create-dsh-plugin 模板生成後擴展而來,本文介紹它的功能、安裝方式和驗證步驟。

這是什麼

dsh-auto-paste 是一個 DeepSeek Harness 插件,定位是 web 客戶端的粘貼鉤子(dsh.client.platform: web)。GitHub 倉庫在 sakuraqqq 名下(https://github.com/sakuraqqq/dsh-auto-paste),package.json 的 author 與 MIT 版權人爲 misakamaster,許可爲 MIT。npm 上已發佈 dsh-auto-paste@0.1.2(dist-tag: latest),源倉庫 tag 爲 v0.1.0,兩者對應關係資料未說明。

它做兩件事:客戶端攔截大段粘貼並落盤;同時註冊一個 save_paste 工具作爲兜底。插件不發起任何網絡請求,只寫工作區 pastes/ 下的本地文件。

核心功能

Web 客戶端粘貼鉤子(主路徑)

粘貼超過閾值(默認 500 字符)的文本時,流程如下:

  1. 客戶端攔截粘貼事件,通過現有 connection RPC(/api → Typert gateway)調用宿主 pasteStore/savePaste
  2. 宿主把文本寫入當前會話工作區的 pastes/<時間戳>.txt
  3. 輸入框裏插入文件路徑引用,例如 [已保存大段粘貼爲附件: pastes/20260815-103000.txt (1234 字符)]
  4. 消息發送後,模型通過該路徑讀取文件內容。

保存失敗時回退爲普通粘貼(原始文本直接進輸入框),不丟數據。

大小上限

超過 1 MiB 的文本會被服務端拒絕(大小上限,防資源耗盡):報錯並回退爲普通粘貼,不落盤。

save_paste 工具(紀律兜底)

宿主同時註冊 save_paste 工具。當用戶貼大段文字而輸入框鉤子未攔截時,模型可主動調用該工具,把文本持久化爲 pastes/<時間戳>.txt 並在回覆中引用路徑。README 建議在項目 AGENTS.md 加一行紀律:

## dsh-auto-paste 紀律
用戶粘貼大段文字(約 500 字符以上)時:若輸入框鉤子未攔截,主動調用 save_paste 工具
把文本存入 pastes/<時間戳>.txt,並在回覆中引用該工作區相對路徑,不要複述原文。

安裝與啓用

方式一:從 npm 安裝(推薦)

npm i dsh-auto-paste                          # 最新版(dist-tag: latest);--save-exact 可鎖版
npm i dsh-auto-paste@0.1.2                    # 或指定版本
# 在插件父目錄執行,以包名註冊到目標 profile:
dsh plugin --profile web add dsh-auto-paste
dsh --profile web                             # 重啓 web profile

重啓後觀察 [dsh-auto-paste] host ready ...;刷新瀏覽器頁面,控制檯可見 [dsh-auto-paste] client paste listener ready (minChars=500)

npm 發佈後國內鏡像(npmmirror)同步有幾秒到幾分鐘延遲,安裝時以官方 registry registry.npmjs.org 爲準。

方式二:本地目錄安裝(開發/調試)

# 在插件父目錄(本倉庫根)執行;相對路徑錨定調用目錄,不要在插件目錄內執行
dsh plugin --profile web add ./dsh-auto-paste
dsh --profile web

改動插件後,先執行 pnpm install && pnpm run build(tsc 編譯到 dist/),再重啓 dsh --profile web 並刷新頁面。

閾值調整

minChars 閾值默認 500 字符,可在 cordis.patch.yml 的 row config 中調整。

驗證

無 API key 驗證

沒有 DEEPSEEK_API_KEY 時,可以驗證加載與事件鏈路:

dsh --profile web --dump-config | grep dsh-auto-paste   # 配置層含本行
dsh plugin --profile headless add ./dsh-auto-paste
dsh --profile headless "run a probe"                    # host 半身加載

無 key 時 --verify 只能證明加載、列出、事件正常,模型調用會報 MISSING_CREDENTIAL。端到端驗證(模型真正調用 save_paste 工具)需要設置 DEEPSEEK_API_KEY

適用場景與注意事項

適合在 DSH web profile 下頻繁粘貼長日誌、長文檔的用戶:消息裏只留路徑引用,原文落盤爲工作區文件,模型按需讀取。配合 save_paste 工具和 AGENTS.md 紀律行,鉤子未攔截時模型也能兜底。

安裝和使用前注意幾點:

  1. Node 版本:DSH 要求 ^22.19.0 || >=24.0.0。舊版本(如 v22.17)只告警 EBADENGINE 不阻斷,但建議升級。
  2. 依賴線:插件鎖定 @deepseek-ai/dsh-tools 0.1.0-rc.6(exact,next tag 線,npm latest 是過期的 0.0.1-rc.1);@deepseek-ai/cordis ^4.0.1 爲 peerDependency,由宿主提供;zod ^4.4.3。二次開發時不要手動覆蓋 dsh-tools 的版本。
  3. 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。本插件爲 MIT 許可,可自由使用、修改、再分發(含商用),需保留版權聲明與許可文本;manifest 聲明不發起任何網絡請求,只寫工作區 pastes/ 下的本地文件。
  4. 二次開發提示:包爲純 ESM("type": "module"),dsh.bundle.patch → ./cordis.patch.yml 是 dsh 加載插件的硬性要求,缺失只會被當作普通依賴安裝。

結尾

dsh-auto-paste 用一個客戶端鉤子加一個工具,把「大段粘貼直接進消息體」改成「落盤爲附件、消息裏留路徑引用」,實現不復雜,邊界也清晰:失敗回退、1 MiB 上限、不髮網絡請求。

項目主頁:https://github.com/sakuraqqq/dsh-auto-paste ;社區插件目錄頁:https://www.skillhub.cn/plugins/sakuraqqq/dsh-auto-paste 。目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

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

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

小夜