Gomaton
指南
API
GitHub
指南
API
GitHub
  • 前言

    • 快速开始
    • 能力速查
    • 工作原理
    • 硬件输入后端(ESP32 HID)
  • API 参考

    • motion - 触控 / 输入
    • images - 找图找色 / 截图
    • uiacc - 控件(UI 树)
    • device - 设备
    • app - 应用
    • ime - 输入法
    • ocr - 文字识别
    • yolo - 目标检测
    • files - 文件
    • storages - 键值存储
    • https - 网络
    • media - 媒体
    • system - 系统
    • utils - 工具

能力速查

一页看全 Gomaton SDK 能做什么。每个包都是一个 import "gomaton.dev/sdk/<包>",点标题进对应 API 参考。

按包速查

包一句话典型用途
motion触控与按键点击、滑动、长按、多指、Home/Back/回车
images截图 / 找色 / 找图找到屏幕上的图标或颜色再点它、取像素
uiacc控件树(UI 树)按文字 / id / 类名找控件,点它、输入、滚动
device设备信息与状态屏幕尺寸、亮度、音量、系统版本、重启震动
app应用控制按包名打开 / 停止 / 清数据 / 装卸、查前台包名
ime剪贴板与输入法读写剪贴板、往输入框提交文本(破联想搜索框)
ocr端上文字识别屏幕截图里认字、按文字定位(不联网)
yolo目标检测自训模型认屏幕上的目标框(不联网)
files设备侧文件读写 / 追加 / 列目录,取 resources 里的素材
storages本地 KV 存储脚本重启后仍在的键值对(进度、账号态)
https网络请求GET / POST / 下载文件
media媒体库触发相册扫描,让新图立刻可见
system进程与 shell跑 shell、看 CPU / 内存 / 进程
utils纯 Go 小工具等待、随机延时、日志、类型转换

按场景选能力

"我要点屏幕上一个东西" —— 三条定位路线,任选或组合:

  • 知道它的文字 / id / 类名 → uiacc 控件树最稳,跨机型不受分辨率影响。
    if o := uiacc.New().Text("发布").WaitFor(3000); o != nil { o.Click() }
    
  • 它是个图标 / 有固定外观 → images 找图。模板图放 resources/,用 files.Path 取路径:
    tpl, _ := os.ReadFile(files.Path("send.png")) // 标准库 + SDK 自由混写
    if m := images.FindImage(tpl, 0.9); m.Found {
        motion.Tap(m.X, m.Y)
    }
    
  • 它是屏幕上的一段文字,但没有控件 → ocr 认字定位。
  • 它是自训模型能认的目标 → yolo。

"我要往输入框打字" —— 用 ime 而不是逐字符敲键:ime.InputText("你好") 直接提交,能过联想 / 搜索框;或走剪贴板 ime.SetClipText + 粘贴。

"我要打开某个 App" —— app.Launch("包名"),不靠视觉,秒开。查当前前台用 app.CurrentPackage()。

"我要脚本记住上次跑到哪" —— storages 存进度 / 账号态,落在设备上,重启仍在。

"我要控制节奏、别太像机器" —— utils 的随机延时 + motion 的拟人滑动曲线(内置,无需自己造)。

定位三选一怎么挑

路线稳跨机型前置何时用
控件树 uiacc最稳好无(UiAutomation,不用开无障碍)首选。控件有文字 / id 就用它
找图 images中受分辨率影响要准备模板图无控件、纯画布(游戏 / 自绘 UI)
OCR ocr中好首次 Load 模型有文字但没控件(图片里的字)

经验:能用控件树就用控件树,找图 / OCR 作补充,三者可混用(先控件树等页面,再找图点具体图标)。

用自己的模型(OCR / YOLO)

OCR 和 YOLO 都是端上 ncnn 推理,可以换成你自己的模型:

  • 放哪:项目 resources/models/ocr/(det/rec 的 .param+.bin)、resources/models/yolo/(你的 .param+.bin,可选 labels.txt 每行一个类名)。构建部署时整个 resources/ 会推到设备。

  • 怎么用:代码里用 files.Path 取设备上的路径:

    // YOLO:自带 bin 模型 + 类别文件;labels 传空则用内置 COCO80
    y, err := yolo.New(
        files.Path("models/yolo/best.param"),
        files.Path("models/yolo/best.bin"),
        files.Path("models/yolo/labels.txt"),
        640, 0.25, 0.45) // targetSize / conf / nms,按你的模型给
    if err != nil { /* 加载失败,err 带原因 */ }
    defer y.Close()
    for _, d := range y.Detect(0, 0, -1, -1) {
        // d.Label / d.Score / d.CenterX / d.CenterY
    }
    
    // OCR:换模型目录即可
    ocr.Load(files.Path("models/ocr"))
    
  • 格式:必须是 ncnn 的 .param+.bin(与 libyolo/libppocr 的后端一致);从 YOLO 的 .pt/ONNX 转 ncnn 自行完成后放进目录即可。

下一步

  • 还没跑起来 → 快速开始
  • 想知道底层怎么工作 → 工作原理
  • 查具体函数签名 → 从上表点进任意包的 API 参考
上次更新: 2026/9/2 06:21
贡献者: hb
Prev
快速开始
Next
工作原理