RPAGUI 自动化【免费下载链接】robotgoRobotGo, Go Native cross-platform RPA, GUI automation, Auto test and Computer use vcaesar项目地址https://gitcode.com/gh_mirrors/ro/robotgo点击查看免费下载RobotGo 是一个用 Go 编写的原生跨平台桌面自动化RPA库同时可用于自动化测试与 AI Computer Use计算机操作场景。它以统一的robotgoAPI 控制鼠标、键盘读取屏幕、进程、窗口句柄、图像与位图并提供全局事件监听支持 Mac、Windows 与 Linux兼容 arm64 与 x86-amd64 架构。本文以仓库内 lang/README.es.md西班牙语说明文档为主线结合 go.mod、robotgo.go、robotgo_pub.go 及各纯 Go 后端源码完整覆盖从依赖安装、无 Cgo 交叉编译到七大实战示例鼠标、键盘、屏幕、位图、OpenCV、事件、窗口的全部细节读完即可上手编写可运行的桌面自动化程序。RobotGo 是什么RobotGo 的核心定位是「Golang 桌面自动化、自动测试以及 AI 计算机操作Computer Use」。它把桌面自动化所需的底层系统调用封装成一组统一的 Go API开发者无需关心平台差异即可控制鼠标移动、点击、拖拽、滚动控制键盘按键、组合键、输入文本读取屏幕截屏、取色、多显示器操作进程与窗口句柄查找、激活、关闭、结束进程处理图像与位图捕获、保存、模板查找监听全局键盘/鼠标事件hook从源码结构看项目同时维护着两套并行的后端体系一套是默认的 Cgo 后端robotgo.go 中通过#cgo指令链接平台原生库如 Linux 的-lX11 -lXtst、Windows 的-lgdi32 -luser32、macOS 的 Cocoa/CoreFoundation/IOKit 框架另一套是本文重点讲解的纯 Go无 Cgo后端通过构建标签切换详见 x11_n.go、wayland_n.go、windows_n.go、libei.go。环境要求Requirements在安装 RobotGo 之前必须确保Golang与GCC已正确安装。文档给出了各平台的完整安装路径。通用要求全部平台Golang GCCmacOS通过 Homebrew 安装 Gobrew install go安装 Xcode 命令行工具xcode-select --install另外必须在系统隐私设置中为运行 RobotGo 的程序授予权限位置为系统设置 隐私与安全性 辅助功能、屏幕与系统音频录制。这一点与 darwin 包 源码中的说明完全一致大多数输入与屏幕捕获 API 在未授予「辅助功能」与「屏幕录制」权限时只会静默失败或返回空结果。Windows安装 Gowinget install Golang.go安装 llvm-mingw推荐工具链之一winget install MartinStorsjo.LLVM-MinGW.UCRT或者使用 Mingw-w64winget install BrechtSanders.WinLibs.POSIX.UCRT也可以手动下载 Mingw-w64 及其他 GCC 发行版然后把类似C:\mingw64\bin的路径配置到系统环境变量Path中。需要特别注意的是除 Mingw-w64 之外的其他 GCC在使用bitmap位图查找功能时需要自行编译libpng。LinuxX11 桌面Linux 下的依赖分为四组分别对应不同功能模块GCC 带 XTest 扩展的 X11即 Xtst 库 “剪贴板”xsel xclip “位图”libpng仅 “bitmap” 使用。 “事件-Gohook”xcb, xkb, libxkbcommon仅 “hook” 使用。Ubuntu / Debian 系# sudo apt install golang sudo snap install go --classic # gcc sudo apt install gcc libc6-dev # x11 sudo apt install libx11-dev xorg-dev libxtst-dev # Clipboard sudo apt install xsel xclip # Bitmap sudo apt install libpng-dev # GoHook sudo apt install xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev libxkbcommon-devFedora / RHEL 系# x11 sudo dnf install libXtst-devel # Clipboard sudo dnf install xsel xclip # Bitmap sudo dnf install libpng-devel # GoHook sudo dnf install libxkbcommon-devel libxkbcommon-x11-devel xkbcomp-devel xorg-x11-xkb-utils-devel ( Fedora 34)Wayland纯 Go 后端无需系统 C 库Wayland 后端是**纯 Go无 Cgo**实现因此不需要任何系统 C 库。但它要求运行在基于 wlroots 的合成器compositor上例如 Sway、Hyprland、Wayfire 等并且合成器必须支持以下协议zwlr_virtual_pointer_v1 (鼠标控制) zwp_virtual_keyboard_v1 (键盘控制) zwlr_screencopy_v1 (屏幕捕获) zwlr_foreign_toplevel_management_v1 (窗口管理)这一要求在 wayland/doc.go 的包注释中有完全一致的记载。需要注意GNOME 和 KDE 不原生支持这些协议。libeiGNOME / KDE 桌面libei 后端同样是**纯 Go无 Cgo**实现但它的工作方式不同它通过 freedesktop 的xdg-desktop-portalRemoteDesktop 接口走 D-Bus驱动输入因此可以在 GNOME 和 KDE 上工作这与依赖 wlroots 协议的 Wayland 后端形成互补。运行时要求xdg-desktop-portal (portal D-Bus 服务) xdg-desktop-portal-gnome / -kde (你桌面的 portal 后端)关于 libei 后端的更多实现细节libei/doc.go 补充了几点关键信息需要会话级 D-Bus 总线DBUS_SESSION_BUS_ADDRESS首次运行会弹出一致的「允许远程控制」授权对话框恢复令牌persist_mode persistent会被缓存到$XDG_STATE_HOME/robotgo后续运行不再重复询问支持键盘、相对指针移动、按键与滚动绝对指针移动Move尚未接线会退化为尽力而为的相对移动libei 后端只处理鼠标和键盘输入屏幕捕获和窗口管理会返回ErrNotSupported。安装与更新Installation / Update在支持 Go Module 的环境Go 1.11中只需要在代码中 import 即可import github.com/go-vgo/robotgo否则运行以下命令安装 robotgo 包go get github.com/go-vgo/robotgo更新到最新版本go get -u github.com/go-vgo/robotgo文档同时给出了两个历史注意点go1.10.x 存在 C 文件编译缓存问题golang #24355以及go mod vendor的相关问题golang #26366。如果你在编译时遇到png.h: No such file or directory报错通常是 libpng 开发头文件缺失请按上文 Linux/Windows 的 bitmap 依赖说明补齐。仓库的 go.mod 显示当前模块为github.com/go-vgo/robotgoGo 版本要求为 1.25.0纯 Go 后端依赖包括github.com/ebitengine/puregomacOS 运行时动态加载 Quartz/CoreGraphics、github.com/jezek/xgb与github.com/jezek/xgbutilX11 纯 Go 协议实现、github.com/vcaesar/go-waylandWayland 协议、github.com/tailscale/winWindows API以及github.com/godbus/dbus/v5libei 的 portal D-Bus 通信等。无 Cgo 纯 Go 构建Cgo-free Builds这是本仓库最新引入的重要能力RobotGo 为 Windows、macOS、X11、Wayland 和 libeiLinux提供了纯 Go无 Cgo后端当前标记为实验性功能。它们暴露与 Cgo 后端完全相同的robotgoAPI因此你的业务代码无需任何改动——只需切换一个构建标签。这些后端可以在CGO_ENABLED0下交叉编译完全不需要 GCC、MinGW、Xcode 或 X11 头文件。后端与构建标签对照表后端构建标签Go 包Windows无 Cgowingithub.com/go-vgo/robotgo/winmacOS通过 purego 调用 Quartzmacgithub.com/go-vgo/robotgo/darwinX11Linux纯 Go X 协议x11github.com/go-vgo/robotgo/x11WaylandLinuxwlrootswaylandgithub.com/go-vgo/robotgo/waylandlibeiLinuxGNOME/KDE portallibeigithub.com/go-vgo/robotgo/libei纯 Go 默认所有平台purego选择上面的mac/win/wayland构建命令示例# 每个平台的纯 Go 默认后端一个标签适用于所有目标 # macOS - macWindows - winLinux - wayland可与 x11/libei 组合以覆盖 go build -tags purego ./... CGO_ENABLED0 GOOSlinux GOARCHamd64 go build -tags purego,x11 ./... # Windows无需 Cgo / 无需 MinGW CGO_ENABLED0 GOOSwindows GOARCHamd64 go build -tags win ./... # macOS通过 purego 在运行时加载 Quartz/CoreGraphics无需 Xcode CGO_ENABLED0 GOOSdarwin GOARCHarm64 go build -tags mac ./... # X11纯 Go 实现的 X 协议XTEST—— 无需 X11 头文件 CGO_ENABLED0 GOOSlinux GOARCHamd64 go build -tags x11 ./... # Wayland基于 wlroots 的合成器Sway、Hyprland、Wayfire 等 CGO_ENABLED0 GOOSlinux GOARCHamd64 go build -tags wayland ./... # libei通过 xdg-desktop-portal RemoteDesktop 支持 GNOME/KDE CGO_ENABLED0 GOOSlinux GOARCHamd64 go build -tags libei ./...各标签背后的源码机制这些标签的转发机制在仓库源码中有清晰的实现全部采用 Go 构建约束build constraints控制编译单元转发层保持 API 签名不变win标签默认的 Cgo/Win32 后端被排除调用转发到纯 Go 的win包。接线代码见 windows_n.go//go:build windows (win || purego)。mac标签默认的 Cgo/Quartz 后端被排除调用转发到纯 Go 的darwin包由于纯 Go 实现无法调用需要 Objective-C 的 AppKit 窗口 API窗口管理返回ErrNotSupported见 darwin/doc.go。x11标签Cgo/X11 后端被排除调用转发到纯 Go 的x11包x11_n.go//go:build linux x11。该后端通过github.com/jezek/xgb直接与 X server 走线上协议通信XTEST 负责输入注入core protocol 负责截屏与指针查询窗口管理走 EWMH/ICCCMgithub.com/jezek/xgbutil。wayland标签Cgo/X11 后端被排除调用转发到纯 Go 的wayland包wayland_n.go//go:build linux (wayland || purego) !libei !x11。libei标签Cgo/X11 与 wlroots Wayland 后端均被排除调用转发到纯 Go 的libei包libei.go//go:build linux libei。purego标签跨平台快捷方式purego标签是一个跨平台快捷方式它会在所有平台排除 Cgo 后端并按目标 OS 选择默认纯 Go 后端——macOS 使用macWindows 使用winLinux 使用wayland。在 Linux 上你可以将它与x11或libei组合例如-tags purego,libei以选择不同的纯 Go 后端。值得补充的是各转发层都只重新导出平台相关的符号而与后端无关的通用代码img.go 的图像保存、ps.go 的进程管理、keycode.go 的键码转换、screen.go 的部分屏幕辅助函数以及共享 API 表面Version、Sleep、MilliSleep、Bitmap/Point/Size/Rect类型、DisplayID/NotPid/Scale可调参数都放在无构建标签约束的 robotgo_pub.go 中为所有后端共同编译保证行为一致。实战示例Examples以下示例全部来自仓库 examples 目录可直接复制运行请先按上文完成环境准备。示例代码还依赖若干辅助包如github.com/vcaesar/imgo、github.com/vcaesar/bitmap、github.com/vcaesar/gcv、github.com/robotn/gohook它们会随go get一并拉取。鼠标控制完整源码见 examples/mouse/main.gopackage main import ( fmt github.com/go-vgo/robotgo ) func main() { robotgo.MouseSleep 300 robotgo.Move(100, 100) fmt.Println(robotgo.Location()) robotgo.Move(100, -200) // multi screen supported robotgo.MoveSmooth(120, -150) fmt.Println(robotgo.Location()) robotgo.ScrollDir(10, up) robotgo.ScrollDir(20, right) robotgo.Scroll(0, -10) robotgo.Scroll(100, 0) robotgo.MilliSleep(100) robotgo.ScrollSmooth(-10, 6) // robotgo.ScrollRelative(10, -100) robotgo.Move(10, 20) robotgo.MoveRelative(0, -10) robotgo.DragSmooth(10, 10) robotgo.Click(wheelRight) robotgo.Click(left, true) robotgo.MoveSmooth(100, 200, 1.0, 10.0) robotgo.Toggle(left) robotgo.Toggle(left, up) }结合 robotgo.go 的实现细节可以对关键 API 有更准确的理解robotgo.MouseSleep 300设置鼠标操作的默认毫秒延迟robotgo_pub.go 中MouseSleep的默认值为 0。Move在完成底层moveMouse调用后会MilliSleep(MouseSleep)。Move(x, y)绝对移动鼠标注释标明支持多显示器坐标可为负值例如Move(100, -200)。在 Windows 或开启Scale时坐标会先乘以系统缩放因子见MoveScale。MoveSmooth(x, y, low, high, mouseDelay)拟人化平滑移动。smoothMove中默认low1.0, high3.0第三个参数为鼠标延迟。Click(button, double)CheckMouse支持的按钮名包括left、center、right、wheelDown、wheelUp、wheelLeft、wheelRight未匹配时默认回退到左键。Toggle(button, up/down)按下或释放按键默认按下DragSmooth内部就是「左键按下 → 平滑移动 → 左键释放」的组合。键盘输入完整源码见 examples/key/main.gopackage main import ( fmt github.com/go-vgo/robotgo ) func main() { robotgo.Type(Hello World) robotgo.Type(だんしゃり, 0, 1) // robotgo.Type(テストする) robotgo.Type(Hi, Seattle space needle, Golden gate bridge, One world trade center.) robotgo.Type(Hi galaxy, hi stars, hi MT.Rainier, hi sea. こんにちは世界.) robotgo.Sleep(1) // ustr : uint32(robotgo.CharCodeAt(Test, 0)) // robotgo.UnicodeType(ustr) robotgo.KeySleep 100 robotgo.KeyTap(enter) // robotgo.Type(en) robotgo.KeyTap(i, alt, cmd) arr : []string{alt, cmd} robotgo.KeyTap(i, arr) robotgo.MilliSleep(100) robotgo.KeyToggle(a) robotgo.KeyToggle(a, up) robotgo.WriteAll(Test) text, err : robotgo.ReadAll() if err nil { fmt.Println(text) } }要点说明Type(str, delay, keyDelay)模拟键盘逐个键入字符串支持多语言文本示例中包含了日文假名。第二个参数0是字符间隔毫秒数第三个参数1是按键间隔毫秒数。KeySleep 100设置键盘默认毫秒延迟默认值为 10见 robotgo_pub.go。KeyTap(key, mods...)敲击按键后面的参数是修饰键组合例如KeyTap(i, alt, cmd)等价于同时按下 AltCommandi也支持以[]string切片传入修饰键。KeyToggle(key, up)按住或释放按键。WriteAll/ReadAll写入/读取系统剪贴板文本对应仓库中的 clipboard 包Linux 下依赖xsel/xclip。屏幕捕获与多显示器完整源码见 examples/screen/main.gopackage main import ( fmt strconv github.com/go-vgo/robotgo github.com/vcaesar/imgo ) func main() { x, y : robotgo.Location() fmt.Println(pos: , x, y) color : robotgo.GetPixelColor(100, 200) fmt.Println(color---- , color) sx, sy : robotgo.GetScreenSize() fmt.Println(get screen size: , sx, sy) bit : robotgo.CaptureScreen(10, 10, 30, 30) defer robotgo.FreeBitmap(bit) img : robotgo.ToImage(bit) imgo.Save(test.png, img) num : robotgo.DisplaysNum() for i : 0; i num; i { robotgo.DisplayID i img1, _ : robotgo.CaptureImg() path1 : save_ strconv.Itoa(i) robotgo.Save(img1, path1.png) robotgo.SaveJpeg(img1, path1.jpeg, 50) img2, _ : robotgo.CaptureImg(10, 10, 20, 20) robotgo.Save(img2, test_strconv.Itoa(i).png) x, y, w, h : robotgo.GetDisplayBounds(i) img3, err : robotgo.CaptureImg(x, y, w, h) fmt.Println(Capture error: , err) robotgo.Save(img3, path1_1.png) } }屏幕 API 的底层实现要点见 robotgo.go 第 205-307 行附近GetPixelColor(x, y)返回指定坐标的像素颜色字符串内部先取C.MMRGBHex再经pad_hex补齐为 6 位十六进制。CaptureScreen(x, y, w, h)截取屏幕指定区域返回 C 位图CBitmap必须用defer robotgo.FreeBitmap(bit)释放不传参数时截取主显示器全屏。源码中capture_screen的第 5 个参数是显示器 ID第 6 个参数控制是否按进程窗口捕获配合NotPid。CaptureImg()返回标准库image.Image内部会自动释放临时位图。DisplaysNum()/GetDisplayBounds(i)枚举显示器数量与每块显示器的边界通过设置全局robotgo.DisplayID i可切换目标显示器。Save(img, path)/SaveJpeg(img, path, quality)分别保存 PNG / JPEG 截图JPEG 的第三个参数为压缩质量示例中为 50。位图查找Bitmap位图查找用于「在屏幕上找到某张图片」是 GUI 自动化定位按钮/图标的核心能力。完整源码见 bitmap 示例package main import ( fmt github.com/go-vgo/robotgo github.com/vcaesar/bitmap ) func main() { bit : robotgo.CaptureScreen(10, 20, 30, 40) // use defer robotgo.FreeBitmap(bit) to free the bitmap defer robotgo.FreeBitmap(bit) fmt.Println(bitmap..., bit) img : robotgo.ToImage(bit) // robotgo.SavePng(img, test_1.png) robotgo.Save(img, test_1.png) bit2 : robotgo.ToCBitmap(robotgo.ImgToBitmap(img)) fx, fy : bitmap.Find(bit2) fmt.Println(FindBitmap------ , fx, fy) robotgo.Move(fx, fy) arr : bitmap.FindAll(bit2) fmt.Println(Find all bitmap: , arr) fx, fy bitmap.Find(bit) fmt.Println(FindBitmap------ , fx, fy) bitmap.Save(bit, test.png) }流程拆解CaptureScreen截取屏幕区域得到 C 位图 →ToImage转为标准image.Image→ImgToBitmap转回 Go 位图 →ToCBitmap再转回 C 位图用于查找 →bitmap.Find/bitmap.FindAll返回目标在屏幕上的坐标随后即可用robotgo.Move移动鼠标过去。OpenCV 图像识别gcv如果要处理更复杂的图像匹配模板匹配、SIFT 特征匹配可以结合github.com/vcaesar/gcv使用package main import ( fmt math/rand github.com/go-vgo/robotgo github.com/vcaesar/gcv github.com/vcaesar/bitmap ) func main() { opencv() } func opencv() { name : test.png name1 : test_001.png robotgo.SaveCapture(name1, 10, 10, 30, 30) robotgo.SaveCapture(name) fmt.Print(gcv find image: ) fmt.Println(gcv.FindImgFile(name1, name)) fmt.Println(gcv.FindAllImgFile(name1, name)) bit : bitmap.Open(name1) defer robotgo.FreeBitmap(bit) fmt.Print(find bitmap: ) fmt.Println(bitmap.Find(bit)) // bit0 : robotgo.CaptureScreen() // img : robotgo.ToImage(bit0) // bit1 : robotgo.CaptureScreen(10, 10, 30, 30) // img1 : robotgo.ToImage(bit1) // defer robotgo.FreeBitmapArr(bit0, bit1) img, _ : robotgo.CaptureImg() img1, _ : robotgo.CaptureImg(10, 10, 30, 30) fmt.Print(gcv find image: ) fmt.Println(gcv.FindImg(img1, img)) fmt.Println() res : gcv.FindAllImg(img1, img) fmt.Println(res[0].TopLeft.Y, res[0].Rects.TopLeft.X, res) x, y : res[0].TopLeft.X, res[0].TopLeft.Y robotgo.Move(x, y-rand.Intn(5)) robotgo.MilliSleep(100) robotgo.Click() res gcv.FindAll(img1, img) // use find template and sift fmt.Println(find all: , res) res1 : gcv.Find(img1, img) fmt.Println(find: , res1) img2, _, _ : robotgo.DecodeImg(test_001.png) x, y gcv.FindX(img2, img) fmt.Println(x, y) }要点SaveCapture直接把截屏存为文件gcv.FindImgFile/gcv.FindAllImgFile直接在图片文件之间做模板匹配gcv.Find/gcv.FindAll同时使用模板匹配与 SIFT 特征识别到目标坐标后示例演示了「移动鼠标到目标 → 短暂停顿 → 点击」的完整自动化闭环这正是 RPA 与 AI Computer Use 中最常见的「看图操作」模式。全局事件监听Event Hook监听全局键盘/鼠标事件需要独立的github.com/robotn/gohook库package main import ( fmt // github.com/go-vgo/robotgo hook github.com/robotn/gohook ) func main() { add() low() event() } func add() { fmt.Println(--- Please press ctrl shift q to stop hook ---) hook.Register(hook.KeyDown, []string{q, ctrl, shift}, func(e hook.Event) { fmt.Println(ctrl-shift-q) hook.End() }) fmt.Println(--- Please press w---) hook.Register(hook.KeyDown, []string{w}, func(e hook.Event) { fmt.Println(w) }) s : hook.Start() -hook.Process(s) } func low() { evChan : hook.Start() defer hook.End() for ev : range evChan { fmt.Println(hook: , ev) } } func event() { ok : hook.AddEvents(q, ctrl, shift) if ok { fmt.Println(add events...) } keve : hook.AddEvent(k) if keve { fmt.Println(you press... , k) } mleft : hook.AddEvent(mleft) if mleft { fmt.Println(you press... , mouse left button) } }三种用法分别对应RegisterProcess的回调式事件注册按下 ctrlshiftq 结束监听、Start返回事件通道的低级事件流、以及AddEvent/AddEvents的阻塞式按键等待。Linux 下 hook 依赖xcb、xkb、libxkbcommon系列库对应仓库中 event 目录 下的 C 头文件android/ios 版本为独立实现。窗口与进程管理完整源码见 examples/window/main.gopackage main import ( fmt github.com/go-vgo/robotgo ) func main() { fpid, err : robotgo.FindIds(Google) if err nil { fmt.Println(pids... , fpid) if len(fpid) 0 { robotgo.Type(Hi galaxy!, fpid[0]) robotgo.KeyTap(a, fpid[0], cmd) robotgo.KeyToggle(a, fpid[0]) robotgo.KeyToggle(a, fpid[0], up) robotgo.ActivePid(fpid[0]) robotgo.Kill(fpid[0]) } } robotgo.ActiveName(chrome) isExist, err : robotgo.PidExists(100) if err nil isExist { fmt.Println(pid exists is, isExist) robotgo.Kill(100) } abool : robotgo.Alert(test, robotgo) if abool { fmt.Println(ok , ok) } title : robotgo.GetTitle() fmt.Println(title , title) }窗口 API 的语义说明FindIds(name)按进程名窗口名查找 PID 列表。Type(str, pid)/KeyTap(key, pid, mods)向指定 PID 的窗口发送输入无需先激活窗口。ActivePid(pid)/ActiveName(name)激活指定进程/名称的窗口。PidExists(pid)判断进程是否存在。Kill(pid)结束进程。Alert(title, msg)弹出一个原生对话框返回用户点击结果。GetTitle()读取当前活动窗口的标题。进程相关 APIPids、Process、Kill等在纯 Go 后端中由跨平台通用的 ps.go 提供因此无论选择哪个后端进程管理能力保持一致。文档、类型转换与交叉编译按键名与类型转换robotgo.Type、KeyTap接受的按键名称、Bitmap/CBitmap/CHex等类型之间的转换方法集中记录在 docs/keys.md其中包含 Type 类型转换对照表与完整按键名列表keycode.go 提供了键码映射。交叉编译Linux 上交叉编译 Windows/macOS 目标程序的方法见 docs/install.md 的 Cross Compiling 一节结合本文的无 Cgo 构建标签CGO_ENABLED0交叉编译会更加顺畅。API 文档docs/doc.md 为旧的 API 文档官方标注已弃用、不再更新建议以 GoDoc 与当前源码为准。项目现状与后续计划文档还提及了项目周边的生态信息作者正在打造一个简单易用的 AI Agent智能体工作系统 Codg定位为自动化、异步、并发、高效且高准确度与 RobotGo 的 AI Computer Use 方向契合。RobotGo-Pro 提供 JavaScript、Python、Lua 等其他语言版本以及技术支持、新功能与最新版本目前无开源版本。Android adb 相关能力可通过 ADB 绑定封装使用。文档列出的后续开发计划Plans包括将部分 C 代码重构为 Go例如 x11、windows、更好的多屏支持、Wayland 支持、更新窗口句柄、尝试支持 Android 与 iOS。从仓库现状看其中「C 代码重构为 Go」「Wayland 支持」已经落地为本文介绍的纯 Go 后端体系多屏与 Android/iOS 仍在演进中。贡献与许可证贡献者完整列表见项目的 Contributors 页面参与开发请遵循 CONTRIBUTING.md 中的贡献指南。许可证RobotGo 主要依据 Apache LicenseVersion 2.0条款分发部分内容受各类 BSD 风格许可证约束详见 LICENSE 与仓库根目录的 LICENSE 声明。总结通过本文你可以完成从零搭建 RobotGo 开发环境macOS/Windows/Ubuntu/Fedora/Wayland/libei 全覆盖、掌握无 Cgo 纯 Go 后端的构建标签矩阵与交叉编译方法并直接复用仓库 examples 中七大实战示例快速构建自己的桌面自动化、自动测试或 AI Computer Use 应用。无论是传统 X11 桌面还是 wlroots/GNOME/KDE 的 Wayland 环境RobotGo 都提供了对应的后端接入方案而统一的robotgoAPI 保证了业务代码的跨平台可移植性。赞分享RPAGUI 自动化【免费下载链接】robotgoRobotGo, Go Native cross-platform RPA, GUI automation, Auto test and Computer use vcaesar项目地址https://gitcode.com/gh_mirrors/ro/robotgo点击查看免费下载相关推荐Hindsight 指南上下文窗口不是记忆——为什么更大的 Prompt 替代不了 Agent 持久记忆Hindsight 指南上下文窗口不是记忆——为什么更大的 Prompt 替代不了 Agent 持久记忆 上下文窗口context window决定的是模RPAGUI 自动化RobotGo 跨平台桌面自动化完全指南环境搭建、Cgo-free 纯 Go 构建与七大实战示例RobotGo 跨平台桌面自动化完全指南环境搭建、Cgo free 纯 Go 构建与七大实战示例 本指南以 RobotGo 项目的官方文档 lang/REARPAGUI 自动化RobotGo 桌面自动化指南环境搭建、安装构建与纯 Go 无 Cgo 后端详解RobotGo 桌面自动化指南环境搭建、安装构建与纯 Go 无 Cgo 后端详解 RobotGo 是一款用 Go 语言原生编写的跨平台桌面自动化RPA库RPAGUI 自动化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Ragas-----从零开始为你的RAG项目打分 1. 为什么需要 Ragas(RAG 系统的隐藏问题)RAG 能大幅降低幻觉,但不是银弹,手动测几个问题根本发现不了隐患:问题具体表现检索器不靠谱① 把大量无关噪音片段塞给 LLM,干扰判断;② 漏掉真正关键的… · 2026/9/24 10:17:17
八千里工业设计的品牌故事:三千个产品设计的远方 八千里工业设计的品牌故事:三千个产品设计的远方
2013年,深圳。制造业正热的年月,一群在深圳做工业设计、相信"好设计能改变产品"的人聚到了一起,成立了八千里工业设计。也是那一年,我们在阿里巴巴1688开了店… · 2026/9/24 11:21:24
Python字典更新有个坑,你可能已经踩了 "为什么线上数据会丢字段?"凌晨两点,我盯着日志里残缺的JSON数据,发现问题的根源竟是一个用了多年的字典更新操作。这次线上事故让我意识到:dict.update()在合并字典时,会悄无声息地覆盖嵌套字典的全部内容—… · 2026/9/24 11:21:18
STM32F103C8T6 寄存器流水灯实验报告 芯片:STM32F103C8T6
功能:GPIOA、GPIOB、GPIOC 三端口,4 个 LED(3 个外接 LEDPC13 板载 LED)轮流流水,间隔 1s,寄存器直接编程
一、实验目的
熟悉 STM32 GPIO 寄存器工作原理,掌握寄… · 2026/9/24 11:21:03
手把手教你用Arduino和光电二极管DIY一台光功率计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:20:31
手把手教你用OpenStock搭建开源股票行情分析系统 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 11:20:24
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44