AI 前沿·阅读约 3 分钟·
Factorio 学习环境:让 AI Agent 在游戏中自主学习建造工厂

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 首先寻找水源,放置海上泵、锅炉和蒸汽机,建立基础电力供应:

code
# 寻找水源并建立发电设施
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. 铁矿开采与冶炼

在铁矿脉上放置电动采矿机,连接电炉进行自动化冶炼:

code
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. 组装机器与物流

放置组装机并设定铁齿轮配方,连接电力和机械臂:

code
# 放置组装机并设置配方
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 在连接物流时遇到了障碍——箱子挡住了传送带。它识别出问题,移除箱子,重新用传送带连接冶炼炉和组装机:

code
# 移除阻挡传送带的箱子
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游戏世界中所有实体及其属性
inventoryAgent 当前持有的物品清单
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 的弱点在哪里?

研究者将失败模式分为四类:

  1. 语法错误:生成无效 Python 代码,导致程序完全无法运行
  2. 语义错误:错误使用 FLE API(如参数类型错误、调用不存在的方法)
  3. 语用错误:API 使用正确但上下文错误(如尝试放入不存在的物品、在无效位置放置实体)
  4. 规划与控制错误:无法将基本操作连贯地组合成有效策略

关键发现

  • 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 中的水平
通关301 小时 18 分钟通关游戏
小型工厂100-300稳定自动化生产
大型工厂1K-3K复杂物流与扩展规划
超大型工厂10K+人类玩家的顶尖水平

目前 Agent 仅处于最左侧的"入门"阶段。研究者认为,Factorio 在可预见的未来都不会被"饱和",因为它同时考验长程规划、领域适应、世界建模和空间推理等多项通用能力。

即将开展的研究方向

  • 人类基线建立:系统测量人类在不同难度任务上的表现
  • 奖励作弊治理:提高吞吐量目标,迫使 Agent 建造真正的自动化工厂
  • 开放模式(Open-Play):从空无一物的随机地图开始生存,而非固定资源的实验室环境
  • 实时性能评测:在 Factorio 持续运行的条件下测试 Agent,考验响应延迟与决策质量的平衡
  • 多 Agent 协作:多个 Agent 在同一世界中分工、竞争或建立市场机制
  • Mod 泛化测试:通过 Factorio 丰富的 Mod 生态,测试 Agent 在全新科技树和规则下的适应能力
  • 原生计算机使用接口:让 Agent 像人类一样通过键盘、鼠标和视觉界面操作游戏

快速上手

code
# 1. 安装 FLE
uv add factorio-learning-environment
 
# 2. 启动 Factorio 服务器集群
fle cluster start
 
# 3. 运行评测(需配置 API 密钥)
fle eval --config configs/gym_run_config.json

项目代码、论文和完整文档均已开源:

结语

Factorio Learning Environment 为 AI Agent 研究提供了一个兼具深度和扩展性的评测平台。它不像传统考试型基准那样容易被"刷分",而是随着 Agent 能力的提升不断呈现新的挑战。从搭建第一台蒸汽机到管理数千台机器的 MegaBase,这条道路本身就是对通用人工智能能力的最好检验。

如果你对这个项目感兴趣,可以通过 Discord 加入社区。

分享到
微博Twitter

© 2026 四月 · CC BY-NC-SA 4.0

原文链接:https://aprilzz.com/ai/factorio-learning-environment