ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Mindcraft 人机协作实验运行指南:从 conda 环境准备到建筑 / 合成 / 烹饪任务的 evaluation_script.py 实战

Mindcraft 人机协作实验运行指南:从 conda 环境准备到建筑 / 合成 / 烹饪任务的 evaluation_script.py 实战 AI Agent人工智能游戏开发【免费下载链接】mindcraftMinecraft AI with LLMsMineflayer项目地址https://gitcode.com/GitHub_Trending/mi/mindcraft点击查看免费下载本文以 running_human_ai.md 为核心主线完整讲解如何在 Mindcraft基于 LLM Mineflayer 的 Minecraft AI 框架中运行「1 个 AI 智能体 1 个真人玩家」的人机协作实验包括 conda 环境搭建、世界作弊开启、三类任务Construction / Crafting / Cooking的启动命令以及底层 evaluation_script.py 的参数机制与结果评估流程。读完本文你将能够独立搭建实验环境、正确填写 usernames 并跑通任意一条人机协作任务同时理解任务 JSON 的结构与评分日志的落盘位置。一、完成安装conda 环境与 Python 依赖原文档给出的安装步骤是针对实验运行方Python 侧的补充安装。Mindcraft 主体是 Node.js 项目主入口为 main.js运行需先执行npm install并按 README.md 完成keys.json配置而人机协作实验的调度与结果聚合由 Python 脚本承担因此需要一套独立的 Python 环境。依次在命令行执行conda create --name mindcraft python3.11 conda activate mindcraft pip install -r requirements.txt建议使用 Python 3.11 创建独立环境避免与系统 Python 或项目其他依赖冲突。pip install -r requirements.txt安装的依赖来自仓库根目录的 requirements.txt其内容如下boto31.37.11 botocore1.37.11 pandas2.2.3 prettytable3.16.0 tqdm4.62.3 python-socketio[client]boto3 / botocore可选的上传支持当以--s3运行实验时将结果同步到 AWS S3默认桶名为mindcraft-experiments相关逻辑见 evaluation_script.pypandas / prettytable / tqdm结果统计与进度展示辅助python-socketio[client]与 Mindserver 通信所需。提示不打算使用 S3 上传时boto3 相关依赖并不影响本地实验运行但保持完整安装可确保--s3、--add_keys等扩展功能可用。二、设置世界开启作弊与权限在启动任何实验之前需要先准备好 Minecraft 世界。原文档强调世界必须开启作弊cheats。两种方式任选其一在 Minecraft 创建世界时直接勾选「允许作弊 / Allow Cheats」在世界已创建的情况下在游戏聊天框或服务器控制台jar 方式启动的世界中执行/op a/op a会把当前在线玩家全部提升为服务器 OP管理员这一步骤非常关键Agent 需要通过命令执行方块放置、物品给予、建造检查等操作且只有 OP 才能执行部分指令。从源码看多智能体并行实验的调度器在启动每个服务器会话后也会主动调用make_ops()并向服务器发送/op a见 evaluation_script.py并通过读取ops.json校验 Agent 是否已成为 OP失败则递归重试——可见 OP 权限是人机协作实验能否顺利进行的硬性前提。另外本地联机时请将世界开放到局域网端口与 settings.js 中的port保持一致默认55916也可在settings.js中设-1自动扫描开放端口。运行实验前确认 Agent 能正常加入该世界。三、evaluation_script.py 总览实验调度器人机协作任务统一由 tasks/evaluation_script.py 驱动。该脚本承担三类职责解析命令行参数argparse见main()校验并改写任务文件若任务 JSON 声明了human_count会把--usernames传入的真人玩家名单写入任务的usernames字段且数量必须严格匹配否则抛出ValueError见 evaluation_script.py调度运行创建/复用 Minecraft 服务器、生成 Agent 配置文件、通过 tmux 会话执行node main.js --task_path ... --task_id ...并在实验结束后把每个 Agent 的memory.json拷贝到experiments/exp_name_日期时间/task_id/目录作为结果日志见 evaluation_script.py。人机协作场景中通常使用--no_launch_world此时脚本不会自动启动/清理 Minecraft 世界跳过 tmux 会话创建与 server.properties 修改而是假定你已手动准备好世界Agent 直接以环境变量方式接收PROFILES、MAX_MESSAGES等配置后执行任务。关键命令行参数参数默认值说明--no_launch_world关闭不自动启动 Minecraft 世界适用于已手动开好世界的本地/人机场景--task_pathtasks/multiagent_crafting_tasks.json任务 JSON 文件路径--task_id无指定任务文件中要运行的单个任务 ID由调度脚本内部使用--num_agents2参与任务的 Agent 数量人机协作样例为1--num_exp1每个任务重复运行的实验次数--num_parallel1并行启动的服务器数量--exp_nameexp实验名称用于生成experiments/结果目录--template_profileprofiles/tasks/crafting_profile.jsonAgent 模板配置文件按任务类型选择--modelgpt-4o-miniAgent 使用的 LLM 模型--apiopenai模型 API 提供商--insecure_coding关闭允许 Agent 使用!newAction编写并执行代码建筑任务必需--usernames空逗号分隔的真人玩家用户名列表必须与任务human_count一致--max_messages15上下文保留的最大消息数--num_examples2提示中给出的示例数量--check FOLDER_PATH无仅评估指定结果目录不运行新实验--s3 / --bucket_name关闭 /mindcraft-experiments是否将结果上传至 AWS S3--add_keys关闭依据环境变量生成keys.json--no-pruning关闭禁用动作剪枝--block_conversation关闭禁用对话类动作其中--usernames YOUR_USERNAME的校验逻辑值得注意脚本读取任务文件首个任务若存在human_count字段则--usernames拆分后的用户名数量必须等于human_count如 1 个 Agent 1 个人类则传入 1 个用户名并把该名单回写到任务 JSON 的usernames字段中evaluation_script.py。四、Construction 建筑任务与真人共同建造教堂4.1 查看坐标与蓝图建筑任务要求玩家和 Agent 依照蓝图在指定坐标搭建结构游戏中按F3打开调试界面查看当前坐标X / Y / Z打开蓝图 PDFtasks/construction_tasks/church_blueprint.pdf里面是待建造的教堂分楼层蓝图。该 PDF 由仓库脚本生成仓库同时提供了可视化工具 tasks/construction_tasks/blueprint_visualizer.py 与蓝图提取脚本 tasks/construction_tasks/get_blueprint.js方便你核对/生成其他建筑的蓝图。4.2 启动命令python tasks/evaluation_script.py --no_launch_world --template_profile profiles/tasks/construction_profile.json --task_path tasks/construction_tasks/human_ai/1_agent_1_human.json --usernames YOUR_USERNAME --num_agents 1 --insecure_coding请将YOUR_USERNAME替换为你在 Minecraft 中的真实游戏名。命令要点拆解--no_launch_world使用你手动启动并开启作弊的世界--template_profile profiles/tasks/construction_profile.json使用建筑专用模板。该模板的conversing提示词把 Agent 定义为「任务导向的协作建造者」modes.cheat为false并提供了一组与!checkBlueprintLevel、!newAction、!givePlayer相关的对话示例见 construction_profile.json--usernames YOUR_USERNAME声明参与协作的人类玩家校验逻辑见上文--num_agents 1只启动 1 个 AI Agent--insecure_coding建筑任务必须开启。只有开启后 Agent 才能使用!newAction编写/执行放置方块的代码对应 settings.js 中的allow_insecure_coding默认false。该开关让 LLM 有能力在本地执行代码存在注入风险建议仅在隔离/本地环境使用仓库还为此提供了 Docker 化运行建议见 README.md 的 Docker Container 一节。4.3 任务文件结构1_agent_1_human.json 定义了一个church任务关键字段type: construction任务类型脚本据此选择世界名称Superflat与对应的BLOCKED_ACTIONS_CONSTRUCTION禁用动作列表agent_count: 1与human_count: 11 个 Agent 搭配 1 个人类玩家timeout: 600任务超时秒数blueprint.materials所需材料清单如oak_planks: 153、stone_bricks: 142、oak_door: 2、oak_stairs: 16、quartz_block: 1、glass_pane: 15、torch: 4、oak_fence: 4blueprint.levels从level 0到level 6的分层放置矩阵每层包含基准坐标如[-18, -60, 29]与逐格方块类型air表示空格。Agent 会通过!checkBlueprint/!checkBlueprintLevel逐层对比现实世界与蓝图并修正差异。注意 settings.js 默认将!checkBlueprint、!checkBlueprintLevel、!getBlueprint、!getBlueprintLevel列入blocked_actions禁用命令列表因此在运行建筑任务前需要确认这些命令未被全局禁用否则 Agent 将无法读取蓝图反馈。五、Crafting 合成任务5.1 启动命令python tasks/evaluation_script.py --no_launch_world --template_profile profiles/tasks/crafting_profile.json --task_path tasks/crafting_tasks/human_ai/1_agent_1_human.json --usernames YOUR_USERNAME --num_agents 1与建筑任务相比合成任务不需要--insecure_coding——Agent 通过!getCraftingPlan、!craftItem等内置指令完成合成不涉及写代码执行。crafting_profile.json模板profiles/tasks/crafting_profile.json默认模型为claude-3-5-sonnet-latest其conversation_examples展示了完整的协作链路先!inventory盘点、再!getCraftingPlan获取合成方案、缺料时用!givePlayer向对方要材料、最后!craftItem合成。5.2 任务文件结构1_agent_1_human.json 的任务类型为techtree科技树/合成树goal/conversation目标与开场白如协作合成pink_woolinitial_inventory每个参与者下标0、1的初始物品如 Agent 持pink_dye: 1、人类持black_wool: 1target: pink_wool、number_of_target: 1目标物品与数量max_depth: 1、depth: 0合成树的搜索深度timeout: 300超时 5 分钟human_count: 1、usernames: [izzycw]人类玩家声明运行时会被--usernames覆盖requires_ctable: false本任务不强制需要工作台。六、Cooking 烹饪任务6.1 启动命令python tasks/evaluation_script.py --no_launch_world --template_profile profiles/tasks/cooking_profile.json --task_path tasks/cooking_tasks/human_ai/1_agent_1_human.json --usernames YOUR_USERNAME --num_agents 1cooking_profile.jsonprofiles/tasks/cooking_profile.json的提示词告诉 Agent它会出生在一个拥有农田、动物、工作台、燃料充足的熔炉与烟熏炉的农场附近应通过!searchForBlocks如 64/128/256 范围搜刮作物并与同伴分工协作、共享物品。6.2 任务文件结构1_agent_1_human.json 的任务类型为cooking以「做面包bread 金苹果golden_apple」为例recipes内置两步配方文本如面包去农场收 3 个小麦 → 到工作台合成target: {bread: 1, golden_apple: 1}产出目标initial_inventory如 Agent 持gold_ingot: 4apple: 1人类持gold_ingot: 4——合计 8 个金锭 1 个苹果恰好满足金苹果配方天然形成协作需求必须由一方把材料交给另一方goal每个参与者收到的带配方提示的目标文本。七、结果评估--check 与日志解析实验结束后结果存放在experiments/exp_name_日期/task_id/目录每个 Agent 每轮实验的memory.json对话与状态记录会被拷贝为Agent名_轮次.json。随后可用脚本内置的评估功能汇总成绩python tasks/evaluation_script.py --check experiments/exp_name_日期评估逻辑见 evaluation_script.pyanalyze_json_file()遍历每个 JSON 日志中的turns查找 system 角色、内容形如Task ended with score : 1成功/: 0失败的结束标记解析出分数extract_result()对同一任务目录下的多个 JSON 取最高分aggregate_results()按文件夹上级目录推断任务类型cooking/techtree/construction统计total与successful其中 construction 类型按「成功数 / 总数」计算成功率check_folder_results()输出 Evaluation Results 汇总结果总数、成功任务数与成功率。八、扩展与人机协作常见问题多 Agent 协作仓库在human_ai/之外还提供了大量纯多智能体协作任务如 tasks/cooking_tasks/require_collab_test_2_items/、tasks/construction_tasks/custom/。若将--num_agents调大调度器会按预置人名表Andy / Jill / Bob / Sally …自动生成名字_会话号.json配置文件并同步复制到服务器bots/目录见 evaluation_script.py。usernames 数量不匹配脚本会直接抛出ValueError提示「Number of usernames provided (...) does not match human count (...)」请确保--usernames的数量与任务 JSON 的human_count一致多个用户名用逗号分隔如--usernames Alice,Bob。任务超时每个任务 JSON 都有timeout字段建筑 600 秒、合成 300 秒等超时未完成即视为失败如需延长可在任务文件中调整。环境变量注入非--no_launch_world模式下脚本通过 tmux 向会话注入MINECRAFT_PORT、MINDSERVER_PORT、PROFILES、MAX_MESSAGES、NUM_EXAMPLES、LOG_ALL等环境变量evaluation_script.py人机协作场景使用--no_launch_world时这些配置直接写入当前进程环境后调用node main.js。最后再次提醒--insecure_coding允许 LLM 在本地写代码并执行务必只在可信、隔离的环境中开启。将以上命令中的YOUR_USERNAME替换为你的真实游戏名后即可按本文流程跑通 Mindcraft 的全部三类人机协作实验。赞分享AI Agent人工智能游戏开发【免费下载链接】mindcraftMinecraft AI with LLMsMineflayer项目地址https://gitcode.com/GitHub_Trending/mi/mindcraft点击查看免费下载相关推荐Overcooked-AI人机协作的烹饪挑战Overcooked AI人机协作的烹饪挑战 项目介绍 Overcooked AI 是一个基于热门视频游戏 Overcooked http://www.Finagle Redis 集成测试指南从环境准备到 Bazel/sbt 运行实战Finagle Redis 集成测试指南从环境准备到 Bazel/sbt 运行实战 finagle redis 是 Finagle 生态中基于 Netty 与后端RPC框架终极指南TGIK混合云部署实战 - 跨AWS、Azure、GCP的Kubernetes集群管理终极指南TGIK混合云部署实战 跨AWS、Azure、GCP的Kubernetes集群管理 想要在混合云环境中轻松管理Kubernetes集群吗TGIKT任务调度数据编排工作流自动化后端大数据上一篇MarkDownload 故障排除手册常见问题与解决方案全收录下一篇7个Reveal.js企业应用案例大型组织如何用HTML演示框架提升沟通效率创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表