截取屏幕、区域和被遮挡的后台窗口画面
29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add machine202502/dsh-screenshoot该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · vision
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 14 处,展示前 14 条)
- 读取本地文件index.js:24
const buffer = readFileSync(path); - 读取本地文件index.js:51
const id = frames.put(readFileSync(shot), { path: shot, caption }); - 读取本地文件index.js:317
const source = readFileSync(shot); - 写入本地文件index.js:319
writeFileSync(shot, cropped.buffer); - 读取本地文件install.mjs:37
if (!existsSync(profilesRoot)) fail(`no DSH profiles at ${profilesRoot}; start DSH once first`); - 读取本地文件install.mjs:38
if (!existsSync(join(profileDir, 'package.json'))) { - 读取本地文件install.mjs:39
const available = readdirSync(profilesRoot, { withFileTypes: true }) - 读取本地文件install.mjs:46
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')); - 写入本地文件install.mjs:62
if (!dryRun) copyFileSync(manifestPath, backup); - 写入本地文件install.mjs:68
writeFileSync(manifestPath, next, 'utf8'); - 执行外部命令固定命令install.mjs:73
const direct = spawnSync('pnpm', ['--version'], { encoding: 'utf8', shell: true }); - 执行外部命令来自配置/变量install.mjs:78
const install = spawnSync(runner.command, runner.args, { - 写入本地文件src/util.js:16
mkdirSync(path, { recursive: true }); - 执行外部命令来自配置/变量src/util.js:29
execFile(command, args, { timeout, maxBuffer: 32 * 1024 * 1024, windowsHide: true }, (error, stdout, stderr) => {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
为 DeepSeek Harness 截屏与窗口捕获:显示器、区域、后台窗口、聊天内缩略图
README
由 DeepSeek 最新模型翻译生成dsh-screenshoot
DSH 插件,用来截取屏幕和窗口。跨平台:Windows、macOS、Linux(X11)。
和普通「屏幕截图」最大的区别:窗口是按自己的像素截取的,所以即使窗口被别的窗口挡住、缩在后台、或者没有焦点,也能截到。前台在放电影、智能体应用在后面,都不影响。
工具
| 工具 | 做什么 |
| screen_monitors | 列出显示器:位置、尺寸、缩放、是否主屏 |
| screen_windows | 列出可见窗口:id、pid、标题、进程、位置、尺寸 |
| screen_capture_monitor | 截取整个显示器 |
| screen_capture_region | 截取矩形区域 |
| screen_capture_window | 按 pid、title 或 id(十进制或 0x…)截取窗口 |
区域会按虚拟桌面的边界裁剪:超出屏幕时,只截交集部分,并在说明里标上 clamped;完全没有交集时,返回明确的错误,并附上桌面尺寸。
三个截图工具都有 delayMs,用来在拍摄前等待(最多 30 秒)。打开菜单、播放动画、窗口还没重绘完的时候,这个参数很有用。
所有截图都存成 PNG,结果里返回路径。你可以用 read_image 工具打开它,看看图片。
展开完整文档(README 剩余 1 节)
dsh-screenshoot
DSH 插件,用来截取屏幕和窗口。跨平台:Windows、macOS、Linux(X11)。
和普通「屏幕截图」最大的区别:窗口是按自己的像素截取的,所以即使窗口被别的窗口挡住、缩在后台、或者没有焦点,也能截到。前台在放电影、智能体应用在后面,都不影响。
工具
| 工具 | 做什么 |
| screen_monitors | 列出显示器:位置、尺寸、缩放、是否主屏 |
| screen_windows | 列出可见窗口:id、pid、标题、进程、位置、尺寸 |
| screen_capture_monitor | 截取整个显示器 |
| screen_capture_region | 截取矩形区域 |
| screen_capture_window | 按 pid、title 或 id(十进制或 0x…)截取窗口 |
区域会按虚拟桌面的边界裁剪:超出屏幕时,只截交集部分,并在说明里标上 clamped;完全没有交集时,返回明确的错误,并附上桌面尺寸。
三个截图工具都有 delayMs,用来在拍摄前等待(最多 30 秒)。打开菜单、播放动画、窗口还没重绘完的时候,这个参数很有用。
所有截图都存成 PNG,结果里返回路径。你可以用 read_image 工具打开它,看看图片。
截取窗口的一部分
窗口可以不截整块,而是按窗口左上角为原点裁出一个矩形:
screen_capture_window { pid: 11184, crop: { x: 40, y: 60, width: 420, height: 240 } }
→ window 420×240 … · crop 420×240 at 40,60
坐标从窗口的角算起(内容区的左上角),不是从屏幕算起。矩形超出截图范围时,返回错误并附上图片尺寸——不会悄悄按边缘裁掉。
裁剪在所有平台都能用:先用平台方式截图,再用内置解码器(src/png.js)裁 PNG,不需要 ImageMagick,也没有外部依赖。
聊天里的截图
和 Browser 一样:截图之后,工具那一行会出现缩略图。宿主在 127.0.0.1:49231 起一个本地帧服务器,工具返回标记 [shot:<id>],客户端据此画出 。内存里保留最近 24 帧,文件留在磁盘上。
点缩略图会在新标签页打开 PNG。
各平台的实现方式
Windows —— PowerShell + Win32:
- EnumWindows + DwmGetWindowAttribute —— 窗口列表和精确边界;
- PrintWindow(PW_RENDERFULLCONTENT) —— 把窗口渲染到 bitmap,而不是复制屏幕;正因如此,被遮挡的窗口也能截到;
- Graphics.CopyFromScreen —— 显示器和区域;
- per-monitor DPI awareness —— 坐标和尺寸都用物理像素(200% 缩放下很重要)。
- 窗口标题以 base64 传递,stdout 强制 UTF-8——否则西里尔字母会乱码。
macOS —— screencapture + JavaScript for Automation:
- NSScreen —— 显示器;
- CGWindowListCopyWindowInfo —— 窗口及其边界;
- screencapture -l <window id> —— 截取窗口,即使窗口被遮挡也行;-R —— 截取区域;-D —— 截取显示器。
需要 Screen Recording 权限(系统设置 → 隐私与安全性)。没有这个权限,macOS 只会返回壁纸。
Linux(X11) —— xrandr、wmctrl、ImageMagick import:
- xrandr --query —— 列出显示器;
- wmctrl -lGpx —— 列出窗口、pid 和几何信息;
- import -window <id> —— 从窗口自己的缓冲区截取窗口;-window root -crop —— 截取区域。
在 Wayland 下,X11 工具看不到窗口:插件会如实说明缺少什么,而不是返回一张黑图。Wayland 需要 portal/grim 方案。
安装
npx --yes github:machine202502/dsh-screenshoot
或手动安装:在 ~/.dsh/profiles/desktop/package.json 中添加
{
"dependencies": { "dsh-screenshoot": "github:machine202502/dsh-screenshoot" },
"dsh": { "profile": { "bundles": ["…", "dsh-screenshoot"] } }
}
然后重启 DSH。插件不引入 npm 依赖 —— 只用平台自带的系统工具。
示例
screen_monitors
→ 0* 3200x2000 at 0,0
screen_windows { title: "Brave" }
→ 132518 pid 9800 3200x1904 at 0,0 machine202502/dsh-browser – Brave
screen_capture_window { title: "Brave" }
→ PNG 路径 3200x1904(窗口当时在 DSH 后面)
screen_capture_region { x: 100, y: 100, width: 800, height: 500 }
screen_capture_monitor { monitor: 0 }
要求
| 平台 | 需要什么 |
| Windows | PowerShell 5.1+(默认自带)、.NET Framework |
| macOS | Screen Recording 权限 |
| Linux X11 | xrandr、wmctrl、ImageMagick(import) |
| Linux Wayland | grim、wlr-randr(仅显示器/区域) |
验证
node tests/probe.mjs # 直接测试平台后端
node tests/smoke.mjs # 通过 index.js 测试工具预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
machine202502/dsh-screenshoot
截取屏幕、区域和被遮挡的后台窗口画面
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目