前言¶
DeepSeek Harness(DSH)在對話裏能正常渲染圖片,但內置燈箱只有遮罩、圖片和關閉按鈕。文字可以像普通網頁一樣選中複製,圖片卻沒有「複製」入口,常見做法是先保存到磁盤再拖進別的軟件。對經常要把模型生成的圖貼進文檔、聊天或設計工具的人來說,這一步很碎。
下面介紹社區插件 dsh-copy-image(維護者 447662,分類:客戶端)。它在點擊圖片時替換原生燈箱,提供複製、保存、縮放和同條消息內翻頁,並把複製路徑做到在桌面殼裏真正寫入系統剪貼板。
這是什麼¶
dsh-copy-image 是 DSH 的客戶端插件:從已渲染的對話 transcript 裏讀取圖片 URL,用獨立全屏查看器展示,支持 PNG 複製與保存。插件以 MIT 許可發佈,當前 package 版本爲 0.2.0;SkillHub 目錄頁見 dsh-copy-image,源碼與說明在 GitHub。
DSH 生態強調「一切皆插件」;SkillHub 是社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。安裝前建議自行查看倉庫源碼與許可證——插件隨當前 DSH 進程權限運行。
核心功能¶
點擊對話中的任意圖片(左鍵),打開全屏查看器,工具欄包含:
| 控件 | 作用 |
|---|---|
| 複製 / Copy | 將圖片編碼爲 PNG 寫入系統剪貼板 |
| 保存 / Save | 下載爲 PNG 文件 |
| − / 1× / + | 1×–8× 縮放;放大後支持滾輪縮放與拖拽平移 |
| ‹ / › | 在同一條消息的多張圖片之間翻頁 |
| ✕ / Esc | 關閉查看器 |
實現上,浮層不移動或重掛 DSH 的 DOM 節點,只在 document 上監聽事件,界面繪製到獨立的 body portal。README 說明這是爲了避免 DSH 用 React 虛擬列表渲染對話時,重掛節點導致後續 removeChild 報錯。
像素導出: 桌面殼通過 dsh-app://app 自定義協議加載 UI(secure: true、corsEnabled: true),允許 crossOrigin="anonymous" 等方式把圖畫到 canvas 再 toBlob。插件按順序嘗試 CORS 可見加載、fetch + blob: 解碼、普通加載,以便在圖源無 CORS 頭時「保存」仍可用。
剪貼板寫入: Electron 渲染進程裏,navigator.clipboard.write 可能被會話級權限處理器靜默拒絕。桌面路徑下,渲染進程將 PNG 以 POST 發到宿主路由 /dsh-copy-image/copy,由宿主寫臨時文件並通過 PowerShell 調用 System.Windows.Forms.Clipboard.SetImage 寫入剪貼板;純瀏覽器 profile 無宿主路由時仍嘗試 navigator.clipboard.write 作爲兜底。
安裝與啓用¶
要求 DSH 內核 >= 0.1.7-rc.1;README 寫明已在 0.2.1-rc.2 上驗證。支持 desktop shell 或 web profile。
從 GitHub 安裝(推薦):
dsh plugin --profile desktop add github:447662/dsh-copy-image
在 GUI 安裝: 側欄 Plugins → Add plugin(或「添加插件」),粘貼 github:447662/dsh-copy-image 並安裝。
本地目錄(開發):
dsh plugin --profile desktop add link:/absolute/path/to/dsh-copy-image
安裝後須完全退出 DSH 再重新打開;僅關窗口不夠,後臺進程可能仍加載舊 bundle。
典型用法¶
- 安裝並重啓 DSH 後,在任意含圖片的對話裏左鍵點擊圖片。
- 在全屏查看器中點 複製,到目標應用裏粘貼(應爲 PNG 位圖)。
- 需要文件時用 保存;同條消息多圖時用 ‹ / › 切換。
- 放大後用滾輪與拖拽查看細節,Esc 或 ✕ 關閉。
倉庫提供契約測試,可在插件目錄執行:
node test/contract.cjs
README 稱共 25 條斷言,覆蓋 loader 註冊、對話圖片識別(排除頭像、側欄圖標等)、複製按鈕 POST 宿主路由,以及關閉時浮層爲 display:none 且 pointer-events:none 的迴歸檢查。
適用場景與注意¶
適合: 在 DSH 桌面端或本地 web 裏頻繁把對話圖片複製到剪貼板或另存 PNG 的用戶;需要比原生燈箱多縮放、翻頁能力時。
已知限制(來自 README):
- SVG 圖片會被跳過;可對原圖使用瀏覽器右鍵另存。
- 超大圖按原分辨率重編碼,複製可能較慢。
- 插件替換原生燈箱而非疊加;卸載後恢復 DSH 默認行爲。
- 查看器不提供右鍵菜單;複製入口在工具欄。
隱私: 宿主半區僅註冊本機迴環路由 /copy、/ping;/copy 接收 PNG 字節、寫臨時文件、寫入剪貼板後刪除臨時文件,不接受任意路徑、不讀其他文件、不髮網絡請求。瀏覽器半區只讀 DSH 已渲染的圖片地址。
0.2.0 修復摘要: 關閉查看器後曾僅用 opacity: 0 隱藏,全屏遮罩仍攔截點擊導致頁面「假死」,現改爲關閉時 display: none + pointer-events: none;複製改爲宿主側寫入;僅左鍵打開查看器,避免右鍵凍結。
結尾¶
dsh-copy-image 針對 DSH 對話圖片「只能關、不能拷」的缺口,用可複製的查看器補全工作流。目錄與詳情:SkillHub;安裝命令與實現說明以 GitHub README 爲準。