我的常用指令:1.过来,2.砍树

在 Mindcraft 中,Agent 的“技能”分为三类:技能库函数、动作命令(!actions)和查询命令(!queries)。它们通过命令系统或代码生成被 LLM 调用。

1. 技能库函数(skills.*)

位于 src/agent/library/skills.js,由 SkillLibrary 管理并在代码生成时通过 $CODE_DOCS 注入提示。典型技能包括:

  • skills.goToPosition / skills.goToPlayer:导航到坐标或玩家
  • skills.collectBlock:采集指定方块
  • skills.craftRecipe / skills.smeltItem:合成与熔炼
  • skills.placeBlock / skills.breakBlockAt:放置与破坏方块
  • skills.attackEntity / skills.defendSelf:攻击与自卫
  • skills.pickupNearbyItems:拾取掉落物
  • skills.goToBed:上床睡觉
  • skills.moveAway / skills.avoidEnemies:移动与躲避
  • skills.wait:等待
  • skills.viewChest:查看箱子
  • skills.discard:丢弃物品
  • skills.rememberPlace / skills.recallPlace:记忆与召回位置(通过 MemoryBank)

技能库在 SkillLibrary.initSkillLibrary 初始化,并根据提示相似度检索相关技能文档(getRelevantSkillDocs) skill_library.js:13-33 skill_library.js:40-92 。

2. 动作命令(!actions)

在 src/agent/commands/actions.js 中定义,通过 !commandName 调用,通常包装技能库函数或执行复杂流程。主要命令:

  • !newAction:让 LLM 动态生成并执行代码(需 allow_insecure_coding=true) actions.js:30-51
  • !goToPlayer / !followPlayer:前往/跟随玩家
  • !goToCoordinates:前往坐标
  • !searchForBlock / !searchForEntity:搜索方块/实体(开挂用后台的
  • !collectBlocks:采集方块
  • !craftRecipe / !smeltItem / !clearFurnace:合成、熔炼、清炉
  • !placeHere:在当前位置放置方块
  • !attack / !attackPlayer:攻击
  • !goToBed:睡觉
  • !stay:停留
  • !rememberHere / !goToRememberedPlace:记忆位置/前往记忆位置
  • !setMode:开启/关闭自动行为模式
  • !goal / !endGoal:设置/结束持续目标
  • !stop / !stfu / !restart / !clearChat:停止、静音、重启、清聊天

3. 查询命令(!queries)

在 src/agent/commands/queries.js 中定义,用于获取信息而不执行长时间动作。典型命令:

  • !stats:状态(生命、饥饿、位置、经验)
  • !inventory:物品栏
  • !nearbyBlocks / !entities:附近方块/实体
  • !lookAtPlayer / !lookAtPosition:看向玩家/位置并截图分析(需 allow_vision=true
  • !searchWiki:查询 Minecraft Wiki

4. 自动行为模式(modes)

虽然不称为“技能”,但 src/agent/modes.js 中的模式(如 self_preservationself_defensehuntingitem_collecting)会以 300ms 周期自动触发技能库函数,实现被动行为 modes.js:24-89 modes.js:139-218 。

技能非常之多,ai什么都不用学直接调用就完了

可以开挂导航到木头旁边砍木头,把动作维度从视觉判断环境判断直接拉到一维的自动指令选择

会被方块卡住,不是因为动不了而是预定的算法有点问题,

攻击力非常之强可以空手没装备单挑两只白骷髅+蜘蛛,调用接口的开挂

但是新环境就废了,没有预定的代码,不泛化

没人叫他做什么他就不动等怪来打他(因为没有分子级的操作全是指令)

没有体现长期记忆



优点就是,ai会回复,带上动作的对话ai还是比较上头的(不谈动作实现的话

而且ai是动作全覆盖的(不谈动作实现的话

而且指令的话不会占用键盘输入,比如前后左右和鼠标

砍树也是一维的调用接口

不是。Mindcraft 代理砍树不使用鼠标,而是通过程序调用 Mineflayer 的网络接口实现。

  • skills.collectBlock 会先自动装备合适工具(bot.tool.equipForBlock),然后根据方块类型调用 bot.dig(block) 或 bot.collectBlock.collect(block) 来破坏原木,最后调用 pickupNearbyItems 拾取掉落物 skills.js:480-511 。
  • !collectBlocks 命令只是对 skills.collectBlock 的包装,同样不涉及鼠标操作 actions.js:256-265 。

Notes

  • Mineflayer 的 bot.dig 是通过发送客户端数据包到服务器来执行挖掘,而非模拟鼠标点击。
  • 如果工具不匹配,会提示“Don't have right tools to harvest” skills.js:490-493 。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐