AgentSkillsCN

ai-behavior-trees

为AI决策制定,实现模块化的行为树,包含复合节点、装饰器节点以及动作节点。

SKILL.md
--- frontmatter
name: ai-behavior-trees
description: "Implements modular Behavior Trees for AI decision making with composite, decorator, and action nodes."
version: 1.0.0
tags: ["gameplay", "AI", "behavior-tree", "NPCs", "enemies"]
argument-hint: "root='Selector' children='PatrolSequence,ChaseSequence'"
disable-model-invocation: false
user-invocable: true
allowed-tools:
  - run_command
  - list_dir
  - write_to_file

AI Behavior Trees

Overview

Modular Behavior Tree system for AI decision making. Supports composite nodes (Selector, Sequence), decorators (Inverter, Repeater), and custom action/condition nodes.

When to Use

  • Use when implementing complex enemy AI
  • Use when NPCs need decision-making logic
  • Use when AI needs to prioritize tasks
  • Use when state machines become too complex
  • Use when AI behavior needs to be modular/reusable

Architecture

code
                    ┌─────────────────┐
                    │   Root Selector │
                    └────────┬────────┘
            ┌────────────────┼────────────────┐
            ↓                                 ↓
    ┌───────────────┐               ┌───────────────┐
    │ Chase Sequence│               │ Patrol Sequence│
    └───────┬───────┘               └───────┬───────┘
        ┌───┴───┐                       ┌───┴───┐
        ↓       ↓                       ↓       ↓
    ┌──────┐ ┌──────┐              ┌──────┐ ┌──────┐
    │CanSee│ │MoveTo│              │HasPath│ │Follow │
    │Player│ │Player│              │      │ │Path   │
    └──────┘ └──────┘              └──────┘ └──────┘

Node Types

TypeBehavior
SelectorTries children until one succeeds (OR)
SequenceRuns children until one fails (AND)
InverterFlips child result
RepeaterRepeats child N times
ConditionReturns success/failure based on check
ActionPerforms game action

Node Return Values

  • Success: Node completed successfully
  • Failure: Node failed
  • Running: Node still processing

Best Practices

  • ✅ Keep nodes small and focused
  • ✅ Use Blackboard for shared data
  • ✅ Cache frequently used references
  • ✅ Use decorators for flow control
  • NEVER put heavy calculations in Tick
  • NEVER use deep nested trees (max 5-6 levels)

Few-Shot Examples

Example 1: Enemy AI

User: "Enemy patrols, chases player when seen."

Agent:

code
Root Selector
├── Chase Sequence
│   ├── Condition: CanSeePlayer
│   └── Action: MoveToPlayer
└── Patrol Sequence
    ├── Condition: HasPatrolPath
    └── Action: FollowPatrolPath

Example 2: Attack Priority

User: "Attack melee if close, else ranged."

Agent:

code
Root Selector
├── Melee Sequence
│   ├── Condition: InMeleeRange
│   └── Action: MeleeAttack
└── Ranged Sequence
    ├── Condition: HasAmmo
    └── Action: RangedAttack

Related Skills

  • @state-machine-architect - Simpler state-based AI
  • @navmesh-pathfinding - Movement for AI
  • @damage-health-framework - Combat integration

Template Files

Available in templates/ folder.