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 环境内闭环的绘图解决方案。它通过原生的文件载体和结构化的工具接口,让模型能够像人类一样“看图说话”,并精确地修改图中的局部内容。

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

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

小夜