前言¶
DeepSeek Harness (DSH) 的插件生態旨在擴展主程序的能力。dsh-drawai 解決的是繪圖與對話割裂的問題:它將一個可編輯的畫布集成到 DSH 的右側欄,並提供 diagram_read 和 diagram_apply 兩個工具,讓模型能夠直接讀取並修改同一份 .drawio 文件。
這就實現了一種“外科手術式”的編輯——人和模型讀寫的是同一個文件,改動直接落盤,無需繁瑣的導入導出。
插件簡介¶
- 插件名稱:
dsh-drawai - 核心定位: DSH 右側欄的可編輯畫布 + 讓模型直接改圖的兩個工具
- 維護者:
fourzkw - 分類: 模型推理
- 許可證: MIT
安裝與啓用¶
安裝插件後,必須在宿主側重啓 dsh web 才能生效。
dsh plugin --profile web add dsh-drawai
重啓完成後,右側欄會出現“DrawAI 畫布”面板,模型工具集中也會出現 diagram_read 和 diagram_apply。
核心能力¶
1. 右側欄可編輯畫布¶
畫布支持節點繪製、連線、分層、排序、對齊等基礎操作。雙擊即可修改標籤。它直接讀寫原生 .drawio 文件,畫布無法識別的單元會逐字節保留。
2. 自然語言改圖¶
模型通過 diagram_read 感知當前畫布的結構、樣式、圖層和選區,再通過 diagram_apply 執行增刪改、佈局調整或導出操作。
3. 選區感知與回退¶
模型能感知你在畫布上的選中內容。支持多步撤銷,最多可回退 8 步。
4. 圖形支持¶
- SVG 節點: 支持直接插入 SVG 標記,或通過
addNode指定svg屬性。 - 位圖矢量化: 提供
traceImage工具,能根據工作區內的位圖生成 SVG 節點。
5. 數據一致性¶
- 樂觀鎖: 利用
revision字段防止併發衝突。如果diagram_apply時傳入的revision與當前文件不匹配,操作會報錯且不寫回文件。 - 保留未知內容: 寫回文件時,模型不認識的單元會原樣保留,不會被刪除。
使用示例¶
1. 矢量化位圖¶
將工作區內的圖片轉化爲矢量節點:
diagram_apply({ op:'traceImage', image:'refs/角色.png', x:40, y:40 })
2. 導出 SVG¶
將當前畫布導出爲 SVG 格式:
diagram_apply(export, format:'svg')
3. 樂觀鎖寫回¶
在進行修改前,先讀取文件的 revision,並在寫入時帶上該版本號:
// 模型先讀取
const state = await diagram_read();
// 後續修改操作帶上 expectRevision
diagram_apply({ op:'setStyle', ids:['node-1'], style:'fill:#f00' }, { expectRevision: state.revision });
注意事項¶
- 重啓生效: 安裝後必須重啓
dsh web。 - SVG 要求: SVG 標記必須包含
viewBox屬性,否則圖形縮放時可能失真。 - 依賴:
traceImage功能在處理 JPEG、GIF 或 WebP 格式時,需要宿主安裝sharp庫。 - 文件格式: 畫布底層基於原生
.drawio(mxfile) 格式,兼容 drawio / diagrams.net。
總結¶
dsh-drawai 提供了一個在 DSH 環境內閉環的繪圖解決方案。它通過原生的文件載體和結構化的工具接口,讓模型能夠像人類一樣“看圖說話”,並精確地修改圖中的局部內容。