🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

窗口快照 WongYuYe/dsh-appshots

DeepSeek Harnessv0.1.8
WongYuYe47 天前有提交已提供中文文档扫描:含敏感能力

截取前台窗口并附加到会话草稿

40.6/100
综合分
7
GitHub 星标
216
npm 周下载
—/5
用户评分

数据截至 2026/9/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-appshots
npm 源 · dsh-appshots 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · vision
暂无时间戳·判据 →
装得上吗[实装验证]✓
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 47 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-appshots @ 0.1.8
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 16:37:41

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 38 处,展示前 28 条)
  • 读取本地文件
    lib/index.js:188
    if (existsSync(WIN_HELPER)) {
  • 读取本地文件
    lib/index.js:190
    const [bin, src] = await Promise.all([stat(WIN_HELPER), stat(WIN_HELPER_SRC)])
  • 写入本地文件
    lib/index.js:194
    await mkdir(BIN, { recursive: true })
  • 读取本地文件
    lib/index.js:210
    if (ps.code === 0 && existsSync(WIN_HELPER)) return WIN_HELPER
  • 读取本地文件
    lib/index.js:211
    const compiler = windowsCompilerCandidates().find((path) => existsSync(path))
  • 读取本地文件
    lib/index.js:229
    if (csc.code === 0 && existsSync(WIN_HELPER)) return WIN_HELPER
  • 执行外部命令来自配置/变量
    lib/index.js:243
    const child = spawn(command, args, { stdio: ['ignore', 'pipe', 'pipe'] })
  • 读取本地文件
    lib/index.js:265
    if (!existsSync(MAC_HELPER)) throw new Error('macOS helper missing. Run npm run build:native.')
  • 执行外部命令来自配置/变量
    lib/index.js:279
    const child = spawn(bin, args, { stdio: ['ignore', 'pipe', 'pipe'] })
  • 执行外部命令固定命令
    lib/index.js:310
    const child = spawn('/usr/sbin/screencapture', ['-x', '-o', `-l${windowId}`, outPath], {
  • 删除本地文件
    lib/index.js:374
    await rm(path, { force: true }).catch(() => {})
  • 写入本地文件
    lib/index.js:377
    await mkdir(contextDir(), { recursive: true })
  • 写入本地文件
    lib/index.js:378
    await writeFile(path, JSON.stringify({ sessionId, items }))
  • 删除本地文件
    lib/index.js:447
    await rm(join(contextDir(), name), { force: true }).catch(() => {})
  • 删除本地文件
    lib/index.js:458
    await rm(item.imagePath, { force: true }).catch(() => {})
  • 删除本地文件
    lib/index.js:459
    await rm(item.metaPath, { force: true }).catch(() => {})
  • 删除本地文件
    lib/index.js:485
    await rm(imagePath, { force: true }).catch(() => {})
  • 删除本地文件
    lib/index.js:486
    await rm(metaPath, { force: true }).catch(() => {})
  • 写入本地文件
    lib/index.js:513
    await mkdir(dir, { recursive: true })
  • 写入本地文件
    lib/index.js:516
    await writeFile(imagePath, shot.bytes)
  • 写入本地文件
    lib/index.js:528
    await writeFile(metaPath, JSON.stringify(meta))
  • 执行外部命令来自配置/变量
    lib/index.js:621
    const child = spawn(helper, args, { stdio: ['ignore', 'pipe', 'pipe'] })
  • 发起网络请求
    lib/client.js:265
    const pending = await responseJson(await fetch(`/api/appshots/pending/${encodeURIComponent(id)}`))
  • 发起网络请求
    lib/client.js:277
    const bind = await fetch('/api/appshots/bind', {
  • 发起网络请求
    lib/client.js:286
    await fetch(`/api/appshots/pending/${encodeURIComponent(id)}`, { method: 'DELETE' }).catch(() => {})
  • 发起网络请求
    lib/client.js:301
    const captured = await responseJson(await fetch('/api/appshots/capture', {
  • 发起网络请求
    lib/client.js:322
    const listed = await responseJson(await fetch('/api/appshots/pending'))
  • 发起网络请求
    lib/client.js:329
    const latest = await responseJson(await fetch('/api/appshots/latest'))
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery@deepseek-ai/dsh-settings
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 截取前台窗口
  • 附加到聊天草稿

为 DSH Desktop 加上 Codex 风格的 Appshots:截取最前面的 macOS 窗口,附到当前聊天。

v0.1.22026-09-07
Market-card description refresh. Includes README.zh-CN.md in the published files.
原文(未汉化)
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-appshots Awesome DSH Plugin 给 DSH Desktop 用的窗口截图,支持 macOS 和 Windows。 macOS 同时按两边 Command,Windows 同时按两边 Ctrl,或点输入框旁的相机,捕获当前前台窗口,附加到会话草稿,并读取窗口文字作为隐藏上下文。 - 只捕获最前面的窗口,不截整个屏幕 - 截图附加到输入框草稿,不会自动发送 - 读取可用的窗口文字(macOS 辅助功能 / Windows UI Automation),作为隐藏的模型上下文注入 - 跳过 DSH Desktop 自身,避免截到插件自己的窗口 - 截图后自动把 DSH Desktop 调到前台 安装 dsh plugin --profile desktop add dsh-appshots 安装后重启 DSH Desktop。 从源码安装: git clone https://github.com/WongYuYe/dsh-appshots.git cd dsh-appshots dsh plugin --profile desktop add . Windows 会在第一次截图时用系统自带的 csc.exe(.NET Framework 4.x)编译助手,不需要安装 Visual Studio。
展开完整文档(README 剩余 1 节)
dsh-appshots

Awesome DSH Plugin

给 DSH Desktop 用的窗口截图,支持 macOS 和 Windows。

macOS 同时按两边 Command,Windows 同时按两边 Ctrl,或点输入框旁的相机,捕获当前前台窗口,附加到会话草稿,并读取窗口文字作为隐藏上下文。

- 只捕获最前面的窗口,不截整个屏幕
- 截图附加到输入框草稿,不会自动发送
- 读取可用的窗口文字(macOS 辅助功能 / Windows UI Automation),作为隐藏的模型上下文注入
- 跳过 DSH Desktop 自身,避免截到插件自己的窗口
- 截图后自动把 DSH Desktop 调到前台

安装

dsh plugin --profile desktop add dsh-appshots

安装后重启 DSH Desktop。

从源码安装:

git clone https://github.com/WongYuYe/dsh-appshots.git
cd dsh-appshots
dsh plugin --profile desktop add .

Windows 会在第一次截图时用系统自带的 csc.exe(.NET Framework 4.x)编译助手,不需要安装 Visual Studio。

发布:把 package.json 版本改成 X.Y.Z 后推 vX.Y.Z tag。GitHub Actions 会打 GitHub Release 并用 Trusted Publisher(OIDC)发到 npm。

权限

macOS

系统设置 → 隐私与安全性:

- 屏幕录制:捕获最前面窗口所必需
- 辅助功能:监听两个 Command 键、读取窗口文字所必需

把这两项授予 DSH Desktop。如果热键不触发,同时允许 appshot-capture。

Windows

- 截图走 CopyFromScreen,系统可能弹一次屏幕访问授权
- 窗口文字走 UI Automation,部分提权或受保护的应用几乎读不到文字
- 默认热键是同时按两边 Ctrl。如果不触发,可改成 hotkeyMode: win-hotkey

使用

1. 聚焦你想分享的窗口。
2. macOS 同时按两个 Command,Windows 同时按两边 Ctrl,或点击输入框里的相机按钮。
3. DSH Desktop 来到前台,截图已附加。
4. 输入提示词并发送。

如果当前有打开的会话,Appshot 会附加到那里;如果没有,会新建一个会话。连续截图会进入同一个会话。

设置

命名空间 dsh-appshots,位于 ~/.dsh/settings.yaml:

| 字段 | 默认值 | 含义 |
| skipSelf | true | 跳过 DSH Desktop 自身 |
| attachText | true | 发送时把辅助功能树作为隐藏模型上下文注入 |
| recentWindowMs | 60000 | 没有打开会话时,复用这个时间窗口内截图过的会话 |
| hotkeyMode | auto | auto / both-command / both-control / carbon / win-hotkey / off |
| carbonKeyCode | 0 | hotkeyMode 为 carbon 时的 Carbon 键码 |
| carbonModifiers | 256 | Carbon 修饰键;256 是 Command |
| winVk | 44 | hotkeyMode 为 win-hotkey 时的虚拟键码(44 是 PrintScreen) |
| winModifiers | 3 | win-hotkey 的 Win32 修饰键;3 是 Ctrl+Alt |

auto 在 macOS 上是两边 Command,在 Windows 上是两边 Ctrl。

限制

- 仅支持 macOS 和 Windows
- 窗口文字来自系统辅助功能树,部分应用只暴露可见文本
- 隐藏文本按 VoiceOver / UI Automation 树输出(角色、缩进、Description / Value / URL),不再做成扁平行
- 点击已附加的 Appshot 预览时,右上角可「查看文本」,展示当前窗口读到的辅助功能文字
- 终端像素(如 VS Code xterm)默认不进辅助功能树,编译日志仍以截图为准
- Windows 截的是窗口矩形的屏幕像素,被挡住的窗口会带上挡住它的内容

License

MIT
预览分享卡片长什么样 ↓WongYuYe/dsh-appshots
分享 · DeepSeek Harness Hub
WongYuYe/dsh-appshots

截取前台窗口并附加到会话草稿

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部