框選複製(box-select-copy):在 DSH 對話區畫框取詞

前言

在 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 升級時,先卸載舊插件再安裝新版本。

典型用法

  1. 在對話正文中按住 Alt。
  2. 用鼠標左鍵拖拽出矩形選框。
  3. 鬆開左鍵。

成功後底部出現 ✅ 已複製,直接 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 。

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

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

小夜