基于 CustomTkinter 的节点式编辑器,支持拖拽、连线、缩放、框选
独立线程执行,支持启动/暂停/停止/恢复
4 种复合节点 + 5 种条件节点 + 9 种动作节点
观察者模式的数据共享机制,节点间解耦通信
JSON/YAML/TXT 多格式持久化,版本化数据结构
Command 模式,支持 100 步历史
游戏级硬件模拟输入,绕过大多数输入检测
内嵌 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 │ │
│ └──────────┘ └────────────┘ └───────────┘ │
└─────────────────────────────────────────────────────────┘
Python 3.12+、Windows 操作系统、Visual C++ Redistributable(OCR 功能依赖)
pip install -r requirements.txtpython main.py| 节点 | 说明 |
|---|---|
| 顺序节点 | 按顺序执行子节点,所有子节点成功才返回成功 |
| 选择节点 | 按顺序执行子节点,任一成功即返回成功 |
| 并行节点 | 同时执行所有子节点,根据策略决定成功条件 |
| 随机节点 | 随机执行一个子节点,根据策略决定成功条件 |
| 节点 | 说明 |
|---|---|
| OCR 检测节点 | 检测屏幕指定区域是否包含目标文字 |
| 图像匹配节点 | 检测屏幕是否匹配目标图像模板 |
| 颜色检测节点 | 检测屏幕指定区域是否包含目标颜色 |
| 数字比较节点 | 识别屏幕数字并与目标值比较 |
| 变量判断节点 | 判断黑板变量值是否满足条件 |
| 节点 | 说明 |
|---|---|
| 按键节点 | 执行键盘按键操作 |
| 鼠标点击节点 | 执行鼠标点击操作 |
| 鼠标移动节点 | 移动鼠标到指定位置 |
| 鼠标滚动节点 | 模拟鼠标滚动操作 |
| 延时节点 | 等待指定时间 |
| 设置变量节点 | 设置/修改黑板变量 |
| 脚本节点 | 执行外部脚本文件 |
| 代码节点 | 执行外部程序 |
| 报警节点 | 播放报警音效 |
| 快捷键 | 功能 |
|---|---|
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.spec | autodoor-behaviortree-{ver}-normal | rapidocr, onnxruntime, assets, config |
| 游戏版 | autodoor_bt_dd.spec | autodoor-behaviortree-{ver}-game | +DD64.dll, +hook_dd_input |
QQ群:298117299 进群密码:autodoor