Skip to content

API 参考 ​

Wingman 的脚本 SDK 以 Lua 为一等公民(默认启用,随主构建与 CI 测试),并提供 Python 作为可选后端(嵌入式 CPython + pybind11,默认关闭,需通过 WINGMAN_ENABLE_PYTHON=ON 显式启用)。两者共享同一套模块功能与 IScriptEngine 抽象。

为什么支持两种语言 ​

Wingman 选择同时支持 Python 和 Lua,是为了满足不同用户的需求:

Python ​

适合用户:

  • 有编程经验的开发者
  • 需要处理复杂逻辑的自动化任务
  • 需要调用第三方库(网络请求、数据处理等)
  • 重视开发效率和代码可维护性

优势:

  • 第三方库可直接经 pip 安装
  • 类型友好:支持类型提示,IDE 自动补全完善
  • 调试方便:成熟的调试工具和错误追踪
  • 代码组织:支持模块、类、函数等完整面向对象特性

典型场景:

  • 复杂的游戏辅助工具(需要网络同步、数据库存储)
  • 需要调用 AI/视觉能力(OCR、ONNX 模型加载等)
  • 团队协作开发的大型自动化项目

Lua ​

适合用户:

  • 游戏玩家或轻度编程用户
  • 需要快速编写简单脚本的场景
  • 资源受限环境(嵌入式、低配置设备)
  • 重视启动速度和内存占用

优势:

  • 轻量级:解释器体积小(< 1MB),启动迅速
  • 简单易学:语法简洁,上手快
  • 部署方便:单文件脚本,无需依赖管理
  • 游戏行业:许多游戏的宏系统使用 Lua,用户可能已熟悉

典型场景:

  • 简单的挂机脚本
  • 游戏内宏录制后的小幅修改
  • 需要快速测试自动化想法

SDK 设计哲学 ​

命名规范 ​

两种语言遵循各自社区的最佳实践:

Python(snake_case):

python
screen.get_pixel(x, y)
screen.find_image(path, region)
uia.find_button("确定")
http.post(url, data)

Lua(camelCase):

lua
screen.getPixel(x, y)
screen.findImage(path, region)
uia.find_button("确定")
http.post(url, data)

注意:各模块以实际注册名为准。screen/input/window 等模块注册名为 camelCase,Python 绑层会自动提供 snake_case 别名;uia 模块注册名本身为 snake_case(两种语言同名,Python 侧无 camelCase 形式)。

模块化设计 ​

所有功能按模块划分,清晰明确:

模块功能典型用途
screen屏幕操作截图、找图、取色
input输入模拟鼠标点击、键盘输入
window窗口管理查找窗口、激活窗口
process进程管理启动游戏、检查进程
uiaUI Automation稳定的控件操作
http网络请求API 调用、数据同步
kv数据存储保存脚本状态

一致性原则 ​

两种语言的 API 在功能上完全对等,只是语法适应语言习惯:

相同功能,不同语法:

python
# Python
from wingman import screen

img = screen.capture()
result = screen.find_image("button.png", {"x": 0, "y": 0, "width": 1920, "height": 1080})
# result 为数组 [point, found](point 为 {x, y} 对象)
lua
local wingman = require("wingman")

-- Lua
local img = wingman.screen.capture()
local result = wingman.screen.findImage("button.png", {x = 0, y = 0, width = 1920, height = 1080})
-- result 为数组 {point, found}(point 为 {x, y} 对象)

设计取舍 ​

为什么不是 JavaScript / TypeScript ​

  • 执行效率:V8 引擎体积大、启动慢
  • 部署复杂:需要 node.js 环境,对普通用户门槛高
  • 游戏冲突:许多游戏浏览器组件嵌入 JS 引擎,可能冲突

为什么不是 C# / .NET ​

  • 运行时依赖:需要 .NET Runtime,部署不友好
  • 编译步骤:用户需要编译,不符合脚本快速迭代的特性
  • 学习曲线:对轻度用户过重

Python vs Lua 的性能 ​

两种语言在实际使用中的特点:

Python 优势:

  • 丰富的第三方库支持(numpy、pandas、requests 等)
  • 成熟的开发工具和调试器
  • 类型提示和 IDE 自动补全
  • 适合处理复杂逻辑和大规模项目

Lua 优势:

  • 解释器体积小,启动快
  • 内存占用相对较低
  • 语法简洁,脚本文件小
  • 部署方便,无需额外依赖

建议:

  • 简单脚本、快速原型 → Lua
  • 复杂项目、需要第三方库 → Python

快速开始 ​

Python ​

python
from wingman import screen, input

# 截屏(返回是否成功,图像存于内部缓冲区)
ok = screen.capture()

# 全屏找图(region 表;返回数组 [point, found])
result = screen.find_image("button.png", {"x": 0, "y": 0, "width": 1920, "height": 1080})

if result[1]:
    point = result[0]
    input.click(point["x"], point["y"])

Lua ​

lua
local wingman = require("wingman")

-- 截屏(返回是否成功,图像存于内部缓冲区)
local ok = wingman.screen.capture()

-- 全屏找图(region 表;返回数组 {point, found})
local result = wingman.screen.findImage("button.png", {x = 0, y = 0, width = 1920, height = 1080})

if result[2] then
    wingman.input.click(result[1].x, result[1].y)
end

数据类型 ​

查看 数据类型参考 了解 API 中使用的各种对象和数据结构。


API 模块 ​

核心模块 ​

基础操作模块,提供屏幕、输入、窗口、进程等核心功能。

  • screen - 屏幕截图、像素查找、图像匹配
  • input - 鼠标点击、移动、键盘输入
  • window - 窗口查找、激活、获取信息
  • process - 进程启动、查找、终止
  • system - 系统信息获取
  • uia - UI Automation 控件交互

视觉与 AI ​

计算机视觉与 AI 相关功能。

  • vision - 颜色检测、边缘检测、轮廓识别
  • ocr - 文字识别(OCR,可选依赖)
  • ml - ONNX 模型加载与输入/输出元数据查询(可选依赖)

自动化系统 ​

高级自动化编排功能。

  • event - 事件订阅与发布系统
  • fsm - 有限状态机(FSM)
  • task - 任务编排与执行
  • script - 脚本管理控制面(列举、启动/停止/重载、环境变量)
  • notify - 通知系统(日志、Toast、Webhook、托盘意图)
  • smarttrigger - 智能触发器
  • bt - 行为树引擎
  • hotkey - 全局热键监听(轮询式,Python 回调)
  • systemwatch - 系统事件源:进程/窗口变化观察(轮询式,Python 回调)

网络 ​

网络请求与通信。

  • http - HTTP 客户端(GET、POST、下载)
  • transport - TCP 客户端、服务器与 UDP Socket

序列化 ​

数据序列化与格式转换。

  • serialize - 序列化格式总览(json、yaml、ini 选择指南)
  • json - JSON 解析与序列化
  • ini - INI 配置文件解析与编码

数据存储 ​

本地数据持久化与缓存。

  • data - 数据存储总览(kv 与 db 选择指南)
  • kv - 持久化键值存储(Redis-like API)
  • db - 本地 SQLite 数据库(支持 SQL 和 ORM)

辅助功能 ​

辅助自动化脚本的工具模块。

  • human - 人性化模拟(随机延迟、不规律输入)
  • perf - 性能监控
  • config - 配置管理
  • verification - 验证码识别、TOTP
  • gameprofile - 游戏配置档案
  • debugger - 调试器
  • util - 工具函数(sleep、随机数等)
  • timer - 定时器(一次性/周期回调、sleep)
  • file - 文件 IO(读写、移动复制、目录操作)

安全与加密 ​

安全和加密相关功能。

编排与协作 ​

多实例协作和编排功能。

  • orchestration - 编排控制
  • inbox - 消息收件箱
  • team - 组队编排
  • node - 节点状态与心跳(文档在配置系统的「节点模块 (node)」节)
  • script - 脚本管理控制面