录一段或截一张,把界面问题直接发给模型
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Link-h1j/dsh-screen-capture-record-desktop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · vision
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 34 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/1) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 62 处,展示前 31 条)
- 读取本地文件lib/index.js:127
if (win && existsSync(win)) return win - 执行外部命令来自配置/变量lib/index.js:159
ps = spawn(pickPowerShell(), args, { windowsHide: true }) - 执行外部命令来自配置/变量lib/index.js:215
ps = spawn(pickPowerShell(), args, { windowsHide: true }) - 读取本地文件lib/index.js:270
if (!existsSync(WINDOW_SCRIPT)) { - 执行外部命令来自配置/变量lib/index.js:277
ps = spawn(pickPowerShell(), psArgs, { windowsHide: true }) - 读取本地文件lib/index.js:435
if (!existsSync(target)) { - 读取本地文件lib/index.js:441
isDir = statSync(target).isDirectory() - 执行外部命令固定命令lib/index.js:452
const child = spawn('explorer.exe', args, { detached: true, stdio: 'ignore', windowsHide: true }) - 读取本地文件lib/index.js:545
if (!existsSync(SOURCES_SCRIPT)) { - 读取本地文件lib/index.js:613
if (!existsSync(SHOT_SCRIPT)) { - 删除本地文件递归lib/index.js:674
if (dir) rm(dir, { recursive: true, force: true }).catch(() => {}) - 写入本地文件lib/index.js:774
await mkdir(dir, { recursive: true }) - 写入本地文件lib/index.js:776
await writeFile(file, body) - 执行外部命令来自配置/变量lib/index.js:801
const r = spawnSync(cmd, args, { timeout: 8000, windowsHide: true, encoding: 'utf8' }) - 执行外部命令固定命令lib/index.js:890
const r = spawnSync('reg', ['query', 'HKCU\\Environment', '/v', name], { - 写入本地文件lib/index.js:1066
await mkdir(dir, { recursive: true }) - 写入本地文件lib/index.js:1069
out = createWriteStream(file) - 发起网络请求lib/client.js:953
const res = await fetch(SHOT_ROUTE + '?probe=1&ts=' + Date.now(), { cache: 'no-store' }) - 发起网络请求lib/client.js:985
res = await fetch(SHOT_ROUTE + '?' + q.join('&'), { cache: 'no-store' }) - 发起网络请求lib/client.js:1889
const res = await fetch( - 写入剪贴板lib/client.js:1906
if (navigator.clipboard && navigator.clipboard.writeText) await navigator.clipboard.writeText(text) - 发起网络请求lib/client.js:1930
const res = await fetch(REVEAL_ROUTE + '?path=' + encodeURIComponent(path) + '&ts=' + Date.now(), { - 发起网络请求lib/client.js:2024
res = await fetch(SOURCES_ROUTE + '?ts=' + Date.now(), { cache: 'no-store' }) - 发起网络请求lib/client.js:2604
res = await fetch(REC_START + q, { method: 'POST', cache: 'no-store' }) - 发起网络请求lib/client.body.js:942
const res = await fetch(SHOT_ROUTE + '?probe=1&ts=' + Date.now(), { cache: 'no-store' }) - 发起网络请求lib/client.body.js:974
res = await fetch(SHOT_ROUTE + '?' + q.join('&'), { cache: 'no-store' }) - 发起网络请求lib/client.body.js:1878
const res = await fetch( - 写入剪贴板lib/client.body.js:1895
if (navigator.clipboard && navigator.clipboard.writeText) await navigator.clipboard.writeText(text) - 发起网络请求lib/client.body.js:1919
const res = await fetch(REVEAL_ROUTE + '?path=' + encodeURIComponent(path) + '&ts=' + Date.now(), { - 发起网络请求lib/client.body.js:2013
res = await fetch(SOURCES_ROUTE + '?ts=' + Date.now(), { cache: 'no-store' }) - 发起网络请求lib/client.body.js:2593
res = await fetch(REC_START + q, { method: 'POST', cache: 'no-store' })
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 输入框内录屏
- 输入框内截图
- 生成视频图片证据
给 DSH 桌面版输入框加「录屏」「截图」两个按钮:把「说不清」的界面问题变成能直接发给模型的视频 / 图片证据,减少人机沟通的来回损耗。欢迎官方收录进桌面版本体。截图与录屏证据,让人与智能体沟通更顺畅。
README
由 DeepSeek 最新模型翻译生成dsh-screen-capture-record-desktop
给 DSH 桌面版(Desktop)输入框工具条加两个按钮:在「听写 / 开始录音」左边插入「录屏」和「截图」。
为什么做这个
人和模型沟通时,最贵的一步往往不是模型不够聪明,而是我们描述不准:按钮错位了、动效不对、点完某个开关界面变成了另一副样子……打字描述要花几分钟,还常常漏掉决定性细节,来回几轮才说清一件事。
这个插件就是把这一步压缩成两个动作 —— 录一段、截一张,直接塞进输入框:
- 录屏产出一个 .webm 视频(不是一堆图片),抽不抽帧、抽多密由会话里的智能体按需决定;
- 截图带选区,框哪算哪;
- 两者都走 DSH 现成的附件通道,在输入框里补一句话就能发出去。
模型拿到的是第一手画面,而不是一段转述。少一轮误解,就少一次返工 —— 这是它唯一的设计目标。
展开完整文档(README 剩余 1 节)
dsh-screen-capture-record-desktop 给 DSH 桌面版(Desktop)输入框工具条加两个按钮:在「听写 / 开始录音」左边插入「录屏」和「截图」。 为什么做这个 人和模型沟通时,最贵的一步往往不是模型不够聪明,而是我们描述不准:按钮错位了、动效不对、点完某个开关界面变成了另一副样子……打字描述要花几分钟,还常常漏掉决定性细节,来回几轮才说清一件事。 这个插件就是把这一步压缩成两个动作 —— 录一段、截一张,直接塞进输入框: - 录屏产出一个 .webm 视频(不是一堆图片),抽不抽帧、抽多密由会话里的智能体按需决定; - 截图带选区,框哪算哪; - 两者都走 DSH 现成的附件通道,在输入框里补一句话就能发出去。 模型拿到的是第一手画面,而不是一段转述。少一轮误解,就少一次返工 —— 这是它唯一的设计目标。 Quick start (English). A DSH Desktop plugin that adds two buttons to the left of the dictation button in the composer toolbar. Record: click to start, click again (or press Esc) to stop — the host process captures frames and encodes them into a single .webm video that is attached to your message. Screenshot: capture the full screen, drag a region in the picker, and attach the crop. It exists to make human-agent communication cheaper: instead of describing a UI problem in words, hand the model the actual picture. Requires Windows with PowerShell 5.1+, Python 3 with Pillow, and an ffmpeg build that includes the image2pipe demuxer, the mjpeg decoder, the libvpx_vp8 encoder and the webm muxer — see 前置条件. Install with dsh plugin add dsh-screen-capture-record-desktop, then fully restart DSH. 两个按钮 | 按钮 | 图标 | 操作 | 产物 | | 录屏 | 显示器 + 录制圆点 | 点一下开始(按钮右上角出现红色计时徽标);再点一下结束;录制中按 Esc 也可结束;到达最长时长会自动结束 | 一个 .webm 视频(VP8),自动塞进输入框附件 | | 截图 | 相机 | 点一下抓整屏 → 弹出选区浮层 → 确认后进附件 | 一张 JPEG,自动塞进输入框附件 | 两个按钮的悬浮提示常态只有两个字(「录屏」/「截图」),录制中显示「停止录屏」;只有宿主路由没挂上时才补一句原因。 快捷键与选区浮层 | 场景 | 按键 / 操作 | 含义 | | 录屏中 | Esc | 停止录屏 | | 选区浮层 | 按住左键拖动 | 框选一块区域 | | 选区浮层 | 单击(不拖动) | 选中整屏 | | 选区浮层 | Enter 或「用这张」 | 确认当前选区 | | 选区浮层 | Esc、右键、点遮罩空白处、或「取消」 | 取消截图 | 选区浮层会在页面里按 92% × 80% 的视口比例缩放展示整屏底图,框选后再按原始分辨率裁切,所以框出来的图不会因为展示缩放而变糊。 安装 从 registry 安装(推荐) dsh plugin add dsh-screen-capture-record-desktop 装完必须完整重启 DSH(宿主侧的抓屏 / 录屏路由在进程启动时挂载,只刷新界面不会生效)。 本地开发 / 免发布安装 dsh plugin --profile desktop add link:<插件目录绝对路径> link: 是给本地开发用的:直接把包目录链进配置档,改完 lib/ 立即被加载,不必先发布到 registry。同样需要完整重启 DSH。 ⚠ 同一个插件不要在两层同时挂载。已经用上面的方式安装后,就不要再手工往配置档的 cordis.patch.yml 里写同 id 的 insert 行 —— 两层挂同一个 id 会导致重复挂载。启停、卸载请在 DSH 的「插件」页里做。 本插件是一个组合包(bundle):package.json 声明了 dsh.bundle.patch,由 cordis.patch.yml 把自己那一行插进配置档的插件名单;浏览器半边由 package.json 的 dsh.client 声明加载。 前置条件 这是本插件最大的使用门槛:截图只需要 Windows + PowerShell;录屏还需要 Python 和 ffmpeg。 | 能力 | 要求 | 说明 | | 运行平台 | Windows | 宿主侧用 PowerShell + GDI 抓屏,目前只支持 Windows | | 抓屏 | PowerShell 5.1 及以上 | Windows 自带的 powershell.exe 即可,也可以指向 pwsh.exe | | 录屏 | Python 3 + Pillow | 抓帧用 Pillow 的 ImageGrab;缺 Pillow 时录屏起不来。安装:pip install Pillow | | 录屏 | ffmpeg(必须是带这些组件构建的) | 见下方清单 | 录屏用的 ffmpeg 必须编译进了这几段: | 组件 | 用途 | | image2pipe(demuxer) | 从管道读连续的 MJPEG 帧 | | mjpeg(decoder) | 解码每一帧 | | libvpx_vp8(encoder) | 编码成 VP8 | | webm(muxer) | 封装成 .webm | Playwright 自带的那份精简 ffmpeg 就够用(它恰好开了这一段),不必单独装系统版 ffmpeg。可以这样自查: ffmpeg -hide_banner -demuxers | findstr /i image2pipe ffmpeg -hide_banner -decoders | findstr /i mjpeg ffmpeg -hide_banner -encoders | findstr /i libvpx ffmpeg -hide_banner -muxers | findstr /i webm 四条都出现在输出里,才说明这份 ffmpeg 能用于录屏。 怎么把路径指给插件 宿主进程启动时读这几个环境变量: | 环境变量 | 指向 | 不设置时的查找顺序 | | DSH_CAPTURE_PYTHON | 带 Pillow 的 python.exe | 插件所在工作区里的虚拟环境 / 自带 CPython → 系统 PATH 上的 python.exe | | DSH_CAPTURE_FFMPEG | 上面那份 ffmpeg.exe | 工作区或 %LOCALAPPDATA% 下的 ms-playwright\ffmpeg-* → 系统 PATH 上的 ffmpeg.exe | | DSH_CAPTURE_POWERSHELL | 抓屏用的 PowerShell | %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe → PATH 上的 powershell.exe | 设置之后要完整重启 DSH(这些变量在宿主进程启动时读取)。截图不依赖 Python / ffmpeg,所以缺了它们按钮仍然可用,只是录屏会报错。 配置 客户端(localStorage) 在 DevTools 控制台改,下一次操作立即生效,不需要重启: localStorage['dsh-capture.fps'] = '5' localStorage['dsh-capture.picker'] = '1' localStorage['dsh-capture.maxDimension'] = '1280' localStorage['dsh-capture.quality'] = '0.72' localStorage['dsh-capture.maxSeconds'] = '180' | 键 | 默认值 | 取值范围 | 含义 | | dsh-capture.fps | 5 | 1 – 15 | 录屏帧率 | | dsh-capture.maxDimension | 1280 | 640 – 2560 | 录屏单帧长边上限(像素) | | dsh-capture.quality | 0.72 | 0.3 – 0.95 | 帧 / 截图的 JPEG 质量 | | dsh-capture.picker | 1(开) | 0 / false 关闭,其余视为开 | 截图是否弹出选区浮层;0 = 直接抓整屏进附件 | | dsh-capture.maxSeconds | 180 | 5 – 900 | 录屏最长秒数,到点自动结束 | 参数越界会被夹到合法范围或退回默认值,不会报错。截图时客户端会自动把质量抬高 0.1(上限 0.92),并用不小于 1920 的长边上限裁剪,保证框选出来的图够清晰。 宿主侧(环境变量) | 环境变量 | 默认值 | 含义 | | DSH_CAPTURE_PYTHON | 自动探测 | 录屏抓帧用的 Python | | DSH_CAPTURE_FFMPEG | 自动探测 | 录屏编码用的 ffmpeg | | DSH_CAPTURE_POWERSHELL | 系统 Windows PowerShell | 截图抓屏用的 PowerShell | | DSH_CAPTURE_DIR | <DSH_HOME>\dsh-screen-capture | 截图 / 录像的落盘根目录 | | DSH_CAPTURE_TIMEOUT_MS | 15000 | 单次抓屏超时(毫秒) | | DSH_HOME | %USERPROFILE%\.dsh | DSH 家目录,决定默认落盘位置 | 宿主侧变量改完必须完整重启 DSH。 产物落盘位置 默认落在 <DSH_HOME>\dsh-screen-capture(DSH_HOME 默认 %USERPROFILE%\.dsh),可用 DSH_CAPTURE_DIR 覆盖。时间戳格式为 YYYYMMDD-HHMMSS。 | 产物 | 路径 | | 截图 | <DSH_HOME>\dsh-screen-capture\shot-<时间戳>\shot-<时间戳>.jpg | | 录像 | <DSH_HOME>\dsh-screen-capture\rec-<时间戳>.webm | 截图会先落盘、再进附件,所以即使附件入口出问题,磁盘上也一定有文件(提示条会给出目录,并自动把路径复制到剪贴板)。录像同样是宿主直接写盘,附件里那份是从磁盘原样取回的。 故障排查 先看宿主日志,前缀是 [dsh-screen-capture]。 | 现象 | 可能原因 | 处理 | | 点「录屏」提示「起录屏失败」,日志说找不到 python | 没装 Python 3,或解释器里没有 Pillow | python -c "import PIL" 自查;pip install Pillow;或用 DSH_CAPTURE_PYTHON 指向带 Pillow 的解释器 | | 录屏能开始,结束时提示「没录到内容(ffmpeg 没写出文件)」 | 这份 ffmpeg 缺 libvpx_vp8 或 webm | 用「前置条件」里的四条自查命令确认;换一份带这些组件的 ffmpeg,用 DSH_CAPTURE_FFMPEG 指过去 | | 录屏一开始就报 Error opening input: Protocol not found | 该 ffmpeg 不认 -i - | 插件已统一用 -i pipe:0;仍报这个说明 ffmpeg 版本过老或构建异常,换一份 | | 附件里有图 / 有视频,但没看到提示条 | 自绘提示条被更高层级的浮层盖住,或没渲染出来 | 以附件卡片和磁盘文件为准;在 DevTools 里查 [data-dsh-capture-toast] 是否在 DOM 中及其层级 | | 提示条显示「宿主路由没挂上(…):完整重启桌面版后再生效」 | 宿主进程没加载到新路由:装完或更新后没完整重启,或插件未启用 | 完整重启 DSH;在「插件」页确认插件已启用、没有被回滚 | | 点「截图」直接就是整屏,没有框选 | dsh-capture.picker 被设成了 0;或在浮层里只是单击(单击 = 整屏,设计如此);或框得太小(小于 4px 会回退成整屏) | 把 dsh-capture.picker 设回 1,用拖动框选 | | 截图黑屏 / 有黑边 / 内容错位 | 多显示器:抓的是整个虚拟桌面的联合矩形,显示器排列带负坐标或各自缩放不同时会留下黑边;DPI:抓屏进程若没声明 DPI 感知会得到缩放模糊图 | 确认显示器的虚拟桌面矩形;DSH_CAPTURE_POWERSHELL 指向真正的 powershell.exe(插件会主动声明 DPI 感知) | | 录出来的画面没有鼠标指针 | 光标当时不在虚拟桌面范围内 | 默认会把光标画进每一帧;把鼠标移回捕获范围即可 | | 视频录好了,但提示「取回失败」 | 浏览器那一侧没拿到视频字节 | 视频仍在磁盘上(提示里带完整路径),可以直接拖进输入框 | | 工具条上根本没出现这两个按钮 | 找不到「听写」按钮这个锚点(宿主界面或语言变化),或插件未启用 | 看按钮悬浮提示和控制台里的 [dsh-capture] 日志;完整重启 DSH | | 录像太大 / 太长 | 帧率、分辨率或时长上限偏高 | 调低 dsh-capture.fps、dsh-capture.maxDimension、dsh-capture.maxSeconds | 实现方式(一句话) 桌面壳在浏览器侧禁用了屏幕共享,所以抓屏 / 录屏全部放在宿主进程做,浏览器半边只负责按钮、选区浮层、把产物塞进附件。宿主侧的录制管道是「Python 抓帧 → MJPEG → ffmpeg → 单个 .webm」,产物是完整视频而不是一堆抽好的图片(要不要抽帧、抽多密,由使用方按需决定)。 欢迎官方收录 这个插件刻意只站在官方公开接口上实现:组合包用 package.json 的 dsh.bundle.patch 声明,浏览器半边用 dsh.client 挂载,宿主侧只用 ctx.inject(['webServer']) 注册路由 —— 不改 DSH 源码、不碰私有 API、不引入第三方运行时。按钮尺寸、圆角、图标规范、悬浮提示、轻提示、选区卡片也都逐项对齐了官方组件(实测数据见 DEV.md),目的就是让它看起来、用起来都像内置功能。 如果官方认为「把说不清的界面问题直接发给模型」这件事该由桌面版本体来做,欢迎直接收录、合并,或以任何方式复用这里的实现 —— 本仓库是 MIT,随你处置。需要配合改造、补测试或写设计说明,在本仓库开 Issue 即可,作者会跟到底。 License MIT。以 package.json 的 license 字段和仓库根目录的 LICENSE 文件为准。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Link-h1j/dsh-screen-capture-record-desktop
录一段或截一张,把界面问题直接发给模型
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目