diff --git a/Assets/_Game/Scripts/Enemies/AIBrain/EnemyAiBrain.cs b/Assets/_Game/Scripts/Enemies/AIBrain/EnemyAiBrain.cs
new file mode 100644
index 00000000..c92c460a
--- /dev/null
+++ b/Assets/_Game/Scripts/Enemies/AIBrain/EnemyAiBrain.cs
@@ -0,0 +1,59 @@
+using UnityEngine;
+using BaseGames.AI;
+
+namespace BaseGames.Enemies
+{
+ ///
+ /// 把 BrainGraph 决策层挂到敌人上:按 id 取共享 AiGraph、构造 AiRuntime、逐帧推进。
+ /// 取代旧的行为树组件。
+ ///
+ [DisallowMultipleComponent]
+ [RequireComponent(typeof(EnemyBase))]
+ public sealed class EnemyAiBrain : MonoBehaviour
+ {
+ [Tooltip("对应 [AiDefinition(id)] 的敌人 AI 定义 id,例如 E001")]
+ [SerializeField] string _definitionId;
+
+ EnemyBase _enemy;
+ EnemyBrainContext _context;
+ AiRuntime _runtime;
+
+ public string DefinitionId => _definitionId;
+ public string CurrentStateName => _runtime != null ? _runtime.CurrentStateName : "(none)";
+ public bool IsSuspended => _runtime != null && _runtime.IsSuspended;
+ public AiRuntime Runtime => _runtime;
+
+ void Awake()
+ {
+ _enemy = GetComponent();
+ if (string.IsNullOrEmpty(_definitionId))
+ {
+ // 根因暴露:漏配 id 直接报错,不静默兜底。
+ Debug.LogError($"EnemyAiBrain 未配置 _definitionId:{name}", this);
+ enabled = false;
+ return;
+ }
+ var graph = AiDefinitionRegistry.GetGraph(_definitionId); // 不存在则抛异常
+ _context = new EnemyBrainContext(_enemy);
+ _runtime = new AiRuntime(graph, _context);
+ }
+
+ void Update()
+ {
+ if (_runtime == null) return;
+ float dt = Time.deltaTime;
+ _context.Refresh(dt);
+ _runtime.Tick(dt);
+ }
+
+ /// 对象池复用时由 EnemyBase.OnSpawn 调用:回到 Entry、清临时态。
+ public void ResetBrain()
+ {
+ _context?.ResetScratch();
+ _runtime?.Reset();
+ }
+
+ /// 信号入口,供 EnemyBase 转发死亡等事件到决策层。
+ public void Send(AiSignal signal) => _runtime?.Send(signal);
+ }
+}
diff --git a/Assets/_Game/Scripts/Enemies/AIBrain/EnemyAiBrain.cs.meta b/Assets/_Game/Scripts/Enemies/AIBrain/EnemyAiBrain.cs.meta
new file mode 100644
index 00000000..0ca70084
--- /dev/null
+++ b/Assets/_Game/Scripts/Enemies/AIBrain/EnemyAiBrain.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d92d657c6bbdfe246a7333e04f79f8f7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: