-
Notifications
You must be signed in to change notification settings - Fork 2
Goal Engine
ZoyLuo edited this page Jun 5, 2026
·
1 revision
目标引擎是 AIBot "会自己想办法"的核心。它把一个声明式目标倒推成一条依赖正确的执行计划,无需人工拆步骤。
Goal(想要什么) → GoalPlanner(倒推怎么得到) → GoalExecutor(逐步执行 + 失败重规划)
Goal 是一组密封类型,表达"我想要的最终状态",而非"具体步骤":
| 目标 | 含义 |
|---|---|
HaveItem |
拥有 N 个某物品(如 3 颗钻石) |
HavePickaxeTier |
拥有某等级的镐 |
MineOre |
采集 N 个某矿 |
HarvestCrop |
收获 N 个某作物 |
Armor |
穿上某套护甲 |
Workstation |
拥有 / 摆放某工作站 |
Stockpile |
囤积某资源到目标量 |
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)。
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 是驱动计划落地的状态机:
-
submit / plan:接收目标,调用
GoalPlanner生成步骤队列。 -
assignNext:把当前步骤实例化成一个 Task System,交给
TaskManager。 - tick:任务完成 → 推进到下一步;全部完成 → 目标达成。
-
handleStepFailure:某步失败 → 按
goal.replanOnFailure重新规划(环境变了就换路线),而不是卡死。 - userGoal 保护:玩家亲自下的目标会被锁定,防止后续被"偷换"成某个前置子目标(例如把"挖钻石"降级成"挖铁"后就停)。
没有目标引擎,大模型要么逐格指挥(慢且易错、耗 token),要么漏掉前置(没镐就去挖矿)。目标引擎让"一句话 → 完整可靠计划"成为确定性过程,大模型只需说出意图。
延伸阅读:Task System · Brain and Tools · Architecture
AIBot · GitHub · MIT License · LLM plans · Tasks execute · Bob survives
新手上路
理解原理
参与开发
- Home
- Getting Started
- Commands
- Configuration
- Client Panel
- Architecture
- Goal Engine
- Task System
- Brain & Tools
- Safety Net
- Developer Guide
- FAQ
主仓库 · MIT