rea.run

← 安装

安装演示 · Codex

跟练:装上 REA,读懂恐龙为什么越来越快

这是 rea.run 的一条完整安装轨。版本钉死 [email protected]。你负责提问和试玩,Codex 负责解释和写文件,REA 负责读正在运行的脚本,Chrome 负责把原游戏跑起来。

目标是公开页面 wayou 的 t-rex-runner (Chromium 离线恐龙的浏览器移植,Chromium Authors,BSD)。只分析这个公开页,或你有权检查的软件。 合规

先分清四个角色

你

建练习文件夹,复制命令,打开结果,试按钮和滑块。

Codex

读 REA 交回的脚本,用普通话解释规则,写出单文件小游戏。

REA 6.4.0

经 MCP 连上本机调试端口,列出页面并读 index.js。不代替你批准 setup。

Chrome

用独立用户目录和 9222 端口把原游戏跑起来。普通窗口没有这条分析入口。

四个角色:你提问并试玩,Codex 解释规则并写新游戏,REA 读取游戏背后的程序,Chrome 运行原游戏。调试地址是 http://127.0.0.1:9222。

做完你会得到练习文件夹里的 dino-demo.html:恐龙能跳,仙人掌会来,滑块能改速度,自动加速能从 6 慢慢爬升。

1. 先玩一局,知道最后要做出什么

用日常的 Chrome 打开原游戏。点游戏区域,按空格开始,再按空格跳过仙人掌。撞上了就再开一局。留意节奏:玩得越久,是不是越来越快?这就是后面要交给 Codex 的问题。

用 Chrome 打开的原恐龙游戏。点击游戏区域,按空格开始,再按空格跳过仙人掌。

再打开上游已经做好的 恐龙速度实验室,对照最终手感:

  • 点开始,再跳过仙人掌。
  • 拖速度滑块,看仙人掌变慢还是变快。拖动之后走的是你选定的固定速度。
  • 勾上恢复出来的加速规则,速度会从 6 重新自动加快;再拖滑块又回到固定速度。
  • 点重新开始。
官方恐龙实验室。依次点 Play 和 Jump,拖动 Speed 滑块,再点 Restart。勾选恢复出来的加速规则会从 6 重新加速。

这一步结束时:你玩过原游戏,也玩过带滑块的官方实验室。原游戏用来查规则,实验室用来对照效果。

2. 检查 Node

后面几节是四件事:练习文件夹、检查 Node、把 REA 接到 Codex,然后开一个调试用的 Chrome。

四件准备:在 Codex 打开练习文件夹,在终端检查 node 和 npm,接入 REA 后重开 Codex,再用终端打开调试 Chrome。

在 Codex 里打开一个本地文件夹,后面的提问和 dino-demo.html 都留在这里。桌面新建 rea-dino-practice 即可。

[email protected] 的 engines 是 ^22.19.0 || ^24.11.0 || >=26.0.0。本轨推荐 24.x,且不低于 24.11。22.19+ 和 26+ 也能过检查。比这旧的 Node,setup 会直接停住。

node --version
npm --version

成功:两行版本号。例如 v24.11.0 或更高的 24,以及任意能用的 npm。失败:command not found,或版本低于上面三条线。到 Node.js 下载页装 24 的当前 LTS,重新打开终端再查一次。

不在范围内时,--dry-run --json 会返回 "status":"needs_human",plannedActions 为空,remediation 会点名这三条 Node 线。先换 Node,不要接着执行 --yes。

3. 把 REA 接到 Codex

先只看计划。这条命令会下载 6.4.0,打印 JSON,不写 Codex 配置。

npx -y [email protected] setup --client codex --dry-run --json

支持的 Node 上,状态应是 "status":"planned"。appliedActions 仍为空。plannedActions 里应能看到针对 Codex 的客户端登记,以及配套 skill。MCP 是 Codex 调用 REA 的连接;skill 是配套用法说明。

JSON 看不懂就整段贴给 Codex,发:

请用普通话解释这份 REA setup JSON。确认它准备给 Codex 登记 REA 的 MCP,并安装配套 skill。指出失败项。Ghidra、Hopper、IDA 没装可以忽略,这次只做公开网页上的恐龙练习。不要执行会改配置的命令,除非我另外批准。

这次练习是网页脚本,不需要 Ghidra、Hopper 或 IDA。计划里如果只是说这些引擎没配置,可以忽略。不要加 --install-hopper。

计划可用之后,再真正写入:

npx -y [email protected] setup --client codex --yes --json

可以继续:"status":"ready"。或者状态是 needs_human,但 remediation 只说 Hopper 对非 Hopper 分析是可选的——Codex 的登记和 skill 已经写上,不要为此再装 Hopper。 先停:非零退出,或 remediation 在说 Node、目录权限、skill 写不进去、Codex 配置失败。把 JSON 交给 Codex,修完再重跑。

然后彻底退出 Codex 再打开(macOS 用 Command + Q,不要只关聊天窗口),回到 rea-dino-practice 和原来的聊天。这一步是为了加载刚登记的 MCP。

登记形状以上游为准:docs/installation.md。客户端矩阵见 MCP 客户端。

4. 用调试端口打开恐龙页

回到终端,启动一个独立配置目录的 Chrome,只监听本机 9222。页面地址告诉 Codex「查哪一页」;http://127.0.0.1:9222 告诉 REA「连哪个浏览器」。

终端启动监听 127.0.0.1:9222 的 Chrome,新窗口里是恐龙游戏。普通窗口没有这个调试入口。

macOS

REA_BROWSER_DIR=$(mktemp -d /tmp/rea-dino-browser.XXXXXX)
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --remote-debugging-address=127.0.0.1 \
  --remote-debugging-port=9222 \
  --user-data-dir="$REA_BROWSER_DIR" \
  --no-first-run --no-default-browser-check \
  "https://wayou.github.io/t-rex-runner/"

Linux

可执行文件不在 google-chrome 时,改成 google-chrome-stable 或你本机的 Chromium 路径。上游浏览器指南用的是同一组调试参数。

REA_BROWSER_DIR=$(mktemp -d /tmp/rea-dino-browser.XXXXXX)
google-chrome \
  --remote-debugging-address=127.0.0.1 \
  --remote-debugging-port=9222 \
  --user-data-dir="$REA_BROWSER_DIR" \
  --no-first-run --no-default-browser-check \
  "https://wayou.github.io/t-rex-runner/"

Windows(PowerShell)

Chrome 不在 Program Files 时,把 chrome.exe 换成实际路径。

$dir = Join-Path $env:TEMP ("rea-dino-" + [guid]::NewGuid().ToString("N").Substring(0,8))
New-Item -ItemType Directory -Force -Path $dir | Out-Null
& "$env:ProgramFiles\Google\Chrome\Application\chrome.exe" `
  --remote-debugging-address=127.0.0.1 `
  --remote-debugging-port=9222 `
  --user-data-dir="$dir" `
  --no-first-run --no-default-browser-check `
  "https://wayou.github.io/t-rex-runner/"

成功:新出现一个 Chrome 窗口,里面是恐龙游戏。保留这个窗口和启动它的终端。普通 Chrome 窗口没有 9222 这条入口。连接说明见 上游浏览器指南与 browser-observation.md。

5. 问 Codex:为什么越来越快

回到同一个 Codex 聊天,整段发送。英文工具名是给 Codex 调用 MCP 的,不用改。

使用 REA 调查这个恐龙页:https://wayou.github.io/t-rex-runner/。分析用的 Chrome 已经开着,调试地址是 http://127.0.0.1:9222。请先调用 list_browser_targets 找到这个页面,再调用 inspect_web_page,把 include_script_sources 打开,读取它加载的 index.js。用不用写代码也能听懂的话说明三件事:游戏从什么速度开始,怎样逐渐加速,什么时候停止加速。每条结论给出程序出处,并分开写哪些来自读到的代码、哪些经过运行检查。这一轮只查规则,先不要做新游戏。
发给 Codex 的调查提示:用 REA 读取 index.js。三条结果是起始速度 6、每次增加 0.001、上限检查 13。

聊天里应出现 REA 工具调用。回答应带上 index.js 的位置。这一轮要落到三个数,并带出处:

  • 开始速度是 6(配置项 SPEED)。
  • 没有碰撞的更新里,若当前速度低于 MAX_SPEED,就加上 ACCELERATION,增量是 0.001。
  • 上限检查值是 13。判断发生在相加之前,所以最后一次增加可能略微越过 13。

这里的「更新」是游戏推进一次逻辑,不是墙上时钟的一秒。上游实验室把同一分支写成:

if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}
原游戏 index.js 里的加速判断:当前速度低于上限时再加上加速度。先判断、后相加。

设置是 SPEED: 6、ACCELERATION: 0.001、MAX_SPEED: 13。若回答只说「会变快」,或整段看不懂,再发:

请把初始速度、加速方式、停止条件分成三条,用普通话解释。每条都附上你从 index.js 的哪里读到的。

可以进入下一步:三条规则都有 index.js 出处,并且分得清「代码里读到的」和「跑过的」。代码长什么样先不用自己核对。

6. 做一个带速度滑块的版本

继续用同一个聊天,这样 Codex 还拿着刚才的规则。

根据刚才用 REA 读到的加速规则,在当前练习文件夹里创建 dino-demo.html,做一个浏览器能直接打开的恐龙小游戏。全部放在一个文件里,不要再装包,也不要下载素材。恐龙能跳,仙人掌从右边过来。提供中文按钮「开始」「跳跃」「重开」,空格也能跳,撞上后显示游戏结束。加一个范围 2 到 18 的速度滑块,旁边显示当前速度。拖动滑块时改用选定的固定速度。再提供「自动加速」选项,重新打开时从 6 开始。自动加速保留原游戏在没有碰撞的更新里的判断:speed < 13 时增加 0.001。新游戏每秒固定做 60 次逻辑更新。画面、跳跃和碰撞由你新写,并注明哪些采用了原游戏规则、哪些是新写的。写完后自己检查页面能否运行,告诉我文件的绝对路径,以及用 Chrome 打开的具体步骤。不要让我手改代码。

写完后,在练习文件夹找到 dino-demo.html,用 Chrome 打开。找不到,或打开后只是源码文本,就告诉 Codex 文件的绝对路径和打开步骤。

网页能玩之后,按这个顺序试:

  1. 点「开始」,仙人掌会动。
  2. 按空格,恐龙会跳。若页面跟着往下滚,把这个现象发回 Codex 修。
  3. 把速度从 3 拖到 12,仙人掌明显变快。此时应是固定速度,不再自动加。
  4. 撞上之后点「重开」,可以再玩。
  5. 打开「自动加速」,速度数字从 6 开始慢慢涨。
这次做出的单文件游戏,撞上仙人掌后暂停。按钮是开始、跳跃、重开,下面有速度滑块和自动加速。

画面不必和 官方实验室 长得一样。按钮、跳跃、滑块、重开、自动加速这几项通了,就是这一步的结果。自动加速用的函数应等价于:

function advanceSpeed(speed) {
  return speed < 13 ? speed + 0.001 : speed;
}

滑块提供固定速度。绘图、跳跃和矩形碰撞是新写的;模拟每秒 60 次逻辑更新。

7. 能玩之后,再核对有没有算对

试玩证明按钮可用。这一步证明加速函数和原规则在四个检查点上一致。不用真的玩到第 10000 次更新。

请检查这次生成的 dino-demo.html 里、实际运行时用到的加速函数。从速度 6 开始,排除碰撞,分别计算 0、1000、4000、10000 次更新后的速度。结果保留三位小数,与 6.000、7.000、10.000、13.001 逐项比较。用表格告诉我是否一致,并说明你实际运行了什么。不一致就改完再查一遍。
更新次数参考速度含义
06.000起点,尚未加速
1,0007.000每次 +0.001
4,00010.000仍低于 13
10,00013.001相加前才检查,浮点后略超过 13
加速核对表。0、1000、4000、10000 次更新后的速度是 6.000、7.000、10.000、13.001,四行都一致。

四组都对上,说明这些检查点的加速算对了。碰撞和重开仍以第 6 步的试玩为准。两项都过,这条跟练就完成了。关掉调试用的 Chrome,练习文件夹留着。

本页重放

浏览器里用同一条 speed < 13 ? speed + 0.001 : speed 从 6 加起。不连接 REA,也不代替 Codex 对你那份 HTML 的检查。

卡住了

把出错前的操作和原文贴给 Codex:

我在跟练 rea.run 的 Codex 恐龙安装演示,钉的是 [email protected]。刚才在【终端 / Codex / Chrome】做了【具体操作】,出现下面的输出:【粘贴】。请先解释原因,再给我下一步该在哪个窗口做、成功时会看到什么。这次只分析公开的恐龙页。
  • command not found:缺 Node 或 npm。装好 24.11+ 后新开一个终端。
  • setup 是 needs_human 且在说 Node:版本不在 ^22.19.0 || ^24.11.0 || >=26.0.0。换版本再 dry-run。
  • 没有新 Chrome 窗口:把终端输出交给 Codex,并说明 Chrome 是否已安装、可执行文件路径对不对。
  • 连接被拒绝,或找不到游戏:确认调试 Chrome 还开着,里面已经是 t-rex-runner,地址仍是 http://127.0.0.1:9222。
  • 9222 被占用:换一个本机端口,启动命令和发给 Codex 的地址一起改,然后重启那个 Chrome。
  • Codex 说没有 REA 工具:确认 --yes 已经写过配置,并且 Codex 是完全退出后重新打开的。
  • 游戏打开了但按钮没反应:说清点了什么、出现了什么,让 Codex 改文件后再打开。

跑通之后还能看什么

同一条浏览器连接可以接着看上游的 Notes 导出:点 Export notes,问点击之后取了什么数据、怎样生成下载。步骤在 浏览器指南,示例页是 notes-web。

想看别的已授权案例,去 案例墙。安装参数和引擎边界仍以 安装指南 与 6.4.0 运维笔记 为准。

上游