- Home
- Plugins
- Vision, Voice & Multimodal
- meow-vision
meow-vision
meimiaoji-creator/meow-vision
meow-vision 是 DeepSeek Harness 的一款视觉插件,解决纯文本模型无视觉。另一方面vue页面开发视觉验证不闭环的问题。
Install
dsh plugin --profile web add github:meimiaoji-creator/meow-visionREADME
meow-vision
dsh-plugin for DeepSeek Harness(DSH):给文本模型补一双眼睛,给多模态模型补一对"看 UI 渲染"的眼睛。
meow-vision 提供两个工具:
meow_vision— 当你正在用的模型不能直接看图时(非多模态会话),调用它,由你预先在设置里指定的视觉模型识别图片并返回文字描述。meow_preview— 渲染一个页面(本地 Vue demo、URL、HTML 文件)并把截图作为图片返回给当前模型,让多模态模型能"看见"组件真实渲染效果(样式/边距/布局),方便迭代 UI 组件写法。
零 dsh 源码改动;与 dsh-meow-skill / meow-file-view / meow-dsh-task 平级共存,互不影响。
安装
通过 dsh 官方插件管理器安装(profile = web):
dsh 插件 --profile web add meow-vision
如果你想直接装 GitHub 仓库的 main 分支:
dsh 插件 --profile web add github:meimiaoji-creator/meow-vision
安装完成后,重启 dsh 即可在设置弹窗看到 meow-vision 配置 tab,模型工具列表里也会多出 meow_vision 和 meow_preview 两个工具。
功能一:meow_vision —— 给纯文本模型补一双眼睛
适用场景
当前模型无法直接处理图片(read_image 工具会被 dsh 的多模态门禁拒绝),但你又需要把一张图(截图、UI 设计稿、报错截图)喂给模型"看"。
配置
- 打开 dsh 设置 → meow-vision tab → 视觉模型 区块。
- 从候选列表里选一个多模态模型作为视觉模型(候选列表自动从 dsh 已配置的模型里过滤
inputModalities含image的)。 - 保存。配置会写入插件根目录的
vision.json。
用法
模型(即使是文本模型)会自动调用:
调用 meow_vision(image_path="/path/to/screenshot.png", question="这个报错的堆栈含义是什么?")
模型会收到该图的文字描述,然后继续推理。
主模型本身就是多模态时,
meow_vision会自动提示模型改用read_image直接看图,避免绕道。
功能二:meow_preview —— 给多模态模型补"看见 UI 渲染"的眼睛
适用场景
团队 UI 库组件的真实渲染样式(padding、margin、hover、disabled 等)往往和文档描述对不上。让多模态模型自己"截图看一眼"是最快的迭代方式。
配置
在同一个 meow-vision tab → 预览配置 区块填:
| 字段 | 含义 | 示例 |
|---|---|---|
libName | 团队 UI 库的 npm 包名(用于 demos/<名字> 时定位 dev server) | @sky/sky-ui |
port | dev server 端口(默认 4173) | 4173 |
.preview 目录 | 你的 Vue demo 工作目录绝对路径 | /Users/you/work/my-lib/.preview |
用法(推荐写法:demos/<名字>)
在 .preview/src/demos/ 写一个最小 Vue demo(只渲染一个组件,显式设置要研究的 props/slots;库组件已全局注册,直接写 <组件名> 即可):
<!-- .preview/src/demos/button-basic.vue -->
<template>
<Button size="small" disabled>禁用小号按钮</Button>
</template>
然后让模型调用:
调用 meow_preview(target="demos/button-basic")
返回的是截图图片(自动喂给当前多模态模型的视觉通道),模型能直接"看见"组件真实样式,然后按需调整 props/slots,再 meow_preview 迭代。
其他 target 形式
| 形式 | 用途 |
|---|---|
demos/button-basic | 预览 .preview/src/demos/button-basic.vue(推荐,最稳) |
https://example.com/page | 截图任意公网 URL |
file:///path/to/index.html | 截图本地静态 HTML |
强制规则
- 禁止整页布局、禁止多组件同框、禁止业务数据/路由/状态管理/外部接口请求。
- 这是研究单个组件行为的简单预览,不是整页预览。
- 截图保存在
.preview/shots/<name>.png,可再用read_image或meow_vision复用。
工具输出示例
meow_vision
输入:
{ "image_path": "/tmp/screenshot.png", "question": "界面上的错误码是什么?" }
输出:
界面上的错误码是 ERR_NETWORK_TIMEOUT,出现在右下角的 Toast 提示里……
meow_preview
输入:
{ "target": "demos/button-basic", "width": 800, "height": 400 }
输出(多模态模型看到的是图片 + 文字信封):
target: demos/button-basic
path: /Users/you/work/my-lib/.preview/shots/button-basic.png
+ [截图图片已附上]
系统提示词注入
插件会向 dsh 的 systemPrompt 注册两段 hint(order=150):
meow-vision:hint— 告诉文本模型何时该用meow_vision。meow-preview:demo-note— 告诉多模态模型写meow_previewdemo 的最简规范。
无需手动配置,apply() 时自动注入。
权限与运行时行为
透明地列出来本插件安装后会做什么 / 不会做什么,方便你评估是否安装。
会做
- 写文件
<插件根>/vision.json:保存你在设置 tab 选中的视觉模型{ provider, model }<你配置的 .preview 目录>/shots/*.png:meow_preview工具生成的截图产物<你配置的 .preview 目录>/src/demos/<name>.vue:模型按 demo 规范写的 Vue 文件
- 启动 1 个常驻 dev server:仅当
meow_preview被首次调用时拉起你配置的团队 UI 库 dev server(默认localhost:4173),插件卸载时自动 kill - 注册 Web 路由(仅同源,DSH 进程内)
GET /api/meow-vision/config— 读视觉模型配置POST /api/meow-vision/config— 写视觉模型配置GET /api/meow-vision/candidates— 候选视觉模型列表
- 调用 DSH 已注入的服务
ctx.tools.register:注册meow_vision/meow_preview两个工具ctx.systemPrompt.section:注入两段 hint(order=150)ctx.webServer.use:注册上面 3 条路由ctx.llm.resolveModelInfo:探测当前主模型多模态能力(决定走meow_vision还是提示用read_image)ctx.llm.stream:复用 DSH 已配的视觉模型流式调用,不发起任何第三方 API 请求,不发起子 agentctx.fs/ctx.attachments:读写本地文件、把截图以 attachment 形式喂给当前模型
- 设置弹窗注入:在 DSH 设置弹窗加一个名为
meow-vision的 section tab(视觉模型 + 预览配置)
不会做
- ❌ 不读聊天记录 / 会话历史 / 用户上传的其他附件
- ❌ 不读其他插件的配置或状态
- ❌ 不调用任何 DSH 之外的第三方 API(视觉模型完全复用你 DSH 已配的 provider/model)
- ❌ 不修改 DSH 源码,纯 Cordis 插件
- ❌ 不持久化任何用户隐私:vision.json 只存你选的
{provider, model},不含 API key - ❌ 不向外发请求:无 telemetry、无 analytics、无远程上报
兼容性
| 项目 | 要求 |
|---|---|
| DSH profile | 仅 web(依赖 webServer 服务 + settings tab 注入) |
| DSH runtime | @deepseek-ai/cordis ^0.1.0(peerDependencies) |
| DSH client 注入 | @deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-settings |
| Node 半 inject | webServer / tools / systemPrompt / llm / attachments / fs |
| 运行平台 | Node 18+,ESM only("type": "module") |
| 视觉模型 | DSH 已配置的多模态模型中任选一个(用户自选;候选列表自动过滤 inputModalities 含 image 的) |
| meow_preview dev server | 你团队的 Vue 组件库 demo 项目(默认端口 4173,需支持 demos/<name>.vue 路由) |
| 浏览器 | 现代浏览器(支持同源 fetch + React 18 hooks);无 IE / 老 Safari 兼容承诺 |
已知不兼容
- ❌ TUI / CLI profile(依赖 web profile)
- � 旧版 DSH rc 之前的 cordis API(需要
^0.1.0) - ❌
meow_preview对非 Vue 库的 demo(如 React 组件库)需要你自行改写 dev server 入口
开发
# 安装依赖
npm install
# 编译(产出 lib/)
npm run build # 或你自己的 tsc 编译命令
# 本地链路调试:把插件根目录软链到 dsh 的插件目录
# 或用:
dsh 插件 --profile web add link:./ # 本地路径安装
License
MIT © meimiaoji-creator