生存智能體
@bedboo/agent 是一個基於 bedboo 的腳本化(不使用 LLM)生存智能體。它在基岩版專用服務器上正常地玩生存模式:木頭 → 石質工具
→ 鐵 → 鑽石,按照藍圖建造房屋,開採主世界的每一種礦石,同時還會與攻擊它的生物戰鬥、進食,並從岩漿和水中脫身。一切都通過公開的
mineflayer API 和生態插件(mineflayer-pathfinder、-collectblock、-tool、-armor-manager、-auto-eat、-pvp)完成,因此同樣的
代碼也能驅動 Java 版機器人。它同時也是 bedboo 實際應用的一個大型示例。
快速開始
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' = 任意原木)、沙子、沙礫…… |
craft | bot.recipesFor / bot.craft,2×2 或工作臺(放下後再收回) |
smelt | bot.openFurnace;熔爐放下後再收回 |
build | 在機器人附近按藍圖建造,逐個方塊驗證並修復錯誤之處 |
navigate | 帶重新規劃的 pathfinder,遠距離目標分段前進,並處理卡住的情況 |
explore | 螺旋行走,直到加載到某個方塊或生物群系 |
surface、descend、escape | 離開礦井、沿安全豎井向下、最後手段的脫困 |
food、hunt、fish | 保持飽食:狩獵被動生物並烹飪肉類,或釣魚 |
rest | 用隨身攜帶的床睡過夜晚,或者躲進庇護所 |
combat、portal、nether、end | 戰鬥、傳送門以及其他維度 |
任務運行期間,後臺的安全行為會與敵對生物戰鬥或逃離、從岩漿中脫身、游上水面換氣、進食(通過 mineflayer-auto-eat),並在死亡後 恢復。技能、obtain 規劃器、安全行為和藍圖格式的完整說明見該包的 README。