仅 Windows 的 DSH 电脑操作插件:以 PowerShell + Win32 SendInput 实现 9 个工具,截取虚拟屏幕并驱动鼠标键盘;配合 picturereader 让纯文本模型在本地完成「截图-分析-操作-验证」闭环。
安装
# npm 包(预构建)
dsh plugin --profile web add computer-user
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jing-hy/computer-user
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
给 DeepSeek Harness(DSH,含 EAC 桌面客户端)的 Codex 式电脑操作插件:读屏幕并操作 鼠标键盘 —— 截图 → 用 [picturereader] 分析 → click/type/keypress/scroll/drag → 验证。 仅支持 Windows。
computer_screenshot把整个虚拟屏(多显示器、DPI 感知)截成 PNG 文件并返回路径 —— 直接喂给 picturereader 的image_scan/image_ocr,让任何纯文本模型都能"看"屏幕。- 另外 8 个
computer_*工具,通过内置 PowerShell + Win32SendInput操作鼠标键盘 (零原生模块、无需编译,可在 DSH/EAC 宿主进程内运行)。 - 设置卡(「电脑操作」)顶部是模式下拉框 —— 禁用 / 只读 / 手动批准(
/computer)/ 自动,其余收进默认折叠的 高级设置。 - 全程纯本地、不调用外部 API:截图(PowerShell)、分析(picturereader 本地 scan/OCR)、操作(Win32 SendInput),数据不出本机。操作流程见 skills/computer-use.md(先定位目标窗口,再窗口内分块 OCR,确认后一击即中并截图验证)。
- 已验证兼容 DeepSeek Harness EAC 桌面端(与 Web 同一 DSH 宿主内核)。
English: README.md。
纯文本模型搭配 picturereader 即可使用
computer-user 不需要多模态模型,也不需要任何外部视觉 API——任何纯文本大模型 (如 DeepSeek V4 Flash)都能端到端驱动桌面:
computer_screenshot把屏幕存成本地 PNG(截图本身不需要视觉)。- picturereader 把 PNG 转成纯文本模型能读的结构化描述:
image_scan(布局/颜色/ regions)、image_ocr(真实文字,Windows OCR / PaddleOCR / RapidOCR,全本地)、image_sample(纹理)。 - 模型靠这些描述"看"屏幕 → 用
computer_click/computer_type/ … 在报告坐标上 操作 → 再截图验证。
闭环 = 截图(computer-user)→ 理解(picturereader)→ 操作(computer-user)→ 验证 (两者),全程只有文本 token、零外部 API。详见 skills/computer-use.md 的「先定位窗口 → 窗口内分块 OCR → 一击即中」流程。
工具
| 工具 | 作用 |
|---|---|
computer_screenshot |
保存整虚拟屏 PNG(可选 region/scale)→ {path,width,height,virtual_offset,scale} |
computer_click |
在 [x,y] 点击(click / right_click / double_click) |
computer_type |
输入任意 UTF-16 文本(含中文),走 SendInput Unicode |
computer_keypress |
组合键,如 ["ctrl","c"]、["alt","tab"];字母/数字走虚拟键以触发快捷键 |
computer_scroll |
在 [x,y] 滚轮:up / down / left / right,clicks 格 |
computer_drag |
按下 → 分步移动 → 释放,可选 hold_keys |
computer_move_mouse |
移动光标但不点击 |
computer_wait |
等待 ms(让 UI 稳定) |
computer_get_cursor_position |
读取当前光标位置 [x,y] |
坐标为「相对虚拟屏原点(所有显示器合并区域左上角)」的像素;computer_screenshot
返回的 virtual_offset 即该原点。SetProcessDPIAware 保证高分屏缩放下坐标与物理像素一致。
安装
npm install computer-user
或在 DSH profile 里:
dsh plugin --profile web add computer-user
然后重启 DSH(或到 EAC「设置 → 插件 → 管理」启用)。工具对所有会话生效;设置卡在「设置 → 电脑操作」。
搭配 picturereader(推荐闭环)
computer_screenshot → path
picturereader image_scan / image_ocr <path> # 看
computer_click / type / ... # 做
computer_screenshot → image_compare # 验证
设置卡
设置卡(「电脑操作」)采用 DSH settings-panel 设计语言:卡片分组 + 胶囊按钮 + 32px
输入框 + chevron 下拉 + 折叠箭头;scope.load() 兼容无 load 宿主(EAC 桌面壳)。
- 模式下拉框(卡片顶部):
disabled禁用 —— 所有computer_*工具一律拒绝。readonly只读 —— 仅截图 / 读光标 / 等待可用。manual手动批准 —— 有副作用工具需先在本会话输入/computer批准(一次批准, 后续轮次持续有效)。auto自动 —— LLM 自由调用所有工具。
- 「AI 可自行修改运行模式」开关(下拉框下方,不在高级设置里):默认关闭;开启后
AI 可用
computer_set_mode切换模式,写入同一设置命名空间,设置卡下拉框双向同步。 - 高级设置(默认折叠):截图输出目录、默认缩放、逐字输入间隔、滚动刻度、 代码输出打回(output guard,默认开)、调试日志。
代码输出打回:host 侧对 LLM 输出流的过滤器——若模型把伪工具调用/伪 XML 当对话
文本输出(比如把 computer_click({…})、<invoke …> 直接打成了字而不是真正调用),
该段会被剔除并替换为一句一次性提示;同一内容第二次原样输出时放行不拦截。需要故意
在回复里展示代码片段时可到高级设置关掉。
安全
- 先定位目标窗口(DPI 感知 GetWindowRect,见 skills/computer-use.md)—— 桌面图标/壁纸会同时干扰 OCR 与点击;只在目标窗口内工作。
- 动手前务必
computer_screenshot并用 picturereader 分析,不要盲点盲输。 - 确认坐标后一击即中,点完截图验证,不要盲目连点(很多 UI 是点击开关)。
- 手动批准模式配合
/computer命令,让人在环。
验证与已知限制
node --test单测 39/39 通过(工具注册、门禁、参数校验、output guard)。- 实机安全窗口冒烟(一次性窗口 + cmd.exe,绝不碰用户应用):截图 PNG 正确;光标读/移
往返精确;
hello 中文 123!逐字回读一致;keypress Home/End 导航+插入验证 (HEADzzzTAIL);双击选词、单击取消、拖拽选区均通过控件状态断言。 - headless 集成:
dsh --profile headless真实会话中,模型成功调用computer_screenshot与computer_get_cursor_position。 - headless 真实场景:模型在
dsh --profile headless中自主完成 5 步任务 (screenshot → image_scan → type "hello" → screenshot → image_ocr),协调 picturereader 与 computer-user 工具,OCR 确认输入文字出现在屏幕上。 - 滚轮端到端验证通过:滚动条位置变化 + MouseWheel 事件触发均正常。注意:鼠标若落在 搜狗输入法等置顶悬浮窗上,滚轮事件会被悬浮窗吸收——把光标移到空白处再滚(与任何基于 光标的输入同理)。
- EAC 兼容:与 picturereader 在同一宿主内并存加载;对全部内置插件静态扫描,
computer_*工具名 /computer-user命名空间零冲突。
开发
src/capture.ps1 DPI 感知多屏截图(System.Drawing)
src/input.ps1 SendInput 鼠标键盘后端
src/ps.js PowerShell 运行器(base64 JSON、超时、取消)
src/tools.js 9 个 computer_* 工具定义 + enabled/confirm 门禁
src/config.js 设置命名空间 schema
src/index.js 插件入口(注册工具 + 设置热载)
client.js Web 设置卡(ModuleLoader bundle,中英)
scripts/ 实机冒烟脚本(安全窗口)
tests/ node:test 单测
许可
MIT
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 33047
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 4972
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1136
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 509
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 502
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 457
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。