AutoDoor 行为树系统

一个独立的可视化行为树编辑与执行框架,面向 Windows 平台的自动化场景

✨ 核心特性

🎨

可视化编辑器

基于 CustomTkinter 的节点式编辑器,支持拖拽、连线、缩放、框选

⚙️

行为树引擎

独立线程执行,支持启动/暂停/停止/恢复

🧩

18 种内置节点

4 种复合节点 + 5 种条件节点 + 9 种动作节点

📊

黑板系统

观察者模式的数据共享机制,节点间解耦通信

💾

序列化

JSON/YAML/TXT 多格式持久化,版本化数据结构

↩️

撤销/重做

Command 模式,支持 100 步历史

🎮

DD 虚拟键盘

游戏级硬件模拟输入,绕过大多数输入检测

👁️

OCR 集成

内嵌 RapidOCR,基于 ONNX Runtime,支持中英文识别

📝

脚本录制

TXT 脚本录制与回放

📦

双版打包

标准版 (PyAutoGUI) 与游戏版 (DD64.dll)

🛠️ 技术栈

Python 3.12+
├── GUI 框架: CustomTkinter + Tkinter Canvas
├── 图像处理: Pillow, OpenCV, imagehash
├── OCR 引擎: RapidOCR + ONNX Runtime 1.19.0
├── 输入模拟: PyAutoGUI (标准版) / DD64.dll (游戏版)
├── 音频播放: pygame.mixer
├── 打包工具: PyInstaller
└── CI/CD: GitHub Actions

🏗️ 系统架构

┌─────────────────────────────────────────────────────────┐
│ 表现层 (bt_gui)                                         │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐                 │
│ │ 行为树   │ │ 脚本录制 │ │ 设置     │                 │
│ │ 编辑器   │ │ 标签页   │ │ 标签页   │                 │
│ └──────────┘ └──────────┘ └──────────┘                 │
├─────────────────────────────────────────────────────────┤
│ 应用层 (bt_gui)                                         │
│ ┌──────────────────────────────────────────┐             │
│ │ BehaviorTreeEditor                       │             │
│ │ (编辑器编排: 工具栏/画布/面板/撤销重做) │             │
│ └──────────────────────────────────────────┘             │
├─────────────────────────────────────────────────────────┤
│ 领域层 (bt_core)                                        │
│ ┌────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐     │
│ │ 节点   │ │ 执行引擎 │ │ 黑板     │ │ 序列化器  │     │
│ │ 模型   │ │ Engine   │ │Blackboard│ │ Serializer│     │
│ └────────┘ └──────────┘ └──────────┘ └───────────┘     │
├─────────────────────────────────────────────────────────┤
│ 基础设施层 (bt_utils)                                    │
│ ┌──────────┐ ┌────────────┐ ┌───────────┐              │
│ │ 输入控制 │ │ 截图管理器 │ │ OCR 管理器 │              │
│ │InputCtrl │ │Screenshot │ │OCRManager │              │
│ └──────────┘ └────────────┘ └───────────┘              │
└─────────────────────────────────────────────────────────┘

🚀 快速开始

1

环境要求

Python 3.12+、Windows 操作系统、Visual C++ Redistributable(OCR 功能依赖)

2

安装依赖

pip install -r requirements.txt
3

运行应用

python main.py

🧩 节点类型

复合节点

节点说明
顺序节点按顺序执行子节点,所有子节点成功才返回成功
选择节点按顺序执行子节点,任一成功即返回成功
并行节点同时执行所有子节点,根据策略决定成功条件
随机节点随机执行一个子节点,根据策略决定成功条件

条件节点

节点说明
OCR 检测节点检测屏幕指定区域是否包含目标文字
图像匹配节点检测屏幕是否匹配目标图像模板
颜色检测节点检测屏幕指定区域是否包含目标颜色
数字比较节点识别屏幕数字并与目标值比较
变量判断节点判断黑板变量值是否满足条件

动作节点

节点说明
按键节点执行键盘按键操作
鼠标点击节点执行鼠标点击操作
鼠标移动节点移动鼠标到指定位置
鼠标滚动节点模拟鼠标滚动操作
延时节点等待指定时间
设置变量节点设置/修改黑板变量
脚本节点执行外部脚本文件
代码节点执行外部程序
报警节点播放报警音效

🎯 核心功能

1. 可视化编辑器

  • 节点拖拽:从节点面板拖拽节点到画布
  • 连线操作:从输出端口拖拽到输入端口创建连线
  • 框选移动:框选多个节点批量移动
  • 缩放平移:滚轮缩放,右键拖拽平移画布
  • 属性编辑:选中节点后在属性面板编辑配置

2. 行为树执行

  • 独立线程:行为树在独立线程中执行,不阻塞 UI
  • 状态可视化:实时显示节点执行状态(成功/失败/运行中)
  • 暂停恢复:支持暂停和恢复执行
  • 黑板系统:节点间通过黑板共享数据

3. 撤销/重做系统

  • 支持 100 步历史记录
  • 所有编辑操作均可撤销/重做
  • Command 模式实现

4. 自动保存与崩溃恢复

  • 定时自动保存(默认 30 秒)
  • 启动时自动恢复上次编辑状态
  • 静默恢复,无需用户确认

5. OCR 识别功能

  • 基于 RapidOCR 引擎,识别速度快
  • 支持中英文混合识别
  • 支持关键词定位,返回关键词中心坐标
  • 支持图像预处理(普通文本/艺术字模式)
  • 支持数字提取与比较

⌨️ 快捷键

快捷键功能
Ctrl+Z撤销
Ctrl+Y / Ctrl+Shift+Z重做
Ctrl+S保存
Ctrl+Shift+S另存为
Ctrl+O打开
Ctrl+N新建
Ctrl+C复制选中节点
Ctrl+V粘贴节点
Ctrl+X剪切节点
Ctrl+D复制并粘贴(快速复制)
Delete / Backspace删除选中
F10开始/停止运行
F12停止运行

📦 打包与部署

版本Spec 文件输出名称特殊包含
标准版autodoor_bt.specautodoor-behaviortree-{ver}-normalrapidocr, onnxruntime, assets, config
游戏版autodoor_bt_dd.specautodoor-behaviortree-{ver}-game+DD64.dll, +hook_dd_input

📞 联系作者

QQ群:298117299 进群密码:autodoor

B站主页:https://space.bilibili.com/263150759

滚动至顶部