▲ 认识行为树工具 · 视频教程
行为树(Behavior Tree)最初是人工智能领域用于控制智能体决策逻辑的树形结构。近年来被引入自动化领域,成为一种直观、灵活的流程编排方式。
核心理念:将复杂的自动化流程拆解为一个个独立的"节点",通过树形结构组织起来,自顶向下依次执行。
行为树由三个基本要素构成:
引擎采用 Tick 机制:从根节点发起信号,沿连接向下传递,每个节点执行自身逻辑并返回 SUCCESS 或 FAILURE,父节点根据子节点结果决定下一步。
| 特性 | 标准版 | DD 版 |
|---|---|---|
| 输入方式 | PyAutoGUI 模拟 | DD64.dll 硬件模拟 |
| 游戏兼容性 | 一般 | 优秀 |
| 反检测能力 | 无 | 强 |
| 使用场景 | 普通应用自动化 | 客户端自动化 |
选择建议:目标应用不检测模拟输入 → 标准版 | 需要绕过输入检测 → DD 版
drivers/VC_redist.x64.exeCtrl+N 新建行为树Space 开始运行编辑器采用三栏结构 + 工具栏:
| 操作 | 方式 |
|---|---|
| 缩放画布 | 鼠标滚轮(0.25x ~ 4.0x) |
| 平移画布 | 右键拖拽 |
| 框选节点 | 左键拖动空白区域 |
| 多选节点 | Ctrl + 单击 / Ctrl + 框选 |
| 删除节点 | 选中后按 Delete |
| 撤销 / 重做 | Ctrl+Z / Ctrl+Y |
| 重置视图 | 工具栏【重置】按钮 |
| 状态 | 说明 |
|---|---|
| ⚪ 空闲 | 未运行 |
| 🟢 闪烁 | 运行中 |
| ✅ 成功 | 执行成功 |
| ❌ 失败 | 执行失败 |
| ⏹ 已中止 | 手动停止 |
共 18 种内置节点,分为三大类别,通过颜色区分。
| 节点 | 说明 |
|---|---|
| 顺序节点 | 按序执行子节点,全部成功才返回成功 |
| 选择节点 | 依次尝试子节点,任一成功即返回成功 |
| 并行节点 | 同时执行所有子节点 |
| 随机节点 | 随机执行一个子节点 |
| 节点 | 说明 |
|---|---|
| 文字检测 | OCR 识别屏幕区域是否包含目标文字 |
| 图像匹配 | 模板匹配检测屏幕是否包含目标图像 |
| 颜色检测 | 检测屏幕区域是否包含目标颜色 |
| 数字比较 | 识别屏幕数字并与目标值比较 |
| 变量判断 | 判断黑板变量是否满足条件 |
| 节点 | 说明 |
|---|---|
| 按键 | 模拟键盘按键操作 |
| 鼠标点击 | 模拟鼠标点击操作 |
| 鼠标移动 | 移动鼠标到指定位置 / 拖拽 |
| 鼠标滚轮 | 滚轮滚动 |
| 延时 | 等待指定时间 |
| 设变量 | 设置 / 修改黑板变量 |
| 脚本执行 | 执行外部 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 + 左键拖动 | 追加框选 |
| 单击空白 | 取消所有选中 |
drivers/VC_redist.x64.exe 安装drivers/DD64.dll 文件存在QQ群:298117299(进群密码:autodoor)
▲ 组合节点与行为树运行逻辑 · 视频教程
很多初学者会把所有节点直接挂在开始节点下面,虽然这样确实能按顺序执行,但会带来两个问题:
而使用组合节点包裹子节点后,可以提供判断逻辑——顺序节点在某一步失败时立即停止,选择节点能自动尝试备用方案。逻辑结构清晰,方便后续拓展。
行为树的运行核心是 Tick 机制。可以理解为引擎发出的一个"执行指令":
SUCCESS(成功)、FAILURE(失败)、RUNNING(运行中)条件节点(文字检测、图像匹配等)检测到返回成功,检测不到返回失败。动作节点(鼠标点击、按键等)执行完毕返回成功,出错返回失败。
组合节点本身不执行具体任务,而是接收子节点的返回值,根据返回值决定下一步操作——就像阀门控制水流的走向,这就是组合节点能够提供判断逻辑的原因。
子节点执行完毕返回结果后,父节点会根据返回值决定下一步。不同的父节点有不同的决策逻辑:
| 父节点 | 决策逻辑 | 说明 |
|---|---|---|
| 开始节点 | 失败继续 | 不管子节点返回成功还是失败,都继续执行下一个子节点 |
| 顺序节点 | 一败即停 | 子节点返回成功则继续,一旦失败立即停止并返回失败 |
| 选择节点 | 一成即停 | 子节点返回失败则继续尝试下一个,一旦成功立即停止并返回成功 |
组合节点的价值就在于提供不同的"判断策略",它们赋予了行为树真正的判断能力。
顺序节点是最常用的组合节点,按顺序依次执行子节点:全部成功才返回成功,一败即停。
例如将"文字检测 → 鼠标点击 → 延时"放到顺序节点下:检测到按钮 → 点击 → 等待,全部成功则返回成功。但如果文字检测失败,顺序节点立即停止,不再执行点击和延时。
| 参数 | 说明 |
|---|---|
| 子节点间隔 | 设置每个子节点执行完后的等待时间 |
| 失败后继续执行 | 开启后即使中间节点失败也会继续执行后续节点,相当于变为"失败继续"模式 |
并行节点同时启动所有子节点,让它们一起运行,适合需要同时完成多个独立任务或进行多路检测的场景。
| 参数 | 说明 |
|---|---|
| 成功策略:全部成功 | 所有子节点都返回成功,并行节点才返回成功。适合同时检测屏幕多个区域 |
| 成功策略:任一成功 | 只要有一个子节点返回成功就立即返回成功。适合多路检测同一目标(如同时用文字检测和图像匹配) |
选择节点的策略与顺序节点相反:一成即停。子节点返回失败就继续尝试下一个,一旦有子节点返回成功就立即停止。只有所有子节点都失败才返回失败。适合实现"多方案备选"的逻辑。
随机节点不会按固定顺序执行,而是随机选择一个子节点来执行。成功策略与并行节点一致。
| 参数 | 说明 |
|---|---|
| 成功策略 | 控制随机执行后的成功判定方式 |
| 失败继续 | 随机到失败的操作依旧能随机执行别的子节点 |
| 完全随机 | 开启后不标记已执行节点,可能重复随机到同一个;关闭后已执行的节点不会再被随机到 |
随机节点适合模拟随机行为的场景,比如随机选择不同的操作路径来避免被检测到规律。
| 节点 | 执行策略 | 一句话概括 |
|---|---|---|
| 顺序节点 | 按部就班 | 全部成功才成功,一败即停 |
| 选择节点 | 多方案尝试 | 任一成功即成功,全败才失败 |
| 并行节点 | 同时执行 | 所有子节点同时启动 |
| 随机节点 | 随机选择 | 随机挑选一个子节点执行 |