🧠 认识 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(运行中)

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

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


📊 返回值与父节点决策

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

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

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


📋 顺序节点

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

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

参数说明

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

⚡ 并行节点

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

参数说明

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

🎲 选择节点与随机节点

选择节点

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

随机节点

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

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

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

四种组合节点总结

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

⚙️ 节点参数详解

▲ 节点参数详解 · 视频教程

📋 通用参数总览

通用参数是大部分节点都会使用的参数,每个节点的装饰参数就是通用参数,常用于整体控制节点的运行时长、运行次数。以下表格汇总了 6 个通用参数的作用和适用范围:

参数名称适用节点默认值作用说明
结果取反 条件节点 关闭 反转节点的执行结果。开启后,检测到目标返回失败,检测不到反而返回成功。最常用于"等待消失"场景,例如等待弹窗消失后再继续操作。配合选择节点还可实现 if-else 分支逻辑。
失败重试 条件节点、组合节点 0 节点执行失败后自动重试的次数。中间任何一次成功就立即返回,不会浪费重试次数。常用于等待界面加载等不稳定延迟场景,实现"循环直到成功"的运行流程。
超时时间 条件节点、组合节点、动作节点 0(不生效) 为节点的执行设置最长时限。超过设定时间后立即中止任务并返回失败,用于防止循环节点导致流程阻塞,或为无限循环任务设置定时中止。注意:大于 0 即生效,触发时会无视一切逻辑强制判定失败。
检测间隔 条件节点 300ms 条件节点检测失败后,等待该间隔再进行下一次检测。默认 300ms(每秒约检测 3 次)。间隔越短响应越快但 CPU 占用越高;间隔越长资源占用越低但响应变慢。一般场景 300ms 即可,快速响应可调至 100ms。
重复次数 组合节点、动作节点 0(不重复) 节点执行成功后重复执行的次数。设为 N 则执行 N 次,设为 -1 则无限循环。与失败重试互补:失败重试是"失败才重复",重复次数是"成功才重复"。
重复间隔 组合节点、动作节点 100ms 每次重复执行之间的等待时间。最常用的组合是:组合节点设置重复次数 -1 + 重复间隔 3000ms,实现每隔 3 秒无限循环执行,几乎所有持续运行的行为树都会用到。

💡 随机范围:这是一个可附加在多种时间参数上的特殊参数(延时时长、点击间隔、按住时长、重复间隔、拖拽时长等)。设为时长的 10%~20% 可让操作节奏产生自然波动,避免被识别为自动化操作。例如延时时长 1000ms + 随机范围 200ms,实际延时在 800~1200ms 之间随机。


🔗 常用参数组合

将通用参数组合起来,可以实现各种常用的行为树运行逻辑。以下表格提炼了 4 种最常用的参数组合方案:

组合名称适用节点参数设置运行效果使用场景
无限循环监控 组合节点 重复次数 = -1
重复间隔 = 3000ms
整个流程每隔 3 秒执行一次,无限循环 持续运行的行为树,如定时检测界面状态、周期性执行任务
带重试的检测 条件节点 失败重试 = 3
检测间隔 = 500ms
失败后自动重试 3 次,每次间隔 500ms,总计最多等待 1.5s 界面加载有延迟的场景,如等待页面跳转、元素出现
等待消失 条件节点 结果取反 = 开启
超时时间 = 10000ms
检测不到目标才返回成功,最多等待 10 秒,超时则失败 等待弹窗关闭、加载动画消失、临时元素消失后继续操作
自然节奏的重复操作 动作节点 重复次数 = 10
重复间隔 = 500ms
随机范围 = 100ms
连续执行 10 次,每次间隔在 400~600ms 之间随机波动 需要模拟真人操作节奏的场景,避免固定间隔被识别

核心原则:通用参数改变执行行为,功能参数定义执行内容,两者配合就能实现精细的流程控制。

🔍 条件节点详解

▲ 条件节点详解(上)— 文字检测与图像匹配 · 视频教程

▲ 条件节点详解(下)— 颜色检测、数字比较与文本提取 · 视频教程

📋 条件节点总览

条件节点的作用是检测环境状态,然后告诉行为树"我检测到了"或者"我没检测到"。它是整个行为树感知外部环境的眼睛,没有条件节点,行为树就像一个瞎子,什么都看不到。

条件节点一共有 6 种,各有不同的检测能力:

  • 文字检测 — OCR 识别屏幕上是否有某个文字
  • 图像匹配 — 用模板图片在屏幕上寻找相同图案
  • 颜色检测 — 检测屏幕区域是否有特定颜色
  • 数字比较 — 识别屏幕上的数字并判断大小
  • 变量判断 — 判断黑板变量是否满足条件
  • 文本提取 — 把屏幕上的文字提取出来保存

所有条件节点都有两个共同的参数:检测区域(定义在屏幕的哪个范围进行检测)和坐标偏移(对检测到的位置进行微调)。


📊 条件节点汇总表

以下表格汇总了 6 种条件节点的参数、使用方法和适用场景:

节点名称核心参数使用方法适用场景
文字检测 检测区域、关键词、语言、图像预处理模式、坐标偏移 设置检测区域,输入要检测的关键词,选择语言类型。支持多个关键词(逗号分隔),检测到任一关键词即返回成功。 检测按钮文字、状态提示、界面标签等。使用频率最高,优先考虑。
图像匹配 检测区域、模板路径、匹配阈值、坐标偏移 点击"截图"按钮框选目标图案作为模板,设置匹配阈值(建议 80~90)。阈值越高匹配越严格,可通过日志查看实际匹配度来调整。 检测图标、UI 元素、游戏图案等。当 OCR 无法识别时使用。
颜色检测 检测区域、目标颜色、容差、最小像素数 用吸管工具吸取目标颜色,设置容差(建议 5~10)和最小像素数。容差越大允许的颜色差异越大,最小像素数可避免误检测。 检测按钮变色、指示灯亮起、状态色块等对颜色变化敏感的场景。
数字比较 检测区域、提取模式、比较运算符、比较值 设置检测区域包含数字,选择提取模式(无规则/x/y/自定义),选择比较运算符(大于/小于/等于等)和比较值。 倒计时检测、分数判断、数量统计等需要数值判断的场景。
变量判断 变量名、比较运算符、比较值 设置要判断的变量名,选择比较运算符和比较值。用于在黑板变量系统中进行逻辑判断。 流程控制、状态标记、循环计数等需要逻辑判断的场景。
文本提取 检测区域、语言、关键词、输出方式 设置检测区域和语言,可选设置关键词过滤。输出方式有"全部输出"和"关键词输出"。提取的文字可供文本输入节点使用。 读取屏幕数值、获取提示信息、文字搬运等需要获取信息的场景。

选择建议:优先使用文字检测和图像匹配,它们能解决大部分问题。颜色检测和数字比较用于特定场景,文本提取用于获取信息,变量判断用于逻辑控制。

⚡ 动作节点详解

▲ 动作节点详解(上)— 键盘与鼠标操作 · 视频教程

▲ 动作节点详解(下)— 延时、脚本、代码、报警、文本输入 · 视频教程

📋 动作节点总览

动作节点的作用是执行操作,产生执行动作。比如按键、点击、移动鼠标、延时等等。这些操作会改变外部环境的状态。

动作节点一共有 10 种,覆盖了自动化操作的各种需求:

  • 按键 — 模拟键盘按键操作
  • 鼠标点击 — 模拟鼠标点击操作
  • 鼠标移动 — 移动鼠标到指定位置或拖拽
  • 鼠标滚轮 — 模拟滚轮滚动
  • 延时 — 暂停执行一段时间
  • 脚本执行 — 执行录制的脚本文件
  • 代码执行 — 执行外部代码文件
  • 报警 — 播放音频文件
  • 设变量 — 设置/修改黑板变量
  • 文本输入 — 输入文字到当前焦点位置

📊 动作节点汇总表

以下表格汇总了 10 种动作节点的参数、使用方法和适用场景:

节点名称核心参数使用方法适用场景
按键 按键、动作类型、按住时长 选择要按下的键,动作类型有 press(按下松开)、down(按下不松)、up(松开)。down 和 up 配合可实现长按或组合键。 模拟快捷键、组合键(如 Ctrl+C)、长按操作等键盘输入场景。
鼠标点击 按钮、动作、按住时长、位置、点击次数、点击间隔 选择鼠标按键(左/右/中键),设置点击位置(可手动选择或使用最近检测点),点击次数设为 2 可实现双击。 单击按钮、双击打开、右键菜单、拖拽配合等鼠标点击场景。使用频率最高。
鼠标移动 起点位置、操作类型、增量移动、终点位置、移动时长 设置起点和终点,操作类型可选"移动"或"拖拽"。开启增量移动可用相对坐标。移动时长大于 0 时平滑移动更自然。 移动鼠标到目标位置、拖拽文件、滑动选择等鼠标移动场景。
鼠标滚轮 滚动距离、滚动次数、滚动方向 设置滚动距离(单位为刻度)和滚动次数。滚动方向可快速设置向上/向下/向左/向右。需实际测试感受刻度数值。 页面滚动、列表浏览、缩放操作等滚轮场景。
延时 延时时长、延时随机范围 设置延时时长(毫秒),随机范围可让每次延时略有不同(建议设为时长的 10%~20%),模拟更自然的操作节奏。 等待界面加载、操作间隔、模拟人工节奏等需要暂停的场景。
脚本执行 脚本路径、循环执行 使用脚本录制功能录制操作序列,保存为 TXT 文件后选择。脚本格式为每行一条指令(鼠标移动、点击、按键、延时)。 快速创建固定流程的自动化操作,录制一次反复使用。
代码执行 代码路径、代码类型、命令行参数、等待执行完成 选择代码文件,代码类型支持自动识别、Python、批处理、PowerShell。"等待执行完成"关闭后代码在后台运行。 调用外部程序、实现复杂逻辑、扩展内置节点无法满足的功能。
报警 音频文件、音量、等待播放完成 选择音频文件(支持 mp3、wav 等),默认使用系统报警音。设置音量和是否等待播放完成。 任务完成提示、异常告警、需要声音提醒的场景。
设变量 变量名、操作类型、变量值 设置变量名,选择操作类型(设置/增加/减少),输入变量值。用于在黑板变量系统中存储和修改数据。 循环计数、状态标记、条件判断配合等需要数据存储的场景。
文本输入 输入模式、输入间隔、输入前清空 输入模式有"文本提取值"(配合文本提取节点)、"预设文本"、"文件"。输入间隔为 0 时快速粘贴,大于 0 时逐字符输入。 填写表单、输入账号密码、文字搬运等文本输入场景。

核心原则:条件节点负责检测,动作节点负责操作,通过组合节点把它们串联起来,实现"检测→操作"的基本模式。

滚动至顶部