DSH 開發者在輸入長文本(代碼片段、長日誌、文檔)時,往往面臨上下文溢出或消息結構混亂的問題。手動截取或簡單拼接不僅效率低,還容易打斷對話流。dsh-paste-collapse 插件通過在瀏覽器端攔截粘貼操作,將大段文本自動轉換爲緊湊的標籤,發送時再還原爲完整上下文。
插件定位¶
這是一個 DSH 靜態插件(Static Cordis Plugin)。它是一個真正的靜態包,包含 Host(後端邏輯)和瀏覽器 Client(前端交互)。插件由 huenjie 維護,許可證爲 MIT。
安裝該插件後,裝入 dsh web profile 並重啓 dsh web,即可自動加載,無需動態重建或再次授權。
核心功能¶
該插件主要解決大段文本粘貼的展示與傳輸問題:
- 自動縮略
在 AI 輸入框粘貼文本時,系統會先掐掉首尾空白。若內容仍爲多行,或單行長度超過 100 字,則會自動縮略爲[Paste #N +M lines]標籤。 - 本地緩存持久化
瀏覽器端使用localStorage保存粘貼記錄,最多緩存 32 條,每條最多 50,000 字。Host 側僅保留最近 8 條進程內存作爲兜底,不寫入硬盤。 - 交互操作
- 👁 預覽:點擊圖標彈出完整內容卡片,點擊卡片外部或關閉按鈕即可關閉。
- ✎ 編輯名稱:給粘貼塊起名,標籤會同步更新爲
[Paste #N | 名字 +M lines]。 - ↺ 恢復原文:點擊圖標將標籤回寫爲純原文。
- 刪除:沒有獨立的刪除按鈕,直接在輸入框刪除標籤文本即可移除芯片。
- 發送時自動展開
消息發出時,標籤會自動展開爲完整原文。展開格式包含純標識首尾行(如[End #N]),編號與輸入框標籤一致,模型直接接收原文,無需調用工具。 - 兼容性
- Slash 命令:帶參數的 slash 命令(如
/agent-teams [長文本])在提交前展開參數,但不加塊裝飾,避免破壞命令解析。 - 舊版兼容:舊版標籤
[Pasted text #N +M lines]仍會被識別與展開。
- Slash 命令:帶參數的 slash 命令(如
安裝與啓用¶
使用以下命令安裝:
dsh plugin --profile web add dsh-paste-collapse
安裝後重啓 dsh web 即可生效。
典型用法¶
- 粘貼多行文本或單行超過 100 字的內容,輸入框會立即出現
[Paste #1 +34 lines]標記。 - 點擊 👁 圖標預覽完整內容。
- 點擊 ✎ 圖標給粘貼塊起名,例如
版本A,標籤變爲[Paste #1 | 版本A +34 lines]。 - 點擊 ↺ 圖標將標籤回寫爲純原文,繼續編輯。
- 直接在輸入框刪除標籤文本,芯片自然消失。
- 提交對話時,標籤自動還原爲原文發送。
技術細節¶
- 判斷邏輯:孤立的
\r(char 13)在網頁裏不產生可見換行,不觸發縮略。只有掐掉首尾空白後仍爲多行或單行 >= 100 字時才縮略。 - 目錄結構:插件包包含
package.json、cordis.patch.yml、Host 邏輯 (lib/index.js) 和瀏覽器邏輯 (lib/client.js)。 - 兜底機制:僅當展開取不到原文(瀏覽器緩存被清理且 Host 進程已重啓)時,標籤纔會原樣發出。此時代理可調用
myds_read_captured工具按編號讀回完整文本。
適用場景與注意¶
適合智能體開發中需要頻繁粘貼代碼或長文檔的場景。注意該插件以當前 dsh 進程權限運行,建議在安裝前檢查源碼與許可證。
總結¶
該插件通過靜態包形式降低了部署複雜度,解決了大段文本粘貼的上下文管理問題。更多詳情與源碼,可訪問:GitHub。