DeepSeek Harness Hub
← 返回列表

beijingwahw/dsh-computer-use-plugin

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

基于 DeepSeek Harness DSH 构建的 Computer Use 插件

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/20 · 已提供中文文档

Vision-only desktop automation agent plugin for DeepSeek Harness (DSH) | 纯视觉桌面自动化 Agent 插件:SoM grounding · Planner-Actor · effect verification · skill library

综合分
28.5
GitHub 分
28.5
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add beijingwahw/dsh-computer-use-plugin
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

基于 DeepSeek Harness (DSH) 构建的 Computer Use 插件

基于 DeepSeek Harness (DSH) 构建的 Computer Use 插件。完全摒弃底层 UI 树依赖,采用纯视觉 Grounding 架构,让 AI 像人类一样通过“看”屏幕截图来理解和操作电脑。

核心特性

- 纯视觉 Grounding (Vision-Only):无需 Accessibility API,跨平台(Win/Mac/Linux),支持操作云端沙箱、RDP 甚至游戏界面
- Set-of-Mark (SoM) 视觉辅助:截图自动叠加网格、绿色鼠标准星与元素编号框,并在状态锚点中附带图例说明,消灭大模型坐标幻觉
- 智能上下文管理:滑动窗口 + 图像降级为文字摘要 + llm/pre-request 注入,无论截多少图,模型永远只看到最新 N 张 + 历史文字占位符
- 状态锚点协议:所有工具返回 {status, state_anchor, next_step} 三段式结构化反馈,MANDATORY 指令强制 ReAct 验证闭环
- Planner-Actor 双层架构:start_complex_task 元工具自动将长程任务拆解为原子操作并逐步执行,子任务失败即 fail-fast
- 企业级安全四守卫:坐标边界校验、连续失败熔断、敏感操作审计、弹窗联动拦截(waterfall 短路语义)
- 全量桌面操作:截图、点击、输入、滚动、快捷键、拖拽、标签页/窗口切换、弹窗处理
- 可插拔混合模式:可选接入本地视觉模型(OmniParser 类)与无障碍 Provider 获得精确坐标

世界级突破:四大自研引擎

针对纯视觉 CUA Agent 的四个真实失败模式,各以一个引擎对症击破:

| 失败模式 | 引擎 | 机制 |
| --- | --- | --- |
| 盲点:点击落空却以为成功 | 行为效果验证(perceptualHash + actionVerifier) | 动作前后各取一次整屏 dHash 指纹,汉明距离对比;相似度 > 0.97 判定疑似无效操作,锚点直接告警并引导 zoom_inspect 复位 |
| 坐标幻觉:全屏估坐标误差大 | 二阶段定位(zoom_inspect) | 裁剪目标邻域放大重绘 2 倍密度细网格,锚点附带 crop_bounds 与映射公式 full_x = x0 + fx(x1-x0),微观定位精确映射回全屏 |
| 无跨会话记忆:每次从零找按钮 | 场景式 UI 记忆(remember_ui / recall_ui) | 验证生效的点击自动沉淀为 landmark;自然语言召回(中英混合分词 + 重合系数 + 成功次数加成 + 时间衰减),召回值仅作先验、强制截图复核 |
| 不可复现:成功路径无法固化 | 行动日志与重放(journal + replay_actions) | post-execute 观察者记录全部动作 JSONL(可落盘);replay_actions 按 confirm 显式确认后逐步重放,成功操作序列即刻变成可执行宏 |

配套增强:

- 递进式恢复提示:熔断守卫升级 —— 第 1 次失败注入「zoom 精定位」建议,第 2 次注入「换模态(键盘导航/滚动/记忆召回)」建议,第 3 次熔断冷静一轮
- 干跑模式(dryRun: true):动作类系统调用只记录不执行、截图保持真实 —— 提示词调试与演示的零风险沙箱
- 置信度自报:click_mouse.confidence 0.99,会被误判为盲点。本轮以三个机制补全感知维度:

| 机制 | 设计 | 解决的问题 |
| --- | --- | --- |
| 双尺度验证 | regionDhash:以动作点为中心裁剪邻域单独取指纹。判定矩阵:全屏变 = page-level;仅区域变 = element-level(光标/高亮/文字);都没变 = 盲点 | 局部反馈的误判:点击确实生效但画面只变了一小块 → 不再误报“点空了” |
| 焦点追踪(focusTracker) | 点击/拖拽终点自动登记焦点(带 30s 过期);type_text 无需模型传坐标,自动围绕焦点区域验证 | 工具间隐式上下文:输入的位置几乎总是上次点击的位置,文字上屏这类最微弱的变化获得专属放大器 |
| 预期锚定(expected_change) | click_mouse/type_text 新参数:行动前声明预期视觉变化;锚点回显预期,next_step 强制要求截图核对,不符即视为部分失败 | 验证从"有没有变化"升级为"变化是否符合预期"——把模型的世界模型(world model)显式化并置于可核对地位 |
| 预算感知编排 | start_complex_task 新参数 time_budget_sec:子任务边界检查时钟,超时优雅中止并返回 [TIMEOUT] + 部分轨迹 | 长任务的无限烧钱问题:降级而非失控 |

锚点效果块示例(第三代):

"effect": {
"detected": true,
"scale": "element-level",
"screen_similarity_pct": 99.8,
"region_similarity_pct": 71.2
}

全屏几乎没变(99.8% 相似)但焦点区域剧变(71.2%)——典型的一次成功聚焦输入,旧版会误报盲点,新版精确识别为元素级效果。

第四轮创新:语义闭环(文字感知 + 视觉差分)

前三轮的验证停在像素层——"变化是否符合预期"最终仍靠模型看图自判。本轮装上文字感知(本地 OCR)与变化定位(视觉差分),把验证推到语义层:系统直接确认"预期的内容出现了没有"。

| 机制 | 设计 | 解决的问题 |
| --- | --- | --- |
| find_text:文字→坐标定位 | 截干净屏(无网格叠加)→ 本地 OCR → 每个命中文词返回精确中心坐标 | 带文字标签的元素不再靠坐标估算——坐标幻觉的最大来源被彻底消灭 |
| read_text:区域文字读取 | 区域裁剪 + 放大 + OCR,返回纯文本 | 只需文字内容时用文本替代截图,Token 数量级下降 |
| diff_view:视觉差分 | 最近两张截图逐像素差 → 分块聚合 → 连通域合并 → 红框差分图 + 变化区域坐标清单 | "动作到底改变了什么"由系统算出并画出来,模型不再肉眼对比两张整屏 |
| 语义自证(type_text) | 输入后自动 OCR 焦点邻域,核对输入的文字真的上屏了(无需参数) | "打进了错误的框 / 输入法吞字 / 焦点丢失"三类隐形事故现形 |
| expected_text(click_mouse) | 点击后 OCR 点击点邻域,核对预期文字 | 像素变化 + 语义命中 = 双重确认;语义不符即使像素变了也判失败 |

OCR 按需启用(enableOcr: true,语言包首次使用联网下载,默认 eng,中文 chi_sim+eng);OCR 不可用时所有语义特性优雅降级,其余功能不受影响。diff_view 纯 sharp 实现,零额外依赖。

验证栈最终形态(四层):

L1 像素   dHash 双尺度 —— 有没有变化?在哪一级(页面/元素)?
L2 定位   visualDiff   —— 变化的精确边界与中心坐标
L3 语义   OCR 核对     —— 变化是否包含预期的文字内容?
L4 预期   expected_   —— 与模型行动前声明的预期对照

第五轮创新:自进化技能库 + 风险感知人机协同

前四轮都在改进「单次执行的质量」;本轮解决两个更高维的问题:成功经验无法沉淀(同一个工作流每次从零探索)与凭据安全(Agent 不该替人输密码)。

自进化技能库(Trajectory → Skill → Reliability)

| 环节 | 机制 |
| --- | --- |
| 归纳 | 复杂任务成功后自动把本次轨迹(markTaskStart 以来的可重放动作)固化为技能:触发描述 + 步骤序列 + 入口场景指纹;save_skill 供手动沉淀任意日志片段 |
| 去重强化 | 完全相同的步骤序列不重复建卡——同一工作流做三遍 = 一个技能验证三次(可靠度 3/3),而非三张孤儿卡 |
| 持久化 | skillLibraryPath 配置后技能跨会话存活:上一个会话学会的工作流,下一个会话开箱即用 |
| 匹配 | match_skill:文本重合 + Laplace 平滑可靠度 + 入口场景同屏加成(dHash ≥ 0.9)+ 新近度;技能是先验不是保证,锚点仍要求事后验证 |
| 闭环校准 | run_skill 的每次成败回写 successCount/attemptCount —— UI 演化导致技能失效时可靠度自然衰减,匹配排序自动降级;失败提示引导手动修复并重新 save_skill |

风险闸门(Credentials Belong to Humans)

世界级 CUA 的安全共识(如 Operator):凭据类输入交还用户。本实现为两段式,全部复用既有基础设施:

1. 敏感焦点标记:click_mouse 的 target_description 命中风险词(密码/验证码/2FA/OTP/API key…,可配置)⇒ focusTracker 将焦点标记为敏感,锚点携带 sensitive_focus 并预警
2. 输入拦截:type_text 到敏感焦点(或文本自身命中风险语义)⇒ 返回 ACTION_REQUIRED,要求暂停并请用户亲自输入;待输内容绝不回显([REDACTED])

工具列表

| 工具名称 | 描述 | 核心参数 |
| --- | --- | --- |
| take_screenshot | 截屏 + SoM 叠加 + 压缩 + 滑动窗口 + 弹窗传感 + 变化门控 | region, force? |
| click_mouse | 归一化坐标点击,内置 dHash 效果验证 + 自动记忆 | x, y, button, confidence?, target_description? |
| type_text | 焦点处输入文本,支持跨平台一键清空 | text, clearFirst |
| scroll_page | 四方向滚动 | direction, amount |
| press_hotkey | 组合键(键位白名单,防注入) | keys (数组) |
| drag_mouse | 拖拽(四拍时序:移→按→移→放) | startX/Y, endX/Y |
| dismiss_popup | 零副作用元工具:强制 ReAct 重新分析 | 无 |
| switch_tab / switch_window | 标签页 / 窗口切换(含降级路径) | direction / titleKeyword |
| click_element | 按 ID 点击(需开启元素模式,短时缓存防 ID 漂移) | id |
| extract_ui_vision | 本地视觉模型精确提取(可选) | 无 |
| start_complex_task | Planner-Actor 编排引擎 | userRequest |
| zoom_inspect | 区域裁剪放大 + 细网格,二阶段精定位 | x, y, half_size? |
| find_text / read_text | 文字→精确坐标 / 区域文字读取(需 enableOcr) | keyword / x?,y?,half_size? |
| diff_view | 最近两截图的视觉差分:红框变化图 + 区域坐标清单 | 无 |
| remember_ui / recall_ui | 场景式 UI 记忆写入 / 自然语言召回 | description,x,y / query |
| replay_actions | 重放日志中的动作序列(宏) | confirm, from_step?, to_step? |
| save_skill / match_skill / run_skill | 技能沉淀 / 可靠度匹配 / 一键执行(成败回写可靠度) | description / query / id,confirm |

快速开始

1. 环境准备

Node.js >= 18(推荐 22)与 pnpm。原生依赖(sharp / @nut-tree/nut-js / screenshot-desktop / tesseract.js)随插件自动安装。

2. 安装插件

推荐的安装方式:

dsh plugin add beijingwahw/dsh-computer-use-plugin --profile web

以 pnpm 为例安装(git 依赖):

pnpm add dsh-computer-use-plugin@github:beijingwahw/dsh-computer-use-plugin

或直接写入 package.json 依赖后 pnpm install:

{
"dependencies": {
"dsh-computer-use-plugin": "github:beijingwahw/dsh-computer-use-plugin"
}
}

安装即用:

- 构建产物已入库(dist/ 随仓库分发),安装时不执行任何构建脚本(无 prepare/postinstall),main 直指 dist/index.js
- 框架依赖按 peer 声明(@deepseek-ai/cordis / dsh-tools / schemastery),由 DSH 宿主提供
- dsh.bundle 指向 cordis.patch.yml,插件随安装自动注册激活

3. 启动 DSH

pnpm dsh web

需要覆盖默认配置时,把包内 cordis.patch.yml 的 insert 条目并入你自己的 patch(已安装场景 name 直接用包名解析,无需绝对路径):

- insert:
- id: dsh-computer-use-plugin
name: 'dsh-computer-use-plugin'
config:
mouseSpeed: 1500
compressWidth: 1440
jpegQuality: 75
……全部字段均有代码默认值,可按部署裁剪

4. 本地开发(源码直载)

git clone https://github.com/beijingwahw/dsh-computer-use-plugin
cd dsh-computer-use-plugin
pnpm install          # 安装 devDependencies(typescript 等)
npm run build         # 重新生成 dist/(改代码后必须重跑并提交)
npm test

源码直载调试时,patch 条目的 name 写入口文件绝对路径(如 /你的路径/dsh-computer-use-plugin/dist/index.js)。

架构

index.ts (apply)
├─ systemPrompt 三正交段注入(定位规范 / ReAct 工作流 / 弹窗处理)
├─ buildAllTools(config)     工具工厂(混合模式按配置启用)
├─ start_complex_task        Planner-Actor 元工具
├─ registerAllGuards         边界 / 熔断 / 审计 / 弹窗联动
├─ onLlmPreRequest           滑动窗口图片注入模型请求
└─ ctx.effect                生命周期清理

截图管线:captureScreen → 多屏感知 → SoM 叠加 → sharp 压缩 → 滑动窗口 → 弹窗传感 → 状态锚点

- Context Manager:单例滑动窗口,旧截图“掏空降级”为文字摘要,时间线保序,收缩对模型透明
- Visual Overlay:sharp 高性能合成 SVG 图层(网格 + 准星 + 元素框 + 自适应标签)
- Orchestrator:Planner 拆解 + Actor 执行 + [SUCCESS]/[FAILED] 字符串协议 + fail-fast
- Guards:waterfall 短路拦截;闭包状态随插件卸载自动消亡(符合 Cordis 注册即效果模型)

注意事项与安全声明

1. 系统权限:macOS 需在“系统偏好设置 → 隐私与安全性”授予终端屏幕录制与辅助功能权限
2. 安全沙箱:本插件默认直接控制宿主机。强烈建议在隔离环境(Docker、E2B 或虚拟机)中运行
3. 开发者预览:DSH 核心 API 正在快速迭代;工具管线事件名(tools/pre-execute 等)已集中在 src/guards/hooks.ts 单点收口,换版本只需改一处

许可证

MIT

DSH Computer Use 插件

为 DeepSeek Harness 赋予真正的“眼睛”和“双手”!
赋予 DeepSeek Harness 真正的“眼睛”和“双手”!

中文(顶部) | English

License: MIT
Node
DSH Plugin

一个面向 DeepSeek Harness (DSH) 的 Computer Use 插件。它彻底抛弃了对底层 UI 树的依赖,采用 Vision-Only Grounding 架构,让 AI 通过“查看”截图来理解和操作计算机——就像人类一样。

核心特性

- Vision-Only Grounding:无需 Accessibility API;跨平台(Win/Mac/Linux);可在云沙箱、RDP 会话甚至游戏中运行
- Set-of-Mark (SoM) 视觉辅助:截图会自动叠加网格、绿色十字准星和带编号的元素框;状态锚点附带图例——彻底消除坐标幻觉
- 智能上下文管理:滑动窗口 + 图像驱逐为文本摘要 + llm/pre-request 注入——无论你截取多少张截图,模型始终只会看到最新的 N 张图像以及历史文本占位符
- 状态锚点协议:每个工具都返回结构化的 {status, state_anchor, next_step} 三元组;MANDATORY 指令强制执行 ReAct 验证循环
- Planner–Actor 架构:start_complex_task 元工具将长时程任务分解为原子操作并逐步执行,子任务失败时快速失败
- 企业级防护:坐标边界校验、连续失败熔断、敏感操作审计、弹窗拦截(瀑布式短路语义)
- 完整桌面操作:截图、点击、输入、滚动、快捷键、拖拽、标签页/窗口切换、弹窗处理
- 可插拔混合模式:可选接入本地视觉模型(类似 OmniParser)或无障碍提供程序以获得精确坐标

世界级突破:四大自研引擎

四个引擎针对纯视觉 CUA 智能体的四种真实失败模式:

| 失败模式 | 引擎 | 机制 |
| --- | --- | --- |
| 盲区:点击未命中,但智能体认为已成功 | 效果验证(perceptualHash + actionVerifier) | 在每次操作前后采集全屏 dHash 指纹并比较汉明距离;相似度 > 0.97 会标记为疑似无操作——锚点会发出警告并引导 zoom_inspect 恢复 |
| 坐标幻觉:全屏估计不精确 | 两阶段定位(zoom_inspect) | 裁剪目标邻域、放大、重绘 2× 密度精细网格;锚点携带 crop_bounds 以及映射 full_x = x0 + fx(x1-x0),用于精确回映射 |
| 无跨会话记忆:每次都要从头重新寻找同一个按钮 | 基于场景的 UI 记忆(remember_ui / recall_ui) | 已验证的点击会自动持久化为地标;自然语言召回(中英文混合分词 + 重叠系数 + 成功奖励 + 时间衰减);召回值仅作为先验——仍强制通过截图重新验证 |
| 不可复现:成功路径无法持久化 | 操作日志与回放(journal + replay_actions) | 执行后观察器将每个操作记录为 JSONL(可选持久化);replay_actions 在显式 confirm 后逐步回放——成功序列会立即变成可执行宏 |

配套增强:

- 渐进式恢复提示——熔断器式防护升级:第 1 次失败注入“放大以进行精确定位”提示,第 2 次失败注入“切换模态(键盘导航 / 滚动 / 记忆召回)”,第 3 次失败冷却一轮
- 干跑模式(dryRun: true):动作系统调用会被记录但不执行;截图保持真实——用于提示调优和演示的零风险沙盒
- 置信度自报告:click_mouse.confidence 0.99 的相似度,从而把真实效果误判为盲区。三种机制补全了感知栈:

| 机制 | 设计 | 解决的问题 |
| --- | --- | --- |
| 双尺度验证 | regionDhash:单独对动作点周围的邻域做指纹。决策矩阵:全屏变化 = page-level;仅区域变化 = element-level(光标/高亮/文本);两者皆无 = 盲区 | 局部反馈误判:点击确实生效了,但只有一小块区域发生变化 → 不再误报“没点到” |
| 焦点跟踪(focusTracker) | 点击/拖拽终点自动注册一个焦点(30 秒过期);type_text 不需要模型提供坐标——验证以焦点区域为中心 | 隐式的工具间上下文:你几乎总是在上次点击的地方输入;最微弱的变化(文本落入)也有了自己的放大器 |
| 期望锚定(expected_change) | 新增 click_mouse/type_text 参数:在行动前声明预期的视觉变化;锚点会回显它,next_step 强制要求验证截图,不匹配 = 部分失败 | 将验证从“是否有任何变化”升级为“预期变化是否发生”——模型的世界模型被显式化并可检查 |
| 预算感知编排 | start_complex_task 新增 time_budget_sec:子任务边界时钟检查;到期时以 [TIMEOUT] + 部分轨迹优雅中止 | 长任务的无限烧钱问题:降级而不是失控 |

第三代锚点效果块:

"effect": {
"detected": true,
"scale": "element-level",
"screen_similarity_pct": 99.8,
"region_similarity_pct": 71.2
}

全屏几乎没变(99.8% 相似),而焦点区域变化显著(71.2%)——这是成功聚焦到输入框的教科书式案例。旧版本会误报为盲区;新版本则精确识别出元素级效果。

第 4 轮——语义闭环(文本感知 + 视觉差异)
前三轮都停在像素层——“变化是否符合预期”仍然依赖模型肉眼看图。这一轮装上文本感知(本地 OCR)和变化定位(视觉 diff),把验证推进到语义层:系统直接确认“预期内容是否真的出现了”。

| 机制 | 设计 | 解决的问题 |
| --- | --- | --- |
| find_text:文本 → 坐标 | 截取干净屏幕(无网格叠加)→ 本地 OCR → 返回每个命中项的精确中心坐标 | 带文本标签的元素不再依赖坐标估算——坐标幻觉的最大来源被消除 |
| read_text:区域文本读取 | 区域裁剪 + 放大 + OCR,返回纯文本 | 只关心内容时用文本代替截图——Token 节省一个数量级 |
| diff_view:视觉 diff | 最近两张截图,逐像素 diff → 块聚合 → 连通域合并 → 红框标注的 diff 图 + 变化区域坐标列表 | “动作实际改变了什么”由系统计算并绘制;模型不再用肉眼比对两整屏 |
| 语义自检(type_text) | 输入后自动 OCR 焦点邻域,验证输入的文本确实落位(无参数) | 三类隐形事故暴露:输进了错误的框 / 输入法吞字 / 焦点丢失 |
| expected_text(click_mouse) | 点击后 OCR 点击邻域并检查预期文本 | 像素变化 + 语义命中 = 双重确认;语义不匹配时即使像素变化也判失败 |

OCR 为可选开启(enableOcr: true;语言包首次使用时下载一次——默认 eng,中文 chi_sim+eng)。OCR 不可用时所有语义功能优雅降级;其余功能照常工作。diff_view 纯用 sharp——零额外依赖。

最终验证栈(四层):

L1 像素     dual-scale dHash   — 有变化吗?在哪一层级(页面/元素)?
L2 定位     visualDiff         — 变化的精确边界与中心
L3 语义     OCR check          — 变化中是否包含预期文本?
L4 预期     expected_         — 对照模型行动前声明的预期

第 5 轮——自进化技能库 + 风险感知的人在回路

第 1–4 轮提升了单次执行质量。这一轮解决两个更高阶的问题:成功经验无法沉淀(同一工作流每次都要从零重新探索)和凭据安全(智能体绝不能替人类输入密码)。

自进化技能库(轨迹 → 技能 → 可靠性)

| 阶段 | 机制 |
| --- | --- |
| 归纳 | 复杂任务成功后,自动将轨迹(自 markTaskStart 起可回放的动作)固化为技能:触发描述 + 步骤序列 + 入口场景指纹;save_skill 可手动持久化任意日志片段 |
| 去重强化 | 相同的步骤序列不会创建重复卡片——同一工作流执行三次 = 一个技能被验证三次(可靠性 3/3),而不是三张孤立卡片 |
| 持久化 | 配置 skillLibraryPath 后,技能可跨会话保留:上一个会话学到的内容,下一个会话开箱即用 |
| 匹配 | match_skill:文本重叠 + 拉普拉斯平滑可靠性 + 同屏进入奖励(dHash ≥ 0.9)+ 新近度;技能是先验,不是保证——锚点仍需事后验证 |
| 闭环校准 | 每次 run_skill 的结果都会回写 successCount/attemptCount——随着 UI 演进、技能失效,其可靠性自然衰减,匹配排名下降;失败提示引导手动修复并重新 save_skill |

风险门控(凭据属于人类)

世界级 CUA 共识(如 Operator):凭据输入属于人类。分两阶段实现,复用现有基础设施:

1. 敏感焦点标记:click_mouse 的 target_description 命中风险关键词(password / verification code / 2FA / OTP / API key……,可配置)⇒ focusTracker 将该焦点标记为敏感;锚点携带 sensitive_focus 并发出警告
2. 输入拦截:向敏感焦点执行 type_text(或文本本身命中风险语义)⇒ 返回 ACTION_REQUIRED,暂停等待人类亲自输入;待处理内容永不回显([REDACTED])

工具列表

| 工具 | 描述 | 关键参数 |
| --- | --- | --- |
| take_screenshot | 截图 + SoM 叠加 + 压缩 + 滑动窗口 + 弹窗感知 + 变化门控 | region、force? |
| click_mouse | 归一化坐标点击,内置 dHash 效果验证 + 自动记忆 | x、y、button、confidence?、target_description? |
| type_text | 在焦点处输入文本;跨平台先清空 | text、clearFirst |
| scroll_page | 四方向滚动 | direction、amount |
| press_hotkey | 按键组合(白名单,防注入) | keys(数组) |
| drag_mouse | 拖拽(四拍序列:移动 → 按下 → 移动 → 释放) | startX/Y、endX/Y |
| dismiss_popup | 零副作用元工具:强制重新进行 ReAct 分析 | 无 |
| switch_tab / switch_window | 标签页 / 窗口切换(带降级路径) | direction / titleKeyword |
| click_element | 按 ID 点击(元素模式,短缓存防止 ID 漂移) | id |
| extract_ui_vision | 通过本地视觉模型精确提取(可选) | 无 |
| start_complex_task | 规划器–执行器编排引擎 | userRequest |
| zoom_inspect | 区域裁剪 + 放大 + 精细网格,两阶段精确定位 | x、y、half_size? |
| find_text / read_text | 文本 → 精确坐标 / 区域文本读取(需 enableOcr) | keyword / x?、y?、half_size? |
| diff_view | 最近两张截图的视觉差异:红框差异图 + 变化区域列表 | 无 |
| remember_ui / recall_ui | 基于场景的 UI 记忆写入 / 自然语言召回 | description、x、y / query |
| replay_actions | 从日志中重放动作序列(宏) | confirm、from_step?、to_step? |
| save_skill / match_skill / run_skill | 技能持久化 / 可靠性匹配 / 一键执行(执行结果回写可靠性) | description / query / id、confirm |

快速开始

1. 前置条件

Node.js >= 18(推荐 22)以及 pnpm。原生依赖(sharp / @nut-tree/nut-js / screenshot-desktop / tesseract.js)随插件自动安装。

2. 安装插件

DSH 插件源(名称 + 来源):

dsh-computer-use-plugin github:beijingwahw/dsh-computer-use-plugin

使用 pnpm 安装(git 依赖):

pnpm add dsh-computer-use-plugin@github:beijingwahw/dsh-computer-use-plugin

或添加到 package.json 后执行 pnpm install:

{
"dependencies": {
"dsh-computer-use-plugin": "github:beijingwahw/dsh-computer-use-plugin"
}
}

安装并运行:

- 构建产物已提交(dist/ 随仓库一同发布)——安装时不运行构建脚本(无 prepare/postinstall);main 直接指向 dist/index.js
- 框架依赖为 peer 依赖(@deepseek-ai/cordis / dsh-tools / schemastery),由 DSH 宿主提供
- dsh.bundle 指向 cordis.patch.yml——插件在安装时自动注册并激活

3. 启动 DSH

pnpm dsh web

如需覆盖默认值,将捆绑的 cordis.patch.yml 中的 insert 条目合并到你自己的 patch 中(安装后,name 通过包名解析——无需绝对路径):

- insert:
- id: dsh-computer-use-plugin
name: 'dsh-computer-use-plugin'
config:
mouseSpeed: 1500
compressWidth: 1440
jpegQuality: 75
... 每个字段都有代码默认值;按部署情况裁剪

4. 本地开发(从源码)

git clone https://github.com/beijingwahw/dsh-computer-use-plugin
cd dsh-computer-use-plugin
pnpm install          # devDependencies(typescript 等)
npm run build         # 重新生成 dist/(代码变更后必须重新运行并提交)
npm test

直接从源码加载时,将 patch 条目的 name 设置为入口文件的绝对路径(例如 /your/path/dsh-computer-use-plugin/dist/index.js)。

架构

index.ts (apply)
├─ systemPrompt  三个正交片段(grounding 规则 / ReAct 工作流 / 弹窗处理)
├─ buildAllTools(config)     工具工厂(混合模式由 config 切换)
├─ start_complex_task        Planner–Actor 元工具
├─ registerAllGuards         边界 / 熔断 / 审计 / 弹窗联锁
├─ onLlmPreRequest           将滑动窗口图像注入模型请求
└─ ctx.effect                生命周期清理
截图流水线:captureScreen → 多屏感知 → SoM 叠加 → 锐化压缩 → 滑动窗口 → 弹窗感知 → 状态锚点

- 上下文管理器:单例滑动窗口;旧截图“镂空”为带稳定时间线的文本摘要;收缩对模型透明
- 视觉叠加层:通过 sharp 进行高性能 SVG 图层合成(网格 + 十字准星 + 元素框 + 自适应标签)
- 编排器:Planner 分解 + Actor 执行 + [SUCCESS]/[FAILED] 字符串协议 + 快速失败
- 守卫:瀑布式短路拦截;闭包状态随插件卸载自动消亡(Cordis 注册即效果模型)

说明与安全声明

1. 系统权限:macOS 需要在系统设置 → 隐私与安全性中授予终端屏幕录制和辅助功能权限
2. 沙箱化:此插件默认直接控制宿主机。强烈建议在隔离环境(Docker、E2B 或虚拟机)中运行
3. 开发者预览版:DSH 核心 API 迭代很快;工具流水线事件名称(tools/pre-execute 等)在 src/guards/hooks.ts 中单一来源——版本迁移只需改动一处

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群