跳到正文
本頁目錄

生存智能體

@bedboo/agent 是一個基於 bedboo 的腳本化(不使用 LLM)生存智能體。它在基岩版專用服務器上正常地玩生存模式:木頭 → 石質工具 → 鐵 → 鑽石,按照藍圖建造房屋,開採主世界的每一種礦石,同時還會與攻擊它的生物戰鬥、進食,並從岩漿和水中脫身。一切都通過公開的 mineflayer API 和生態插件(mineflayer-pathfinder、-collectblock、-tool、-armor-manager、-auto-eat、-pvp)完成,因此同樣的 代碼也能驅動 Java 版機器人。它同時也是 bedboo 實際應用的一個大型示例。

快速開始

js
const { Agent } = require('@bedboo/agent')

const agent = await Agent.create({ host: '127.0.0.1', port: 19132, username: 'Agent', log: console.log })
await agent.run('obtain', { item: 'iron_pickaxe' }) // 木头、石头、熔炉、铁……需要什么就做什么
await agent.run('build', { blueprint: 'house5x5' }) // 获取材料,逐个方块验证
await agent.run('mine', { all: [{ item: 'diamond' }, { item: 'emerald' }] })
agent.writeReport('report.json') // 任务、耗时、死亡、战斗、事件日志
await agent.stop()

智能體以普通離線玩家的身份加入:沒有管理員權限,不使用命令。

選項與任務

Agent.create(opts) 的選項:host、port、username(默認 Agent)、bot(使用一個已經生成的機器人)、 botOptions、safety(true / 選項對象 / false)、autoEat、keepFed(任務間隙飢餓時去尋找食物)、 recoverItems(死亡後回去撿掉落物)、log(日誌行輸出)、skills(技能註冊表)。

agent.run(skill, args, { timeout, retries }) 將一個技能作為任務運行;agent.runScenario({ name, steps, timeout, verify }) 按顺序运行各个步骤(在第一次失败时停止)并返回报告;agent.on('event', e) 以流的形式推送 { t, type, … } 事件(task-start、mine、craft、smelt、place、safety、death、log……)。

技能

技能是一個 async (bot, args) => result 函數(args.signal 是運行器的 AbortSignal);技能從不發送命令。

技能作用
obtain不擇手段獲得 count × item:合成、冶煉、開採、採集或狩獵,遞歸進行,按代價規劃
mine礦石和石頭:向下挖豎井到達深層礦石,沒有加載到合適的生物群系時會朝它探索
gather地表方塊:原木(item: 'log' = 任意原木)、沙子、沙礫……
craftbot.recipesFor / bot.craft,2×2 或工作臺(放下後再收回)
smeltbot.openFurnace;熔爐放下後再收回
build在機器人附近按藍圖建造,逐個方塊驗證並修復錯誤之處
navigate帶重新規劃的 pathfinder,遠距離目標分段前進,並處理卡住的情況
explore螺旋行走,直到加載到某個方塊或生物群系
surface、descend、escape離開礦井、沿安全豎井向下、最後手段的脫困
food、hunt、fish保持飽食:狩獵被動生物並烹飪肉類,或釣魚
rest用隨身攜帶的床睡過夜晚,或者躲進庇護所
combat、portal、nether、end戰鬥、傳送門以及其他維度

任務運行期間,後臺的安全行為會與敵對生物戰鬥或逃離、從岩漿中脫身、游上水面換氣、進食(通過 mineflayer-auto-eat),並在死亡後 恢復。技能、obtain 規劃器、安全行為和藍圖格式的完整說明見該包的 README。