Skip to content

Repository files navigation

Clicker

作者的话

明明是很简单的工具,但是很少见到功能够用的开源项目,所以自己写了一个简单的,欢迎提交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 头文件 + 项目模板,快速开发原生插件
  • 详见 插件开发文档

内置 AI 模型

  • 随安装包分发,零下载 — 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+

Windows 构建

flutter pub get
flutter build windows --release

输出在 build/windows/x64/runner/Release/

Android 构建

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/外部接口.md

许可

CC BY-NC 4.0 — 详见 LICENSE 文件。 本作品可自由使用和修改,但禁止商用。

About

开源跨平台连点器/按键录制工具

Resources

Stars

29 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages