dsh-desktop-view:在 DSH Web UI 中观看并接管 Agent 所在桌面

前言

在 DeepSeek Harness(DSH)里跑桌面型 Agent 时,常见情况是:模型在真机上点窗口、输验证码、扫二维码,你在聊天里只能看到文字描述,无法确认界面真实状态,也很难在关键时刻代劳一两步。传统做法往往是另开端口做远程桌面,或把凭证暴露给浏览器,安全和运维成本都偏高。

下面介绍社区插件 dsh-desktop-view(维护者 soffits,分类:客户端)。它把 cua-spacesd 生成的桌面流与 Cua 的 Web 查看器,经 DSH 既有登录与 Web 服务中继到界面右侧;默认只观看,需要时再「接管 / 归还」,且不额外开端口或子域。

这是什么

dsh-desktop-view 在 DSH Web UI 中提供 Agent 运行机器的实时画面与声音:你能看到、听到桌面上的操作;在验证码、二维码登录、意外弹窗等场景下可临时接管,归还后 Agent 继续。流与票据留在服务端,浏览器只持有短时中继票据,并与你的 DSH 登录绑定。

核心功能

界面入口

  • 右侧边栏 Desktop 标签:可从边栏指引进入,或从会话头部的 monitor 按钮进入。
  • 全屏页 /desktop-view/,由你的 DSH 同源提供;适配手机、支持触摸、可直链打开。
  • URL 参数 ?control=1:直达接管模式。Agent 需要协助时可发送
    /desktop-view/?control=1&help=1&session=<其 session id>,归还控制后可将其唤醒以继续任务。

观看与接管

  • 默认是观看模式:可见可听,点击、按键、剪贴板与文件会被拒绝。
  • 选择 Take control 进入接管;Give back 回到观看。长时间无输入、或关闭视图后,接管会自动结束。
  • 仅隐藏 Desktop 标签(切到其他边栏、折叠边栏、换会话)时,接管状态仍保留;流会暂停,再次打开继续看。

接管模式下可用能力

在持有控制权期间,可使用桌面查看器的完整能力:鼠标、键盘与触摸、屏幕键盘、剪贴板同步、拖拽上传、文件浏览与下载、显示器选择、缩放;在桌面支持时还可使用麦克风。

与 Agent 的协作

插件会向 stateFile 写入小型 JSON,Agent 在操作桌面前应读取;每次控制权变化会通知打开该视图的会话。聊天中会以简短的 Desktop control 行展示相关提示(取决于 notifyAgent 配置)。

stateFile 示例:

{
  "controller": "user",
  "since": "2026-11-08T12:00:00.000Z",
  "sessionId": "01H…",
  "updatedAt": "2026-11-08T12:00:04.120Z"
}

当用户持有控制权时,controller 为 "user";否则为 null,并可能记录 lastReason(released、idle、disconnected、replaced、stopped)。驱动桌面的脚本或 Skill 应在 controller 非 null 时让出操作。

安全要点(README 摘要)

  • 插件路径上的请求经 DSH 准入:Host/Origin 围栏、签名 Cookie,仅 owner 可访问。
  • cua-spacesd 的 env token 与插件签发的 viewer 票据不离开 Host 进程;浏览器仅持有短时 relay 票据。
  • 观看模式使用只读 viewer 票据,daemon 侧拒绝输入、剪贴板与文件;同一时刻只有一个视图持有控制权。
  • 插件页面使用 no-store、无 referrer、严格的同源 CSP。

显示的桌面查看器由运行时的 cua-spacesd 提供(Cua FSL-1.1-MIT);本插件独立于 Cua,不包含或再分发该查看器。

环境与依赖

安装前请确认:

项 要求
DSH 0.2.2-rc.1 或更高(engines 写明 dsh >=0.2.2-rc.1 <0.3.0-0)
cua-spacesd 0.12 或更高,与 DSH 同机;DSH 进程能访问 env token(Cua 桌面镜像上通常为 127.0.0.1:3211,token 在 /run/cua/env-token)
Node >= 22(package.json engines)
浏览器 Chrome、Edge、Firefox 或 Safari 17+;移动端支持 iOS Safari 与 Android Chrome

安装与启用

官方推荐从 GitHub 直接添加(web profile):

dsh plugin --profile web add github:soffits/dsh-desktop-view

也可在 DSH Web UI 的插件管理器中添加对应 bundle。添加后需重启 DSH。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文安装步骤以仓库 README 为准。

配置项

各选项出现在 Web UI 中 desktop-view 插件行的字段里:

配置 默认值 说明
endpoint http://127.0.0.1:3211 cua-spacesd 监听地址;宜保持 loopback,因该地址会接收 env token
tokenFile /run/cua/env-token env token 文件路径,始终留在服务端
maxFps 30 查看器请求帧率;降低可减 CPU 与带宽
clipboard true 接管时是否同步剪贴板
filesRoot ~ 接管时可浏览、上传、下载的桌面目录;留空则禁用文件传输
microphone true 接管且在桌面支持时是否允许向桌面发送麦克风
idleSeconds 120 无输入多少秒后自动从接管回到观看
stateFile /tmp/dsh-desktop-view/control.json 插件写入控制状态供 Agent 读取的路径
notifyAgent wake 控制权变化时如何通知会话:wake / quiet / off(见 README 对唤醒行为的说明)

典型用法

  1. 安装插件并重启 DSH,确认本机 cua-spacesd 已运行且 token 路径可达。
  2. 在 Web UI 打开正在使用桌面的会话,从右侧 Desktop 或会话头 monitor 进入,先以观看模式确认 Agent 操作。
  3. 遇到需人工介入的界面时,点击 Take control,完成验证码、登录或对话框处理;需要剪贴板或文件时,在接管模式下使用同步与上传/下载(受 clipboard、filesRoot 约束)。
  4. 完成后点击 Give back,或依赖空闲超时自动归还;若 Agent 曾发送带 help=1 的链接,归还后按 notifyAgent 策略可能被唤醒继续。
  5. 移动端可直接打开 /desktop-view/ 或带 ?control=1 的链接,在触摸环境下完成同样流程。

适用场景与注意

适合谁:在 DSH 上跑依赖真实桌面环境的 Agent(Cua 等),需要在不额外暴露端口的前提下,从浏览器观看、旁听并在关键时刻接管的开发与运维场景。

安装前建议:

  • 插件以当前 DSH 进程权限运行;接管模式下文件与剪贴板能力受配置限制,但仍应对照 源码与 MIT 许可证 自行评估。
  • 仅在与 README 一致的环境中使用:cua-spacesd、DSH 版本与 loopback token 假设不匹配会导致无法拉流或无法签发票据。
  • 自定义 Skill 若会驱动同一桌面,务必周期性读取 stateFile,在用户接管期间停止自动化点击/输入,避免与用户争抢控制权。

结尾

dsh-desktop-view 把 Agent 所在机器的视听流收进 DSH 同源 Web UI:平时观看,遇事接管,归还后继续,并借 DSH 登录与中继控制暴露面。若你正在 SkillHub 或 GitHub 检索客户端类插件,可用目录页 soffits/dsh-desktop-view 跳转,完整说明与问题反馈见 GitHub 仓库。

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

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

小夜