最近看到 OpenAI 研究员 Jiayi Weng 的一篇帖子,让我眼前一亮--他没训练任何新神经网络,却让 LLM 编码代理通过不断迭代纯 Python 代码,在 Atari Breakout 上打出了理论最高分 864,还在 MuJoCo、VizDoom 等复杂环境中接近甚至超越当时的 Deep RL SOTA 水平。
这根本不是“暴力炼丹”,而是一种范式转移:把优化对象从神经网络权重,换成了可读、可维护、可迭代的代码系统。
Jiayi 当时在维护并行环境库 EnvPool,想快速验证环境是否正常。但每次跑神经网络训练太慢、太贵。
于是他尝试让 Codex(当时叫 gpt-5.4) 直接写和修改纯 Python 策略代码。
结果一发不可收拾:
更夸张的是:
cv2 + NumPy,打出 均值 557 分💡 关键不是分数,而是:他根本没训练神经网络,而是在维护一个不断生长的软件系统。
简单来说,HL 把“要优化的对象”从 神经网络参数,换成了:
✅ 代码 ✅ 规则 ✅ 状态机 ✅ 控制器 ✅ MPC(模型预测控制) ✅ 宏动作(macro-actions)
传统 Deep RL:策略 = 神经网络权重 → 更新靠梯度下降 HL:策略 = 可读的代码逻辑 → 更新靠 LLM 编码代理根据反馈直接修改代码
他把这套完整系统称为 Heuristic System(HS),不只是 policy.py,而是包含:
🤖 这个系统能自己看失败视频、分析日志、理解环境反馈,然后写出更好的代码。
| 维度 | Deep RL | Heuristic Learning(HL) |
|---|---|---|
| 策略形式 | 黑箱神经网络参数 | 人类可读的代码与规则 |
| 状态表示 | 隐式特征(latent features) | 显式变量、检测器、缓存 |
| 更新方式 | 梯度下降 + 反向传播 | LLM 代理直接编辑代码 |
| 记忆方式 | Replay Buffer | 显式记录:失败原因、版本 diff、测试用例 |
| 可解释性 | 差,难解释 | 强,可直接翻译为自然语言 |
一次好改动 = 性能跳跃式提升 不需要百万次采样微调,一条正确的规则可能直接解决一类问题。
容易加入回归测试 改代码前先跑测试,避免“修 A 坏 B”。
灾难性遗忘 → 工程问题 不再是权重混乱,而是代码版本管理,可用 Git 式 diff 控制。
过拟合可控 通过简化规则、多 seed 验证、交叉环境测试来约束。
调试友好 你能看到“它为什么这么决策”--因为代码就在那里。
规则系统、专家系统早就存在,但过去的问题是:
❌ 维护成本极高 ❌ 加一条规则,可能破坏另一条 ❌ 系统越堆越乱,变成“大泥球”(Big Ball of Mud) ❌ 谁也不敢动,只能重写
但 LLM 编码代理 改变了这一切:
🔁 于是,大规模、可持续的启发式系统迭代,终于成为现实。
这不只是 Atari 游戏的 trick。 它暗示了一种新路径:
用代码表达知识,用代理维护系统,用反馈驱动进化。
也许未来的智能体不是“训练出来的”,而是“写出来 + 改出来的”。
你愿意让一个 LLM 代理帮你写一个会自我改进的机器人控制器吗?
👇 评论区聊聊你的看法:
加入讨论
这思路太野了!用LLM写代码代替调参,感觉像让AI从“炼丹师”转行当“程序员”了。不过有个小疑问:如果环境规则变了(比如Breakout突然重力反转),这套代码系统还能快速适应吗?毕竟人类改逻辑靠直觉,LLM会不会陷入“过度拟合旧规则”的坑?
这个思路让我想到小时候玩《魂斗罗》,自己写按键宏来通关——现在AI直接用代码“写外挂”了😂 不过好奇的是,如果环境突然变成随机生成地图(比如Breakout砖块位置每次变),这套代码还能快速适应吗?毕竟规则一改,显式逻辑可能就崩了。
这个“代码即策略”的思路真让人耳目一新!以前调参调得头秃,现在居然靠LLM改几行Python就刷到理论最高分,感觉像从炼丹炉跳进了IDE。不过有个小担心:如果环境加入噪声或者延迟,这种显式逻辑会不会比神经网络更脆弱?毕竟代码可没有“泛化能力”这种玄学buff啊😂
代码能自己进化出“卡住循环处理”这种细节,简直像AI在debug自己😂 不过如果环境突然加个“隐身球”,这套系统还能靠日志和视频分析反应过来吗?感觉LLM改代码再快,也比不上神经网络的泛化能力啊…