前言¶
在 DeepSeek Harness(DSH)里让模型「看图推理」,常见做法是依赖预览图或多次调用之间隐式换算坐标。预览尺寸与附件原图不一致时,模型读到的位置很难和后续工具参数对齐,数人、比对两处相似区域这类任务容易在几轮之后才暴露标错或重复标注。
下面介绍社区插件 dsh-vision-reasoner(维护者 LionNatsu,SkillHub 分类为联网工具)。它在会话里提供一套相机与标注工具:位置一律用原图像素命名,返回图带可读坐标网格,并维护带编号的标注记录,便于模型先看再标、再校正。
这是什么¶
dsh-vision-reasoner 是 DSH 插件,把一张图变成「带编号标注记录 + 坐标标注的局部/对比视图」的工作流载体。README 写明:标注画在图上、模型能直接看到自己画了什么;位置从图上的网格读数得到,不从预览换算,也不用前一次调用的表述来定义下一次调用。用途不限定画面类型——例如统计照片中人数,或核对笔记指的是哪一块相似区域。
包版本为 0.1.1(MIT 许可证),发布在 npm,仓库:https://github.com/LionNatsu/dsh-vision-reasoner。目录页:https://www.skillhub.cn/plugins/LionNatsu/dsh-vision-reasoner。SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
工具集¶
插件向模型暴露以下工具(名称与用途以 README 为准):
| 工具 | 作用 |
|---|---|
camera_reset |
相机对准整图:一个方窗容纳全图,图外为黑,并返回当前视图。 |
camera_move |
step: "next" 按阅读顺序扫下一窗,"previous" 后退;方向键移动一整窗;to: [x, y] 以网格读出的坐标为中心。 |
camera_zoom_in / camera_zoom_out |
以中心 ×2 或 ÷2 缩放,可用 times 连续多步;相机停在操作结束位置。 |
mark_add |
在原图坐标 at: [x, y] 加标注,半径 r、说明文字与颜色;相机会移到该批标注并返回周围方窗。 |
mark_remove |
按编号删除标注,如 [3, 7]。 |
mark_edit |
按编号移动、改大小、改说明或改颜色,一次调用完成。 |
每次返回的图都带有网格:线在原图的「整」像素位置(如 100、200、500,随缩放变密),四边标同一套原图坐标。结果文本还会列出完整标注记录(每个标注的坐标),便于发现重复或标错。工具本身不对画面内容做计数或判断,结论由模型陈述。
附带 Skill¶
包内发布 skill vision-sweep-count,对应 README 描述的主流程:先看全图,再按窗扫视、边读边标、读返回窗、最后依据记录计数。模型在任务匹配时会读取 skill;README 强调,「在推理里指向图上位置」并不是模型默认会进入的模式,因此 skill 在这里有明确作用。
网格与相机行为(摘要)¶
- 网格步长取 10、20、50、100、200、500 等,使标签在视图上大约相隔 100 像素,宽景与近景都可读,且数字始终表示原图坐标。
- 相机表示「镜头在哪」,不是一次性动作;
zoom、move改变朝向,reset回到全图;每次结果说明当前位置。 - 默认绘制已有标注;需要空白画布重新数时可设
marks: false。 - 结果会统计自上次
reset以来相机停过的窗数、当前窗与尚未扫到的窗,避免调用方自己记扫视进度。
安装与启用¶
官方安装方式(README):
dsh plugin --profile <name> add dsh-vision-reasoner
或在 Web UI:Plugins → Add plugin,填写包名 dsh-vision-reasoner。
包声明 dsh.bundle.patch → ./cordis.patch.yml(一条 Host 行),profile 下次加载时由 loader 应用。无构建步骤、无 install 脚本。
运行环境要求 Node ^22.19.0 || >=24.0.0。唯一依赖为 sharp(Apache-2.0);Harness 在会话附件处理中已普遍使用 sharp(@deepseek-ai/dsh-attachment-local 亦依赖它),一般无需额外装第三方图库。插件以当前 dsh 进程权限运行;安装前请自行查看仓库源码与 MIT 许可证。
典型用法¶
README 给出的使用顺序可概括为以下步骤。
- 先看再指。 位置必须来自已看到的返回图;网格是唯一标尺,不要用别的工具裁切后再读坐标,也不要从另一套像素尺寸的视图估位置。
- 读网格标签。 线在原图整像素处,读特征前一条线再估间距;粗估约四分之一格是常用精度,因此放大后网格会更密。
- 用坐标标注。 调用
mark_add,at: [x, y]与半径r均为原图像素;相机移到标注处,返回带十字中心与旁侧记录的方窗。 - 按窗扫视。 用
camera_zoom_in放大到能辨认细节,再用camera_move且step: "next":窗从中心起向左再向右、再向下铺排;每次结果说明扫视进度与剩余窗,已在某窗读过的位置可与上一窗对照。 - 核对与修正。 各视图都画标注,未标区域即未处理;记录里可见重复编号或空环。近似的用
mark_edit,错的用mark_remove;改完会回到所触区域附近的窗,错误圆环会影响之后每一窗。
行为与存储注意¶
- 标注记录不写盘。 标注存在于会话日志;Harness 记录每次工具调用及结果,记录由相同纯函数从事件折叠重建。重开会话可恢复同一记录。
- 每张返回图写两处。 模型通过附件服务收到图像块;Web UI 预览需要文件,PNG 还会写到
<cwd>/.dsh-vision/<name>.png,并在images[].path中以工作区相对路径报告——这是插件唯一会写的目录,且仅在需要展示图时写入。 - 读图经
ctx.fs,由沙箱决定可读范围。 - 无附件服务、或模型未声明图像输入(
read_image的门禁)时,返回文本加说明而非图像块;查不到图等「未知」情况 README 说明仍会尽量附带,以免因查找失败 withholding 图像。
结尾¶
dsh-vision-reasoner 把「看图 → 原图坐标标注 → 分窗扫视与校对」收进 DSH 工具与 vision-sweep-count skill,适合需要在会话里对图片做可核对、可修正的空间推理的场景。进一步细节见仓库 README 与 docs/DESIGN.md。