AI玩家

AI玩家

一个旨在为游戏添加一个真正智能的“第二玩家”的Minecraft模组。

冒险

请阅读此部分。

到目前为止,这个项目是数千小时无尽研究、试错的结果,其简单的目标就是尽可能消除《我的世界》中的孤独感。 如果你喜欢我的作品,请考虑捐赠,这样我就能安宁地继续这个项目,也才能真正向我的父母证明我的工作正在产生影响。(另外也不用再向妈妈要零花钱了)。

只需知道,我永远不会放弃这个项目。

请我喝杯咖啡

https://buymeacoffee.com/shasankp000

Paypal

https://paypal.me/shasankp000


模组当前阶段

由于我这学期大学新学期开始了,我将面临非常大的压力,因为我总共要学习11门课程(机器学习、线性代数、物理、网络安全等等)。不过别担心,我不会停止这个项目的开发,只是更新速度会慢一些。

如果你们因此离开或放弃这个项目,也是可以理解的,我不会介意 :))

衷心感谢大家一直以来的支持。我从没想过我们能走到这一步。

最新更新:2025年8月21日凌晨4点08分(印度标准时间)

请耐心等待更新。因为我是这个项目唯一的开发者,处理所有问题/添加新功能确实需要时间。


更新日志 v1.0.5.2-release+1.21.1

重要:之前提出的第二部分功能将在下一个补丁中添加,而这次新更新标志着对1.20.6及以下版本支持的结束。

感谢 https://github.com/arichornlover,AI玩家现已更新至版本1.21.1。

本次AI玩家的小更新将模组升级至1.21.1版本,并带来了对其他自定义API提供商的支持。

自定义OpenAI兼容提供商支持

此功能允许你使用与OpenAI API标准兼容的替代AI提供商,例如OpenRouter、TogetherAI、Perplexity等。

使用方法

1. 启用自定义提供商模式

启动游戏时设置系统属性(JVM参数):

-Daiplayer.llmMode=custom

2. 配置API设置

  1. 首先,删除配置文件夹中现有的settings.json5(请先将API密钥保存在其他地方)
  2. 打开游戏内的API密钥配置界面(/configMan),然后点击API密钥按钮。
  3. 设置以下字段:
    • 自定义API URL:你的提供商的基础URL(例如,https://openrouter.ai/api/v1)
    • 自定义API密钥:你在该提供商的API密钥
  4. 点击保存。如果你没有立即看到模型列表,请点击“刷新模型”按钮一两次。
  5. 如果仍然看不到模型列表,请关闭配置管理器,再次输入/configMan,你应该就能看到可用的模型列表。
  6. 由于所使用的嵌入模型,ollama仍然需要在后台保持运行,但我将在下一个迷你补丁中通过添加提供商的嵌入API端点,并升级至embedddinggemma模型(替代nomic-embed-text),将其完全分离。

3. 选择模型

系统将自动从你的提供商的/models端点获取可用模型,并将其显示在模型选择界面中。

支持的提供商

任何实现了OpenAI API标准的提供商都应该可以使用。一些例子:

  • OpenRouter:https://openrouter.ai/api/v1
  • TogetherAI:https://api.together.xyz/v1
  • Perplexity:https://api.perplexity.ai/
  • Groq:https://api.groq.com/openai/v1
  • 本地 LM Studio:http://localhost:1234/v1

API兼容性

自定义提供商实现使用了以下OpenAI API端点:

  • GET /models - 用于获取可用模型
  • POST /chat/completions - 用于发送聊天补全请求

你的提供商必须支持这些端点,并且请求/响应格式与OpenAI的API相同。

故障排除

  • “已选择自定义提供商但未配置API URL”:确保你已设置自定义API URL字段
  • “配置中未设置自定义API密钥!”:确保你已设置自定义API密钥字段
  • 模型列表为空:检查你的API密钥是否有效且URL是否正确
  • 连接错误:验证提供商URL是否可访问且支持OpenAI API格式

更新日志 v1.0.5.1-release+1.20.6-bugfix-2

  • 修复了先前测试阶段被忽视的许多错误。

更新日志 v1.0.5.1-release+1.20.6

我意识到之前公告中做出的许多承诺在单个更新中实现过于雄心勃勃。为了保持开发顺畅,此版本是两部分更新的第一部分。

本次更新侧重于核心系统重写和更好的AI决策,为下一波功能奠定基础。

此外,由于代码库的变更我实在无法自行处理迁移,已放弃对1.20.6以下版本的支持。不过其他人可以自由地将其移植到更低版本。

即将到来的第二部分将把1.20.6的更新作为1.20.6的最终更新,并且还会有一个直接更新到1.21.6的新版本,未来版本将继续基于此进行。


1.0.5.1 中的新内容

重塑的NLP系统

  • 完全重新设计的自然语言处理(NLP)——不再有“我听不懂你在说什么”。
  • 这是一个全新的、实验性的系统,我在过去一个月里一直在设计和严格测试。
  • 结果很有前景,但还未达到我个人的标准——预计在未来的更新中会进一步完善。

重写的RAG与数据库系统(含网络搜索)

  • 新的检索增强生成(RAG)系统,集成了数据库和网络搜索。
  • AI现在能提供关于《我的世界》的准确事实信息,大幅减少幻觉。
  • 支持的搜索提供商:
    • Gemini API
    • Serper API
    • Brave Search API(开发中,将推迟到下一个补丁)

元决策层

  • 新增任务链系统:
    • 你给出高级指令 → 机器人自动将其分解为更小的任务 → 逐步执行。

当前支持的任务:

  • 前往某个位置
  • 前往某个位置并采集资源
  • 检测附近的方块和实体
  • 报告状态(生命值、氧气、饥饿值等)

API集成

AI玩家现在支持多个LLM提供商(可通过API密钥配置):

  • OpenAI
  • Anthropic Claude
  • Google Gemini
  • xAI Grok

网络搜索工具

如果你选择Gemini搜索作为LLM的网络搜索工具,它会自动使用你在settings.json5文件中设置为LLM提供商的API密钥。

对于 https://serper.dev/ 搜索,请从serper.dev获取API密钥,然后在游戏内导航到配置文件夹,打开ai_search_config.json并填入密钥:

网络搜索json文件内容

(注:除了Gemini API,我无法亲自测试所有这些,因为API密钥成本较高,但集成已准备就绪。)


错误修复

  • 修复了JVM参数未被读取的错误。
  • 移除了owo-lib。AI玩家现在使用内部配置系统。
  • 修复了API密钥保存问题。
  • 新增启动器检测系统。由于Modrinth启动器的变量路径系统冲突导致QTable无法加载。支持:原版MC启动器、Modrinth应用、MultiMC、Prism Launcher、Curseforge启动器、ATLauncher,甚至未知启动器(默认视为不支持,除非它们遵循原版MC启动器的路径方案)。
  • 重新设计了配置管理器UI,采用响应式UI,并为拥有大量模型的提供商(如gemini)增加了搜索选项。

带有搜索选项和响应式UI的新配置管理器UI


开发说明

  • 虽然此更新表面上看很小,但设计系统、编写代码和调试花费了大量时间。
  • 此外,我还接了一些自由职业合同,并且需要专注于我的毕业设计项目。
  • 更新会继续——只是速度会慢一些。

第二部分即将推出

以下是下一个补丁的计划内容:

  • 战斗与生存增强

    • 机器人使用武器(包括远程武器)抵御生物。
    • 反射模块升级。
    • 更自然的与世界互动(例如,夜间睡觉)。
  • 改进的路径追踪器

    • 在水域和复杂地形中更智能的导航。
  • 自设目标系统

    • 机器人会像真实玩家一样给自己设定目标。
    • 会主动与玩家对话并自主移动。
  • 情绪系统 (设计阶段)

    • 增加情感背景和多样化行为。
  • Player2集成

    • 呼声极高——这将是第二次更新的第一个主要功能。

即将到来的变更(其中一些可能出现在第二个补丁中)。

  1. 从传统的q-learning切换到深度Q学习(简而言之:使用神经网络而不是表格)
  2. 为机器人创建自定义移动代码以实现精确移动,而不是使用carpet的服务端移动代码。
  3. 实现人类意识水平的推理???(一定程度上也许)(不太确定)

当前版本中的已知错误:

  • 又发现了一些错误,错误修复将于明天发布。

模组描述

是否曾在那个两周的热度期感到独自玩《我的世界》时的孤独?这个模组旨在解决这种孤独问题,不仅服务于这种特定的使用场景,而且(希望在将来)甚至能在多人服务器上游玩。

最棒的是什么?你可以根据你电脑的配置,完全离线运行语言模型。

请注意,这不是某种商业化的AI产品。这个项目只是许多《我的世界》玩家曾经面临且仍在面临的问题的解决方案。


这个模组做什么?

这个模组目前通过carpet模组添加了第二个可生成的玩家(或机器人),你可以通过ollama在电脑上完全离线地通过大型语言模型与之对话,并且到目前为止,我已经为机器人集成了强化学习,使其能在“反射动作”的情境下与环境互动和学习。

基于目标的学习将在即将到来的更新中添加。

该模组也依赖owo-lib模组来处理配置。

此模组依赖Carpet模组的内部代码,请给该模组的仓库点赞: https://github.com/gnembon/fabric-carpet (功劳归功于应得之人)

此模组还依赖ollama4j项目。 https://github.com/amithkoujalgi/ollama4j


安装要求

需要最新版本的Fabric API。

需要依赖部分中注明的Carpet模组版本。


模组示例视频(截至版本1.0.5.1)

https://streamable.com/imko3x?src=player-page-share


模组示例视频(截至版本1.0.3-alpha-1)

更新日志视频(截至当前版本1.0.3-alpha-2)

更好更快的反射动作,减少训练时间。

环境反应

Youtube教程即将推出


安装与设置指南

第1步:安装Java 21

此项目需要Java 21才能运行。

  • 从 BellSoft JDK 21 LTS 下载Java 21。

  • 在Windows上:点击下载MSI并完成安装。

  • 在Linux上:通过包管理器安装,例如

    sudo apt install openjdk-21-jdk
    

第2步:安装Ollama

前往

https://ollama.com/

根据你的操作系统下载。

安装后,从桌面运行ollama。这将启动ollama服务器。

你可以在系统托盘中访问它

图片


第3步:配置Ollama模型

打开你的命令行(CMD/终端)并运行:

ollama pull nomic-embed-text   # 嵌入模型(必需)
ollama pull qwen3:8b           # 首选语言模型(测试中使用)

对于之前的使用者:

ollama rm gemma2               # 如果安装了旧模型,请移除
ollama rm llama2               # 如果安装了旧模型,请移除
ollama rm llama3.2             # 如果安装了旧模型,请移除

如果你以前运行过该模组,请删除旧配置:

.minecraft/config/settings.json5

✅ 确保在启动游戏前Ollama服务器正在运行。


第4步:下载依赖

确保所有必需的依赖(包括Carpet模组)都已安装。


第5步:JVM参数设置

启动游戏前,你必须提供以下JVM参数:

-Daiplayer.llmMode=<provider>

示例:

  • 本地Ollama(默认):

    -Daiplayer.llmMode=ollama
    
  • OpenAI:

    -Daiplayer.llmMode=openai
    
  • Anthropic Claude:

    -Daiplayer.llmMode=claude
    
  • Google Gemini:

    -Daiplayer.llmMode=gemini
    
  • xAI Grok:

    -Daiplayer.llmMode=grok
    

第6步:配置API密钥

在配置管理器中,现在有一个专门的区域用于输入所有受支持提供商的API密钥。

  • 对于本地模型,你可以选择你偏好的Ollama LLM。
  • 对于托管提供商,请相应地输入你的API密钥。

⚠️ 注意: Ollama必须始终保持运行,因为嵌入模型(nomic-embed-text) 是本地的且必需。


第7步:启动游戏

  • 启动《我的世界》。
  • 在加载世界之前(如果你在单人游戏中),世界加载进度达到100%时可能会有一点卡顿(也可能不会),因为要在游戏中加载一个NLP模型
  • 在加载世界之前,请等到你看到包含以下文件的目录结构: NLP模型目录结构
  • 这些文件仅用于一次性下载,因此只在此版本首次使用时需要。
  • 进入游戏后,如果你在JVM参数中使用了ollama以外的提供商,请使用配置管理器选择你想要的LLM/提供商并设置其API密钥。
  • 输入以下命令来生成你的机器人:
/bot spawn <yourBotName> <training|play>
  • training → 在训练模式下生成机器人(不连接LLM)。
  • play → 具有完整AI功能的普通模式。

重要说明

  • 最好为这个模组创建一个独立的整合包,因为每次游玩时Ollama必须在后台运行。
  • Ollama本身内存占用很小,所以不会显著影响性能。

网络搜索工具

如果你选择Gemini搜索作为LLM的网络搜索工具,它会自动使用你在settings.json5文件中设置为LLM提供商的API密钥。

对于 https://serper.dev/ 搜索,请从serper.dev获取API密钥,然后在游戏内导航到配置文件夹,打开ai_search_config.json并填入密钥:

网络搜索json文件内容


游戏内命令

主命令:

/bot

用法示例:

/bot spawn Steve training

更新的语法由 Álvaro Carvalho先生 提供。

由于该模组依赖Carpet,你也可以使用Carpet的命令生成机器人。 如果你在离线模式下游戏,建议使用模组内置的生成命令。


重要

另外请记住,如果你使用这个模组,最好为它单独创建一个整合包,因为每次启动游戏本身时,你都需要在后台运行ollama服务器。Ollama服务器本身不会消耗太多内存,所以你应该没问题。


游戏内

主命令

/bot

子命令:

自上一版本以来,许多命令已被更改。请查看最新版本的更新日志。

用法示例:

/bot spawn Steve training

以上命令语法变更归功于 Álvaro Carvalho先生

是的,由于此模组依赖carpet模组,你也可以使用carpet模组的命令生成机器人并试用该模组。但如果你碰巧在离线模式下游戏,那么我建议使用模组内置的生成命令。