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