前言¶
在 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 仓库。