🧠 认识 AutoDoor 行为树

▲ 认识行为树工具 · 视频教程

什么是行为树?

行为树(Behavior Tree)最初是人工智能领域用于控制智能体决策逻辑的树形结构。近年来被引入自动化领域,成为一种直观、灵活的流程编排方式。

核心理念:将复杂的自动化流程拆解为一个个独立的"节点",通过树形结构组织起来,自顶向下依次执行。

三大核心优势

  • 可视化 — 流程一目了然,无需编写代码
  • 模块化 — 每个节点独立,可复用、可替换
  • 可扩展 — 支持条件判断、循环、并行等复杂逻辑

工作原理

行为树由三个基本要素构成:

  • 节点(Node):基本组成单元,代表一个具体操作或判断
  • 端口(Port):节点上的连接点,输入端口在顶部,输出端口在底部
  • 连接(Connection):连线将父子节点连接,定义执行顺序

引擎采用 Tick 机制:从根节点发起信号,沿连接向下传递,每个节点执行自身逻辑并返回 SUCCESSFAILURE,父节点根据子节点结果决定下一步。

适用人群

  • 自动化测试人员 — 快速搭建 UI 测试流程,替代手动重复操作
  • RPA / 办公自动化从业者 — 自动化数据录入、报表生成、系统切换
  • 技术爱好者 / 初学者 — 可视化操作降低学习门槛,无需编程经验

标准版 vs DD 版

特性标准版DD 版
输入方式PyAutoGUI 模拟DD64.dll 硬件模拟
游戏兼容性一般优秀
反检测能力
使用场景普通应用自动化客户端自动化

选择建议:目标应用不检测模拟输入 → 标准版 | 需要绕过输入检测 → DD 版


🚀 快速上手

环境要求

  • Python 3.12 或更高版本
  • Windows 操作系统
  • Visual C++ Redistributable(OCR 功能依赖)

安装步骤

  1. 下载最新发布包(标准版或 DD 版)
  2. 解压到任意目录
  3. 首次运行会自动检测依赖
  4. 如 OCR 功能提示缺少运行时,运行 drivers/VC_redist.x64.exe

创建第一个行为树

  1. 打开 AutoDoor,按 Ctrl+N 新建行为树
  2. 从左侧节点面板拖拽节点到画布
  3. 从节点的输出端口拖拽连线到下一个节点的输入端口
  4. 选中节点,在右侧属性面板配置参数
  5. Space 开始运行

🎨 编辑器使用

界面布局

编辑器采用三栏结构 + 工具栏:

  • 工具栏:新建、打开、保存、导出、撤销、重做、清空、运行、停止、重置
  • 节点面板(左侧):按分类展示所有可用节点,颜色区分类型
  • 画布(中央):可视化编辑区域,支持缩放和平移
  • 属性面板(右侧):编辑选中节点的配置参数

基本操作

操作方式
缩放画布鼠标滚轮(0.25x ~ 4.0x)
平移画布右键拖拽
框选节点左键拖动空白区域
多选节点Ctrl + 单击 / Ctrl + 框选
删除节点选中后按 Delete
撤销 / 重做Ctrl+Z / Ctrl+Y
重置视图工具栏【重置】按钮

连线规则

  • 一个输出端口可连接多个子节点
  • 一个输入端口只能连接一个父节点
  • 不能创建循环连接(子→父)
  • 连接线上显示序号表示执行顺序

运行状态指示灯

状态说明
⚪ 空闲未运行
🟢 闪烁运行中
✅ 成功执行成功
❌ 失败执行失败
⏹ 已中止手动停止

🧩 节点类型说明

共 18 种内置节点,分为三大类别,通过颜色区分。

🔵 组合节点(4 种)— 控制流程执行策略

节点说明
顺序节点按序执行子节点,全部成功才返回成功
选择节点依次尝试子节点,任一成功即返回成功
并行节点同时执行所有子节点
随机节点随机执行一个子节点

🩷 条件节点(5 种)— 检测环境状态

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

🟢 动作节点(9 种)— 执行具体操作

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

⌨️ 快捷键速查表

文件操作

快捷键功能
Ctrl + N新建行为树文件
Ctrl + O打开已有文件
Ctrl + S保存当前文件
Ctrl + Shift + S另存为
Ctrl + E导出项目为 ZIP

编辑操作

快捷键功能
Ctrl + Z撤销
Ctrl + Y重做
Ctrl + Shift + Z重做(备选)
Ctrl + C复制选中节点
Ctrl + V粘贴节点
Ctrl + X剪切节点
Ctrl + D快捷复制
Delete / Backspace删除选中

运行控制

快捷键功能
Space开始运行
Escape停止执行
F10开始运行(备选)
F12停止执行(备选)

画布操作

操作功能
鼠标滚轮缩放画布(0.25x ~ 4.0x)
右键拖动平移画布
左键拖动空白框选多个节点
Ctrl + 单击多选(追加选择)
Ctrl + 左键拖动追加框选
单击空白取消所有选中

🐛 常见问题

OCR 无法使用?

  1. 确保已安装 Visual C++ Redistributable 运行时库
  2. 运行 drivers/VC_redist.x64.exe 安装
  3. OCR 功能不可用时不影响其他功能

DD 虚拟键盘无法使用?

  1. 确保 drivers/DD64.dll 文件存在
  2. 尝试使用管理员权限运行

快捷键不生效?

  1. 确保应用窗口处于活动状态
  2. 输入框获得焦点时快捷键不会触发(预期行为)

打包后程序无法启动?

  1. 检查是否缺少 Visual C++ Redistributable
  2. 查看日志文件确认错误信息
  3. 确保杀毒软件未拦截程序

更多帮助

QQ群:298117299(进群密码:autodoor)

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

🔀 组合节点与行为树运行逻辑

▲ 组合节点与行为树运行逻辑 · 视频教程

⚠️ 直接串联的误区

很多初学者会把所有节点直接挂在开始节点下面,虽然这样确实能按顺序执行,但会带来两个问题:

  • 缺乏判断逻辑 — 无法实现"如果失败就尝试其他方案"的条件分支。例如文字检测失败后,无法用图像匹配作为备用方案。
  • 可维护性低 — 只能不断往开始节点下面顺序添加节点,整个流程越来越长、越来越难管理。

而使用组合节点包裹子节点后,可以提供判断逻辑——顺序节点在某一步失败时立即停止,选择节点能自动尝试备用方案。逻辑结构清晰,方便后续拓展。


⚙️ Tick 运行机制

行为树的运行核心是 Tick 机制。可以理解为引擎发出的一个"执行指令":

  1. 引擎从根节点(开始节点)发出一个 Tick
  2. Tick 沿连接线向下传递,驱动每个节点执行
  3. 每个节点执行后返回三种结果之一:SUCCESS(成功)、FAILURE(失败)、RUNNING(运行中)

条件节点(文字检测、图像匹配等)检测到返回成功,检测不到返回失败。动作节点(鼠标点击、按键等)执行完毕返回成功,出错返回失败。

组合节点本身不执行具体任务,而是接收子节点的返回值,根据返回值决定下一步操作——就像阀门控制水流的走向,这就是组合节点能够提供判断逻辑的原因。


📊 返回值与父节点决策

子节点执行完毕返回结果后,父节点会根据返回值决定下一步。不同的父节点有不同的决策逻辑:

父节点决策逻辑说明
开始节点失败继续不管子节点返回成功还是失败,都继续执行下一个子节点
顺序节点一败即停子节点返回成功则继续,一旦失败立即停止并返回失败
选择节点一成即停子节点返回失败则继续尝试下一个,一旦成功立即停止并返回成功

组合节点的价值就在于提供不同的"判断策略",它们赋予了行为树真正的判断能力。


📋 顺序节点

顺序节点是最常用的组合节点,按顺序依次执行子节点:全部成功才返回成功,一败即停

例如将"文字检测 → 鼠标点击 → 延时"放到顺序节点下:检测到按钮 → 点击 → 等待,全部成功则返回成功。但如果文字检测失败,顺序节点立即停止,不再执行点击和延时。

参数说明

参数说明
子节点间隔设置每个子节点执行完后的等待时间
失败后继续执行开启后即使中间节点失败也会继续执行后续节点,相当于变为"失败继续"模式

⚡ 并行节点

并行节点同时启动所有子节点,让它们一起运行,适合需要同时完成多个独立任务或进行多路检测的场景。

参数说明

参数说明
成功策略:全部成功所有子节点都返回成功,并行节点才返回成功。适合同时检测屏幕多个区域
成功策略:任一成功只要有一个子节点返回成功就立即返回成功。适合多路检测同一目标(如同时用文字检测和图像匹配)

🎲 选择节点与随机节点

选择节点

选择节点的策略与顺序节点相反:一成即停。子节点返回失败就继续尝试下一个,一旦有子节点返回成功就立即停止。只有所有子节点都失败才返回失败。适合实现"多方案备选"的逻辑。

随机节点

随机节点不会按固定顺序执行,而是随机选择一个子节点来执行。成功策略与并行节点一致。

参数说明
成功策略控制随机执行后的成功判定方式
失败继续随机到失败的操作依旧能随机执行别的子节点
完全随机开启后不标记已执行节点,可能重复随机到同一个;关闭后已执行的节点不会再被随机到

随机节点适合模拟随机行为的场景,比如随机选择不同的操作路径来避免被检测到规律。

四种组合节点总结

节点执行策略一句话概括
顺序节点按部就班全部成功才成功,一败即停
选择节点多方案尝试任一成功即成功,全败才失败
并行节点同时执行所有子节点同时启动
随机节点随机选择随机挑选一个子节点执行
滚动至顶部