屏幕截图与外部视觉识别:take_screenshot、list_windows、analyze_image、view_image 四个工具,可配置 GPT 视觉通道(gpt-5.5 / gpt-5.6-sol / gpt-5.6-terra),API Key 经凭据服务存储,带设置卡片;view_image 在 Web 对话中显示截图,模型上下文只保留文字。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:ankye/dsh-client-vision#path:/packages/tool-vision
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
English | 中文
给你的 DeepSeek Harness agent 装上眼睛。dsh-client-vision 是面向 DeepSeek Harness 的截图 + 外部图像识别插件:agent 按需截图(或指定任意图片),通过可插拔通道交给具备视觉能力的模型,拿回纯文本描述后继续干活——完全不需要多模态模型。
兼容性
本修订要求 DeepSeek Harness core 为 0.1.2-alpha.5 或以上的 0.1.x 版本;它使用该 core 版本引入的 Settings 服务 API。
为什么值得装
- deepseek 看不到?现在能了。 harness 模型没有图像输入。本插件把「看图」整个过程放在模型之外,返回 agent 能直接推理的文本——和 Codex 的语义识图工具一个思路。
- 想截什么、怎么截都行。
fullscreen全屏 /window指定窗口(实时窗口枚举)/region指定区域 /interactive手动框选——抓浏览器、抓游戏窗口、抓屏幕一角。 - 多通道架构,天生可扩展。 工具入口与识别后端完全解耦。
gpt通道开箱即用;加 Claude / Gemini / 本地模型 = 一个analyze()实现 + 一行注册,三个工具契约永远不用改。 - 密钥安全。 API Key 存在 harness
credentials服务里(VISION_GPT_API_KEY)——绝不进设置文件、日志或会话记录。 - 所有 preset 开箱即用。 host 层全局挂载,
code/standard/cordis/minimal任何 preset 的 agent 都能调用,无需切换。 - 开箱可分发。 附构建产物;三种安装路径(拖入 monorepo /
pnpm publish/ tarball)。 - 智能压缩。 大图自动降采样重编码(≤1568px JPEG q80)后再发出去,控制网关 payload。
能力说明
工具
| 工具 | 作用 |
|---|---|
take_screenshot |
截图:fullscreen(主屏)/ window(配合 list_windows 的 id)/ region(x, y, w, h)/ interactive(用户框选)/ android(adb 设备或模拟器)/ ios(已启动的模拟器)。返回 PNG 路径 + 尺寸。 |
list_windows |
枚举屏幕上的窗口(id、app、title)——macOS CGWindowList、Windows Get-Process 主窗口句柄、Linux X11(wmctrl/xprop),挑出要截的浏览器或游戏窗口。 |
analyze_image |
把图片(指定路径,或最近一次截图)交给当前配置的视觉通道,返回纯文本描述。 |
view_image |
一步「看一下」:截屏(或传入 image_path)并经活动通道识别。截图会在 Web 对话中渲染为图片卡片,而模型上下文只拿到文字描述——图片字节从不进入模型上下文。 |
平台
| 平台 | 截图后端 | 窗口枚举 | 额外要求 |
|---|---|---|---|
| macOS | 系统 screencapture |
Swift CGWindowList |
首次使用授予屏幕录制权限 |
| Windows | PowerShell System.Drawing |
Get-Process 主窗口句柄 |
PowerShell System.Drawing |
| Linux | ImageMagick import |
wmctrl + xprop |
ImageMagick(convert/identify)、wmctrl、x11-utils |
interactive 手动框选只支持 macOS;Windows 和 Linux 请使用带坐标的 region。
设备截图
| 模式 | 截什么 | 要求 |
|---|---|---|
android |
已连接的 Android 设备或模拟器屏幕 | PATH 里有 adb 且 adb devices 有在线设备;任意宿主系统可用。多个设备在线时传 device=<serial> |
ios |
已启动的 iOS 模拟器 | macOS 宿主 + Xcode(xcrun simctl) |
设置(vision 命名空间)
配置入口:设置 → 插件 → 插件配置 →「图像识别」
| 字段 | 含义 |
|---|---|
接口地址(baseUrl) |
域名 + 可选路径前缀;自动拼接 /chat/completions。例:https://api.example.com/v1 |
| 识别通道 | 当前生效的视觉后端(目前为 gpt) |
| 模型 | gpt-5.5 / gpt-5.6-sol / gpt-5.6-terra |
| API Key | 通过 harness credentials 服务存储为 VISION_GPT_API_KEY;明文永远不离开你的机器 |
多通道架构
模型 → analyze_image(image, prompt)
│ 读取 vision.channel
▼
channels/<id>/analyze() ← 每个后端一个实现
│
gpt: POST {baseUrl}/chat/completions (image_url data URL)
claude / gemini / 本地模型: … ← 在这里加你的
加一个通道,小到不能再小:
// src/channels/<id>/index.ts
export async function myAnalyze(ctx, call): Promise<string> {
// call.imageB64 / call.mime / call.prompt / call.config / call.signal
return await fetchYourVisionApi(...)
}
// src/channels/index.ts —— 一行注册
export const channels = {
gpt: { label: 'GPT', analyze: gptAnalyze },
myChannel: { label: 'My Channel', analyze: myAnalyze },
}
take_screenshot / list_windows / analyze_image 三个工具及其 schema 永远不用改。
安装方式(官方部署,不改仓库)
dsh plugin add 把包装进 profile;每个包都声明了 dsh.bundle,挂载自动完成——不需要手写 patch 行、不需要改官方工程。
前置条件
- DeepSeek Harness core
0.1.2-alpha.5或以上的0.1.x版本,且dsh与pnpm在 PATH。
1. 取包(三选一)
a. 从本仓库(发布前推荐):
dsh plugin --profile web add \
file:/path/to/dsh-client-vision/packages/tool-vision \
file:/path/to/dsh-client-vision/packages/ui-vision
b. Tarball:
cd packages/tool-vision && npm pack
cd packages/ui-vision && npm pack
dsh plugin --profile web add file:/path/to/deepseek-ai-dsh-tool-vision-0.1.0-rc.7.tgz \
file:/path/to/deepseek-ai-dsh-client-ui-vision-0.1.0-rc.7.tgz
c. npm registry(发布后):
dsh plugin --profile web add @deepseek-ai/dsh-tool-vision @deepseek-ai/dsh-client-ui-vision
安装时的
[WARN] Issues with peer dependencies是正常的,可忽略——peer 由部署自身的 bundle 在运行时提供。
2. 验证安装
node -e "console.log(JSON.stringify(require(process.env.HOME + '/.dsh/profiles/web/package.json').dsh.profile.bundles))"
# 应包含 dsh-tool-vision 与 dsh-client-ui-vision
3. 重启 + 配置
重启 harness,打开 设置 → 插件 → 插件配置 →「图像识别」:填接口地址、模型和你自己的 API Key(VISION_GPT_API_KEY),保存。
4. 功能验证
让 agent「看一下屏幕」——它会调用 take_screenshot → analyze_image 并描述看到的内容。
卸载
dsh plugin --profile web remove @deepseek-ai/dsh-tool-vision @deepseek-ai/dsh-client-ui-vision
备选:在 harness 分支内构建
如果你运行的是 deepseek-harness 的分支(而非官方部署),也可以把包拖进 monorepo:
cp -R packages/tool-vision <harness>/packages/vision/tool-vision
cp -R packages/ui-vision <harness>/packages/client/ui-vision
然后在 harness 仓库内:apps/cli/package.json 加两个依赖(workspace:^)、tsconfig.host.json/tsconfig.client.json 加引用、pnpm install、构建(tsdown host + client),重启。
快速上手
- 重启 harness。
- 工具目录出现
take_screenshot/list_windows/analyze_image。 - 打开 设置 → 插件 → 插件配置 →「图像识别」,填接口地址、模型和你自己的 API Key,保存。
- 让 agent「看一下屏幕」——它会截图并描述看到的内容。
开发说明
- 本仓库是源码分发形态:peer 依赖(
@deepseek-ai/dsh-tools等)来自你的部署;lib/已附构建产物,npm pack立即可用。 tsconfig.json已适配独立目录;harness monorepo 内的构建管线(含 client bundle 的tsdown.config.ts)在方式 A 下生效。- 绝不提交密钥:API Key 只存在每台机器的
.credentials.yaml里。
License
MIT
链接
同类插件
liustack/modlens★ 4121
为纯文本模型架起视觉桥梁:粘贴图片,输出结构化 JSON 证据(OCR、版面、语义)。
ysr666/dsh-vision-router★ 1126
为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
Anionex/dsh-vision-toolkit★ 884
让纯文本模型处理视觉任务:粘贴图片后自动切换到 Vision Toolkit 变体,支持图片问答、多图比较、长截图 OCR、截图还原前端 UI、元素定位与像素对比。默认无需 API Key——图片经作者自建的免费服务处理,每台机器每天 100 张;也可改为指向自己的服务商。
dickpy/dsh-imagegen★ 99
面向 DSH Web GUI 的 AI 生图插件:通过可配置的 OpenAI 兼容端点(gpt-image-2 / gpt-image-1 / dall-e-3)实现文生图与图生图,提供 api_url/api_key 设置卡片与侧边栏分栏生图工作台。
fandc520/dsh-comfyui★ 97
让 DeepSeek Harness 的 Agent 直接驱动本地或远程 ComfyUI:comfyui_run / comfyui_object_info / comfyui_workflow 工具生成与编辑图像、视频,附带工作流库(图工作流提取:按分量 / 主流程 / 整体)、加载区分辨率自动匹配、实时队列、SDXL 与 Wan 2.1 模板、配套 skill 与同源媒体代理。
sunxin-ai/dsh-design-qa★ 44
给纯文本模型的设计稿保真判定:`deepseek_vision` 工具从任意 OpenAI 兼容视觉路由借来一只眼,让模型判断实现与设计稿是否一致——并附上支撑该判定的基准(4 组夹具、23 处注入缺陷、逐格原始输出)与其依赖的提问纪律。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。