前言¶
在 DSH 里跑多轮、带截图的 Agent 时,常见做法是每轮把图再发给视觉模型,或把「模型对图的描述」写进文本记忆。前者重复上传、成本高;后者丢像素、换模型后描述还可能变。若你需要的是「某次截图上某一格的确切颜色」「两次 UI 状态逐像素对比」「按轮次或标签找回当时那张原图」,文本记忆和二次看图都不够稳。
下面介绍社区插件 dsh-visual-memory(维护者 xiciyang,分类:记忆)。它在本地按内容寻址保存图像原字节,用 sha256 与索引检索,读像素、拼对比图、按文本/标签/轮次召回——不依赖第二条视觉模型回路。
这是什么¶
dsh-visual-memory 是 DeepSeek Harness(DSH)的 bundle 插件:一次存入图像,后续问题都基于原始字节回答——精确像素、精确回放,可按文本、标签、sha256、轮次范围或近重复图检索。
- 目录页:https://www.skillhub.cn/plugins/xiciyang/dsh-visual-memory
- 源码与文档:https://github.com/xiciyang/dsh-visual-memory
- 许可证:MIT;当前包版本
0.1.7(见package.json) - 环境:DSH
>=0.2.0 <0.3.0(README 标注在0.2.0-rc.2上验证);Node.js>= 22;像素引擎需本机 Python 3 与 Pillow
与「再让视觉模型看一遍」或「把 base64 塞进一条文本记忆」相比,本插件把字节交给宿主 ctx.attachments 做 verbatim、内容寻址存储,索引与组合视图由插件自身维护。
核心功能¶
README 将能力对标 VISTA 类 harness 中的无损视觉记忆与时空检视;在本仓库中体现为一个 bundle 层、七个工具(完整列表见 GitHub README「Tools」一节)。已核实的主要能力如下。
| 需求 | 工具 | 说明 |
|---|---|---|
| 无损存入并便于检索 | visual_remember |
原文件 verbatim 写入附件存储,索引带 turn/step、sha256、dHash、标签、文本等 |
| 找回历史截图 | visual_recall |
支持 query、id、sha256、标签、轮次范围、时间顺序、感知近重复(dHash) |
| 读取区域精确像素 | visual_read_pixels |
返回 #rrggbb 中心采样矩阵,避免视觉模型对色值取整 |
| 多帧/多区域拼一张检视图 | visual_inspect |
从归档观测裁切视图,支持 layout(如 side-by-side) |
| 状态对比与回放 | visual_compare |
带标签的并排/网格/堆叠对比 |
| 路由与多模态能力探测 | visual_memory_status |
探测当前 route 是否声明原生图像输入;纯文本路由仍可通过 DSH 发出的 sha256:… 句柄访问已存图 |
裁剪、像素差分、调色板等数值/图像运算归 dsh-vision-toolkit(如 vision_crop、vision_pixel_diff);字节存储归宿主 attachments;索引、注意力账本、多视图拼装、能力探测归本插件,避免两套实现分叉。
不适合的场景(README「30-second decision」):需要云端图床(本插件本地文件后端)、Android(像素引擎会 spawn python3)、或单次「描述这张图」——DSH 原生图像输入已覆盖观测路径。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前请阅读仓库源码与 MIT 许可证,确认符合你的环境策略。
推荐从 GitHub 解析安装(便于走各类 registry 镜像):
dsh plugin --profile <name> add github:xiciyang/dsh-visual-memory
也可从 npm 短名安装:
dsh plugin --profile <name> add @xiciyang/dsh-visual-memory
dsh --profile <name> --dump-config # 应出现 "# == @xiciyang/dsh-visual-memory" 层
若安装报错提到 0.0.0-stage,多为 pnpm 元数据缓存残留;可按 README 清理缓存后重试。卸载:
dsh plugin --profile <name> remove @xiciyang/dsh-visual-memory
依赖准备:
python3 -m pip install pillow
验证状态(README):node verify.mjs 在仓库内为 17/17;DSH 0.2.0-rc.2 上曾记录 11/11 端到端实调。
典型用法¶
无独立配置文件;存储根随 session workspace 变化。逻辑位置如下(摘自 README):
| 内容 | 路径 | 说明 |
|---|---|---|
| 会话索引 | <session workspace>/.dsh-visual-memory/ |
index.jsonl 追加写 |
| 多工作区登记 | $DSH_HOME/visual-memory-roots.json |
画廊路由,最近约 20 个工作区 |
| 原图字节 | $DSH_HOME/attachments/v1/files/<sha>/ |
内容寻址,删索引不删原文件 |
Quick start 中的调用顺序可复现为:
// 1. 存入当前截图并写上可检索描述
visual_remember({ path: "./shot.png", text: "checkout page, CNY 199, two buttons", tags: ["ui","checkout"] })
// 2. 之后无需重新上传即可找回
visual_recall({ query: "checkout" }) // 或 sha256 / id / tags / turn range / near-dup
// 3. 读取区域内精确颜色(视觉模型往往会四舍五入)
visual_read_pixels({ id: "VM-…", region: "120,40,200,80", rows: 2, cols: 4 })
// 4. 将多帧归档拼成一张带标签的对比图
visual_inspect({ views: [{ id: "VM-…", region: "0,0,800,600" }, { id: "VM-…" }], layout: "side-by-side" })
清空某工作区的记忆可删除 .dsh-visual-memory/;attachments/ 下的原图需另行回收空间。
适用场景与注意¶
适合:长时间 UI 自动化或调试 Agent,需要跨轮次引用同一张截图的精确像素;对比前后界面;按轮次、标签或哈希找回历史帧,且希望答案不随「换一条视觉模型」而漂移。
注意:
- 桌面/服务器环境;像素引擎依赖
python3子进程,Android 不在当前范围。 - 观测路径上建议配置声明了图像输入的 model route;插件会探测
routeCapability,纯文本 route 仍存图,但通过sha256句柄访问。 - DSH
< 0.2.0会因engines.dsh拒绝安装;>= 0.3.0未在资料中验证。 - 社区目录 SkillHub 与 GitHub 为独立生态入口,与 DeepSeek / 幻方无官方从属关系;DSH 本身奉行「一切皆插件」,是否安装由你方评估。
结尾¶
dsh-visual-memory 把「描述」与「字节」分开:图存一次,用 sha256 寻址,用工具读像素、拼检视、做对比、按多种键召回——减轻重复上传和对视觉模型转述的依赖。需要细节、完整工具表与边界说明时,以仓库 README 为准。