-
Notifications
You must be signed in to change notification settings - Fork 2
Safety Net
ZoyLuo edited this page Jun 5, 2026
·
1 revision
无论上层怎么决策,AIBot 都有一张每游戏刻运行的安全网,保证 bot 不会轻易送命。这是它"像个活人"的关键。
由 BotTickCoordinator 按固定顺序调度,任一层接管即短路本 tick(后续层不再执行):
① NavSafetyNet → ② StuckWatcher → ③ DangerWatcher → ④ GoalExecutor → ⑤ IdleCoordinator
保命 防卡死 战斗/逃跑/避险 推进目标 无事自主
- 窒息:卡在方块里 → 向上钻出地表(修"越救越深")。
- 岩浆:站在 / 脚下是岩浆 → 立即逃离。
- 溺水:水下且空气将尽 → 上浮换气;若被封顶无处换气 → 紧急传送到最近可呼吸落点。
在 watchdog.stuckWindowTicks 窗口内,若位置、任务进度、背包总量都没变化,判定卡死并中止当前任务,交回上层重规划。
站桩类任务(挖矿 / 下挖)会通过
isWaiting()主动豁免此监控,改由任务自带看门狗兜底——避免"正在干活"被误杀。见 Task System。
-
威胁检测:
collectTopThreat扫描周围敌对生物,带视线 / 方块阻隔判定(不会隔墙误判正在战斗)。 -
战斗 or 逃跑:
decideCombatOrEvade按血量、敌人数量(combat.retreatHp/maxEnemiesToFight)决定迎战还是撤离。 - 点亮黑暗:光照过低时放火把,从源头减少刷怪。
-
困死撤离:
maybeEscapeDarkTrap在被怪围死等绝境时撤回地面;撤离后保留目标,稍后继续未完成的任务(不会"撤回就失忆")。
无险情时,推进当前 Goal Engine 的下一步;步骤失败则重规划。
无目标、无任务时,bot 自行决定做点什么(整理、巡逻、待命),而不是呆站。
-
挖掘式移动熔断:
MoveTask一旦把 bot 挖进水下(溺水)或挖进怪堆(挨打),立即放弃当前移动,交安全网处理——绝不一路挖到淹死 / 被围殴致死。 -
台阶式下挖:
DescendToYTask/DigDownTask永远斜向下挖、避开脚下的水 / 岩浆,绝不直挖脚下踩空。 - 不瞬移、不兔子跳:行走只在落地且确有台阶 / 缺口时单跳一次。
延伸阅读:Architecture · Task System · [Configuration]
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