Skip to content

Architecture

ZoyLuo edited this page Jun 5, 2026 · 1 revision

架构 · Architecture

一条核心原则:LLM 做高层规划,确定性 Task 做执行。

AIBot 刻意把"会变通但不可靠"的大模型,和"可靠但不会变通"的确定性引擎缝在一起,各取所长。

总览

flowchart TB
    P["🎮 玩家 — 自然语言 · /aibot · Bob 面板"] --> B
    subgraph COG["认知与决策"]
      B["🧠 大脑 · DeepSeek LLM<br/>56 工具"] --> G["🎯 GoalPlanner<br/>倒推规划"]
      G --> E["⚙️ GoalExecutor<br/>步骤状态机"]
    end
    E --> T["🔧 Task 状态机 ×44<br/>挖矿 · 熔炼 · 合成 · 战斗 · 种田 · 建造 …"]
    T --> A["🛠️ Action 原语 + A* 寻路"]
    A --> W["🌍 Minecraft 世界 · Fabric 1.21.3"]
    W -->|感知| B
    S["🛡️ 安全网 · 每 tick<br/>导航 → 卡死 → 危险 → 空闲"] -. 守护 .-> T
Loading

分层职责

职责
感知 perception · observe 把世界状态压成结构化快照喂给大脑
大脑 brain DeepSeek 工具调用循环,理解意图 → 目标 / 动作。见 Brain and Tools
目标引擎 goal GoalGoalPlanner(倒推)→ GoalExecutor(状态机)。见 Goal Engine
任务 task 44 个自包含状态机,各带看门狗。见 Task System
动作 / 寻路 action · pathfinding BlockMinerDigNavActionPack;带可站性判定的 A*
领域知识 craft · mining 配方、矿链 / 熔炼链、工具等级、矿物 & 树木探测器
安全网 task · coordination BotTickCoordinator 每 tick 流水线。见 Safety Net
实体 entity AIPlayerEntity —— 真实服务端假玩家
基建 network · persist · memory · mixin · command · log 同步 · 存档 · 记忆 · 注入 · 命令 · 日志

一次请求的数据流

  1. 玩家发命令 / 自然语言,或 IdleCoordinator 触发自主决策。
  2. 感知层生成世界快照(位置、背包、生命、周围方块 / 实体)。
  3. 大脑带快照请求 DeepSeek,模型返回工具调用。
  4. 工具落成一个目标(Goal)或直接一个任务(Task)。
  5. GoalPlanner 把目标倒推成依赖正确的步骤序列。
  6. GoalExecutor 逐步把步骤派发成 Task
  7. Task 调用 Action 原语 + 寻路作用于世界。
  8. 每个游戏刻,安全网抢先检查并在必要时接管(保命优先)。
  9. 结果回流到感知,进入下一轮。

设计原则

  • 确定性优先:凡能确定性完成的,绝不交给 LLM。大模型只决定"做什么",不逐格操作"怎么做"。
  • 铁律 G1 — 任务自包含:任务内部不再 assign 子任务,而是调用共享原语(BlockMiner/DigNav/ActionPack)。避免嵌套状态机互相打架。
  • 铁律 G2 — 主线程执行:所有 bot 逻辑跑在服务端主线程,保证 Minecraft 世界访问线程安全。
  • 失败可观测、可重规划:每一步可成功 / 失败 / 中止;失败上抛给 GoalExecutor 重规划,而非默默卡死。
  • 安全网兜底:无论上层怎么决策,每 tick 的安全网保证 bot 不会轻易溺水 / 葬身岩浆 / 被围殴致死。

规模一览

151 个类 · 23.4K 行代码 · 56 工具 · 44 任务状态机 · 5 层安全网

Clone this wiki locally