Skip to content

Goal Engine

ZoyLuo edited this page Jun 5, 2026 · 1 revision

目标引擎 · Goal Engine

目标引擎是 AIBot "会自己想办法"的核心。它把一个声明式目标倒推成一条依赖正确的执行计划,无需人工拆步骤。

Goal(想要什么) → GoalPlanner(倒推怎么得到) → GoalExecutor(逐步执行 + 失败重规划)

Goal —— 声明式目标

Goal 是一组密封类型,表达"我想要的最终状态",而非"具体步骤":

目标 含义
HaveItem 拥有 N 个某物品(如 3 颗钻石)
HavePickaxeTier 拥有某等级的镐
MineOre 采集 N 个某矿
HarvestCrop 收获 N 个某作物
Armor 穿上某套护甲
Workstation 拥有 / 摆放某工作站
Stockpile 囤积某资源到目标量

GoalPlanner —— 倒推规划

GoalPlanner.plan纯函数式的反向链(backward-chaining)。核心是 ensureItem 递归:

要得到某物品,先看背包有没有 → 没有就找出"怎么获得"(合成 / 挖 / 熔炼 / 采集 / 狩猎 / 种植)→ 对每个前置材料再递归 ensureItem,直到落到可直接获取的基础物。

它一路把决策落成有序的 GoalStep:

GoalStep.Kind 动作
GATHER 采集(原木等)
MINE 挖暴露方块(石头等)
MINE_ORE 定向采矿
CRAFT 合成
SMELT 熔炼
SMELT/MOVE 移动到工作站
FARM / HUNT 种植 / 狩猎(食物链)
DESCEND_TO_Y 下到指定矿层
PLACE_STATIONS 摆放工作站
STOCKPILE 囤货

规划期还会做:工具等级倒推(挖钻石需铁镐 → 先确保铁镐)、深层矿前置(挖钻石先 DESCEND_TO_Y -59 + 备剑盾护甲)、合并同类采集食物 / 护甲补给等。深度受 goal.maxPlanDepth 限制(见 Configuration)。

一个例子:HaveItem(iron_pickaxe ×1)

craft(crafting_table)
craft(wooden_pickaxe)        ← 需木板 / 木棍 ← 需原木 → gather(oak_log)
mine(stone) ×3               ← 需木镐(上一步已确保)
craft(stone_pickaxe)
descend_to_y(16)
mine_ore(iron_ore) ×3
craft(furnace)               ← 需圆石
smelt(raw_iron → iron_ingot) ×3
craft(iron_pickaxe)

你只说了"我要铁镐",其余全是引擎倒推出来的。

GoalExecutor —— 执行与重规划

GoalExecutor 是驱动计划落地的状态机:

  • submit / plan:接收目标,调用 GoalPlanner 生成步骤队列。
  • assignNext:把当前步骤实例化成一个 Task System,交给 TaskManager
  • tick:任务完成 → 推进到下一步;全部完成 → 目标达成。
  • handleStepFailure:某步失败 → 按 goal.replanOnFailure 重新规划(环境变了就换路线),而不是卡死。
  • userGoal 保护:玩家亲自下的目标会被锁定,防止后续被"偷换"成某个前置子目标(例如把"挖钻石"降级成"挖铁"后就停)。

它解决了什么

没有目标引擎,大模型要么逐格指挥(慢且易错、耗 token),要么漏掉前置(没镐就去挖矿)。目标引擎让"一句话 → 完整可靠计划"成为确定性过程,大模型只需说出意图

延伸阅读:Task System · Brain and Tools · Architecture

Clone this wiki locally