前言¶
在 DSH(DeepSeek Harness)的 Web 對話界面裏摘取內容,常見做法是逐行拖選複製。碰到代碼塊裏的列、表格裏的整段數據時,一次拖選只能帶走一行,反覆操作很費時間。mi-chuan/box-select-copy 是一個客戶端插件,用矩形選框解決這個問題:按住 Alt 拖一個框,鬆手就把框內所有文本一次性複製出來。下面介紹這個插件的能力、安裝方式和實際用法。
這是什麼¶
box-select-copy 是一個 DSH Web 客戶端插件,維護者是 Mi-Chuan,目前星標爲 0。它的目標場景是從對話正文、代碼塊或表格中按塊摘取內容,而不是逐行選擇。插件在客戶端側運行,不修改對話的 DOM。
核心功能¶
- Alt + 左鍵拖拽:在對話正文區域畫出矩形選框,覆蓋任意字符範圍。
- 鬆開即複製:鬆開左鍵後提取選框覆蓋的文本,寫入系統剪貼板。
- 輕量提示:成功時顯示
✅ 已複製;空選或失敗也有對應提示。 - 保留橫向間隔:同一行內跨度較大的列之間自動補
\t,便於粘貼到表格裏。 - 主題適配:選框與提示使用 DSH 主題 token,自動適配明暗主題。
- 可取消:拖拽中按
Esc或窗口失焦即取消本次框選。
安裝與啓用¶
先決條件是 DSH Web 客戶端支持客戶端 bundle 插件(dsh.client)。插件提供了四種安裝方式,按環境選一種即可;npm 包名、插件 ID 和 GitHub 倉庫名都是 box-select-copy。
方式一,從 GitHub 安裝,在插件管理頁選擇安裝外部 bundle,安裝目標填:
github:Mi-Chuan/box-select-copy
也可以直接對 Agent 說:
請用 plugin_manager 的 install_bundle 安裝 github:Mi-Chuan/box-select-copy
這種方式由 pnpm 通過 Git 讀取倉庫。如果本機 Git 訪問 GitHub 失敗(例如 Windows 上出現 CRYPT_E_NO_REVOCATION_CHECK),改用方式二或方式三。
方式二,從 npm 安裝,包名是:
box-select-copy
安裝完成後刷新 DSH 頁面。
方式三,下載 Release 壓縮包,直接填下載地址:
https://github.com/Mi-Chuan/box-select-copy/releases/download/v1.1.1/box-select-copy-1.1.1.tgz
當前 Release 包爲 box-select-copy-1.1.1.tgz,也可以先下載到本地再填絕對路徑。
方式四,克隆到本地安裝,面向開發場景:
git clone https://github.com/Mi-Chuan/box-select-copy.git
克隆後在 DSH 中把安裝目標指向包含 package.json 的 box-select-copy 目錄,啓用插件並刷新頁面。
從舊版 @local/column-select-copy 或 @local/box-select-copy 升級時,先卸載舊插件再安裝新版本。
典型用法¶
- 在對話正文中按住
Alt。 - 用鼠標左鍵拖拽出矩形選框。
- 鬆開左鍵。
成功後底部出現 ✅ 已複製,直接 Ctrl+V 粘貼即可。若要取消,拖拽中按 Esc 或讓窗口失焦。
實現與限制¶
插件只包含客戶端代碼,註冊到 shell.overlay 浮層,不修改對話 DOM。它在 window 捕獲階段監聽 pointerdown/move/up,僅當 altKey + 左鍵 + 對話滾動區 同時滿足時啓動。文本提取通過 Range.getBoundingClientRect() 逐字符判斷與選框是否相交,再按 top 分行、left 排序,行間用 \n 連接。剪貼板優先使用 navigator.clipboard.writeText,失敗時回退到隱藏 textarea 加 execCommand('copy')。
使用時注意以下幾點:
- 只在對話正文區域生效,輸入框和側邊欄不會觸發。
- 僞元素(如部分列表符號)和 Shadow DOM 內的文本不會被提取。
- 瀏覽器或 Electron 拒絕剪貼板權限時先走回退方案,仍失敗會提示“複製失敗”。
運行時插件以當前 DSH 進程的權限執行。安裝前先讀一遍 client.js 和 cordis.patch.yml,確認源碼與許可證(MIT)符合預期再啓用。
結尾¶
對於經常在 DSH 對話裏按塊摘代碼或表格內容的場景,box-select-copy 把拖選複製換成了一次框選,省去逐行操作。插件目錄頁在 https://www.skillhub.cn/plugins/Mi-Chuan/box-select-copy ,源碼與安裝說明在 https://github.com/Mi-Chuan/box-select-copy 。