dsh-plugin-screenshot-tool:Composer 微信式截图按钮

前言

在 DeepSeek Harness(DSH)Web GUI 里和模型对话时,经常要把屏幕上的报错、界面或文档片段贴进输入框。靠系统截图再手动粘贴,步骤多;在浏览器里走屏幕共享选择器,体验和微信里那种框选也不一致。dsh-plugin-screenshot-tool 由社区维护者 haonan108 发布,归类为客户端插件,在 Composer 工具栏放一个常驻分割按钮:点剪刀即可用 macOS 原生十字准星框选,PNG 同时进剪贴板并作为草稿附件插入输入框,回车即可发送。

这是什么

一句话定位:面向 DSH Web UI Composer 的微信式截图插件,依赖 macOS 原生 screencapture -i,可选在截图时隐藏 Harness 窗口。

插件不增加 Agent 工具,也不向模型注入额外 prompt;由 Host 进程与浏览器 Client 两半协同完成截图与 UI。

核心功能

下面介绍 README 中已列出的能力,均可在 macOS 上直接验证。

Composer 工具栏分割按钮

工具行里有一个常驻分割按钮:主区域点剪刀开始截图;点 caret 可在「隐藏窗口截图」与「不隐藏窗口截图」之间切换,选择会被记住,下次默认沿用。

原生区域截图

使用 macOS screencapture -i:拖动框选区域,按 Space 切换到窗口模式,Esc 取消。不经过浏览器的屏幕共享选择器。

隐藏窗口模式(默认)

默认在框选前隐藏 Harness 窗口,结束后恢复;取消、超时或失败时也会尝试恢复窗口。若用纯 dsh web 宿主、没有可隐藏的应用窗口,该模式会退化为普通截图。

隐藏窗口需要 Automation → System Events 权限;首次隐藏截图会问一次。没有该权限时仍可截图,只是窗口保持可见,结果卡片会说明这一点。

剪贴板 + Composer 附件

截图 PNG 写入剪贴板,并通过合成粘贴放进 Composer 草稿附件。若没有 Composer 编辑器,则仅保留剪贴板结果。

屏幕录制预检

启动捕获前读取 macOS TCC 中与本应用相关的 Screen Recording 授权。未授权时拒绝捕获(避免只得到壁纸类无效图),并提供按钮打开系统「屏幕录制」设置页。

主题与文案

Chrome 颜色使用宿主 --dsw-alias-* 主题 token,适配浅色/深色。界面文案经 Client locale 服务提供英文与简体中文。

环境与权限

使用前确认下面条件(摘自官方 Requirements):

  1. macOS 13 或更新(原生捕获与窗口隐藏仅支持 macOS)。
  2. DSH Web GUI,且 Harness 版本 >= 0.2.2-rc.1。
  3. 屏幕录制:系统设置 → 隐私与安全性 → 屏幕录制,为 Harness 应用勾选后退出并重新打开应用。
  4. 自动化(可选但推荐):隐私与安全性 → 自动化 → System Events,用于隐藏窗口模式。

安装与启用

官方推荐从插件注册名安装:

dsh plugin add dsh-plugin-screenshot-tool

安装后重新加载 Web GUI 一次。若镜像滞后,也可直接从仓库 URL 或本地路径安装:

# 仓库直装
dsh plugin add https://github.com/haonan108/dsh-plugin-screenshot-tool

# 本地目录(绝对路径)
dsh plugin add /absolute/path/to/dsh-plugin-screenshot-tool

卸载:

dsh plugin remove dsh-plugin-screenshot-tool

或从 profile 的 patch 层移除 bundle 后刷新页面。

典型用法

经过上面的安装与权限配置,可按 README 步骤操作:

  1. 在 Composer 工具行点剪刀;若处于隐藏窗口模式,Harness 窗口会先隐藏,系统出现框选十字线。
  2. 拖动选择区域(Space 切换窗口模式,Esc 取消)。
  3. 窗口恢复后,PNG 在剪贴板中,并出现在 Composer 草稿附件里,按 Enter 发送。
  4. 在 caret 菜单选择「隐藏窗口截图」或「不隐藏窗口截图」(英文界面为 capture with the window hidden / with the window visible),下次点击沿用上次选择。

架构与隐私要点

插件分为两半:index.js 在 Harness 进程(Host),client.js 在 Web UI(Client)。Host 在 loopback 上注册 /screenshot-tool/api/ 下的 capture、permission、permission-settings 以及诊断用 health/hello;拒绝 Sec-Fetch-Site 表明来自其他站点的请求,且 capture 同一时刻串行一次原生选择。

屏幕录制状态仅查询 TCC 库中本应用的 kTCCServiceScreenCapture 行。每次捕获先写到 /tmp/dsh-screenshot-tool/ 临时文件,经 osascript 上剪贴板后删除,Host 不长期保存图片。隐藏窗口模式仅按进程 id 让 System Events 隐藏/显示 Harness 窗口,不模拟点击、输入或读取其他应用。

适用场景与注意

适合主要在 macOS 上使用 DSH Web GUI、需要频繁把屏幕内容带进对话的开发者或日常用户。Linux 或 Windows 上无法使用其中的原生捕获与窗口隐藏能力。

DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 DSH 进程权限运行,安装前建议浏览 源码仓库 与 MIT 许可证,自行判断是否纳入工作流。

结尾

dsh-plugin-screenshot-tool 把微信式框选截图收进 Composer 工具栏:原生 macOS 捕获、可选隐藏窗口、剪贴板与草稿附件一步完成。需要试用或反馈问题时,可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye