dsh-cua-driver-indicator:为官方 Cua Driver 补上可见提示与 Esc 停止

前言

在 DeepSeek Harness(DSH)里启用官方内置的 Cua Driver 通道(工具名前缀 cua_driver_native__*)后,模型可以操作本机桌面。通道本身几乎不给用户任何屏幕反馈:默认只有一个关闭状态的指针浮层,你很难判断「控制从何时开始、何时结束」,也无法用物理按键打断正在执行的调用。

社区插件 dsh-cua-driver-indicator(维护者 Eason-22)只补「看得见 + 能喊停」这一层:不注册能动手的工具,不代替官方通道点鼠标或选窗口。桌面动作仍全部由 DSH 内置 Cua Driver 完成。

这是什么

  • 名称:dsh-cua-driver-indicator(npm 包名与 DSH 插件 id 均为 cua-driver-indicator)
  • 当前版本:0.6.5(以仓库 package.json 为准)
  • 许可证:MIT;Windows 画面层部分代码取自上游 dsh-computer-use-win v0.5.0,署名见仓库 THIRD_PARTY.md
  • 平台:仅 Windows("os": ["win32"]);Linux 上安装会因 EBADPLATFORM 被拒装,非 Windows 若强行加载也只会写日志并禁用画面层

DSH 生态主张「一切皆插件」;插件可在 SkillHub 目录页 检索,该站点为社区目录,与 DeepSeek / 幻方无官方从属关系。

核心功能

下面按 README 已说明的行为归纳,不涉及插件未实现的桌面自动化能力。

屏幕提示(亮条与指针光环)

官方通道第一次真正操作桌面时,Windows 侧通过 powershell.exe + WinForms 在屏幕顶部或底部绘制不抢焦点、鼠标可穿透的提示条,并在指针旁显示光环与 DSH 徽标。横幅由运行 DSH 的那台 Windows 宿主绘制,不是网页 DOM,也不是远端机器上的 overlay。

横幅示例格式:

DSH 正在控制电脑 · 会话《<会话标题>》· 正在点击 · 目标:<目标>
  • 会话身份:标题来自宿主 session-title 服务;取不到时普通会话显示「主会话」,子代理会话显示「子代理任务」;机器话标题会被过滤,避免 AgentTeams 派发文本原样上屏。
  • 正在做什么:由当前调用的官方桌面工具映射为中文动作词(如正在看屏幕、正在点击、正在输入等),未知工具兜底为「正在操作桌面」。
  • 目标:优先使用模型通过工具 computer_control_goal 声明的目标(跨轮保留);否则用最近一条真人指令的自动摘要。系统注入上下文、问句与抱怨类消息不会当作目标;无目标时不显示「· 目标:…」整段。

本轮结束,或最后一次桌面调用后空闲 30 秒(可配置 idleMs),提示自动收起。

物理 Esc 停止

物理 Esc 可中断正在执行中的官方桌面调用,并封禁本回合后续桌面调用(下一轮恢复)。插件相对上游画面层打开了 allowInjectedStop,以便在远程桌面、输入法钩子等把真实按键标成「注入式」时仍能识别 Esc。

边界需知晓:Esc 不能撤回已落到应用里的点击或已输入的字符;程序模拟的按键(例如 agent 自己 press_key)不会当作停止信号。

动桌面前的软强制门

会话尚未声明目标时,第一次调用官方桌面工具会被退回一次,模型收到可执行错误,要求先调用 computer_control_goal 声明本轮目标(不超过 24 字),声明后重试同一调用即放行。同一轮第二次调用一定放行,避免死锁;拦截发生在取得桌面租约之前,按轮次重置。

官方工具名自检

插件与官方通道的耦合点是工具名前缀 cua_driver_native__。若长期未见匹配调用,会按 README 描述间隔写日志,提示可能需同步更新 OFFICIAL_TOOL_PREFIX 与 NATIVE_TOOL,避免横幅无声消失。

安装与启用

插件依赖 Node.js >= 22,在 Windows 上的 DSH profile 中安装:

dsh plugin --profile <profile> add dsh-cua-driver-indicator

将 <profile> 换成实际 profile 名(例如 default)。装完重启 DSH 生效。

若你曾在 profile 的 cordis.patch.yml 里用旧 id computer-control-indicator 写覆盖行,0.3.0 起需改为 cua-driver-indicator,否则配置不再生效。

可选配置项(改 cordis.patch.yml 后重启),摘自 README:

- id: cua-driver-indicator
  config:
    indicatorEnabled: true
    cursorIndicatorEnabled: true
    remoteIndicatorVisible: true
    indicatorText: 'DSH 正在控制电脑'
    goalTemplate: '目标:{goal}'
    goalMaxChars: 24
    indicatorPosition: top
    indicatorIdleMs: 1200
    idleMs: 30000
    stopOnEscape: true

安装前建议阅读仓库源码与许可证;插件以当前 DSH 进程权限运行,画面层含低级键盘钩子用于捕获 Esc。

典型用法

无需单独启动插件:在已启用官方 Cua Driver 的 Windows DSH 会话中,当模型开始调用 cua_driver_native__* 工具时,横幅与指针提示会自动出现。

模型侧若被强制门拦住,应按错误提示先调用 computer_control_goal,例如声明「打开记事本输入测试」一类不超过 goalMaxChars 的短目标,再重试被退回的桌面操作。用户可在横幅上看到该目标,并在需要时用物理 Esc 打断当前调用序列。

在 Windows 上通过 dsh web 使用浏览器界面时,连的是同一 Windows 宿主,横幅行为与桌面客户端一致。WSL 内运行的 DSH 无法控制 Windows 桌面,也无法绘制本插件的 WinForms 横幅。

适用场景与注意

适合在 Windows 上日常使用 DSH 官方 Cua Driver、又希望桌面被接管时有明确视觉反馈、并能用 Esc 紧急停止的开发者或高级用户。

不适合期望插件本身提供 MCP 桌面工具或 UIA 后端的场景:上游 dsh-computer-use-win 的自动化后端与 24 个 MCP 工具未纳入本插件。

WSL 纯 Linux 宿主、或非 win32 环境请勿依赖本包;非 Windows 加载时日志会出现 cua-driver-indicator: takeover indicator is Windows-only; disabled on linux,其余功能退场。

结尾

dsh-cua-driver-indicator 的定位很窄:给官方 cua_driver_native__* 通道加可见性与 Esc 停止,并用 computer_control_goal 与软强制门让横幅上的「目标」更可读、动桌面前多一道声明。若你在 Windows 上跑 DSH 桌面控制,可从目录页或 GitHub 获取插件并核对安装命令与配置。

  • 目录页:https://www.skillhub.cn/plugins/Eason-22/dsh-cua-driver-indicator
  • 源码与完整说明:https://github.com/Eason-22/dsh-cua-driver-indicator
羽毛球分组比赛记分
小程序二维码

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

Xiaoye