按快捷键框选屏幕并标注,复制后直接粘贴发送
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add windsor8890/dsh-screencapture该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 16 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
- 读取本地文件host/index.js:50
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) - 发起网络请求lib/client.js:293
response = await fetch(SHOT_API + path, { method: 'GET', signal: controller.signal }) - 发起网络请求lib/client.js:295
response = await fetch(SHOT_API + path, { - 读取本地文件host/capture.js:268
const buffer = await readFile(pngPath) - 删除本地文件host/capture.js:282
await rm(pngPath, { force: true }).catch(() => {}) - 写入本地文件host/capture.js:303
await writeFile(pngPath, pngBuffer) - 删除本地文件host/capture.js:306
await rm(pngPath, { force: true }).catch(() => {}) - 删除本地文件递归host/capture.js:751
await rm(directory, { recursive: true, force: true }).catch(() => {}) - 删除本地文件递归host/capture.js:772
await rm(directory, { recursive: true, force: true }).catch(() => {}) - 读取本地文件host/hotkey.js:599
text = await readFile(this.#settingsPath, 'utf8') - 写入本地文件host/hotkey.js:621
await mkdir(dirname(this.#settingsPath), { recursive: true }) - 写入本地文件host/hotkey.js:623
await writeFile(temporaryPath, payload) - 写入本地文件host/hotkey.js:624
await rename(temporaryPath, this.#settingsPath) - 删除本地文件host/routes.js:323
await rm(filePath, { force: true }).catch(() => {}) - 写入本地文件host/routes.js:341
await mkdir(directory, { recursive: true }) - 读取本地文件host/routes.js:357
if (existsSync(target) === false) { - 执行外部命令固定命令host/routes.js:364
child = spawn('explorer.exe', [`/select,${target}`], { - 读取本地文件build.mjs:21
const source = readFileSync(join(root, 'src', 'client', name), 'utf8') - 写入本地文件build.mjs:37
mkdirSync(join(root, 'lib'), { recursive: true }) - 写入本地文件build.mjs:38
writeFileSync(join(root, 'lib', 'client.js'), bundle) - 发起网络请求src/client/00-shared.js:286
response = await fetch(SHOT_API + path, { method: 'GET', signal: controller.signal }) - 发起网络请求src/client/00-shared.js:288
response = await fetch(SHOT_API + path, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-screencapture
在 DeepSeek Harness 里复刻「电脑版微信」的截图体验 WeChat-style screenshot & annotation plugin for the DSH Web UI.
按一下快捷键 → 冻结当前桌面 → 在 DSH 窗口里拖拽框选 → 标注 → 复制到剪贴板(或保存 PNG)。
整个交互都渲染在 DSH 窗口内部,截图完成后直接在输入框 Ctrl + V 粘贴发送。
本项目是社区插件,与腾讯 / 微信官方无关;「微信截图」仅指交互风格。
界面预览
| 框选与标注 | 窗口吸附 |
| 框选与标注 | 窗口吸附 |
功能特性
- 快捷键唤起:默认 Ctrl + Shift + S,可在「设置 → 截图」中重新录制。
组合键需包含 Ctrl / Alt / Meta,且为 Host 可注册的按键。
- 全局快捷键:默认开启,注册为 Windows 系统级热键。焦点在其它应用时按下快捷键也会截图,并自动把 DSH 窗口带到前台显示框选浮层;若组合键被其它软件占用,会显示注册失败状态。
- 输入框按钮:输入框工具条左侧新增截图按钮,不方便按键盘时同样可用。
- 窗口自适应:截图时临时最大化 DSH 窗口(记住原位置与大小),复制完成或取消后恢复;小窗口下也能像微信一样舒服地框选整个屏幕。
展开完整文档(README 剩余 1 节)
dsh-screencapture
在 DeepSeek Harness 里复刻「电脑版微信」的截图体验 WeChat-style screenshot & annotation plugin for the DSH Web UI.
按一下快捷键 → 冻结当前桌面 → 在 DSH 窗口里拖拽框选 → 标注 → 复制到剪贴板(或保存 PNG)。
整个交互都渲染在 DSH 窗口内部,截图完成后直接在输入框 Ctrl + V 粘贴发送。
本项目是社区插件,与腾讯 / 微信官方无关;「微信截图」仅指交互风格。
界面预览
| 框选与标注 | 窗口吸附 |
| 框选与标注 | 窗口吸附 |
功能特性
- 快捷键唤起:默认 Ctrl + Shift + S,可在「设置 → 截图」中重新录制。
组合键需包含 Ctrl / Alt / Meta,且为 Host 可注册的按键。
- 全局快捷键:默认开启,注册为 Windows 系统级热键。焦点在其它应用时按下快捷键也会截图,并自动把 DSH 窗口带到前台显示框选浮层;若组合键被其它软件占用,会显示注册失败状态。
- 输入框按钮:输入框工具条左侧新增截图按钮,不方便按键盘时同样可用。
- 窗口自适应:截图时临时最大化 DSH 窗口(记住原位置与大小),复制完成或取消后恢复;小窗口下也能像微信一样舒服地框选整个屏幕。
- 框选与调整:拖拽框选、8 个控制柄缩放、显示像素尺寸角标、拖动选区内部平移选区。
- 窗口吸附:未框选时鼠标悬停任意窗口会亮起蓝色边框并显示窗口标题 / 尺寸,单击即可选中整个窗口;点击空白桌面选中全屏;拖拽仍是自由框选。
- 标注工具:矩形、椭圆、箭头、画笔、文字,红 / 黄 / 蓝 / 白四色,撤销 / 重做。
- 复制 / 保存:Enter、双击或 ✓ 把「裁剪 + 标注」后的图片写入剪贴板; Ctrl + S 或下载按钮保存 PNG(默认 图片\DSH Screenshots,可自定义目录)。
- 可选自动保存:开启后每次复制都会同时落盘,并在提示条上提供「打开文件夹」。
- 原生能力:Host 半使用常驻 PowerShell 助手完成 Windows 原生截屏(物理像素、支持多显示器虚拟桌面)与 STA 剪贴板写入,渲染进程不需要屏幕捕获权限。
平台支持
| 平台 | 状态 |
| Windows 10 / 11(DSH Desktop,Electron) | ✅ 完整支持(本机测试于 DSH Desktop 0.2.1-rc.2) |
| Windows + 其它 DSH 运行方式 | ✅ Host 半可用(PowerShell 5.1 为系统自带) |
| macOS / Linux | ⚠️ 仅能加载插件外壳;截图 / 剪贴板 / 全局热键路由返回 unsupported-platform |
原生实现依赖 Windows 的 System.Drawing、System.Windows.Forms、RegisterHotKey 与 DWM 窗口边界 API;其它平台需要独立的原生适配层,欢迎 PR。
安装
前置条件:Windows 10/11 上的 DeepSeek Harness 桌面版(或可运行 Host 插件与 Web UI 的环境)。
方式一:从 GitHub 安装(推荐)
在 DSH 的「设置 → 插件 → 安装 bundle」中填入本仓库的 pnpm 安装 spec:
github:windsor8890/dsh-screencapture
安装完成后启用名为「截图 / Screenshot」的插件即可(默认快捷键 Ctrl + Shift + S)。
方式二:本地源码
git clone https://github.com/windsor8890/dsh-screencapture.git
然后在 DSH 插件管理中选择该目录作为本地 bundle 安装。修改源码后:
浏览器半:重建 lib/client.js,已打开的 DSH 页面会在约 0.5s 内热替换插件
node build.mjs
Host 半(host/)修改后,在 设置 → 插件 中关闭再启用该插件,或重启 DSH 即生效。
安装方式遵循 DSH 的 bundle 安装机制;不同 DSH 版本的插件管理入口文案可能略有差异。
使用方法
| 操作 | 说明 |
| Ctrl + Shift + S | 开始截图(可在设置里修改;全局快捷键开启时窗口未聚焦也有效) |
| 拖拽 | 选择截图区域 |
| 鼠标悬停窗口 + 单击 | 吸附选中整个窗口(高亮边框显示窗口标题 / 尺寸) |
| 拖动已选区域内部(未激活标注工具时) | 移动整个选区 |
| 单击空白桌面 | 选中整个屏幕 |
| 选中区域后拖拽内部 | 使用当前工具绘制标注;拖动 8 个控制柄可缩放选框 |
| Enter / 双击 / ✓ 按钮 | 复制选区(含标注)到剪贴板并关闭浮层 |
| Ctrl + S / 下载按钮 | 保存 PNG(不关闭浮层,可继续编辑) |
| Ctrl + Z / Ctrl + Shift + Z | 撤销 / 重做标注 |
| Esc / ✕ 按钮 | 取消,不产生任何输出 |
| 设置 → 截图 | 修改快捷键、全局快捷键、自动保存、保存目录、测试截图 |
设置项
- 截图快捷键:点击「修改」后按下新组合键;需包含 Ctrl / Alt / Meta, Esc 取消录制,「恢复默认」回到 Ctrl + Shift + S。
- 全局快捷键:控制「焦点不在 DSH 时也能截图」。开启后 Host 会向 Windows 注册系统级热键(与上方快捷键同一组合),注册结果实时显示;被其它软件占用时会给出失败提示。
全局热键生效时窗口内监听自动让位,避免一次按键触发两次截图。
- 复制时同时保存图片:默认关闭,只写剪贴板。
- 保存位置:留空使用 %USERPROFILE%\Pictures\DSH Screenshots;可填任意绝对路径。
- 测试截图:立即打开截图浮层,并显示截图引擎状态(就绪 / 待启动 / 不可用)。
工作原理
┌────────────────────── 浏览器半(lib/client.js,Client 插件) ──────────────────────┐ │ settings.section「截图」 conversation.input.left 截图按钮 shell.overlay 浮层 │ │ canvas 框选 + 标注(选区/标注均存截图原始像素坐标)→ 裁剪 + 压平 → PNG data URL │ └───────────────────────────────────┬────────────────────────────────────────────────┘ │ fetch /api/dsh-screencapture/* ┌───────────────────────────────────▼────────────────────────────────────────────────┐ │ Host 半(host/index.js,Cordis 插件,ESM,仅 Node 内置模块) │ │ /status /capture /clipboard /save /reveal /events(SSE) /last-capture /config │ │ /overlay-window │ │ capture.js ── 常驻 powershell.exe -STA 助手 ── Graphics.CopyFromScreen / 剪贴板 │ └─────────────────────────────────────────────────────────────────────────────────────┘
- Electron 外壳禁止渲染进程使用 getDisplayMedia,因此截图与剪贴板都在 Host 半完成; Host 进程运行在 ELECTRON_RUN_AS_NODE=1 的 Node 模式,没有 Electron API,于是通过 host/capture-helper.ps1 常驻助手调用 .NET 的 System.Drawing / System.Windows.Forms。
- 点击路径(warm capture)约 110 ms;首次截图会启动助手,约 1s 内完成。
- 所有 HTTP 处理只在 loopback 请求上工作(socket + Host 头的 fence),不会向局域网暴露。
安全与隐私
- HTTP 路由只接受本机 loopback 请求,并校验 Host 头;不做任何远程上传。
- 截图数据只在本机内存、剪贴板与用户指定的本地目录中流转。
- Host 半只使用 Node 内置模块与系统自带 PowerShell,不引入第三方运行时依赖。
- 没有遥测、没有外部网络请求;插件只在 DSH 进程内工作。
已知限制
- 默认快捷键 Ctrl + Shift + S;若组合键被 DSH 自身或其它软件占用(例如 DSH 的「归档会话」占用 Ctrl + Shift + A、微信占用 Alt + A),可换一个组合键,或依赖全局快捷键。
- 截图捕获整个虚拟桌面(所有显示器),在 DSH 窗口内等比缩放显示;标注工具暂不含马赛克 / 模糊。
- 窗口吸附截取的是冻结画面中该窗口的可见区域,被完全遮挡的部分不会自动重建。
- 浮层渲染在 DSH 应用窗口内(受渲染层限制,不能覆盖到桌面其它窗口),因此截图时会自动临时最大化窗口获得接近全屏的框选体验。
- 工作站锁屏时无法截屏 / 写剪贴板,路由会返回明确错误。
- 目前仅 Windows;macOS / Linux 需要单独的原生适配。
开发
构建浏览器半(把 src/client/.js 拼成 lib/client.js)
node build.mjs
跨平台客户端测试(CI 会跑):几何/坐标/按键映射 + 中英字典对齐
node tests/client-math-test.mjs
node tests/client-locale-test.mjs
Host 半测试(Windows 交互式桌面):真实截屏、剪贴板跨进程回读、保存、路由校验(17 项)
node tests/host-test.mjs
全局热键 / SSE / config / overlay-window 测试(20 项,会短暂注册 F12 探针)
node tests/hotkey-test.mjs
测试会真实使用屏幕与剪贴板,并短暂创建测试窗口,请在可交互的 Windows 桌面会话中运行。
目录结构
dsh-screencapture/
├─ package.json # bundle manifest(dsh.bundle.patch + dsh.client) ├─ cordis.patch.yml # 插入一行插件 ├─ icon.svg # 插件图标(原创) ├─ locale/{en,zh}.json # 插件管理与设置里的标题 / 描述 ├─ host/ │ ├─ index.js # Cordis 插件:注册路由、生命周期、全局热键接线 │ ├─ routes.js # 9 条路由表(含 SSE / config / overlay-window) │ ├─ capture.js # 常驻截屏 PowerShell 助手管理 │ ├─ hotkey.js # 全局热键管理(RegisterHotKey、持久化、重注册) │ ├─ global-flow.js # 全局截屏流程 + SSE 事件中心 │ ├─ fence.js # loopback 请求校验 │ ├─ capture-helper.ps1 # 截屏 / 剪贴板 / 激活窗口 │ └─ hotkey-helper.ps1 # 系统级热键注册(隐藏 WinForms 窗口) ├─ src/client/.js # 浏览器半源码(共享层 / 浮层 / 设置页 / 入口) ├─ build.mjs # 把 src/client 拼成 lib/client.js ├─ lib/client.js # 生成的浏览器 bundle(勿手改) └─ tests/ ├─ host-test.mjs # Host 半真实环境测试(17 项) └─ hotkey-test.mjs # 全局热键 / SSE / config 测试(20 项)
贡献
欢迎 Issue 与 PR:
1. Fork 并新建分支;
2. 修改后运行 node build.mjs 与相关测试(客户端测试跨平台,Host 两套需 Windows 交互式桌面);
3. 提交 PR,说明动机、改动与验证结果。
详细流程见 CONTRIBUTING.md;安全问题请按 SECURITY.md 私下报告,不要开公开 Issue。
License
MIT © 2026 joe
English README预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
windsor8890/dsh-screencapture
按快捷键框选屏幕并标注,复制后直接粘贴发送
相关插件 · 视觉能力
智能体工作台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
这是你的仓库?认领条目