跳到正文
Hacker News· avaer·· 5 天前AI 评分60

RSIGame:带递归自我改进的自主智能体游戏开发框架开源

RSIGame

AI 导读

RSIGame 是一个带递归自我改进的自主智能体游戏开发框架,通过局部探索-诊断-改进循环和全局质量监控循环持续提升生成游戏的质量。

正文 · AI 翻译

RSIGame

试玩。验证。进化。

arXiv HF Daily Papers Project Page Datasets License Python

“诗永远不会完成,只会被放弃。” — Paul Valéry

生成的游戏也是如此。RSIGame 会持续开发它所创造的内容——自主探索、改进并验证游戏,直到进展饱和,然后保留最佳版本,或通过高层级指导开启新的进化阶段。

📰 新闻

  • 2026.10 🔥 RSIGame 登上 Hugging Face Daily Papers(2026 年 10 月 1 日排名第 10)—— HF Daily Papers upvotes 且仍在增长。感谢大家的支持!

rsigame_demo_78s_1080p.mp4

一段 78 秒的旁白演示——完整呈现这一循环,以一款游戏为例,从它的首个可玩版本到开发交付的构建版本,以及它在整个基准测试中的表现。取消静音即可带声音播放。

RSIGame architecture

摘要

大语言模型的最新进展使自动游戏生成日益可行,但要让生成的游戏在可玩版本之外得到可靠改进仍然具有挑战性。朴素的迭代式改进很容易过拟合一小组测试用例,产生脆弱、带有未解决 bug、缺失行为且难以泛化到更广泛玩家交互的游戏。

我们提出 RSIGame,一个具有递归自我改进能力的自主智能体游戏开发框架。RSIGame 将开发组织为互补的局部循环与全局循环。具体而言,局部探索-诊断-改进循环会广泛探索可执行游戏,诊断并优先处理发现的问题,并执行有证据依据的修订,其中不断演进的检查清单会持续积累新的测试与改进指导。全局循环则跟踪整体质量,保留最佳检查点,并检测长周期开发中的饱和或退化。

除了测试时改进,RSIGame 还通过训练将成功的开发经验内化到生成器中。在 140 个 GameCraft-Bench 任务、两个游戏引擎和五个生成器上,RSIGame 在相同开发预算下持续提升游戏质量。值得注意的是,经验内化使 Qwen3.8-27B 在 Godot 上达到 61.38、在 Phaser 上达到 58.53,超过 GPT-5.5 的一次性得分,同时将 Qwen 的生成 token 数减少 11 倍。

开发做了什么

左侧是初始生成结果,右侧是 RSIGame 交付的结果。同一款游戏,同样的脚本化输入,在两个构建版本上回放。

更多内容见项目页面,其中五款游戏可在浏览器中试玩

工作原理

内层循环,每轮执行一次:

探索 一个智能体试玩可执行游戏,并记录实际发生的情况——日志、指标、截图
诊断 这些证据转化为一个具体目标:改进空间最大的地方,而不是猜测
编辑 一个修复智能体针对这一单一目标修改代码或内容
验证 一个独立智能体回放游戏:改动是否生效,之前正常的部分是否被破坏

外层循环,跨轮次运行。全局质量监控器为进展打分,保留全局最佳检查点,并检测饱和——连续三个检查点都没有超过所保留的构建版本。饱和并非终点:来自人类或更强模型的稀疏高层级指导会开启下一阶段。

Development-time scaling
构建预算为 k 轮时交付的平均总分。自由形式的试玩-修改基线在起点处就完成了扎实的基础;而全局质量监控器则防止后期轮次破坏早期的成果。

安装

需要 Linux(或 macOS):循环在进程组中运行其代理,并用 os.killpg 清理它们,而 Windows 没有这个。

git clone https://github.com/WenyiWU0111/RSIGame.git && cd RSIGame
pip install -e .

GameCraft-Bench 提供任务、评分标准和回放工具。它是一个单独的检出,由 patches/ 中的文件打补丁(见 patches/README.txt)并安装到同一环境中:

git clone https://github.com/FreedomIntelligence/gamecraft-bench.git ../gamecraft-bench
git -C ../gamecraft-bench checkout a43347534374df9a0c1a6c001aa9380862783f6d
git -C ../gamecraft-bench apply ../RSIGame/patches/gamecraft-bench_rsigame_scoring.patch
git -C ../gamecraft-bench apply ../RSIGame/patches/gamecraft-bench_openrouter_provider_pin.patch
pip install -e ../gamecraft-bench

修复代理是 OpenGame-RSIGame 中的一个 Node 脚本,后者是我们对 OpenGame 的分支。两个引擎都需要它。上游 OpenGame 没有 agent_repair.ts 或它所依赖的更改。它需要 Node 20+:

git clone https://github.com/WenyiWU0111/OpenGame-RSIGame.git ../OpenGame-RSIGame
cd ../OpenGame-RSIGame && npm install && npm run build && cd -

Godot 4.6.2 用于 Godot 线,以及 GameCraft-Bench 驱动的回放工具:

sudo apt-get install -y --no-install-recommends xvfb xdotool ffmpeg \
    libxcursor1 libxinerama1 libxrandr2 libxi6 libgl1 libegl1
# Godot: https://github.com/godotengine/godot/releases/tag/4.6.2-stable

快速开始

cp .env.example .env            # a model API key, plus the image-generation keys for art rounds
$EDITOR configs/default.toml    # [paths]: bench, bench_godot_bin, opengame_agent_test

rsigame config                  # what a run would actually use, resolved
rsigame check                   # paths, keys and the repair agent, before anything runs

一次运行从 语料库 目录开发一个基础游戏,每个任务一个子目录。表 1 背后的基础游戏在 Hugging Face 上。例如,GPT-5.5 Godot 基础游戏位于 t1/gpt55/base/games.tar.gz:

huggingface-cli download RSIGame/RSIGame-TableArtifacts t1/gpt55/base/games.tar.gz \
    --repo-type dataset --local-dir .
mkdir -p corpus_godot_gpt55 && tar -xzf t1/gpt55/base/games.tar.gz -C corpus_godot_gpt55
rsigame -c paper_godot_gpt develop puzzle-sokoban-dungeon \
    --corpus corpus_godot_gpt55 --root runs/paper_godot_gpt

-c 可以放在子命令之前或之后。rsigame check 值得先运行:缺失的 bench 路径、密钥或修复代理过去会在第 12 轮才暴露,而不是第 0 轮。

配置

三层,每层覆盖上一层:

  1. configs/default.toml — 每个旋钮以及代码本身使用的默认值
  2. -c configs/experiment/<name>.toml — 一次实验改变的内容
  3. 环境变量 — 运行中途的临时覆盖

本项目拥有的每个变量都是 RSIGAME_<SECTION>_<KEY>,与 toml 中的 [section] key 完全匹配。密钥仅从 .env 读取,绝不从 toml 读取。

提前停止

监控器决定哪个构建是目前为止最好的,而饱和停止决定开发何时不再有回报:连续 K 个检查点冠军未变。[monitor] live 选择它如何运行:

会发生什么 一次运行的成本
live = false (默认) 每一轮都运行;scripts/vm_replay.py 之后回放检查点,python -m rsigame.monitor.value_stop 读取运行本应停止的位置 完整预算,每个臂都相同——这是论文报告的内容
live = true 监控器在运行过程中评判每个检查点,并在饱和停止触发时 结束运行 更少的轮次,且各臂不再共享预算

实时监控器从不会在轮次进行中终止它,从不会回滚树,并且如果估计器失败,它会在剩余运行中自行退出——一次故障绝不能看起来像饱和。

一次运行的成本

运行进行的每次模型调用都通过回环代理,因此核算覆盖整个循环——Controller、Explorer、Verifier 和 Monitor,而不仅仅是修复子进程。两个文件落在轮次旁边:

文件 其中内容
all_token_calls.jsonl 每次调用一行:端点、模型、提示/补全/缓存/推理 token、成本
all_token_totals.json 同样的汇总,在运行结束时写入——包括提前停止的运行

代理转发到一个上游并用一个密钥签名,因此它只接管已经指向该上游的端点;任何未被计量的内容(例如监控器指向自己的提供商)都会在运行日志中列出。

评分

两个引擎都由相同的 GameCraft-Bench 评分标准评分,Overall = BUILD × (0.15·Mechanics + 0.35·Depth + 0.15·Visuals + 0.35·Art),通过回放脚本化演示并评判录像。

python -m rsigame.eval.score_game --project <tree> --game <task> --output <dir>   # Godot
scripts/score_checkpoints.py      <run root>                                      # Godot, every Nth round
scripts/score_checkpoints_web.py  <run root>                                      # Phaser, every Nth round

这些引擎在 48k 行代码中约有 900 行不同:构建门禁(Godot 的无头导入与 dist/ 上的 Web 构建检查)、演示如何回放、项目树如何读取,以及修复提示中与引擎相关的那一半。其余部分都是共享的。

布局

src/rsigame/
  loop.py            one development round: explore → diagnose → edit → verify
  project.py         a game project: copy it, build it, import it, read it
  cli.py  config.py  paths.py  preflight.py

  planning/          what a round is for, and what it will work on
  checklist/         what the task asked for, and what is true of it now
  view/              what the build contains, read from the tree
  controller/        how the work is chosen and how the repair is asked for
  evidence/          what was observed, frozen so a later round can cite it
  polish/            the quality pass: the largest remaining bottleneck
  verify/            replay a repair and decide whether it earned its commit
  monitor/           the champion across rounds, and the saturation stop
  eval/              scoring, the proxy estimator, pairwise judging
  agent/             the exploration arm: sessions, probes, the repair agent
  review/            the human review tool used for outer guidance

  data_pipeline/     recorded sessions -> a supervised fine-tuning corpus
  training/          the corpus -> a LoRA adapter, merged for serving
configs/             every knob, with its default and a comment
scripts/             scoring and replay entry points
patches/             the changes this work applies to GameCraft-Bench

数据

基础游戏、运行树、录制和分数不在本仓库中。论文中每个数字所读取的评分产物位于 Hugging Face 上的 RSIGame/RSIGame-TableArtifacts:对于表 1 和表 2 的每一行,包含基础游戏、被评分的构建以及评判者的记录。

即将发布。 基础游戏、运行树、监督语料库和模型权重正在通过我们公司的内部审查,一旦获批将在 RSIGame 下发布。

在此之前,data_pipeline/ 记录了语料库如何从录制中构建,training/ 记录了一个分支如何训练,因此两者都可以被重建,而不必仅凭信任接受。

说明

  • tests/test_no_leaks.py 在每次提交时运行:无凭据、无绝对机器路径、无内部端点、无个人电子邮件、无遗留变量名。
  • tests/test_imports_resolve.py 能解析任意嵌套深度的每个内部导入,包括函数内部的导入——这种导入在测试套件通过时会被隐藏,直到真实运行到达那一行才会暴露。
  • eval/estimator/ 中有两个提示字符串是中文并保持原样:它们被发送给评判者,论文中的数字就是用该措辞产生的。

许可证

Apache-2.0。本工作基于 OpenGame(Apache-2.0)用于 Phaser 系列,并基于 GameCraft-Bench 用于任务和评分框架;参见 NOTICE。此处不再分发两者的任何源代码。

引用

@misc{wu2026rsigame,
  title  = {RSIGame: Autonomous Agentic Game Development with Recursive Self-improvement},
  author = {Wu, Wenyi and Fu, Minghao and You, Jieyu and Zhou, Kun and Liu, Siqi and
            Salvi, Aayush and Lin, Yiheng and Zhang, Ce and Lan, Xiaohan and Zhu, Jiahui and
            Zhong, Yujie and She, Qi and Huang, Biwei},
  year   = {2026},
  eprint = {2609.39045},
  archivePrefix = {arXiv},
  primaryClass  = {cs.CL},
  url    = {https://arxiv.org/abs/2609.39045}
}

来源:Hacker News · github.com