dsh-drawai: DSH 右側欄的可編輯畫布與 AI 改圖工具

前言

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 });

注意事項

  1. 重啓生效: 安裝後必須重啓 dsh web。
  2. SVG 要求: SVG 標記必須包含 viewBox 屬性,否則圖形縮放時可能失真。
  3. 依賴: traceImage 功能在處理 JPEG、GIF 或 WebP 格式時,需要宿主安裝 sharp 庫。
  4. 文件格式: 畫布底層基於原生 .drawio (mxfile) 格式,兼容 drawio / diagrams.net。

總結

dsh-drawai 提供了一個在 DSH 環境內閉環的繪圖解決方案。它通過原生的文件載體和結構化的工具接口,讓模型能夠像人類一樣“看圖說話”,並精確地修改圖中的局部內容。

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

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

小夜