dsh-visual-memory:为 DSH 智能体提供无损视觉记忆

前言

在 DSH 里跑多轮、带截图的 Agent 时,常见做法是每轮把图再发给视觉模型,或把「模型对图的描述」写进文本记忆。前者重复上传、成本高;后者丢像素、换模型后描述还可能变。若你需要的是「某次截图上某一格的确切颜色」「两次 UI 状态逐像素对比」「按轮次或标签找回当时那张原图」,文本记忆和二次看图都不够稳。

下面介绍社区插件 dsh-visual-memory(维护者 xiciyang,分类:记忆)。它在本地按内容寻址保存图像原字节,用 sha256 与索引检索,读像素、拼对比图、按文本/标签/轮次召回——不依赖第二条视觉模型回路。

这是什么

dsh-visual-memory 是 DeepSeek Harness(DSH)的 bundle 插件:一次存入图像,后续问题都基于原始字节回答——精确像素、精确回放,可按文本、标签、sha256、轮次范围或近重复图检索。

与「再让视觉模型看一遍」或「把 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,需要跨轮次引用同一张截图的精确像素;对比前后界面;按轮次、标签或哈希找回历史帧,且希望答案不随「换一条视觉模型」而漂移。

注意:

  1. 桌面/服务器环境;像素引擎依赖 python3 子进程,Android 不在当前范围。
  2. 观测路径上建议配置声明了图像输入的 model route;插件会探测 routeCapability,纯文本 route 仍存图,但通过 sha256 句柄访问。
  3. DSH < 0.2.0 会因 engines.dsh 拒绝安装;>= 0.3.0 未在资料中验证。
  4. 社区目录 SkillHub 与 GitHub 为独立生态入口,与 DeepSeek / 幻方无官方从属关系;DSH 本身奉行「一切皆插件」,是否安装由你方评估。

结尾

dsh-visual-memory 把「描述」与「字节」分开:图存一次,用 sha256 寻址,用工具读像素、拼检视、做对比、按多种键召回——减轻重复上传和对视觉模型转述的依赖。需要细节、完整工具表与边界说明时,以仓库 README 为准。

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

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

Xiaoye