前言¶
在 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 倉庫。