DeepSeek Harness 跨平台原生桌面控制(优先 Windows):screen_shot、screen_read、click/type/scroll/key、app_list/app_launch,全部经审批放行…
44.7/100
综合分
23
GitHub 星标
1,981
npm 周下载
—/5
用户评分
数据截至 2026/11/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-clicknpm 源 · dsh-click 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-click @ 0.3.26
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 07:02:00
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 4 处,展示前 4 条)
- 发起网络请求lib/index.js:232
const outcome = await approval.request({ - 读取本地文件lib/index.js:641
if (existsSync(candidate)) return candidate; - 写入本地文件lib/index.js:1102
await writeFile(imagePath, Buffer.from(pngBase64, "base64")); - 删除本地文件lib/index.js:1120
await rm(dir, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-agent@deepseek-ai/dsh-attachment@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-subprocess-local@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-approval给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
2 张 · 点击查看大图功能亮点
- 跨平台桌面控制
- 截图与屏幕读取
- 点击输入滚动按键
最近更新
在 GitHub 查看全部 →v0.3.262026-10-27
· [0.3.26] - 2026-10-27
· 修复
· 针对元素的操作现在校验目标元素,不再校验整个窗口(issue #29)。screen_read 会为每个元素存一份哈希;click/type/scroll 重新读取树,只要被寻址的元素没变就放行,哪怕无关的时钟、光标、加载动画或内存标签让整棵树的哈希变了。staleCheckTree 新增 target 参数并成为默认值;strict 保留原来拒绝整个窗口的做法,off 仍是显式逃生口。只截图的观察和按键回退到 strict 整树校验。新增目标未变与目标已变的回归测试。
v0.3.252026-10-26
· [0.3.25] - 2026-10-26
· 新增
· staleCheckTree: "strict" | "off"(默认 strict)—— 给带时钟、光标、加载动画或实时内存标签的窗口留的显式出口(issue #29)。strict 保留现有的整窗树哈希拒绝;off 只跳过树哈希,身份、观测时长和像素检查(除非 staleCheckPixels: false)仍然生效。这样动态窗口现在就能操作;按元素做范围校验仍是计划中的默认替代方案。
v0.3.242026-10-19
真实 Windows 键盘输入(SendInput/KEYEVENTF_UNICODE)和前台焦点回退来自 PR #21;UIA 快速路径保留。78 项测试通过。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成🖱️ dsh-click
- 1024 store channel:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-click(计入 deepseek1024.com 的安装排名)。
dshfind
为 DeepSeek Harness 提供跨平台原生桌面控制 —— 优先支持 Windows。
先看屏幕,再动手 —— 每次点击都受管控,每个动作都可审计。
dsh-doctor
DSH Market
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-click
📖 生态知识库 —— 实测数据,不是营销话术:插件开发指南 · 插件选型数据 · 维护标准。
安装与卸载
- git 渠道(最新 main):dsh plugin --profile web add github:PerryLink/dsh-click —— prepare 脚本只用生产依赖构建。
- npm 渠道(已发布版本):dsh plugin --profile web add dsh-click。
展开完整文档(README 剩余 1 节)
🖱️ dsh-click
- 1024 store channel:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-click(计入 deepseek1024.com 的安装排名)。
dshfind
为 DeepSeek Harness 提供跨平台原生桌面控制 —— 优先支持 Windows。
先看屏幕,再动手 —— 每次点击都受管控,每个动作都可审计。
dsh-doctor
DSH Market
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-click
📖 生态知识库 —— 实测数据,不是营销话术:插件开发指南 · 插件选型数据 · 维护标准。
安装与卸载
- git 渠道(最新 main):dsh plugin --profile web add github:PerryLink/dsh-click —— prepare 脚本只用生产依赖构建。
- npm 渠道(已发布版本):dsh plugin --profile web add dsh-click。
- tarball 渠道:在本仓库执行 pnpm pack,再执行 dsh plugin --profile web add ./dsh-click-<version>.tgz。
- 卸载:dsh plugin --profile web remove dsh-click(或从配置档补丁里删掉对应行)。
如果 pnpm 对这个包报 ERR_PNPM_IGNORED_BUILDS(esbuild 的平台二进制校验,无害),在 pnpm-workspace.yaml 里加上 allowBuilds: { esbuild: true } —— dsh 命令行会打印出确切的片段。
⭐ 如果它帮到了你
这个插件是 DSH 插件家族的一员(95 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。
English: part of a 95 plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.
dsh-click 是什么?
为 DeepSeek Harness 提供跨平台的原生桌面控制 —— 优先支持 Windows。
先看屏幕,再动手 —— 每次点击都要过闸,每个动作都有审计。
dsh-click 的工作流示意图:安装 → 打开面板 → 动手。
工作流概览:安装 → 打开面板 → 动手。下面的示例用的都是真实命令接口。
兼容性
| 层面 | 状态 |
| Harness | DeepSeek Harness dsh-v0.2.1-alpha.1(GitHub tag,2026-09-25 验证)。2026-09-11 在 dsh-v0.1.7-alpha.1 master 检出上验证过(完整闸门链 + 配置档安装冒烟测试)。 |
| Node | ^22.19.0 \|\| >=24.0.0 |
| 平台 | 优先支持 Windows(UIAutomation + Win32 输入,通过内置的 PowerShell 辅助脚本);macOS/Linux 后端已预留,会以明确原因失败关闭 |
| 模型 | 纯文本模型完全支持(screen_read 返回结构化文本);视觉模型额外拿到 screen_shot 图片 |
你能得到什么
dsh-click 给 harness 一套完整的「观察 → 动手」循环,覆盖原生桌面应用:
- screen_shot —— 窗口(或主屏幕)截图,按可配置的上限缩小。模型支持视觉时,结果里带图片;否则用文字描述兜底,纯文本模型照样能用。
- screen_read —— 结构化观察:窗口的无障碍树(元素 id、类型、名称、矩形、支持的模式),加上带颜色的像素位置提示 —— 纯文本,不需要图像模型。
- click / type / scroll / key —— 窗口范围内的动作,按元素 id 或坐标定位。投递优先走 UIA invoke,不行再退回投递窗口消息 —— 而且绝不抢占前台焦点。
- app_list / app_launch —— 枚举正在运行的应用及其窗口;按名称或路径启动应用。
每个会改变状态的动作都要过一道安全边界:
1. 新鲜度 —— 动作必须引用一次 basedOn 观察;动手前会重新抓取窗口,屏幕变了就拒绝执行(像素哈希校验 + 最大时效限制)。
2. 审批 —— 默认每个动作都要过 ctx.approval 审批;可以用窗口标题/可执行文件正则把特定窗口加入白名单(仍然审计)。
3. 进程身份 —— 动手前和动手后都校验所属进程的 pid 和可执行文件路径;一旦变化,就大声拒绝结果。
4. 审计 —— 观察和动作以 dsh-click/observed / dsh-click/action 事件写进会话日志(脱敏,仅日志)。
model harness
│ screen_read ──▶ observationId (+ elements, pixels) ← structured text
│ click {basedOn, target} ──▶ freshness check ──▶ approval ──▶ helper (UIA)
│ pixel hash changed? ── refuse + re-observe
│ pid/exe changed after act? ── PROCESS_CHANGED
│ ◀── canonical JSON + audit events (dsh-click/action)
快速开始
dsh plugin --profile web add github:PerryLink/dsh-click
1. install the bundle into your profile
dsh plugin --profile web add github:PerryLink/dsh-click
or from npm (published releases)
dsh plugin --profile web add dsh-click
2. restart and verify the row
dsh --profile web --dump-config | grep -A2 'id: dsh-click'
然后让智能体查看窗口并执行操作——每个会改变状态的操作都会弹出审批提示:
Open Notepad, type "hello", then read back what is on screen.
示例
下面是插件的真实入口;安装一次,之后调用其中一个即可。
详细示例
命令
~~~sh
app_list
输入
~~~json
{}
输出
~~~text
1 running application(s) with windows:
- Demo (pid 4242, C:\Apps\demo.exe)
- [windowId 1122867] "Demo App" at (10, 20) 800x600
观察自 plugins/dsh-click/tests/tools.spec.ts:159-185; renderer at src/tools.ts:933-942
失败分支
输入
~~~text
{}
输出
~~~text
Error: dsh-click backend unavailable on linux: Linux backend is reserved but not implemented yet (Windows-first); only Windows can act today
观察自 plugins/dsh-click/src/platform/selection.ts:61-62,81; plugins/dsh-click/src/tools.ts:133-136; plugins/dsh-click/tests/tools.spec.ts:226-245
简要示例
- screen_read
- app_list
配置
所有可调项都是 Schemastery Config 字段(可在 cordis.yml 中修改)。按 id 定向的覆盖会替换整行——你需要用到的键都要重新写一遍。cordis.patch.yml 在每个键旁都有行内说明。
| 键 | 默认值 | 含义 |
| requireApproval | true | 每个会改变状态的操作都要先过审批;观察类操作从不询问 |
| autoApproveWindows | [] | 窗口标题/可执行文件的正则,匹配时跳过审批询问(仍会做新鲜度检查并记入审计) |
| auditSessionEvents | true | 追加 dsh-click/observed / dsh-click/action 会话审计事件。自适应门控在没有会话信封的主机上已经跳过追加(rc.6–rc.8、0.1.1-rc.2 和 0.1.2-rc.1,后者在读取时遇到未知类型会失败关闭);设为 false 可完全停止审计追加 0.1.2-rc.1(适配于 2026-09-02):会话信封保留其可忽略字段,仅用于已存日志的读取兼容——Session.append 仍然无法写入该字段,因此审计门控行为不变。 |
| focusFallback | never | 操作是否可以把目标窗口带到前台作为最后手段(never / allow) |
| imageMode | auto | screen_shot 的渲染方式:auto(模型接受图像时输出图像,否则输出文本)或 text |
| helperTimeoutMs | 30000 | 每次 helper 调用的超时,单位 ms(1..300000) |
| maxHelperOutputBytes | 25165824 | 单个辅助程序响应的字节上限(1024..67108864) |
| maxScreenshotSide | 2560 | 截图最长边的像素上限(320..7680);更大的截图会缩小 |
| staleCheckPixels | true | 每次操作前比对最新像素哈希,有变化就拒绝执行 |
| staleCheckTree | target | 无障碍树的新鲜度检查:target 校验被寻址的元素(默认),strict 拒绝任何变化的节点,off 跳过树哈希(身份、时效、像素检查仍然生效) |
| maxObservationAgeMs | 30000 | 操作可引用的观测最大时效,单位毫秒(1000..600000) |
| maxCachedObservations | 8 | 缓存观测的 LRU 上限(1..64) |
| maxElements | 500 | 每次 screen_read 的无障碍元素上限(1..2000) |
| maxTreeDepth | 32 | 无障碍树遍历的最大深度(1..64) |
| maxTextLength | 200 | 清洗后模型可见字符串的截断长度(16..10000) |
| rollbackEnabled | true | type 失败时备份并恢复控件文本 |
| ocr.enabled / command / language | true / tesseract / eng | screen_find 路径的可选 OCR(挂载时探测;没有 tesseract 时降级为不可用) |
在配置档补丁中覆盖配置的示例:
- insert:
- id: dsh-click
name: dsh-click
config:
requireApproval: true
autoApproveWindows: ['^Notepad']
focusFallback: never
工具与界面
| 工具 | 只读 | 需要审批 | 说明 |
| screen_shot | ✅ | — | 返回 observationId,后续操作在 basedOn 中引用;模型接受图片时附带图像 |
| screen_read | ✅ | — | 无障碍树 + 像素提示;元素 id 就是操作寻址的目标 |
| click | | ✅ | elementId 或 (x, y) 二选一;优先 UIA invoke,回退到投递消息 |
| type | | ✅ | 仅支持值模式元素;失败时备份并恢复控件文本 |
| scroll | | ✅ | 元素(滚动模式)或窗口(投递滚轮) |
| key | | ✅ | 投递按键组合("Ctrl+S");忽略投递输入的应用程序会明确拒绝 |
| app_list | ✅ | — | 运行中的应用及其可见窗口 |
| app_launch | | ✅ | 按名称或可执行文件路径启动,可带参数 |
权限与数据
- 权限:变更类操作走官方 ctx.approval 接口——插件从不重新实现或绕过它。允许列表只做一件事:对特定窗口跳过询问;它无法关闭新鲜度检查或进程身份检查。
- 数据:插件不在磁盘上存任何东西,只有附件存储保留的截图(内容寻址,遵循 harness 自己的附件策略)。观测缓存在内存中(LRU,有上限)。不发网络请求,不存凭据。
- 会话日志:dsh-click/observed 和 dsh-click/action 是只写日志的审计事件,携带脱敏后的窗口与进程信息——标题、路径和自由文本在写入或展示之前都会脱敏并限制长度。
安全边界
- 先观察,再操作,每次都如此。 操作必须引用一次新的观察结果;屏幕发生变化(像素哈希)或观察结果过期,都会被拒绝,并给出模型可读的原因,要求重新观察。
- 默认需要审批。 除非你显式把特定窗口加入白名单,否则 requireApproval: true;每个操作——无论是否放行——都会写入审计日志。
- 不抢占前台。 辅助程序从不把目标窗口带到前台(默认 focusFallback: 'never');输入通过 UIA 或投递消息送达,不打扰后台窗口。
- 进程身份会重新校验,就在每个操作之前和之后;操作中途进程被替换,结果判定为失败(PROCESS_CHANGED)。
- 输出经过脱敏。 控制字符被剥离,制表符被折叠,形似凭据的值(密钥、token、JWT、bearer 头)在到达模型或日志之前都会被脱敏。
- 失败即关闭。 不支持的平台、缺少子进程服务、辅助程序不可用,都会让每次调用大声拒绝——配置档在各处仍能正常启动。
已知限制
- Windows 优先。 macOS 和 Linux 后端暂未实现;在这些平台上,每次调用都会失败关闭,并给出明确原因。
- 文本保真度有限。 screen_read 依赖应用暴露 UIAutomation;没有可访问树的应用只能给出像素提示。坐标点击仍然可用。
- 忽略投递输入的应用。 有些应用会忽略投递的窗口消息(游戏、部分 Electron 界面);key 会如实报告这一点,而不是假装成功。
- 无 envelope 的 harness 构建上的会话审计。 审计事件走一道自适应闸门:认识这套词汇的宿主直接追加,带 ignorable envelope 的宿主追加时带上标记,而没有 envelope 的宿主——0.1.0-rc.6–0.1.0-rc.8、0.1.1-rc.2 和 0.1.2-rc.1(它们无法打上 ignorable 标记——envelope 字段仅为兼容已存日志的读取而保留——并且在读取时遇到未知类型会失败关闭)——不会追加审计;工具结果仍是可重建的审计线索。把 auditSessionEvents 设为 false 可完全停止审计追加。
开发
pnpm install # node ^22.19 || >=24
pnpm run typecheck # tsc: src + tests against the local harness checkout
pnpm run typecheck:ci # tsc against the published 0.1.7-rc.2 types (no paths)
pnpm test # vitest: 79 tests, 13 files (helper smoke runs on Windows)
pnpm run build # tsdown bundle + tsc declarations (lib/)
pnpm run verify:self-contained # dependency specs resolve from the registry
pnpm run verify:artifacts # built ESM face + native helper present
pnpm pack # the published tarball
主题
dsh、dsh-plugin、deepseek-harness、deepseek、cordis、computer-use、windows-automation、uiautomation、desktop-control、screen-reader
贡献者
- Windows helper 冒烟检查清单 —— 针对 0.3.24+ 的真实输入与焦点验证。
- @LIU12312-Source —— 为 Windows helper 补上真实的 SendInput 与前台焦点回退(PR #21)。
- @PerryLink —— 创建者与维护者:工具面、动作安全边界、Windows 原生 helper、清理器,以及五种语言的文档。
- @Mchsd —— 新增 auditSessionEvents 退出开关,供会话读取器拒绝 dsh-click 审计事件的 harness 使用(#2)。
PerryLink DSH 插件家族
本项目属于 PerryLink 的 DeepSeek Harness 插件家族。下面的名单默认折叠,好让每个 README 的首屏都保持简短;展开即可看到每一行及其状态。
展开全部插件
| 插件 | 状态 |
| dsh-aqua-input-check | |
| dsh-archive-check | |
| dsh-auto-review | |
| dsh-autotier | |
| dsh-bid-ca-precheck | |
| dsh-bid-qual-check | |
| dsh-cert-mcp | |
| dsh-checkpoint-rewind | |
| dsh-click | |
| dsh-composer-history | |
| dsh-contract-stance | |
| dsh-customs-doc-check | |
| dsh-data-quality | |
| dsh-demurrage-ledger | |
| dsh-doublecheck | |
| dsh-drill-script-check | |
| dsh-eia-guide-check | |
| dsh-emergency-plan | |
| dsh-essay-rubric-check | |
| dsh-evidence-check | |
| dsh-export-ctl-check | |
| dsh-fast | |
| dsh-fmea-table-check | |
| dsh-forecast-penalty | |
| dsh-fund-research | |
| dsh-github | |
| dsh-gongwen-flow-check | |
| dsh-gongwen-word-check | |
| dsh-guard-plan-qc | |
| dsh-hazchem-check | |
| dsh-hazplan-check | |
| dsh-hidden-risk-map | |
| dsh-hs-classify | |
| dsh-icd-rule-check | |
| dsh-industry-research | |
| dsh-lawcite-adapter | |
| dsh-laya | |
| dsh-lc-doc-check | |
| dsh-learning-gap-check | |
| dsh-library | |
| dsh-local-ai | |
| dsh-lsp-actions | |
| dsh-mask | |
| dsh-mcp-panel | |
| dsh-medrec-qc | |
| dsh-memento | |
| dsh-nsfc-form-check | |
| dsh-nurse-record-check | |
| dsh-observe | |
| dsh-origin-rvc-check | |
| dsh-ota-review-check | |
| dsh-output-styles | |
| dsh-paper-doc-adapter | |
| dsh-permission-rules | |
| dsh-permit-report-check | |
| dsh-pipeline-check | |
| dsh-pleading-draft | |
| dsh-plugin-doctor | |
| dsh-plugin-guide | |
| dsh-plugin-kit | |
| dsh-plugin-upgrade | |
| dsh-policy-brief-draft | |
| dsh-power-loss-split | |
| dsh-power-ticket-check | |
| dsh-ppap-check | |
| dsh-protest-deadline | |
| dsh-railway-window | |
| dsh-repair-order-qc | |
| dsh-research-report | |
| dsh-review-reply-check | |
| dsh-rulefile-check | |
| dsh-safety-brief-check | |
| dsh-score | |
| dsh-session-sync | |
| dsh-site-log-check | |
| dsh-skill-pack-security | |
| dsh-soe-decision-check | |
| dsh-soilwater-check | |
| dsh-sop-sync-check | |
| dsh-spc-gbt-adapter | |
| dsh-talk | |
| dsh-tender-extract | |
| dsh-tender-matrix | |
| dsh-test-drive | |
| dsh-ticktick | |
| dsh-translate | |
| dsh-warranty-calc | |
| dsh-budget | 🧊 已冻结 — 见仓库 README |
| dsh-claude-move | 🧊 已冻结 — 见仓库 README |
| dsh-defend | 🧊 已冻结 — 见仓库 README |
| dsh-draw | 🧊 已冻结 — 见仓库 README |
| dsh-reach | 🧊 已冻结 — 见仓库 README |
| dsh-background-agents | 🚫 已退役 — 见仓库 README |
| dsh-session-pin | 🚫 已退役 — 见仓库 README |
| dsh-team-rooms | 🚫 已退役 — 见仓库 README |
许可证
Apache License 2.0 © 2026 dsh-click contributors预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
PerryLink/dsh-click
DeepSeek Harness 跨平台原生桌面控制(优先 Windows):screen_shot、screen_read、click/type/scroll/key、app_list/app_launch,全部经审批放行…
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1