前言¶
DeepSeek Harness (DSH) 采用了插件化架构,将核心功能解耦。dsh-keymouse-use 插件通过一个常驻的 helper 进程(bin/helper-x64.exe),利用 Win32 SendInput API 来模拟真实的键盘和鼠标输入。它同时提供截图和窗口管理能力,能够帮助模型在 Windows 环境下完成从简单的按键输入到复杂的窗口操作流程。
核心能力¶
该插件主要包含以下功能模块:
-
键盘模拟
key_press(key): 按下按键,用于组合键。key_up(key): 抬起按键。key_tap(key): 按下并立即抬起,用于单次按键。
-
鼠标模拟
mouse_press(button): 按下鼠标按钮。mouse_up(button): 抬起鼠标按钮。mouse_move(x, y): 移动鼠标指针(物理坐标)。mouse_roll(up, amount?): 滚动鼠标滚轮。
-
截图
screenshot(): 截取主屏幕,返回 PNG 绝对路径、宽高以及当时前台窗口的 hwnd/title。screenshot_window(hwnd?): 截取指定窗口(默认为前台窗口),返回路径、尺寸、抓取模式及窗口状态。
-
窗口管理
win_find(process): 根据进程名查找窗口。win_activate(hwnd): 唤起窗口,处理最小化或托盘状态。win_minimize/win_restore/win_maximize: 窗口最小化、还原、最大化。win_top(hwnd, on): 设置窗口置顶,win_top与release_top配合使用。get_window(): 获取当前前台窗口的详细信息。
-
清理
release_all(): 一键抬起所有按住的键盘和鼠标按键,防止卡键。
安装与启用¶
本地目录安装(开发或内网环境):
dsh plugin --profile <name> add <path-to-dsh-keymouse>
通过 npm 安装(发布后):
dsh plugin --profile <name> add @temsmie/dsh-tool-keymouse
在桌面端(DeepSeek Harness 客户端 0.2.0)安装时,需要在插件管理面板中操作,安装完成后必须重启桌面端才能注册工具。
典型用法¶
以下是一些常见的操作组合示例:
1. 唤起窗口并操作
先查找窗口句柄,再激活窗口,随后执行操作。
// win_find('QQ') → win_activate(hwnd) 唤起窗口(不点图标)
const hwnd = win_find('QQ');
win_activate(hwnd);
key_tap('enter'); // 在窗口中输入回车
2. 组合键操作
先按下组合键,再按下功能键,最后释放所有按键。
// key_press('ctrl') → key_tap('s') → release_all
key_press('ctrl');
key_tap('s');
release_all();
3. 鼠标点击与移动
按下鼠标左键,移动到指定坐标,松开。
// mouse_press('left') → mouse_move(...) → release_all
mouse_press('left');
mouse_move(800, 600);
release_all();
4. 截图与观察
先截取屏幕,由宿主环境查看图像,确认位置后再进行操作。
// screenshot() →(环境支持看图时)查看图像 → 再定位操作
const path = screenshot();
// 假设宿主环境支持读取 path 并理解图像内容
// 然后根据图像内容计算坐标并执行鼠标移动
注意事项¶
- 平台限制:仅支持 Windows 系统。
- DPI 感知:helper 已设置为 DPI-aware,所有坐标和尺寸均基于物理像素。模型给出的坐标即为截图里看到的坐标,无需进行缩放换算。
- 无视觉识别:插件本身不包含识图能力。
screenshot返回的是 PNG 文件路径,能否识别图像内容取决于宿主环境(模型是否支持图像输入或是否安装了其他视觉插件)。 - 配置生效范围:DSH 加载的是 profile 目录里的副本,而非源码目录。如果修改了源码,必须重新安装或发版才能生效。
- 权限要求:插件以当前 DSH 进程的权限运行,需确保进程有权限操作目标窗口。
生态背景¶
DSH 的核心理念是「一切皆插件」。社区目录(如 skillhub.cn)是独立站点,与 DeepSeek 或幻方 AI 无官方从属关系。本插件通过社区目录或 GitHub 发布,供开发者按需引用。
相关链接¶
- 目录页: https://www.skillhub.cn/plugins/msn233/dsh-keymouse-use
- GitHub: https://github.com/msn233/dsh-keymouse-use