惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Cloudflare Blog
Microsoft Security Blog
Microsoft Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
LangChain Blog
W
WeLiveSecurity
P
Proofpoint News Feed
月光博客
月光博客
NISL@THU
NISL@THU
L
LINUX DO - 最新话题
Webroot Blog
Webroot Blog
T
Threatpost
Y
Y Combinator Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
Vercel News
Vercel News
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
S
Schneier on Security
J
Java Code Geeks
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
MyScale Blog
MyScale Blog
N
News and Events Feed by Topic
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
The Hacker News
The Hacker News
Schneier on Security
Schneier on Security
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Help Net Security
Help Net Security
Recent Announcements
Recent Announcements
S
Security @ Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Securelist
T
The Exploit Database - CXSecurity.com
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
雷峰网
雷峰网
量子位
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Spread Privacy
Spread Privacy
L
Lohrmann on Cybersecurity
I
Intezer
T
The Blog of Author Tim Ferriss
G
GRAHAM CLULEY
D
DataBreaches.Net
V
Vulnerabilities – Threatpost
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
罗磊的独立博客

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第05章:基础几何、坐标系与变换 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第02章:安装、环境配置与开发工作流 第01章:OpenSCAD 项目全景与学习路线 第02章:源码获取、编译与开发环境配置 第01章:OCCT项目全景与学习路线 第18章:二次开发实战与综合案例 第18章:综合实战案例 第17章:数据交换与协同 第16章:源码架构与二次开发 第15章:插件与自定义工作台开发 第14章:Python脚本宏与自动化 第13章:FEM仿真分析 第12章:CAM数控加工 第11章:SurfaceMesh与逆向工程 第10章:Draft二维绘图与BIM建筑 第09章:工程图TechDraw 第07章:参数化表达式与Spreadsheet 第08章:装配设计Assembly 第06章:Part工作台与几何内核 第05章:PartDesign实体特征建模 第04章:草图Sketcher约束建模 第02章:安装版本与工作环境配置 第03章:界面工作台与基础操作 第01章:项目全景与学习路线 第十二章:插件开发、研究功能与最佳实践 第十章:定时任务与自动化(Cron) 第七章:技能、记忆与自学习闭环 第八章:MCP 集成与上下文文件 第六章:工具系统与终端后端 第五章:模型供应商与配置体系 Hermes Agent 教程目录 第十一章:语音、视觉、浏览器与子代理协作 第四章:CLI/TUI 与会话管理 第十二章:学习路线、实战方案与最佳实践 第十一章:源码结构、开发调试与插件开发 第十章:自动化、远程访问、日志与排障 第九章:Control UI、节点、Canvas 与语音能力 第七章:工具、技能、插件与能力扩展 第八章:安全模型、访问控制与沙箱实践 第六章:Agent 工作区、会话与多智能体路由 第五章:多通道消息接入与聊天平台配置 第四章:配置体系、模型接入与认证管理 第三章:Gateway 架构、协议与运行机制 第二章:安装、环境准备与快速上手 第一章:OpenClaw 项目概览与核心定位 oh-my-openagent 教程目录 09-命令模型回退与配置参考 10-实战案例最佳实践与故障排除 05-工作模式-Ultrawork-Prometheus-Atlas 08-Hooks与MCP系统 06-Category与Skill系统 07-核心工具链 04-智能体全景详解 03-安装与环境配置 02-整体架构与多模型编排机制 01-项目简介与核心理念 01-项目概览与学习路线 02-安装部署与工具适配 03-Skill机制与using-superpowers 05-TDD系统化调试与完成前验证 04-需求澄清方案设计与计划编写 07-并行智能体子智能体与Git-Worktree 第六章:代码审查、反馈处理与分支收尾 08-中国特色Skills与本土团队落地 09-MCP构建工作流执行与自定义Skill 第23章:FreeCAD-Python-API Clipper2 C# 源码解读教程 第19章:PolyTree 多边形树结构 第20章:实际应用与最佳实践 第18章:Minkowski 和与差 第17章:RectClip 矩形裁剪优化 第16章:ClipperOffset 偏移类详解 第15章:填充规则详解 第14章:布尔运算执行流程 第13章:ClipperD 浮点裁剪类 第11章:OutRec 与 OutPt 输出结构 第9章:Active 活动边结构 第10章:Vertex 顶点与 LocalMinima 局部极小值 第12章:Clipper64 裁剪类详解 第7章:高精度运算与128位整数 第8章:ClipperBase 基类详解 第5章:枚举类型与常量定义 第6章:InternalClipper 内部工具类 第2章:核心数据结构 - Point64、PointD 第3章:路径与多边形表示 - Path64、PathD、Paths64、PathsD 第4章:矩形边界 - Rect64、RectD
第01章 - RobotGo 概述与应用场景
我才是银古 · 2026-06-24 · via 博客园 - 我才是银古

第01章 - RobotGo 概述与应用场景

1.1 什么是 RobotGo

RobotGo 是一个使用 Go 语言编写的跨平台桌面自动化库,其官方仓库托管在 https://github.com/go-vgo/robotgo。它的目标是让开发者能够用 Go 直接“操控计算机”:移动鼠标、敲击键盘、读取屏幕像素、截图、查找图像、读写剪贴板、管理进程与窗口,以及在全局范围内监听键盘鼠标事件。

简单来说,RobotGo 把那些原本需要人手在桌面上完成的操作,封装成了一组简洁的 Go 函数。借助这些函数,你可以编写脚本或程序去自动完成重复性的、机械的桌面任务,也可以构建自动化测试、机器人流程自动化(RPA)、甚至是近年来流行的“AI 计算机使用(AI Computer Use)”类应用的底层执行引擎。

RobotGo 的定位可以用官方仓库中的一句话概括:

Golang Desktop Automation, auto test and AI Computer Use.(Go 语言桌面自动化、自动化测试与 AI 计算机使用。)

它的核心能力覆盖以下几个方面:

  • 鼠标控制(Mouse):移动、点击、拖拽、滚轮滚动,支持平滑移动与多屏幕。
  • 键盘控制(Keyboard):按键、组合键、文本输入(包括 Unicode 与中日韩文字)。
  • 屏幕读取(Screen):获取屏幕尺寸、读取指定坐标的像素颜色、获取多显示器信息。
  • 截图与图像(Image / Bitmap):截取屏幕区域、保存为 PNG/JPEG、在屏幕中查找位图。
  • 剪贴板(Clipboard):读写系统剪贴板文本。
  • 进程与窗口(Process / Window):查找进程 PID、激活窗口、获取窗口标题、结束进程、弹出系统提示框。
  • 全局事件监听(Global Event Hook):通过 gohook 监听全局键盘鼠标事件,实现热键、录制等功能。

1.2 RobotGo 的技术背景

RobotGo 并不是凭空造出来的,它站在了多个成熟开源项目的肩膀上。其底层很多与操作系统交互的能力,来源于一个名为 Robot.js(最初的 Node.js 自动化库)背后的 C 语言实现,以及 libpngX11/XTest(Linux)、Windows API、macOS 的 Quartz/Cocoa 等系统级接口。RobotGo 通过 Cgo 把这些 C 代码桥接进 Go 世界,因此在传统模式下编译 RobotGo 通常需要本机安装好 GCC 等 C 编译工具链。

近年来,RobotGo 也在持续演进,新增了 纯 Go(Cgo-free) 的后端实现,针对 Windows、Linux Wayland(wlroots 合成器)以及 libei(GNOME/KDE 的 xdg-desktop-portal)提供了无需 GCC 的构建方式。这意味着在部分平台上你可以用 CGO_ENABLED=0 直接交叉编译,大大降低了部署门槛。这部分内容会在后续“跨平台与 Cgo-free 构建”章节中详细展开。

RobotGo 的生态还包括一系列配套子库,它们与主库协同工作:

子库 仓库 作用
gohook robotn/gohook 全局键盘鼠标事件监听
bitmap vcaesar/bitmap 位图操作与位图查找
gcv vcaesar/gcv 基于 OpenCV 的图像识别与模板匹配
imgo vcaesar/imgo 图像读写与格式转换工具
adb vcaesar/adb 封装 Android adb,用于移动端自动化

理解 RobotGo 是“主库 + 一组生态子库”的组合,对于后续学习非常重要:很多高级功能(例如事件监听、图像查找、OpenCV 识别)并不在主库 robotgo 包内,而是需要配合对应的子库一起使用。

1.3 支持的平台与架构

RobotGo 支持三大主流桌面操作系统:

  • macOS:基于 Quartz / Cocoa,需要在“系统设置 → 隐私与安全性”中授予“辅助功能”和“屏幕录制”权限。
  • Windows:基于 Win32 API,传统模式需要 MinGW / LLVM-MinGW 等 GCC 工具链,也支持纯 Go 的 win 后端。
  • Linux:基于 X11 + XTest 扩展,需要安装相关的开发库;同时支持 Wayland(wlroots)与 libei(GNOME/KDE)两种纯 Go 后端。

在 CPU 架构方面,RobotGo 同时支持 x86-amd64arm64,因此可以运行在树莓派、Apple Silicon(M 系列芯片)的 Mac 等 ARM 设备上。

1.4 典型应用场景

RobotGo 的能力非常通用,下面列举一些它最常见、最适合的应用场景。

1.4.1 自动化测试

对于桌面 GUI 应用、游戏客户端或任何无法通过常规接口测试的程序,RobotGo 可以模拟真实用户的鼠标键盘操作,并通过截图、像素比对、图像查找等方式断言界面状态,从而构建端到端(E2E)的自动化测试流程。

1.4.2 机器人流程自动化(RPA)

在企业办公场景中,常常存在大量重复、机械的桌面操作:在多个系统之间复制粘贴数据、批量填写表单、定时点击按钮导出报表等。RobotGo 可以把这些操作脚本化,解放人力。

1.4.3 游戏脚本与辅助工具

通过屏幕截图、像素颜色识别与图像查找,RobotGo 可以识别游戏画面中的特定元素并自动响应,配合全局事件监听实现热键触发。需要注意的是,使用此类工具应遵守对应软件或游戏的用户协议,避免违规。

1.4.4 AI 计算机使用(AI Computer Use)

随着大模型 Agent 的发展,“让 AI 直接操作计算机”成为热门方向。RobotGo 恰好可以作为 Agent 的“手和眼”:截图作为视觉输入交给模型,模型决策后再通过 RobotGo 执行鼠标键盘操作。官方作者也在基于此构建名为 Codg 的 AI Agent 系统。

1.4.5 工具脚本与效率增强

一些个性化的小工具同样适合用 RobotGo 实现,例如:自定义全局热键、自动整理窗口布局、定时模拟操作防止系统休眠、快速文本扩展(输入缩写自动展开为长文本)等。

1.5 与其他自动化方案的对比

方案 语言 特点
RobotGo Go 跨平台、编译为单一二进制、性能好、生态完整
Robot.js Node.js 与 RobotGo 同源 C 底层,JS 生态,适合前端开发者
PyAutoGUI Python 上手简单、纯 Python,依赖较多,性能一般
AutoHotkey 专用脚本 仅 Windows,热键能力强,但跨平台与工程化弱
SikuliX Java 强于图像识别,依赖 JVM,体积较大

RobotGo 的核心优势在于:Go 语言的工程化能力(静态类型、并发模型、单文件部署)与 跨平台一致的 API。你写一份代码,理论上可以编译运行在 Windows、macOS、Linux 三个平台上,这对于需要分发桌面自动化工具的团队尤为友好。

1.6 RobotGo-Pro 与开源版本

需要特别说明的是,RobotGo 仓库还提及了一个名为 RobotGo-Pro 的版本,它提供 JavaScript、Python、Lua 等多语言绑定,以及技术支持、新特性和最新版本,但 Pro 版目前并非开源。本教程聚焦于 开源的 Go 版本 RobotGo,所有示例均基于公开的开源 API 编写。

1.7 本教程的学习路线

本教程将按照“由浅入深、由单点到综合”的顺序组织,整体规划如下:

  1. 概述与环境(第 1~3 章):理解 RobotGo 是什么,搭建开发环境,跑通第一个程序。
  2. 核心能力分模块精讲(第 4~11 章):鼠标、键盘、屏幕、截图、位图、剪贴板、进程窗口、事件监听,逐一深入。
  3. 进阶与扩展(第 12~13 章):OpenCV 图像识别、跨平台与 Cgo-free 构建。
  4. 实战与收尾(第 14~15 章):综合实战项目、最佳实践与常见问题排查。

建议读者具备基础的 Go 语言知识(变量、函数、包管理、错误处理),并准备好一台可以自由安装软件的开发机器,以便边学边动手实践。

1.8 小结

本章我们认识了 RobotGo 的整体定位:一个用 Go 编写的、跨平台的桌面自动化库,能够控制鼠标键盘、读取屏幕、处理图像、管理进程窗口并监听全局事件。我们梳理了它的技术背景与生态子库,了解了它支持的平台架构,并讨论了自动化测试、RPA、游戏脚本、AI 计算机使用等典型应用场景。下一章,我们将正式动手,搭建 RobotGo 的开发环境。