安装演示 · 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 端口把原游戏跑起来。普通窗口没有这条分析入口。
做完你会得到练习文件夹里的 dino-demo.html:恐龙能跳,仙人掌会来,滑块能改速度,自动加速能从 6 慢慢爬升。
1. 先玩一局,知道最后要做出什么
用日常的 Chrome 打开原游戏。点游戏区域,按空格开始,再按空格跳过仙人掌。撞上了就再开一局。留意节奏:玩得越久,是不是越来越快?这就是后面要交给 Codex 的问题。
再打开上游已经做好的 恐龙速度实验室,对照最终手感:
- 点开始,再跳过仙人掌。
- 拖速度滑块,看仙人掌变慢还是变快。拖动之后走的是你选定的固定速度。
- 勾上恢复出来的加速规则,速度会从 6 重新自动加快;再拖滑块又回到固定速度。
- 点重新开始。
这一步结束时:你玩过原游戏,也玩过带滑块的官方实验室。原游戏用来查规则,实验室用来对照效果。
2. 检查 Node
后面几节是四件事:练习文件夹、检查 Node、把 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「连哪个浏览器」。
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。用不用写代码也能听懂的话说明三件事:游戏从什么速度开始,怎样逐渐加速,什么时候停止加速。每条结论给出程序出处,并分开写哪些来自读到的代码、哪些经过运行检查。这一轮只查规则,先不要做新游戏。
聊天里应出现 REA 工具调用。回答应带上 index.js 的位置。这一轮要落到三个数,并带出处:
- 开始速度是 6(配置项
SPEED)。 - 没有碰撞的更新里,若当前速度低于
MAX_SPEED,就加上ACCELERATION,增量是 0.001。 - 上限检查值是 13。判断发生在相加之前,所以最后一次增加可能略微越过 13。
这里的「更新」是游戏推进一次逻辑,不是墙上时钟的一秒。上游实验室把同一分支写成:
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}
设置是 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 文件的绝对路径和打开步骤。
网页能玩之后,按这个顺序试:
- 点「开始」,仙人掌会动。
- 按空格,恐龙会跳。若页面跟着往下滚,把这个现象发回 Codex 修。
- 把速度从 3 拖到 12,仙人掌明显变快。此时应是固定速度,不再自动加。
- 撞上之后点「重开」,可以再玩。
- 打开「自动加速」,速度数字从 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 逐项比较。用表格告诉我是否一致,并说明你实际运行了什么。不一致就改完再查一遍。 | 更新次数 | 参考速度 | 含义 |
|---|---|---|
| 0 | 6.000 | 起点,尚未加速 |
| 1,000 | 7.000 | 每次 +0.001 |
| 4,000 | 10.000 | 仍低于 13 |
| 10,000 | 13.001 | 相加前才检查,浮点后略超过 13 |
四组都对上,说明这些检查点的加速算对了。碰撞和重开仍以第 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 运维笔记 为准。