dsh-whale-eyes:不截屏的屏幕感知,给 DSH 模型一双眼睛

前言

在 DeepSeek Harness(DSH)里做桌面智能体时,模型往往不知道用户当前在哪个应用、焦点落在哪、还有哪些窗口开着。常见做法是截屏交给视觉模型,整屏像素成本高、延迟大,画面还会离开本机。社区插件 dsh-whale-eyes(仓库 Lh1314-China/dsh-whale-eyes)走另一条路:用 UI Automation 与 Win32 在本机汇总结构化短文本,注册 screen_sight 工具,一次调用大约 55~75 token,且不截屏、不上传。下面介绍它的定位、安装方式与使用边界。

这是什么

dsh-whale-eyes(中文名「鲸鱼的眼睛」)是面向 DeepSeek Harness 的屏幕感知插件,维护者为 Lh1314-China(作者署名:小鲸 & 凌寒)。SkillHub 分类为 模型推理;当前 npm 包版本 0.1.2,许可证 MIT,仅支持 Windows(os: win32)。

它解决的是:在尽量不增加 token 与隐私暴露的前提下,让模型读到前台应用名、窗口标题、焦点控件摘要,以及可选的窗口列表——输出是纯文本,不是像素。

示例输出形态(README 摘录):

app: DeepSeek Harness
win: DSH插件:低token实现屏幕视觉 — DeepSeek Harness
focus: Document "DSH插件:低token实现屏幕视觉 — DeepSeek Harness" = dsh-app://app/
wins: 中转站 | GitHub | 本地磁盘 (D:) - 文件资源管理器 | SakuraCat

不调用 screen_sight 时,插件本身不带来额外开销。

核心功能

工具:screen_sight

模型侧只有一个工具,参数如下:

参数 类型 说明
budget integer 摘要体量。25 为应用+标题;60 为再加焦点控件;220(默认)为再加窗口列表

调用示例:

{ "budget": 60 }

守护进程按 JSON 估算预算再裁剪,实际返回的纯文本往往比估算更短。

与截图方案的差异(README 对比)

截图方案 本插件
隐私 整图可能离开本机 仅结构化文本;密码框为 [password],部分密码管理器类应用整条为 [blocked]
成本 整屏约 660 token 量级(README 表中示意) 单次约 55~75 token,还可继续压 budget
速度 渲染、缩放、编码 本地 TCP 往返,README 称约 10~30 ms
信息形态 像素,需模型自行解读 已是「在哪个应用、哪个控件」

隐私与边界

README 明确约定:

  • 不截屏、不上传、不读剪贴板、不落盘。
  • 密码框(IsPassword)内容一律替换为 [password]。
  • 密码管理器一类应用整条摘要塌缩为 [blocked]。
  • 仅在本机 127.0.0.1 通信,无出站请求。

工作原理(概要)

DSH 主机进程中的 index.js 注册 screen_sight,必要时拉起守护进程;runtime/daemon.ps1 常驻(约 250 ms 轮询),结合 UI Automation、Win32 与 runtime/lib.ps1 的隐私过滤与预算裁剪。默认监听 127.0.0.1:8791(行式 JSON),端口被占用时从 8791 起顺延最多 +9,实际端口写入 runtime/port.txt。

若本机已有 dsh-screen-sense 在跑同类守护进程,本插件会直接复用,不另起第二个轮询器。可选 runtime/cdp.ps1 通过 DevTools HTTP 补浏览器标签页信息(同样不截屏);默认工具路径不触碰会截图的 region op。

安装与启用

装完后 重启 DSH,screen_sight 会出现在模型可用工具列表。README 给出三种方式,任选其一。

1. GitHub(推荐)

插件管理页 → 添加插件 → 填写:

https://github.com/Lh1314-China/dsh-whale-eyes

或 PowerShell:

dsh plugin --profile desktop add github:Lh1314-China/dsh-whale-eyes

2. npm(发布之后)

dsh-whale-eyes

3. 本地目录

C:\path\to\dsh-whale-eyes

环境要求(package.json):Node >=20;DSH >=0.2.1-rc.2 <0.4.0;声明兼容 desktop、web profile,但运行时能力依赖 Windows 本机 API。

典型用法

在对话或智能体流程中,让模型在需要「看清当前桌面上下文」时调用 screen_sight。若只需知道前台应用与标题,可将 budget 设为 25;需要焦点控件用 60;需要窗口列表用默认 220 或按需调整。

本地调试守护进程时,可手动起进程并用 TCP 发 digest 请求(README 示例,端口可改):

powershell -NoProfile -ExecutionPolicy Bypass -File .\runtime\daemon.ps1 -Port 8801
$c = New-Object Net.Sockets.TcpClient; $c.Connect('127.0.0.1', 8801)
$s = $c.GetStream(); $w = New-Object IO.StreamWriter($s); $w.AutoFlush = $true
$w.WriteLine('{"op":"digest","budget":220}')
(New-Object IO.StreamReader($s)).ReadLine()

守护进程还支持 ping、digest、events、pages 等 op;默认产品路径不暴露会截图的 region。

适用场景与注意

适合谁:在 Windows 上跑 DSH 桌面 profile、希望模型感知「当前在哪个窗口、焦点在哪、还有哪些窗口」,又不想为每次感知付整屏截图 token 的开发者。

已知限制(README):

  • 仅 Windows,依赖 UI Automation 与 Win32。
  • Electron / Chromium 应用在 UI Automation 中常只暴露窗口层,需 CDP 补齐(浏览器需 --remote-debugging-port)。
  • 中文标题可能被按字符截断,… 为截断标记。

安全提示:插件以当前 DSH 进程权限运行,并通过本机 API 读取界面结构。安装前应自行查阅 源码仓库 与 MIT 许可证,确认符合你的合规与隐私要求。

DSH 生态主张「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。

结尾

dsh-whale-eyes 把桌面上下文压成几十 token 的纯文本摘要,用 screen_sight 一次调用即可,适合作为 Windows 上 DSH 智能体的低代价「眼睛」。进一步了解可打开 SkillHub 插件页 与 GitHub 仓库。

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

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

Xiaoye