
Factorio 学习环境:让 AI Agent 在游戏中自主学习建造工厂
Factorio Learning Environment (FLE) v0.3.0 发布,为 AI Agent 提供了一个在复杂游戏中自主学习建造工厂的开源评测平台,展示了大型语言模型在长程规划与动态环境适应方面的能力边界。
原文来源:jackhopkins.github.io — AI Agent 在 Factorio 中通过试错自主学习建造工厂,展示了大型语言模型在复杂环境中的自主规划能力。
Factorio 是一款以自动化工厂建造为核心的游戏,玩家需要从采矿开始,逐步搭建电力、冶炼、组装、物流等复杂生产链,最终建成庞大的工业帝国。这款游戏因其极高的系统复杂度和长程规划要求,被研究者视为评估 AI Agent 能力的理想沙盒。
Factorio Learning Environment(FLE) 正是这样一个开源平台,它将 Factorio 改造成 AI Agent 的交互式学习环境,让大语言模型(LLM)驱动的 Agent 能够在游戏中自主探索、试错、建造工厂,完成从简单采矿到复杂自动化生产线的各类任务。
FLE v0.3.0 核心亮点
最新发布的 v0.3.0 版本带来了多项重要改进:
- Claude Code 接入 Factorio:通过 FLE 桥接 Claude Code,并在 Twitch 上直播展示前沿 Agent 在长程交互环境中的能力。
- 无头环境扩展:FLE 不再依赖 Factorio 游戏客户端,支持大规模并行实验。新的无头渲染器可提供真实的像素级观察,便于多模态 Agent 研究。
- OpenAI Gym 兼容:标准化为 Gym 接口,简化与现有研究代码的集成。
- 开发者工具链:FLE CLI 让运行实验只需一行命令,并内置 Weights & Biases 日志、扫描恢复和分析工具。
Agent 如何建造工厂:一个完整示例
以下展示了 Agent 建造自动铁齿轮工厂的全过程,包括试错与调试:
1. 搭建电力系统
Agent 首先寻找水源,放置海上泵、锅炉和蒸汽机,建立基础电力供应:
# 寻找水源并建立发电设施
water_pos = nearest(Resource.Water)
move_to(water_pos)
offshore_pump = place_entity(Prototype.OffshorePump, position=water_pos)
# 放置锅炉和蒸汽机
boiler = place_entity(Prototype.Boiler, position=boiler_coords.center)
steam_engine = place_entity(Prototype.SteamEngine, position=engine_coords.center)
# 连接水管并验证发电
connect_entities(offshore_pump, boiler, Prototype.Pipe)
connect_entities(boiler, steam_engine, Prototype.Pipe)
assert steam_engine.energy > 0, "蒸汽机未发电"2. 铁矿开采与冶炼
在铁矿脉上放置电动采矿机,连接电炉进行自动化冶炼:
iron_pos = nearest(Resource.IronOre)
# 放置两台采矿机保证吞吐量
drills = []
for i in range(2):
drill = place_entity(Prototype.ElectricMiningDrill, position=drill_pos)
# 每台采矿机下方放置电炉
furnace = place_entity_next_to(Prototype.ElectricFurnace, drill.position, direction=Direction.DOWN)
connect_entities(steam_engine, drill, Prototype.MediumElectricPole)
connect_entities(steam_engine, furnace, Prototype.MediumElectricPole)3. 组装机器与物流
放置组装机并设定铁齿轮配方,连接电力和机械臂:
# 放置组装机并设置配方
assembler = place_entity(Prototype.AssemblingMachine2, position=assembly_coords.center)
assembler = set_entity_recipe(assembler, Prototype.IronGearWheel)
# 放置输入/输出机械臂
input_inserter = place_entity_next_to(Prototype.Inserter, assembler.position, direction=Direction.RIGHT)
output_inserter = place_entity_next_to(Prototype.Inserter, assembler.position, direction=Direction.LEFT)
connect_entities(steam_engine, input_inserter, Prototype.MediumElectricPole)4. 试错与修正
Agent 在连接物流时遇到了障碍——箱子挡住了传送带。它识别出问题,移除箱子,重新用传送带连接冶炼炉和组装机:
# 移除阻挡传送带的箱子
chest1 = get_entity(Prototype.WoodenChest, Position(x=15.5, y=76.5))
pickup_entity(chest1)
# 用传送带连接冶炼炉输出与组装机输入
belts = connect_entities(output_inserter1, assembler_input_inserter, Prototype.TransportBelt)这个过程展示了 Agent 的动态恢复能力:当计划受阻时,它能观察错误、调整策略并重新执行。
观察空间:Agent 感知世界的窗口
每一步,Agent 都会收到一个结构化的 Observation 对象,包含:
| 字段 | 说明 |
|---|---|
raw_text | 上一步代码执行的标准输出与错误信息 |
entities | 游戏世界中所有实体及其属性 |
inventory | Agent 当前持有的物品清单 |
research | 科技树状态与研究进度 |
game_info | 游戏时间、速度等元信息 |
flows | 生产统计与输入/输出速率 |
task_info | 当前任务目标与最大步数限制 |
task_verification | 任务完成状态的验证结果 |
map_image | 工厂布局的 PNG 图像(可选,供视觉 Agent 使用) |
这种丰富的观察空间让 Agent 既能通过结构化数据精确计算,也能通过文本和图像理解整体局势。
Lab-Play 基准测试:前沿模型的表现
Lab-Play 是 FLE 的标准化评测环境:Agent 在固定资源条件下,需要达到每分钟 16 个固体物品或 250 单位流体的生产目标。每个任务最多 64 步,采用 Pass@8 评估标准。
模型性能概览
2025 年 9 月的评测结果显示,开源模型已追平此前闭源模型的最佳表现,在电子电路、钢板、硫磺和塑料等自动化任务上取得成功。
各模型排名:Claude > GPT > Gemini > Grok,这一排名与 GDPVal(评估经济价值任务自动化的基准)高度一致,但在 Humanity's Last Exam、AIME 25 等传统考试型基准上表现较弱的模型,在 FLE 中反而可能更强。
错误分析:Agent 的弱点在哪里?
研究者将失败模式分为四类:
- 语法错误:生成无效 Python 代码,导致程序完全无法运行
- 语义错误:错误使用 FLE API(如参数类型错误、调用不存在的方法)
- 语用错误:API 使用正确但上下文错误(如尝试放入不存在的物品、在无效位置放置实体)
- 规划与控制错误:无法将基本操作连贯地组合成有效策略
关键发现:
- Claude Opus 4.1 的语法错误率为 0%,几乎全部是语用错误(97.7%),说明代码生成能力很强,但难以维持对游戏状态的准确心智模型
- GPT-5 和 Grok 4 的语法错误率分别高达 21% 和 17%,与其在编程基准上的顶尖表现形成反差
- Grok 4 容易陷入"退化调试循环",而 GPT-5 的恢复能力更为出色
"奖励作弊"现象
许多 Agent 并未建造完全自动化的物流链,而是采用半手动策略:用机械臂在箱子间搬运资源作为缓冲。虽然这能暂时满足吞吐量检查,但规避了真正的自动化挑战。FLE 通过强制 60 秒"静置期"来缓解这一问题——Agent 必须让工厂独立运行 60 秒后,才能验证是否真正达标。
未来展望:从 Lab-Play 到 MegaBase
研究者用一张"科学包每分钟产量(SPM)"的路线图展示了 Factorio 的难度光谱:
| 阶段 | SPM | 对应能力 |
|---|---|---|
| 入门 | 10 | 当前前沿模型在 Lab-Play 中的水平 |
| 通关 | 30 | 1 小时 18 分钟通关游戏 |
| 小型工厂 | 100-300 | 稳定自动化生产 |
| 大型工厂 | 1K-3K | 复杂物流与扩展规划 |
| 超大型工厂 | 10K+ | 人类玩家的顶尖水平 |
目前 Agent 仅处于最左侧的"入门"阶段。研究者认为,Factorio 在可预见的未来都不会被"饱和",因为它同时考验长程规划、领域适应、世界建模和空间推理等多项通用能力。
即将开展的研究方向
- 人类基线建立:系统测量人类在不同难度任务上的表现
- 奖励作弊治理:提高吞吐量目标,迫使 Agent 建造真正的自动化工厂
- 开放模式(Open-Play):从空无一物的随机地图开始生存,而非固定资源的实验室环境
- 实时性能评测:在 Factorio 持续运行的条件下测试 Agent,考验响应延迟与决策质量的平衡
- 多 Agent 协作:多个 Agent 在同一世界中分工、竞争或建立市场机制
- Mod 泛化测试:通过 Factorio 丰富的 Mod 生态,测试 Agent 在全新科技树和规则下的适应能力
- 原生计算机使用接口:让 Agent 像人类一样通过键盘、鼠标和视觉界面操作游戏
快速上手
# 1. 安装 FLE
uv add factorio-learning-environment
# 2. 启动 Factorio 服务器集群
fle cluster start
# 3. 运行评测(需配置 API 密钥)
fle eval --config configs/gym_run_config.json项目代码、论文和完整文档均已开源:
- GitHub: factorio-learning-environment
- 论文: arXiv:2503.09617
- 文档: Sphinx 文档
结语
Factorio Learning Environment 为 AI Agent 研究提供了一个兼具深度和扩展性的评测平台。它不像传统考试型基准那样容易被"刷分",而是随着 Agent 能力的提升不断呈现新的挑战。从搭建第一台蒸汽机到管理数千台机器的 MegaBase,这条道路本身就是对通用人工智能能力的最好检验。
如果你对这个项目感兴趣,可以通过 Discord 加入社区。
© 2026 四月 · CC BY-NC-SA 4.0
原文链接:https://aprilzz.com/ai/factorio-learning-environment
相关文章
Nxtscape:开源 Agent 浏览器让 AI 自主浏览网页
BrowserOS(Nxtscape)是一款开源的 Agentic 浏览器,基于 Chromium 分叉构建,让 AI 能够自主浏览网页、提取信息并执行操作,是 ChatGPT Atlas、Perplexity Comet 和 Dia 的隐私优先替代方案。
苹果对 AI 驱动的 Mac 需求感到意外:Q2 财报超出预期
苹果最新财报显示 Mac 销量超预期,AI 工作负载需求成为增长驱动力,M系列芯片的 AI 性能优势正在推动用户换机潮。
微软称 Copilot 付费用户已超 2000 万,且用户真的在使用
微软在季度财报中宣布 M365 Copilot 付费企业用户已超 2000 万,用户使用量和参与度持续增长,打破外界对 AI 工具使用率的质疑。