明明是很简单的工具,但是很少见到功能够用的开源项目,所以自己写了一个简单的,欢迎提交Issue和PR。由于作者不是很熟悉flutter,很多地方用了AI开发,希望有专业的开发者帮忙一起完善。
最后,Dart是世界上最狗屎的语言
CMake我吃柠檬
自用自动化工具 · 连点器 / 宏录制 / 图像识别 / 目标检测
基于 Flutter 的跨平台自动化工具(Android端暂时没完善),集成 YOLO 目标检测、模板匹配和可扩展插件系统。
- 自动连点 — 单击/双击、左/右/中键、跟随鼠标或固定位置、10ms~10s 间隔
- 宏录制 — 录制鼠标+键盘事件序列,保存复用,速度调节、循环播放
- 全局快捷键 — F6 启停、F8 录制、Alt+F12 紧急停止(可自定义)
- 模板匹配 — 截取区域模板,NCC 归一化互相关算法实时匹配
- OCR 文字识别 — PaddleOCR 引擎,中英文识别,模糊/精确匹配
- 颜色检测 — 指定位置颜色匹配、颜色变化/消失检测
- YOLO 目标检测 — YOLO11n 模型,COCO 80 类目标实时检测,追踪框可视化
- 检测到目标后自动执行动作:点击、按键、启动/停止连点、运行宏
- 支持多种条件组合:颜色匹配、图像匹配、文字匹配、目标检测
- 可配置检测间隔和置信度阈值
- Dart 内置插件 — 编译时打包,按需加载,支持懒初始化
- C/C++ 原生插件 — 通过 FFI 动态加载 .dll/.so/.dylib,支持模板匹配、OCR、自定义动作
- 插件 SDK — 完整 C API 头文件 + 项目模板,快速开发原生插件
- 详见 插件开发文档
- 随安装包分发,零下载 — ONNX Runtime 1.21.0、YOLOX-Nano 目标检测、PP-OCRv4 中英文识别,共约 30.9 MB
- 全 MIT / Apache-2.0 — 避开了 AGPL-3.0 的 YOLO11n,闭源分发无许可风险
- 推理全在 C++ — Dart 只做 FFI 调用,检测与 OCR 共用一份 ONNX Runtime,两个引擎可在同一进程内共存
- 可选 OCR 引擎 — 默认用系统 Windows OCR,可在「图像识别 → 高级模型」切到 RapidOCR 拿到逐行坐标
- 详见 vendor 说明
- MCP + REST 共用一套能力注册表 — 53 个能力,AI 客户端用 MCP 直接接入,脚本用 REST / OpenAPI
- 覆盖六大类 — 连点控制与参数配置、鼠标键盘注入、宏录制回放与增删改查、找图/OCR/取色/截图、定时任务、配置档案与脚本执行
- 局域网 + 令牌鉴权 — 绑定
0.0.0.0,所有请求需携带令牌,四种传入方式 - 详见 外部接口文档
- 悬浮窗 — 迷你控制面板,可拖拽,屏幕边缘自动收起/弹出
- 后台执行 — 向后台窗口发送点击指令(Windows)
- 暗色/亮色主题 — Fluent Design 双主题 + 主题色自定义
- 跨平台 — Windows + Android 同一套代码
- Flutter SDK >= 3.16
- Windows: Visual Studio 2022(勾选 "使用 C++ 的桌面开发")
- Android: Android Studio + Android SDK 33+
flutter pub get
flutter build windows --release输出在 build/windows/x64/runner/Release/
flutter build apk --release
# 分 ABI 打包(体积更小)
flutter build apk --split-per-abi输出在 build/app/outputs/flutter-apk/
Android 使用须知:安装后需在 设置 → 无障碍 → 已安装的服务 中启用 "Clicker"。
如需使用 YOLO 目标检测,在应用内「高级模型」页面下载:
- ONNX Runtime (~200MB)
- YOLO11n 模型 (~6MB)
lib/
├── main.dart # 入口
├── app.dart # FluentApp + Provider
├── mobile_app.dart # 移动端入口
├── models/ # 数据模型
│ ├── clicker_config.dart # 连点器配置(含调度 / 音效)
│ ├── macro_model.dart # 宏与宏事件
│ ├── hold_trigger_key.dart # 按键触发配置
│ └── hotkey_config.dart # 全局快捷键
├── screens/
│ ├── clicker/ # 连点器页面
│ ├── macro/ # 宏录制页面
│ ├── settings/ # 设置页面
│ ├── sidebar/ # 侧边栏页面(PC)
│ │ ├── image_recognition_page.dart # 图像识别 + 条件触发
│ │ ├── hold_trigger_page.dart # 按键触发
│ │ ├── plugin_page.dart # 插件管理
│ │ ├── theme_center_page.dart # 主题中心
│ │ ├── background_execution_page.dart # 后台执行
│ │ ├── humanize_page.dart # 拟人化设置
│ │ └── schedule_page.dart # 定时任务
│ ├── floating_window.dart # 悬浮窗
│ ├── home_screen.dart # 主界面(PC)
│ └── mobile/ # 移动端页面(Material)
│ ├── mobile_home_screen.dart # 底部导航容器
│ ├── mobile_clicker_page.dart # 连点
│ ├── mobile_macro_page.dart # 宏
│ ├── mobile_hold_trigger_page.dart # 长按触发
│ ├── mobile_schedule_page.dart # 定时任务(与 PC 同逻辑)
│ ├── mobile_humanize_page.dart # 拟人模式(与 PC 同逻辑)
│ ├── mobile_vision_page.dart # 图像识别
│ └── mobile_settings_page.dart # 设置
├── services/
│ ├── click_service.dart # 点击引擎(定时循环 + Stopwatch 漂移补偿)
│ ├── macro_service.dart # 录制 / 回放引擎
│ ├── hotkey_service.dart # 快捷键服务
│ ├── storage_service.dart # 配置持久化
│ ├── local_storage.dart # 轻量键值存储
│ ├── app_paths.dart # 数据 / 插件 / 临时目录
│ ├── app_state.dart # PC 端状态(调度走共享 ScheduleController)
│ ├── mobile_app_state.dart # 移动端状态(调度走共享 ScheduleController)
│ ├── schedule_controller.dart # 定时任务调度器(PC / 移动共用,可注入时钟)
│ ├── api/ # 外部接口(MCP + REST 共用一份能力注册表)
│ │ ├── api_action.dart # 能力定义与注册表(含 JSON Schema)
│ │ ├── api_schema.dart # 参数宽容转换 / 必填校验 / schema 校验
│ │ ├── api_capabilities.dart # 全部能力实现(连点 / 宏 / 视觉 / 定时 / 档案 / 脚本)
│ │ ├── api_protocol.dart # MCP JSON-RPC 与 REST 调用处理
│ │ ├── api_openapi.dart # OpenAPI 3.1 文档生成
│ │ ├── api_token.dart # 访问令牌生成 / 持久化 / 校验
│ │ └── api_server.dart # HTTP 服务(鉴权 / 路由 / CORS)
│ ├── plugin_store.dart # 插件商店(远程索引 / 下载 / SHA256 校验)
│ ├── plugin/ # 插件系统核心
│ │ ├── plugin_manager.dart # 安装 / 注册 / 激活
│ │ ├── plugin_manifest.dart # manifest.json 解析
│ │ ├── native_plugin_runtime.dart # FFI 原生插件加载
│ │ ├── plugin_integrity.dart # SHA256 校验 / 安装留痕 / 库指纹复核
│ │ ├── plugin_host.dart # 插件宿主 API
│ │ ├── plugin_api.dart # 插件对外接口
│ │ ├── plugin_storage.dart # 插件私有存储
│ │ ├── plugin_event_bus.dart
│ │ ├── plugin_sources.dart # 商店源 / GitHub 链接解析
│ │ ├── icon_resolver.dart
│ │ └── declarative_settings.dart
│ ├── plugins/ # 内置插件实现
│ ├── vision_service.dart # 图像识别服务
│ ├── vision_plugin.dart # 视觉插件接口(模板匹配 / OCR / 检测)
│ ├── vision_plugin_manager.dart
│ ├── vision_template_store.dart
│ ├── screen_overlay_service.dart # 屏幕覆盖层
│ ├── screen_monitor_service.dart
│ ├── window_detect_service.dart
│ ├── system_tray_service.dart
│ ├── update_service.dart
│ ├── remote_control_service.dart
│ ├── script_engine.dart
│ └── platform/ # 平台输入抽象层
├── widgets/ # 通用组件
test/ # 单元测试(flutter test)
.github/workflows/
├── ci.yml # PR 门禁:analyze + test
└── release.yml # tag 触发的构建发布
sdk/
├── clicker_plugin.h # 插件 SDK C API 头文件
└── template/ # 插件项目模板
├── manifest.json
└── src/
├── main.c # 模板代码
├── build_windows.bat
└── build_unix.sh
plugins/
├── plugin_index.json # 插件商店索引
└── ai_tracker/ # YOLO 目标检测插件 (C++/ONNX)
windows/
└── runner/
└── flutter_window.cpp # Windows 原生层 (截图/输入/覆盖层)
android/
└── app/src/main/
└── kotlin/ # Android 无障碍服务
flutter pub get
flutter analyze # 存量 info/warning 较多,CI 只拦 error
flutter test # 运行 test/ 下的单元测试CI 在 push / PR 到 main 时自动跑 flutter analyze 与 flutter test,
详见 .github/workflows/ci.yml。
改动 lib/services/api/api_capabilities.dart 后,重新生成外部接口文档:
flutter test tool/gen_api_docs_test.dart # 输出 docs/外部接口.mdCC BY-NC 4.0 — 详见 LICENSE 文件。 本作品可自由使用和修改,但禁止商用。