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

桌面操控 zzy6-a/vision-use

DeepSeek Harnessv0.2.0
zzy6-a3 天前有提交已提供中文文档扫描:含敏感能力

DSH Computer Use:让 Agent 看见并操作 Windows 桌面(Windows 原生 / WSL 自动识别);视觉通道 + 鼠标键盘 + Codex 风格蓝色覆盖层,Esc 随时中止。

36/100
综合分
4
GitHub 星标
387
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-vision
npm 源 · dsh-vision 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · vision
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-vision @ 0.2.0
✓Node 引擎要求 >=22 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 00:13:09

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 16 处,展示前 16 条)
  • 读取密钥环境变量
    lib/index.js:22
    apiKey: Schema.string().default(process.env.VISION_API_KEY ?? ''),
  • 读取本地文件
    lib/registry.js:23
    const stat = statSync(path);
  • 读取本地文件
    lib/skill-loader.js:14
    const content = readFileSync(skillPath, 'utf8');
  • 读取本地文件
    lib/crop.js:21
    return decodePng(readFileSync(path));
  • 写入本地文件
    lib/crop.js:63
    writeFileSync(target, encodePng({ width, height, data }));
  • 读取本地文件
    lib/preprocess.js:67
    const bytes = readFileSync(path);
  • 读取本地文件
    lib/preprocess.js:129
    const bytes = readFileSync(path);
  • 读取本地文件
    lib/preprocess.js:163
    const image = decodePng(readFileSync(path));
  • 发起网络请求
    lib/vision-client.js:80
    const response = await fetch(`${baseURL}/chat/completions`, {
  • 读取本地文件
    lib/png.js:167
    return decodePng(readFileSync(path));
  • 写入本地文件
    lib/capture.js:34
    mkdirSync(dirname(target), { recursive: true });
  • 执行外部命令固定命令
    lib/capture.js:38
    execFileSync('powershell.exe', ['-NoProfile', '-NonInteractive', '-EncodedCommand', encoded], {
  • 执行外部命令固定命令
    lib/capture.js:51
    execFileSync('screencapture', args, { stdio: 'ignore', timeout: 30000 });
  • 执行外部命令固定命令
    lib/capture.js:55
    execFileSync('import', ['-window', 'root', target], { stdio: 'ignore', timeout: 30000 });
  • 执行外部命令固定命令
    lib/capture.js:59
    execFileSync('gnome-screenshot', ['-f', target], { stdio: 'ignore', timeout: 30000 });
  • 读取本地文件
    lib/capture.js:66
    const image = decodePng(readFileSync(target));
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

功能亮点

  • 看见并操作桌面
  • 视觉通道识别
  • 鼠标键盘操控
v0.2.12026-09-11
· 变更:输入通道默认改为「模拟键盘」 用户铁律:用 computer use 插件输入一律走模拟键盘注入,禁止剪贴板。 · 默认方法改为 vk:computer_type 现在默认用 keybd_event 逐键注入真实按键事件,跨应用通用(含 Chromium / 微信这类会忽略 KEYEVENTF_UNICODE 的 UI),零剪贴板 · 新增 typevk 动作:非 ASCII(中文等)明确拒绝(exit 2)并指向输入法路线 —— 不做「静默回退剪贴板」 · 剪贴板模式降级为显式 opt-in:仅当调用方写 method:'clipboard' 时启用(会覆盖用户剪贴板内容,文档已标注) · 中文输入走输入法:computer_key 依次发拼音字母(如 n,i,h,a,o)→ computer_key space / 数字键选候选上屏 · systemPrompt 宣告同步「输入通道铁律」:任何对话、任何 agent 用这套 hands 都会看到该规则 · 文档同步:README.md / README_EN.md / scripts/TOOLKIT.md · 实测(微信 = Chromium 类 UI) | 场景 | 命令 | 结果 | |---|---|---| | ASCII | computer_type "test123 OK" | ✅ VK 注入成功落进微信输入框 | | 非 ASCII | computer_type "你好" | ✅ 被守卫拒绝并指路,未回退剪贴板 | | 中文正路 | computer_key n,i,h,a,o → space | ✅ 候选「你好」上屏 → 发送成功 | · 已知语义(不是 bug) typevk 注入的是真实按键,行为与真人手打完全一致,因此受输入法 / CapsLock 影响:例如微信输入法处于英文态且开着英文候选时,数字键会被当作「选第 N 个候选」吃掉(实测 test123 → 上屏候选 TEST,数字 1 被消耗)。 Full Changelog:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
Vision Use · DSH Computer Use 仓库:vision-use · 包名:dsh-vision 让 DeepSeek Harness 的智能体真正看见你的屏幕、并动手操作 Windows 桌面 —— 带 Codex 风格的蓝色操作覆盖层(按 Esc 随时中止)。 它能做什么 | 能力 | 工具 | 说明 | | 👁 看 | view_screen | 截 Windows 全屏 → 直接进入模型视觉通道(不是 OCR,是真·看图)| | 👁 看 | view_image | 把任意图片文件送进视觉通道(Linux / Windows 路径都行)| | 🖱 动 | computer_move | 光标平滑滑行到 (x,y) | | 🖱 动 | computer_click | 左/右/双击,带点击涟漪 | | ⌨️ 动 | computer_type | 输入文字(默认 VK 真实按键逐键注入,零剪贴板;中文走输入法:computer_key 发拼音 → space/数字上屏)| | ⌨️ 动 | computer_key | 组合键(ctrl+t / enter / alt+f4 …
展开完整文档(README 剩余 1 节)
Vision Use · DSH Computer Use

仓库:vision-use · 包名:dsh-vision

让 DeepSeek Harness 的智能体真正看见你的屏幕、并动手操作 Windows 桌面 —— 带 Codex 风格的蓝色操作覆盖层(按 Esc 随时中止)。

它能做什么

| 能力 | 工具 | 说明 |
| 👁 看 | view_screen | 截 Windows 全屏 → 直接进入模型视觉通道(不是 OCR,是真·看图)|
| 👁 看 | view_image | 把任意图片文件送进视觉通道(Linux / Windows 路径都行)|
| 🖱 动 | computer_move | 光标平滑滑行到 (x,y) |
| 🖱 动 | computer_click | 左/右/双击,带点击涟漪 |
| ⌨️ 动 | computer_type | 输入文字(默认 VK 真实按键逐键注入,零剪贴板;中文走输入法:computer_key 发拼音 → space/数字上屏)|
| ⌨️ 动 | computer_key | 组合键(ctrl+t / enter / alt+f4 …)|
| 🎛 控 | computer_overlay | 启停操作覆盖层(start/stop/status,可设空闲自动关)|
| 📊 控 | computer_status | 覆盖层状态 / ESC 标志 / 当前模式 / 光标位置 |

视觉反馈(Codex 风格)

┌───────────────────────────────────────────────┐
│ ╔═════════════════════════════════════════╗ │ ← 蓝色柔光边框(逐像素 Alpha) │ ║ ● DeepSeek Harness 正在操作 [Esc] 取消 ║ │ ← 顶部状态徽章 │ ║ ║ │ │ ║ 打字 → 蓝色光环 + 竖线 ║ │ │ ║ 点击 → 0.7s 涟漪(钉在点击处) ║ │ │ ║ 移动 → 光环淡入跟随;静置 1s 淡出 ║ │ │ ╚═════════════════════════════════════════╝ │ └───────────────────────────────────────────────┘

- 整套光标(箭头 / I 形 / 手指)都是统一的蓝白渐变风格,且保留 Windows 原生语境切换
- 强制覆盖层:所有 hands 操作(move/click/type/key)都会先强制拉起覆盖层,不存在“静默操作”
- ESC 中止:按一下即中止本轮 —— 写取消标志、覆盖层退出、本轮后续动作全部被拒绝。标志是一次性的:下一轮对话开始、插件重载、或超过 5 分钟后自动作废;长按或键位卡住只会触发一次,不会把插件永久锁死
- 任务级保活:只要本回合 agent 还在工作(思考 / 执行其他工具),覆盖层就不会收;回合结束后约 4 秒收起。覆盖层自身仍有空闲兜底(idle_seconds,默认 30,0 = 关闭兜底)
- 输入框下方的状态胶囊:彩色圆点 + CU 待命/移动/输入/点击 + 「停止」按钮

安装

方式一:GitHub Release(推荐)

dsh plugin --profile web add https://github.com/zzy6-a/vision-use/releases/download/v0.2.0/dsh-vision-0.2.0.tgz

方式二:git 源

dsh plugin --profile web add github:zzy6-a/vision-use

装完重启 DSH(client.js 半边需要启动时注册),浏览器刷新后输入框下方会出现状态胶囊。

快速开始

对智能体说:

看一下我的屏幕

帮我在必应搜索 DeepSeek 官网并打开

打开记事本打一段字

智能体会自动:起覆盖层 → view_screen 看 → computer_ 动手 → 再看验证。你随时可以按 Esc 喊停。

系统要求

| 项 | 要求 |
| 宿主(自动识别) | Windows 原生 或 Windows + WSL2;插件自动识别 DSH 所在环境并选择对应路径/子进程方案 |
| WSL 时的互操作 | WSL interop 开启(/proc/sys/fs/binfmt_misc/WSLInterop = enabled);插件自动走 \\wsl.localhost\<distro> UNC 路径 |
| Windows 侧 | PowerShell 5.1(系统自带)+ .NET Framework(System.Drawing/WinForms)|
| DSH | >= 0.1.5-rc.1 |
| Node | 插件本身零运行时依赖(纯 ESM + 子进程调 PowerShell)|
| Linux / macOS | 不支持桌面控制;view_screen 与 hands 工具会明确报错,view_image 仍可用 |

架构

vision-use/
├── lib/index.js host 半边:8 个工具 + 2 条 API 路由 + systemPrompt 能力宣告 ├── lib/client.js browser 半边:composer-dock 状态胶囊 ├── cordis.patch.yml bundle 层:把插件行插入 profile 树 ├── dsh.plugin.json 插件清单(dsh-market / 插件管理 UI 用) └── scripts/ Windows 侧工具链(自包含,随包发布) ├── cu.ps1 鼠标/键盘执行器 + ESC 守卫 ├── overlay-v2.ps1 覆盖层:边框/徽章/光环/涟漪 + C# 60fps 动画引擎 ├── wocr.ps1 Windows 原生 OCR(零 API 成本兜底,可选) └── TOOLKIT.md 工具链详细文档 + 10 条实战纪律

环境自动识别

插件启动时检测 process.platform、WSL_DISTRO_NAME / WSL_INTEROP 与 /proc/version:

| 检测结果 | 行为 |
| Windows 原生 | 直接调 powershell.exe;flag/state/heartbeat 写 %TEMP% |
| WSL + Windows | 调 powershell.exe interop;flag/state/heartbeat 写 /tmp,并自动转成 \\wsl.localhost\<distro>\tmp 供 PowerShell 读写 |
| Linux / macOS | 桌面工具给出明确不支持错误;view_image 不受影响 |

子进程统一通过 DSH_VISION_FLAG_DIR 环境变量获知跨端 flag 目录(WSL 下会自动加入 WSLENV 透传)。

视觉原理:图片以 content: [{type:'image', attachment}] 形式返回,宿主 collectImageRefs() 递归收集后随下一次请求发给模型 —— 这是 DSH 官方的图片通道,因此截图会正常计入模型视觉 token(DeepSeek 官方路由对单图约 369 tokens,上限 384)。

动画原理:覆盖层用 UpdateLayeredWindow 逐像素 Alpha 实现真正的柔光;热路径全部在编译好的 C# 里跑(PowerShell 只敲节拍),单核占用约 8.8%。

配置

| 参数 | 默认 | 说明 |
| computer_overlay start idle_seconds | 30 | 覆盖层自身的空闲兜底秒数;任务进行中插件会持续续心跳,不会在思考时消失(0 = 关闭兜底)|
| -MaxSeconds | 0 | 覆盖层最长存活时间(0 = 不限)|
| -NoCursorChange | 关 | 不安装蓝色光标套装(保留系统默认光标)|

隐私相关:截屏会作为图片附件进入当前会话上下文(与手动粘贴图片等价);如不想让截图进入模型,可用本仓库的 scripts/wocr.ps1 走本地 OCR(零 API 消耗,但只能拿文字)。

计费与隐私

- 插件本身零网络请求:不调用任何 API,只把截图存进本地附件库并把图片块交给宿主
- 图片最终发给当前会话选中的模型路由(DSH 的模型适配器负责发请求)
- 完全跟随你选择的模型:插件不选路由、不改路由,截图始终随会话发给当前模型选择器里选中的模型(选 opencode-go 就走 opencode-go,选官方就走官方)
- 识图能力检查:若选中的模型未声明图片输入能力,view_screen / view_image 会明确报错并提示切换模型
- 走官方路由时单图视觉计费约 369 tokens(DSH 上限 384);走自建/订阅路由则按该路由口径
- 不想让截图进入模型时,可用 scripts/wocr.ps1(Windows 本地 OCR,零 API 成本,但只能拿文字)

已知限制

- Chromium 忽略 KEYEVENTF_UNICODE 注入:往 Edge/Chrome/微信打字用 typevk(真实 VK 按键,跨应用通用)
- 中文/非 ASCII 走输入法:computer_key 依次发拼音字母(如 n,i,h,a,o)→ computer_key space(或数字键选候选)上屏;computer_type 的默认路径会明确拒绝非 ASCII 而不是偷偷回退剪贴板
- 剪贴板模式默认关闭:仅在显式 method: 'clipboard' 时启用(注意:它会覆盖用户剪贴板内容)
- WinUI(记事本等)不认注入的 Ctrl 组合键:computer_key 对这类应用可能无效
- 自绘 UI 的 UIA 坐标不可信(Edge 标签栏、Win11 记事本标签页会返回 ∞ 或错位):请先 view_screen 肉眼定位再点
- 带自绘光标的软件(游戏、部分 Electron 应用)无法被系统级光标替换覆盖
- Linux / macOS 宿主:当前只支持 Windows 原生与 WSL + Windows;其他系统下 view_image 可用,桌面工具会明确报错

相关项目

- dsh-upgrade-guard —— DSH 升级兼容性守卫(同作者的配套插件)

Contributors / 致谢

- zzy6-a — 作者
- DeepSeek V4.1 — 架构设计、实现、测试与发布流程

许可证

MIT © 2026 zzy6-a

v0.3.0 · UIA 定位能力(2026-10-27)

这一版补的是「不用算坐标也能点」。灵感来自生态里几个成熟实现,具体借鉴点:

| 借鉴来源 | 借鉴的东西 | 落到哪里 |
| Yu-tao-Li/dsh-computer-use-win | 用 UI Automation 控件树定位,不靠纯坐标;Electron/Chromium 要先唤醒无障碍层 | uia_tree / uia_find + Wake-Uia(WM_GETOBJECT) |
| STARDUSTLC666/deepseek-computer-use | 操作后要求重新观察;会话级授权与审计 | uia_click 的前后指纹对比 + ~/.dsh/vision/audit-.jsonl |
| sxwsc667/dsh-use-computer | 「坐标不进对话」:只回以目标为中心的近景图 | uia_locate |
| rayadesune/DSH-computer-use | 截图带坐标网格标尺;干跑模式 | view_screen 的 grid / marker_x / marker_y;-DryRun |
| 原生 Win32 | PrintWindow(PW_RENDERFULLCONTENT) 截被遮挡窗口 | view_screen / uia_locate 的 hwnd 参数 |

新工具

| 工具 | 作用 | 是否需要鼠标 |
| uia_windows | 列顶层窗口:标题 / pid / class / rect / center / 前台标记 | 否 |
| uia_tree | 一个窗口的控件树:类型 / 名称 / AutomationId / 矩形 / pattern 列表 | 否 |
| uia_find | 按名字模糊找控件(也匹配 AutomationId / ClassName),返回候选清单 | 否 |
| uia_locate | 找到控件 → 回一张以它为中心的近景图,不带坐标 | 否 |
| uia_click | 按名字点:优先 invoke / toggle / select / expand pattern,退化才用坐标 | 否(pattern 命中时) |

uia_click 的回执示例:

clicked: Button "加粗(Ctrl+B)" @450,112 via toggle-pattern (no mouse movement) toggle state now: On ui changed: NO fingerprint 42D94E5ECD7F -> 42D94E5ECD7F window now: "无标题 - Notepad" focused: Button "更多选项"

view_screen 增强 js
view_screen({ hwnd: 1641304, region: "400,60,700,320", grid: 100, marker_x: 450, marker_y: 112 })

- hwnd:走 PrintWindow,窗口被遮挡也能截到真实内容(实测 Win11 + Chromium 156 有效)
- region:只截一块,越界自动夹到桌面边界
- grid:画坐标标尺,左上/左侧标注全局坐标
- marker_x/y:在目标点画红十字,用来确认「这是不是我要点的那个」

已知边界

- Chromium / Electron 自绘界面:UIA 树很多时候只有几个 Chrome_RenderWidgetHostHWND 节点。已加 WM_GETOBJECT 唤醒,但应用自己不开 accessibility 就拿不到控件 —— 这类目标退回 view_screen + 坐标。
- PrintWindow 黑图:部分应用(老式 OpenGL / 某类游戏)不支持,此时 view_screen 自动退回屏幕捕获。
- 坐标点击兜底会移动鼠标,uia_click 的回执里会写明 via mouse-click,据此区分。

审计日志

每次 uia_click / uia_locate / view_screen 追加一行到 ~/.dsh/vision/audit-YYYY-MM-DD.jsonl: json
{"ts":1793101196129,"tool":"uia_click","name":"加粗","how":"toggle-pattern","matched":"加粗(Ctrl+B)","changed":true,"fpBefore":"42D94E5ECD7F","fpAfter":"763BB639F94C"}

开发提醒

改了这个插件的 lib/index.js 之后,不要用 dev_reload_package 热重载 —— 实测两次都把 DSH 主进程带崩(端口从 13493 → 18168 → 57914)。正确做法: powershell

免重启:先卸载再注入

dev_uninject_plugin match=dsh-vision
dev_inject_plugin dir=C:\Users\19827\.dsh\plugins\dsh-vision

或者干脆重启 DSH(插件已在 profile bundles 里,重启即按磁盘加载)
预览分享卡片长什么样 ↓zzy6-a/vision-use
分享 · DeepSeek Harness Hub
zzy6-a/vision-use

DSH Computer Use:让 Agent 看见并操作 Windows 桌面(Windows 原生 / WSL 自动识别);视觉通道 + 鼠标键盘 + Codex 风格蓝色覆盖层,Esc 随时中止。

回到顶部