🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

图像标记推理 LionNatsu/dsh-vision-reasoner

DeepSeek Harness
LionNatsu20 天前有提交已提供中文文档扫描:含敏感能力

在图片上打编号标记并查看标注特写,辅助定位判断

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/15 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add LionNatsu/dsh-vision-reasoner
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 2 处,展示前 2 条)
  • 写入本地文件
    index.js:401
    mkdirSync(join(cwd, VIEW_DIR), { recursive: true })
  • 写入本地文件
    index.js:402
    writeFileSync(join(cwd, VIEW_DIR, view.name), view.png)
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

在图片上标注并查看图片:一个 DeepSeek Harness 插件,把图像变成带编号标记的记录,附坐标标注的局部放大图和可核对的对比图。

README

由 DeepSeek 最新模型翻译生成
dsh-vision-reasoner 一个 DeepSeek Harness 插件,让模型在图片上打编号标记,然后看自己画了什么。位置用图片自身的像素来命名,从带标注的网格上读出来,所以不需要从预览图换算,也不必用上一次调用的说法来表达这一次调用。它不针对某类图片:数照片里有几个人是一种用法,判断一条备注指的是两个相似区域中的哪一个,是另一种用法。 工具 | 工具 | 用途 | | vision_look | 看整张图片,看其中一块矩形区域(用原始像素的 [x0, y0, x1, y1] 给出),或一次看最多九个矩形,返回一张拼好的带标注分块图。并排比较标记;涂掉某种颜色。除非你要求,否则画出的图片不带标记。 | | vision_mark | 按坐标打标记,at: [x, y] 用原始像素,可带大小、说明文字和颜色。 | | vision_unmark | 按编号删除标记,例如 [3, 7],用于标记打错位置时。 | | vision_edit | 一次调用里按编号移动、缩放、改说明或改颜色。 | 每张返回的图片都带网格,网格线落在图片自身像素的整数位置上——100、200、500,取决于看得多近——每条线在四条边上都标着这个数字。模型读到的数字就是它能用的数字。
展开完整文档(README 剩余 1 节)
dsh-vision-reasoner

一个 DeepSeek Harness 插件,让模型在图片上打编号标记,然后看自己画了什么。位置用图片自身的像素来命名,从带标注的网格上读出来,所以不需要从预览图换算,也不必用上一次调用的说法来表达这一次调用。它不针对某类图片:数照片里有几个人是一种用法,判断一条备注指的是两个相似区域中的哪一个,是另一种用法。

工具

| 工具 | 用途 |
| vision_look | 看整张图片,看其中一块矩形区域(用原始像素的 [x0, y0, x1, y1] 给出),或一次看最多九个矩形,返回一张拼好的带标注分块图。并排比较标记;涂掉某种颜色。除非你要求,否则画出的图片不带标记。 |
| vision_mark | 按坐标打标记,at: [x, y] 用原始像素,可带大小、说明文字和颜色。 |
| vision_unmark | 按编号删除标记,例如 [3, 7],用于标记打错位置时。 |
| vision_edit | 一次调用里按编号移动、缩放、改说明或改颜色。 |

每张返回的图片都带网格,网格线落在图片自身像素的整数位置上——100、200、500,取决于看得多近——每条线在四条边上都标着这个数字。模型读到的数字就是它能用的数字。每个结果还会列出完整记录,包含每个标记的坐标,所以重复打的标记、打错位置的标记,在下一次回答里就能看见,而不是拖到好几次调用之后。这些工具从不统计或判断图片里有什么:那是模型该下的结论。

安装

dsh plugin --profile <name> add dsh-vision-reasoner

或者在 Web UI 里:Plugins → Add plugin,填包名。这个包声明了 dsh.bundle.patch → ./cordis.patch.yml(一行 Host),配置档加载器会在下次加载配置档时应用。没有构建步骤,也没有安装脚本。

唯一的依赖是 sharp(Apache-2.0),harness 已经用它处理会话附加的每一张图片(@deepseek-ai/dsh-attachment-local 依赖它),所以能跑这个插件的部署环境里本来就有。没有内置任何第三方代码:图标和两个语言文件都是这个包自己的。Node ^22.19.0 || >=24.0.0。

怎么用

1. 先看。 位置要从看到的东西来命名,工具描述里第一句就说了这一点。返回图片上的网格是唯一的尺子:不要用别的工具裁剪图片,也不要从另一个视图读位置,那个视图的像素尺寸不一样。
2. 读标注。 网格线落在原始像素的整数位置上,所以读位置的方法是:说出特征前面那条线的数字,再估计间距——大约四分之一步就是眼睛的极限,这也是为什么看得越近,网格步长越细。
3. 标出坐标。 vision_mark 接收 at: [x, y]、调用方目测判断的尺寸(s、m、l)、一段说明文字和一个颜色。返回的图片会围绕刚标记的位置绘制,上面有圈,旁边有记录。

4. 先扫一遍,再一块一块收尾。 regions 最多接收九个矩形,返回一张总图,每块都标着它来自哪个矩形,并带自己的网格。读一块,标出里面的内容,再 cover 同一个矩形——这就是在拥挤场景里用几次调用数完,而不是分二十次单独看。

5. 先检查,再修正。 cover 把已标记的颜色涂掉,所以还露着的就是没标过的;compare 在两个位置太近、难以分辨时把标记并排摆出来;vision_edit 移动一个差不多对的标记,vision_unmark 删掉一个不对的。改动会围绕它触及的位置绘制返回——标记散布在整张图上时,每个标记一块——所以圈错了脸,在放置它的那次回答里就能看出来。

行为

记录不写入磁盘。 标记存在会话日志里。harness 记录每次工具调用及其参数和结果,记录是这些事件的折叠,用实时调用所用的同一组纯函数重建。一次调用携带折叠所需的全部信息——位置是一对像素,尺寸是一个像素数,没有图片需要测量——所以重新打开的会话能恢复同样的记录,你的图片旁边不会多出任何东西。

每张图片写两次。 模型通过 attachment 服务收到一个 image block,也就是 read_image 发送的形状,所以图片随绘制它的那次调用一起到达。Web UI 的预览需要文件,因为它根据扩展名决定如何渲染文档,而 attachment 对象没有扩展名;因此 PNG 还会写入 <cwd>/.dsh-vision/<name>.png,并在 images[].path 中以工作区相对路径报告。这个目录是本插件唯一写入的东西,而且只在有图片要显示时才写。

图片缺失会报告,不会抛出。 没有 attachment 服务,或者模型未声明支持图片输入(read_image 施加的门槛),返回的是文本加一条说明,而不是 image block;写入失败也一样。仅仅是未知的情况——路由无法解析、适配器出错——照常附加,因为一次查询失败就扣下图片,代价大于它保护的东西。

图片通过 ctx.fs 读取,所以沙箱决定什么可以读。

网格

- 线条落在整数步长的倍数上——10、20、50、100、200、500……——选取标签间距仍约为 100 视图像素的最粗步长。因此宽视图和近视图都保持可读,两者都不改变数字的含义。
- 每个标签都是原图坐标,四条边上都是,无论视图如何。什么都不缩放,什么都不用换算。
- 线条至少绘制 2 像素宽,并随视图缩放,因为等到附件流水线重新编码图片时,一像素的线已经没了。
- 每个视图都按相同的最长边渲染,所以看一个矩形永远不会比看整张图更粗糙。
- 只有明确要求时才绘制标记,这样读到的是图片本身。
- 一张拼图是把多个位置放进同一张图的唯一方式,因为分开收到的图片无法比较。拼图的单元格采用所容纳瓦片的形状,所以一排宽瓦片不会被补成正方形;拼图最多容纳九块瓦片,这样输出时不会被缩小。
- cover 把给定的颜色涂掉:仍然显示出来的部分就是没被标记的。它检查的是记录,不是产生记录的那个感知。
- 视图的最长边上限为 4096 像素(MAX_VIEW_DIMENSION)。

限制

- 标记就在调用方所说的位置。 网格让一个位置可读到大约其步长的四分之一,仅此而已;在大照片的整图上放置的标记,落点误差是几十像素,而不是一像素。
- 记录属于创建它的会话。 子代理能看到它被派生自的那个会话的标记;父级看不到子代理的。两个智能体需要同一个会话才能共享记录。
- 标签需要字体。 文本由 librsvg 渲染,所以没有字体的机器能画出形状,但画不出数字。
- 文本宽度是估算的,不是测量的,所以说明文字可能提前一个字符被截断。它绝不会溢出所在的瓦片。
- 没有产生结果的调用——调用中途被终止的进程——不会出现在重放的记录里。模型可能被告知过一个标记,而重放里没有它。
- 本次重新设计之前写的日志无法重放。 它的调用在参数现在存放坐标的地方带着单元格名称,所以重放会报告无法放置它们。
- 仅限原生呈现。 在代码执行(PTC)下,调用不会记录为 tool/call,所以折叠看不到它们。
- 检查很便宜,但不是自动的。 没有什么强制你再看一眼,或执行一次 cover。

开发

node test/vision.test.mjs # the grid, the places, the record, the pictures
node test/tools.test.mjs # the Host half against a stand-in harness

第一个测试检查几何(网格按整数像素步进,图片之外的位置会被拒绝,尺寸是以像素为单位的环),渲染真实的 PNG,并驱动每个规划函数。第二个测试用假的会话和文件系统驱动全部四个工具:它检查每个返回值都满足其声明的输出 schema,位置以图片自身的像素命名,以及记录是一次折叠——已提交的调用算数,失败的调用不算,未完成的调用从未发生。

tools/replay-session.mjs <session.v4.jsonl.zstd> [--png out.png] 从存储的会话日志重建记录,循环里没有 harness,并且可以渲染它在它命名的图片上。tools/inspect-region.mjs IMAGE X Y W H 把图片的一部分打印成 ASCII。tools/row-css.mjs 打印 harness 自己的工具行 CSS。

index.js 是 Host 那一半。lib/client.js 是浏览器那一半,按工具名各认领一行记录。模块契约在 docs/DESIGN.md。

MIT — 见 LICENSE。
预览分享卡片长什么样 ↓LionNatsu/dsh-vision-reasoner
分享 · DeepSeek Harness Hub
LionNatsu/dsh-vision-reasoner

在图片上打编号标记并查看标注特写,辅助定位判断

这是你的仓库?认领条目

回到顶部