dsh-screen-glow:模型接管桌面时的 OS 级屏幕边缘光

前言

在 DeepSeek Harness(DSH)里跑带 computer-use 的智能体时,模型会间歇性调用 desktop_mouse、desktop_input 等工具,真的去动你的鼠标和键盘。若你同时切到其他窗口写文档或回消息,很难从余光判断「此刻是不是 AI 在控机」,误抢输入或误点确认的风险会上去。

生态里已有若干边缘光类插件(如 dsh-moon-light、dsh-rimlight、dsh-fleeting-light),它们多半画在 DSH 网页窗口内;一切到别的应用就看不见。维护者 Ravi666688 的 dsh-screen-glow 走另一条路:用 Electron 开 OS 级全屏透明置顶窗,盖在所有窗口之上,只在判定为「接管电脑」的工具调用时亮边,并在屏幕中上方显示当前在做什么。分类为客户端插件,仓库 Ravi666688/dsh-screen-glow,许可 MIT;社区目录页见 SkillHub。

这是什么

dsh-screen-glow 是挂在 DSH web profile 上的客户端插件:宿主根据 Cordis 工具名更新本地状态,独立覆盖层进程读 state.json,在主屏四边绘制多层内辉光与可选粒子,并浮一条提示条。读文件、bash、web 搜索、浏览器 CDP 自动化等 不会 点亮;只有匹配「点亮 / 续命」清单的工具才会触发或延长光效(清单可在 cordis.patch.yml 里改)。例如 desktop_mouse 且 action:"position" 只读光标位置时不算接管,不亮。

核心功能

三种光态

光态 触发 默认色 节奏
操控 接管鼠标/键盘(见默认 trigger 子串) 星蓝 #4da3ff 约 3.9s 呼吸
询问 ask_user_question 琥珀 #fbbf24 2.1s 脉冲
批准 approval/request 红 #f87171 1.4s 急脉冲

操控结束后约 1.6s 淡出(连续操作不会闪);询问态结束后会先回到操控色余晖,再按停留时长熄灭。工具切换时亮度会有小幅上顶,便于看出「刚点了一下」。

视觉与交互边界

  • 只覆盖 主屏;setIgnoreMouseEvents + showInactive,不抢焦点、不挡点击。
  • 粒子默认沿四边生成向内飘散(蓝白、lighter 叠加);系统开启「减弱动效」时只画静态光,属预期行为。
  • 五种粒子款式:stream(默认)、spark、dust、orbit、none。

屏幕提示条

操控、询问、批准态在屏幕中心偏上显示圆角提示条(磨砂黑底 + 主色点 + 一句话)。开启 bannerAction 时,提示语后可追加「正在点击 / 正在看屏幕 / 正在输入文字」等动作文案;多会话时可显示会话工作目录名。亮着时每 7 秒从自定义句库随机换一句(操控 / 询问各最多 12 句、每句 60 字)。

设置页与数据通路

DSH 设置 → 屏幕边缘光:操控色 / 询问色 / 批准相关 look、粒子、厚度、数量、速度、停留时长等,带实时预览与「试一下(真机 3 秒)」。配置落在 ~/.dsh/screen-glow/settings.json,改完经宿主 HTTP 推给覆盖层,无需重开 DSH。

设置页 ──PUT /screen-glow/settings──▶ 宿主(落盘 + 改写 state.json 的 look)
      ──POST /screen-glow/preview──▶ 宿主强制试亮 N 秒
覆盖层 ──每 100ms 读 state.json──▶ 换色 / 厚度 / 粒子

本机路由还包括 GET /screen-glow/settings、POST /screen-glow/hide(紧急熄灯),仅监听宿主 webServer 同源地址,无对外遥测。

可靠性与自检

  • 看门狗(0.3.0):每 5 秒检查覆盖层,异常时自动重拉(退避 5s→120s,最多 5 次),可在配置里关 watchdog。
  • 紧急熄灯:全局快捷键 Ctrl+Alt+G 隐藏 60 秒,或设置页「立即熄灯 60s」。
  • 自检 CLI(0.5.0,当前包版本 0.5.2):安装后可执行 dsh-screen-glow,doctor 检查 11 项(profile、数据目录、settings、覆盖层进程、Electron 路径、HTTP 连通等),失败时退出码 1。

安装与启用

在已安装 DSH 且使用 web profile 的机器上,按 README 原文执行:

dsh plugin --profile web add dsh-screen-glow

从指定 GitHub 仓库添加时,占位符需换成你的 fork 或维护者路径:

dsh plugin --profile web add github:<you>/dsh-screen-glow

覆盖层需要本机 Electron。查找顺序:overlay.electronPath → 环境变量 DSH_SCREEN_GLOW_ELECTRON / DSH_ELECTRON_PATH → $DSH_HOME/electron/electron[.exe] → ~/.dsh/electron/electron[.exe]。DSH 桌面端或装过 dsh-pet 的环境通常已有;找不到时插件其余逻辑仍工作,日志会出现 electron-not-found 类 warn,边缘光不显示。

Node 引擎要求 >=22.12.0(见 package.json)。插件声明与 DSH 0.2.1-rc.5 兼容。

宿主配置示例(字段以 README 为准,非法值会 clamp 或回落默认):

- id: dsh-screen-glow
  name: 'dsh-screen-glow'
  config:
    enabled: true
    holdMs: 1600
    minOnMs: 420
    maxOnMs: 300000
    look:
      color: '#4da3ff'
      thickness: 1
      intensity: 0.9
      particles: 80
      speed: 1
    trigger: [desktop_mouse, desktop_input, ...]
    extend: [desktop_screenshot, desktop_perceive, ...]
    electronPath: ''
    dataDir: ''

典型用法

装好后可直接用 CLI 做状态检查或试亮,无需等模型真正控机:

dsh-screen-glow doctor                  # 全量自检(人读)
dsh-screen-glow doctor --json           # 机器读
dsh-screen-glow status                  # 一行 JSON 状态
dsh-screen-glow hide 60000              # 紧急熄灯 60 秒
dsh-screen-glow preview 3000 pending    # 真机试亮 3 秒(control|ask|pending)

未加入 PATH 时:

node <插件目录>/lib/cli.mjs doctor

排障时可对照 README:无光是查 Electron;透明窗花屏可设 DSH_SCREEN_GLOW_SOFTWARE=1;状态可看 ~/.dsh/screen-glow/state.json 与 overlay.status.json。

适用场景与注意

适合经常在 DSH 里开 computer-use、又需要全桌面可见「谁在控机 / 谁在等你回复 / 谁在等批准」的开发者。插件与当前 DSH 进程同权限运行,会通过 spawn 拉起本机配置的 Electron 子进程绘制覆盖层;安装前建议通读仓库 lib/index.js 与安全边界说明,确认可接受 MIT 许可与本地 HTTP 路由范围。

隐私方面:README 写明不联网、无遥测、不截图、不读屏幕内容;覆盖层只读本地 state.json(布尔、工具名与少量数字)。社区目录 SkillHub 与 GitHub 无 DeepSeek / 幻方官方从属关系,属 DSH「一切皆插件」生态中的第三方条目。

结尾

dsh-screen-glow 把「模型真的在动鼠标键盘」和「在问你 / 等你批准」拆成蓝、琥珀、红三种 OS 级边缘反馈,并配上中上方提示条与设置页、看门狗、自检 CLI,弥补仅网页内边缘光切应用即不可见的问题。细节与截图见 GitHub README,安装与索引见 SkillHub 插件页。

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

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

小夜