以 Factorio Learning Environment 为参照重构 airi-factorio:AIRI 在自动化生产游戏中的 AI Agent 架构演进
以 Factorio Learning Environment 为参照重构 airi-factorioAIRI 在自动化生产游戏中的 AI Agent 架构演进【免费下载链接】airi Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-samas altitude. Capable of realtime voice chat, Minecraft, Factorio playing. Web / macOS / Windows supported.项目地址: https://gitcode.com/GitHub_Trending/ai/airiAIRI 是 moeru-ai 社区自托管的开放 AI Companion 项目而airi-factorio是其生态中让 AIRI 能够实际游玩 Factorio异星工厂这一自动化生产模拟游戏的子项目。本篇 DevLog 深度复盘了airi-factorio第一版基于「TypeScript 编写 Factorio Mod RCON 控制 LLM 生成 Lua 代码」的实现方案及其痛点并围绕论文 Factorio Learning Environment (FLE) 提出的 Lab-play / Open-play 双模式评测框架梳理出一条转向「Golang 实现 MCP Server 原生操作封装」的重构路线。读完本文你将理解 AI Agent 与游戏环境交互的两种典型架构形态掌握 Mod 热重载、RCON 命令长度限制、/sc与/c命令差异等实战细节并看到 mcp-launcher 如何在这一重构中扮演核心角色。背景AIRI 与 airi-factorio 的定位AIRI 是一个自托管的 AI Companion 项目其能力矩阵中明确包含了「游玩 Minecraft 与 Factorio」这类与真实世界游戏世界交互的扩展场景。在仓库主 README 中airi-factorio被定位为「Allow AIRI to play Factorio」的 PoC 项目并已提供可运行的演示版本同时仓库还维护了配套的 Factorio RCON APIFactorio 无头服务器控制台headless server console的 RESTful API 封装、autorioFactorio 自动化库以及tstl-plugin-reload-factorio-mod开发期重载 Factorio Mod 的 tstl 插件等基础设施。这篇 DevLog 正是围绕这些基础设施的前身设计进行的一次系统性复盘与重构规划。第一版 airi-factorio五根支柱与它们的问题作者 LemonNeko 在半年前首次尝试编写能游玩 Factorio 的 AI Agent第一版实现由五块关键技术拼装而成技术环节实现方式核心工具/手段Mod 开发使用 TypeScript 编写 Factorio Modtstl 将 TypeScript 编译为 Lua游戏通信通过 RCON 与 Factorio Mod 交互factorio-rcon-api调用/c命令执行 Mod 注册的函数决策与代码生成让 LLM 生成 Lua 代码控制玩家通过 Prompt Engineering 告知 LLM 如何操作游戏、如何规划并把 RCON 交互代码封装为 LLM 可调用的工具聊天交互通过游戏内置聊天系统与 LLM 交互读取游戏标准输出用正则表达式解析玩家聊天内容再发给 LLM 处理开发体验DevContainer 开发环境 热重载 软链调试为 tstl 编写插件实时监听代码变更通过 RCON 把新 Mod 内容发送进游戏用符号链接把 tstl 输出目录链接到游戏目录便于直接查看编译产物这套方案的初衷是「用更工程化的方式做游戏 AI 开发」但它也带来了四个核心痛点调试链路过长主要操作逻辑都写在 Mod 内修改后需要退出地图、回到主界面、再重新进入才能生效一旦data.lua稍微复杂甚至必须重启整个游戏。RCON 命令长度限制通过/c执行 LLM 生成的 Lua 代码时Factorio 对单条命令有长度上限代码一长就必须拆成多次执行既繁琐又容易出错。聊天内容解析脆弱依赖正则解析标准输出中的玩家聊天内容鲁棒性差。可维护性不足代码整体健壮性与可维护性差新朋友想参与开发甚至只是想试运行启动成本都很高。值得一提的热重载思路通过 tstl 插件实时监听代码变更经 RCON 将新 Mod 代码发送给游戏收到新代码后卸载全部接口并重新执行一次 Mod 代码实现热重载——但「如何妥善处理 Mod 已有状态」成为最大挑战。这是第一版中最具探索价值也最棘手的设计点。Factorio Learning Environment评测框架带来的启发作者在规划重构时恰好读到论文 Factorio Learning Environment (FLE)。FLE 是一个专门用于评估 AI 在长期规划long-term planning、程序合成program synthesis、资源管理resource management与空间推理spatial reasoning四项能力上的测试框架包含两种模式Lab-play在 24 个手工设计的关卡中测试资源受限考察 AI 能否用有限资源高效搭建生产线。Open-play在程序化生成的无垠大地图上以「建造最大的工厂」为目标考察 AI 的长期自主目标设定、探索与扩张能力。论文评测了当时主流的 Claude 3.5 Sonnet、GPT-4o、Deepseek-v3、Gemini-2 等模型而在 Lab-play 模式下即便是当时最强的 Claude 3.5 也仅完成了 7 个关卡——可见该任务对 LLM 的长链条推理能力挑战极大。FLE 的三点架构优势Python REPL、原生操作封装与 /sc 命令作者发现 FLE 的实现方法与airi-factorio高度相似却在三个关键点上做得更好Python REPL 直执行而非让 LLM 生成 LuaFLE 用 Python 编写LLM 生成 Python 代码后在 Python REPL 中直接执行并能直接从标准输出读取结果。由于 Python 生态的数据集与库远多于 Lua代码生成准确率更高也能生成更复杂的逻辑。Lua Mod 只保留原子操作复杂逻辑上移到 PythonLua Mod 内只实现place_entity这类放置实体的原语操作更复杂的逻辑全部写在 Python 侧。这从根源上降低了 Lua Mod 的 bug 可能性从而大幅减少「重启游戏」的频率。用/sc替代/c执行 Lua 代码/scsilent command不会把代码回显到控制台控制台保持干净只留下必要内容显著降低了标准输出解析的难度。此外FLE 还精心分析了所有必需配方的生产过程与难度总结出「生产一件物品的成本如何计算」「LLM 得分如何计算」等公式用于更科学地评估 LLM 能力并在论文附录中公开了其 system prompt其中规定了环境结构、响应格式、最佳实践以及如何理解游戏输出等关键内容。回到 airi-factorio为什么用 MCP 而不是 Python面对 FLE 的优势作者的第一反应并不是「转投 Python」而是基于自身技术栈做出理性取舍我不想写 Python我只熟悉 TypeScript 和 Golang。恰好当时团队刚完成 mcp-launcher——一个「适合所有可能 MCP 服务器的构建器」定位类似「模型界的 Ollama」。于是重构方案确定为用 Golang 实现一个 MCP Server让 LLM 通过 MCPModel Context Protocol协议调用它从而在不引入 Python 的情况下获得与 FLE 同等的「代码生成质量 环境解耦」收益。MCP Server 方案在 AIRI 生态中并非孤例仓库 MCP Server 配置说明 展示了桌面端如何通过「Settings → Modules → MCP Server → Add server」填写 Identifier、Command、Arguments 以及可选的工作目录与环境变量来接入外部工具进程并支持 Test、Save and restart、Reveal in file manager、Edit JSON 等维护手段同时强调「只运行你信任的 MCP Server因为它们可以在本地执行命令并访问你授予的环境变量」。这与 DevLog 中「通过 mcp-launcher 用 Golang 实现 MCP Server」的设想互为印证MCP 已是 AIRI 连接外部工具的标准通路。重构后的目标架构聊天入 Mod操作走 MCP重构前后架构图如下来自本文档同目录的 assets重构后的核心变化有两点玩家聊天内容不再直接发给 LLM改为存放在 RconChat Mod 中LLM 通过 MCP Server 读取这些内容。这条变化把「聊天解析」从脆弱的正则标准输出解析中解放出来。不再让 LLM 生成 Lua 代码借助 MCP Server 方案将 RCON 交互代码封装为 MCP 工具暴露给 LLMLLM 以结构化的工具调用代替代码生成天然规避了/c命令长度限制与 Lua 代码可维护性问题。至于 system prompt作者承认当前提示词虽由 AI 生成但仍不够清晰、优先级不明计划参照 FLE 公开的 system prompt 进行改进。结语与后续脉络「我们基本上又推翻之前的所有设计了重新开始。」——这句结语准确概括了本次 DevLog 的性质它既是一次对第一版方案的坦诚复盘也是一份面向 FLE 论文的重构路线图。若读者感兴趣作者建议精读 FLE 论文及其开源代码并欢迎对文中理解提出修正。作为后续验证AIRI 社区在 2025.08.26 的 DevLog 中呈现了airi-factorio向纯视觉pure vision方向的实际进展通过将 Factorio 客户端容器化xvfb 虚拟显示 x11vnc websockify noVNC、基于 YOLO11n 训练目标检测模型并在浏览器中用onnxruntime-web以 WebGPU 实时推理约 20ms/帧让 AI 真正「看见」游戏画面——这与本文「MCP Server 化」的重构相辅相成共同构成airi-factorio从「LLM 生成 Lua 代码」走向「感知 工具调用」的完整演进路径。关联资源速览本文对应文档DevLog 2025.07.18后续进展DevLog 2025.08.26纯视觉方向进展AIRI 主 README 中的相关生态README.mdMCP Server 在 AIRI 桌面端的接入方式setup-and-use 文档【免费下载链接】airi Self hosted, you-owned Grok Companion, a container of souls of waifu, cyber livings to bring them into our worlds, wishing to achieve Neuro-samas altitude. Capable of realtime voice chat, Minecraft, Factorio playing. Web / macOS / Windows supported.项目地址: https://gitcode.com/GitHub_Trending/ai/airi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →