人工智能辅助开发
本指南记录的是 MCC 的 AI 辅助开发工作流,它是一个真正可运行的闭环,而非基于猜测的补丁生成器。 目标是为智能体提供一个可自主运行的环境:构建 MCC、启动本地服务器、发送命令、检查日志,并循环执行。 一旦这个循环搭建好了,迭代就会更快,也更容易发现并修复回归问题。
如果您想先了解更广泛的贡献者入口,请先参阅 Contributing,然后再返回此处查看代理工作流。
实际目标是一个闭环:
警告
如果你在 Windows 上开发,请使用 WSL2。 该工作流基于 Unix 风格的 shell、tmux、python3 以及 shell 辅助函数构建。 请勿尝试直接在纯 PowerShell 或 CMD 中运行完整的 AI 工作流。
索引
此工作流涵盖的内容
这是……的工作流程:
- 本地 MCC 开发
- 本地离线服务器测试
- AI辅助调试
- 机器人创作
- 协议和版本适配工作
- 仍应遵循相同规范流程的文档工作
它基于两层构建:
tools/目录下的工具脚本,负责执行实际操作。.skills/目录下的 AI 技能,用于指示智能体何时以及如何使用这些工具。
设置
你只需要做大部分这些操作一次。
Windows:请先安装 WSL2
以管理员身份打开 PowerShell,并运行:
wsl --install如果 WSL 已经启用,并且你特别想要 Ubuntu,请使用:
wsl --install -d Ubuntu如果安装卡在 0.0%,请使用:
wsl --install --web-download -d Ubuntu如果 Windows 提示需要重启,请重启电脑,然后打开 Ubuntu 终端,并在其中完成 Linux 用户设置。
从现在起,请在 WSL 中进行 MCC 的开发。 这包括克隆仓库、构建、运行服务器以及使用 AI 代理工具。
Linux 和 macOS:使用 Bash 或 Zsh
Bash 和 Zsh 都可以与 MCC 的辅助脚本配合使用。
检查当前 Shell:
echo $SHELL注释:
- Bash 是 Linux 系统上的默认 Shell。
- Zsh 是现代 macOS 系统上的默认交互式 shell。
- 辅助脚本
tools/mcc-env.sh可以从~/.bashrc或~/.zshrc中加载。
安装 Git
Ubuntu、Debian 及其衍生版:
sudo apt update
sudo apt install gitArch Linux:
sudo pacman -S git使用 Homebrew 的 macOS:
brew install git验证:
git --version参考:Git 下载
安装 .NET SDK 10
MCC 目前基于 .NET 10 构建。 你需要 SDK,而不仅仅是运行时环境。
支持的 Ubuntu 发行版及启用正确软件源的 Ubuntu 系统衍生发行版:
sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.0Debian 12:
wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.0Debian 13:
wget https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.0Arch Linux:
sudo pacman -S dotnet-sdk使用 Homebrew 的 macOS:
brew install --cask dotnet-sdk验证:
dotnet --version参考:
- 在 Ubuntu 上安装 .NET
- 在 Debian 上安装 .NET](https://learn.microsoft.com/dotnet/core/install/linux-debian)
- 自制
dotnet-sdkcask
安装 Java 21
本地服务器运行时直接使用 java 命令,因此你的系统 PATH 中需要配置 Java 21。
Ubuntu 及其基于 Ubuntu 的发行版:
sudo apt update
sudo apt install openjdk-21-jdkDebian:
软件包的可用性因 Debian 发行版而异。 如果您配置的软件源中没有 openjdk-21-jdk,请改从您偏好的供应商处安装最新版本的 JDK 21,而不是强制使用过时的软件包名称。
Arch Linux:
sudo pacman -S jdk21-openjdk使用 Homebrew 的 macOS:
brew install openjdk@21
sudo ln -sfn "$(brew --prefix openjdk@21)/libexec/openjdk.jdk" /Library/Java/JavaVirtualMachines/openjdk-21.jdkHomebrew 将 openjdk@21 标记为仅作为 keg 安装,因此创建符号链接这一步非常重要。
验证:
Java 版本参考:
安装 Python 3
RCON 辅助工具和版本适配工具需要 Python 3。
Ubuntu、Debian 及其衍生版:
sudo apt update
sudo apt install python3Arch Linux:
sudo pacman -S python使用 Homebrew 的 macOS:
brew install python@3.14Homebrew 目前通过 python@3.14 这个 formula 提供 Python 3,并将其别名为 python 和 python3。
验证:
python3 --version参考:
- Ubuntu
python3软件包 - Arch Linux 的
python软件包 - 自制 Homebrew formula(Python 3.14)
安装 tmux
本地 Minecraft 服务器运行在一个 tmux 会话中,这样在代理构建并重启 MCC 时,服务器仍能持续运行。
Ubuntu、Debian 及其衍生版:
sudo apt update
sudo apt install tmuxArch Linux:
sudo pacman -S tmux使用 Homebrew 的 macOS:
brew install tmux验证:
tmux -V克隆仓库并初始化子模块
一步完成带子模块的克隆:
git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive如果你已经克隆了它,但没有包含子模块:
git submodule update --init --recursive准备服务器版本和反编译源码
从仓库根目录下,使用反编译辅助工具下载官方服务器 JAR 文件并生成反编译后的源代码树:
tools/decompile.sh --version 1.20.6这会创建 Harness 和版本适配工作流所使用的路径:
- $MCC_SERVERS/1.20.6/server.jar
- 《我的世界》官方/1.20.6-反编译版/
如果你正在进行协议相关工作,这一步是必选的。
在 Bash 中加载 MCC shell 辅助脚本
将这一行添加到 ~/.bashrc 文件中:
source "$HOME/Minecraft/Minecraft-Console-Client/tools/mcc-env.sh"重新加载 Shell:
source ~/.bashrc这会为你提供工作流所使用的辅助函数:
mc-startmc-stopmc-cmdmc-logmc-rconmcc-buildmcc-runmcc-cmdmcc-killmcc-reload
在 Zsh 中加载 MCC shell 辅助脚本
将这一行添加到 ~/.zshrc 文件中:
source "$HOME/Minecraft/Minecraft-Console-Client/tools/mcc-env.sh"重新加载 Shell:
source ~/.zshrc如果你的克隆位于其他位置,请更新 source 行中的路径。
验证环境
运行这些检查:
git --version
dotnet --version
java -version
python3 --version
tmux -V然后确保加载了辅助函数:
type mc-start
type mcc-build
type mcc-run装备的运作方式
AI 代理无法像人类玩家那样获得丰富的交互式终端界面。 这就是为什么这个工作流使用挂件,而不是依赖实时键盘输入。
移动部件是:
- 在
tmux中运行的本地 Minecraft 服务器 mc-rcon用于执行服务器端命令,例如/op、/give、/summon或游戏规则设置。- MCC 启动时设置了
MCC_FILE_INPUT=1 FileInputBot,用于监控mcc_input.txt文件,并将文件中的每一行转换为 MCC 命令或服务器聊天消息。- 来自 MCC 和本地服务器的日志,代理可以在每次运行之间检查这些日志。
结果很简单:代理可以无需等待人工坐在终端前,就能修改代码、重新构建、启动应用、注入命令并读取执行结果。
仓库工具
这些是让工作流程变得实用的仓库级工具。
| 路径 | 作用 |
|---|---|
tools/mcc-env.sh | 加载用于主循环的 Shell 辅助函数。 |
tools/start-server.sh | 在名为 tmux 的会话中启动一个本地 Minecraft 服务器,并使用 FIFO 管道作为标准输入。 |
tools/mc-rcon.sh | 使用 python3 向本地服务器发送 RCON 命令。 |
tools/decompile.sh | 必要时下载 MinecraftDecompiler.jar,反编译指定版本的 Minecraft,并获取用于服务器端工作的 server.jar。 |
tools/diff_registries.py | 比较两个 Minecraft 版本之间的注册表,以显示哪些调色板需要更新。 |
tools/gen_item_palette.py | 根据反编译或报告的注册表数据生成物品调色板源。 |
tools/gen_block_palette.py | 根据权威的方块报告生成方块调色板源。 |
tools/gen_entity_palette.py | 从注册表报告生成实体调色板源。 |
tools/gen_entity_metadata_palette.py | 根据序列化器注册顺序生成实体元数据调色板源代码。 |
tools/gen_command_argument_registry.py | 帮助更新现代声明式命令注册表的顺序。 |
tools/gen_block_shapes.py | 下载并压缩碰撞形状数据,以支持物理引擎。 |
还有一点值得一提:
MinecraftClient/ChatBots/FileInputBot.cs是实现基于文件的命令注入功能的核心代码。- 当设置
MCC_FILE_INPUT=1时加载。 tools/mcc-env.sh中的mcc-run已经为您设置了该标志。
技能
上面的工具就能完成工作。 .skills/ 目录中的技能文件会告诉 AI 何时使用这些技能,以及理想的输出应是什么样。
| 技能 | 它有什么用 | 注意事项 |
|---|---|---|
mcc-dev-workflow | 默认的构建、运行、调试和本地服务器循环。 | 这是用于大多数日常 MCC 调试的技能。 它假定已安装 WSL、tmux、Java 以及本地测试框架。 |
mcc-integration-testing | 可在本地离线服务器上进行可重复的端到端测试。 | 该技能将其自有脚本放置在 .skills/mcc-integration-testing/scripts/ 目录下。 那些是技能资源,而不是顶级仓库脚本。 |
mcc-version-adaptation | 适用于新版本 Minecraft 的协议和调色板更新。 | 当路由、注册表、元数据、调色板或结构化组件发生更改时。 |
mcc-chatbot-authoring | 编写或修复内置机器人以及独立的 /script 机器人。 | 该技能将引用和模板打包在 .skills/mcc-chatbot-authoring/ 目录下。 默认为独立 /script 机器人,除非请求使用内置布线。 |
csharp-best-practices | 本仓库的 C# 14 / .NET 10 编码指南。 | 当更改涉及 MCC 运行时代码时使用。 |
humanizer | 文档与文案优化。 | 适用于文档、指南、发布说明,以及任何可能显得机械化的内容。 |
mcc-prompt-engineer | 为 MCC 开发任务生成结构化提示。 | 手动触发。 与用户进行对话,探索代码库,并生成一个包含推理框架、技能引用和子智能体指令的自洽提示。 |
skill-creator | 自行创建或提升技能。 | 这是用于优化 AI 工作流的,而非 MCC 的常规功能开发。 |
重要的区别在于:
- 仓库工具是可执行脚本和源代码文件。
- 技能是针对 AI 的指令、参考、模板以及工作流约束。
一些技能还自带资源包:
mcc-integration-testing包含脚本和命令矩阵参考mcc-chatbot-authoring包含引用和机器人模板skill-creator封装了脚本、评估工具和审核者资源。
标准开发循环
这就是你应该期望智能体遵循的核心循环。
1. 启动本地服务器
mc-start 1.20.6查看最近的服务器输出:
mc-log 1.20.62. 构建 MCC
mcc-build3. 启用文件输入运行 MCC
mcc-run原始形式如下:
MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release -- CursorBot - localhost:255654. 通过RCON设置服务器状态
示例:
mc-rcon "op CursorBot"
mc-rcon "gamerule sendCommandFeedback true"
mc-rcon "give CursorBot diamond_sword 1"
mc-rcon "summon minecraft:armor_stand ~ ~ ~"5. 通过 mcc_input.txt 驱动 MCC
示例:
mcc-cmd "inventory player list"
mcc-cmd "entity"
mcc-cmd "/gamemode creative"行为:
- 以
/开头的行将作为服务器命令或聊天消息发送。 - 当该行不以“/”开头时,首先将其视为MCC内部命令。
- 如果一行内容不是 MCC 内部命令,则会回退为普通聊天消息发送。
6. 当……时
阅读 MCC 输出和服务器日志,判断发生了哪些变化,然后决定是继续迭代还是停止。
7。 重建并快速重启
mcc-reload这就是回归测试的常规流程。
测试与验证
在这个工作流中主要有两种测试方式。
手动验证
对于较小的改动来说,这就足够了:
- 加入本地服务器
- 使用
mc-rcon授予操作员权限 - 通过
mcc-cmd运行 MCC 内部命令 - 通过
mc-rcon触发游戏玩法或服务器状态变化 - 检查日志以查找解析错误、断连或输出异常
典型的手动检查:
- 库存列表与创造模式物品注入
summon后的实体追踪- 加入后地形与区块处理
- 聊天和命令流程
- 爆炸、粒子和音效事件
脚本化全范围测试
mcc-integration-testing 技能更进一步。 它会将自己的脚本打包到 .skills/mcc-integration-testing/scripts/ 目录下,并期望从 ~/.zshrc 中加载 shell 辅助脚本。
将这些脚本视为技能专属资源。 在直接运行这些技能之前,请先阅读其说明,不要假设它们的行为与顶级仓库工具相同。
该技能旨在用于可重复的离线验证:
- 聊天
- 斜杠命令
- MCC 内部命令
- 库存管理
- 实体处理
- 粒子和音效
- TNT与爆炸处理
对AI驱动的离线测试有影响的服务器设置:
eula=trueonline-mode=falseenforce-secure-profile=falseenable-rcon=truercon.password=test123
如果这些设置错了,循环就会很快变得嘈杂。
版本适配说明
版本开发需要比普通 Bug 修复更严格的流程。
重要的规则很简单:
- 对于较新版本,尤其是
1.21.9+,请以服务器数据报告为准来确定物品和方块的信息。 - 使用反编译的源代码获取实现细节、字段顺序、编解码器逻辑及序列化器逻辑。
- 先别停在资源包对比上,还要完成构建并在真实服务器上测试一遍。
通常的顺序是:
tools/decompile.sh --version <ver>- 从
server.jar生成服务器报告 - 运行
tools/diff_registries.py - 重新生成实际已更改的调色板
- 更新版本路由和数据包处理
- 构建 MCC
- 针对实际目标版本进行测试
这正是 mcc-version-adaptation 工具旨在引导完成的工作。
示例流程
以下是本指南旨在支持的四种常见模式。
调试运行时回归问题
使用技能:
- mcc开发工作流
- C#最佳实践
典型的循环:
mc-start 1.20.6
mcc-build
mcc-run
mc-rcon "op CursorBot"
mcc-cmd "inventory player list"
mcc-cmd "entity"然后检查 MCC 的输出,修复代码,并使用:
mcc-reload建造或修复机器人
使用技能:
- MCC聊天机器人创作
- C#最佳实践
- mcc开发工作流
典型流程:
- 决定这是独立的
/script机器人还是内置机器人。 - 当物品栏满时,无法拾取更多物品。
- 构建 MCC。
- 启动本地服务器并加入。
- 通过实时命令、聊天或事件驱动的操作来测试机器人行为。
- 请确保清理路径(如
OnUnload())正确无误。
对于独立脚本,技能默认为 /script,除非明确需要使用内置仓库的绑定。
将 MCC 适配到新的 Minecraft 版本
使用技能:
MCC版本适配- mcc开发工作流
MCC集成测试
典型流程:
tools/decompile.sh --version 26.1生成服务器报告:
cd /tmp
java -DbundlerMainClass=net.minecraft.data.Main \
-jar "$MCC_SERVERS/26.1/server.jar" \
--reports --output /tmp/mc_reports运行注册表对比:
python3 tools/diff_registries.py 1.21.10 26.1 --registry /tmp/mc_reports/reports/registries.json然后重新生成已更改的调色板,更新路由,编译 MCC,启动目标版本的本地服务器,并在认为工作完成之前运行实时验证。
为工作流本身编写或更新文档
使用技能:
人性化- “技能创建者”,如果你是在修改技能本身,而不仅仅是文档的话
典型流程:
- 重新阅读相关的技能文件和仓库工具。
- 更新指南,使书面流程与实际流程一致。
- 翻译时需保持足够具体,以便其他贡献者无需猜测即可照做。
- 当工作流本身发生变更时,请一并更新相关技能,而不要让文档落后于自动化流程。
