乐于分享
好东西不私藏

OpenAI翁家翌:梯度之外,下一个AI训练范式有着落了?

OpenAI翁家翌:梯度之外,下一个AI训练范式有着落了?

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

点击进入—>【顶会/顶刊】投稿交流群

添加微信号:CVer2233,小助手拉你进群!

扫描下方二维码,加入CVer学术星球可以获得最新顶会/顶刊上的论文ideaCV从入门到精通资料及应用!发论文/搞科研/涨薪,强烈推荐!

转载自:机器之心

如果有一天,一段由 AI 编程工具写的纯粹的程序代码 —— 没有神经网络,没有梯度下降,没有任何「训练」—— 却在经典游戏里打出了理论最高分,在机器人控制里跑出了媲美 Deep RL 的成绩,你会怎么解释这件事?

这不是科幻设定,而是 OpenAI 研究工程师翁家翌(Jiayi Weng)最近在一篇博客里记录的真实实验。他本来只是想给游戏测试写几条便宜的小规则,结果弄出了一套让他自己都感到震撼的东西。他由此重新审视了一种长期被低估的方法 ——heuristics,认为它可能正在迎来属于自己的时代。

手写规则本身不是新东西。专家系统几十年前就有了,问题也是老问题:今天加一条规则修好 A,明天发现 B 坏了,后天再打补丁,最后没人敢动了。规模一大,维护成本就把人压垮。翁家翌的核心观察是:coding agent 改变的正是这条成本曲线。当 agent 能够自动读日志、看回放、改代码、跑测试、记录实验,一套手写规则系统就第一次有了持续生长的可能 —— 原来只能当补丁用的东西,现在开始值得长期拥有了。

这也直接触碰了 Continual Learning 的老问题。神经网络的灾难性遗忘,根源在于旧能力只能靠参数隐式保存,新数据一来就容易被冲掉。而在他提出的 Heuristic Learning 框架里,旧能力可以直接写进回归测试、固定 seed 的回放和明确的失败记录,历史是显式的、可读的、可重构的。这不是解决了遗忘问题,而是把「防遗忘」变成了一个更工程化的问题来处理。

当然,翁家翌也指出了这套方法的边界:代码的表达能力终究有限,复杂感知和长程泛化还是神经网络的主场。他认为更有前景的方向是两者结合 —— 用 Heuristic System 快速处理在线数据、积累可回归的经验,再周期性地把这些经验内化进神经网络。

他把这个愿景总结成一句话:凡是可以被持续迭代的,都开始能被解决。这和之前几轮范式转移的逻辑一脉相承 —— 从 pretrain 到 RLHF,再到 large-scale RL,每一步都是把「可验证」的边界往外推了一圈。Heuristic Learning,或许是下一圈。

翁家翌是 OpenAI 后训练(Post-training)RL 基础设施的核心工程师之一。2022 年加入 OpenAI 时,他的面试官正是 John Schulman。此后,他主导搭建了 OpenAI 后训练阶段的核心 RL 基础设施,这套系统支撑着 GPT 系列在 RLHF、对齐与推理优化阶段的训练迭代。

以下是翁家翌的博客《Learning Beyond Gradients》原文,机器之心经授权转载:

原文链接:https://trinkle23897.github.io/learning-beyond-gradients/#zh

Continual Learning 一直难以被解决,主要卡在神经网络的灾难性遗忘:学了新东西,旧能力就容易被冲掉。那如果不把目光只放在神经网络权重上,还有没有其他解决方案?

随着 LLM agent 变强,coding 的速度和质量都在提升。但我最近更在意的是另一个现象:coding agent 不训练新网络、不更新权重,只是持续看失败、改代码、加测试、看回放,也能把一套程序系统越养越强。

这让我重新看待 heuristic,也就是手写规则和程序策略。过去很多 heuristic 不是没用,而是没人养得起;coding agent 改变的是这条维护成本曲线。于是,过去只能当一次性补丁的规则,开始变成值得长期拥有的代码。

凡是可以被持续迭代的,都开始能被解决。这也是 Continual Learning 一直想要解决的问题。它会是既 Pretrain、RLHF、Large-scale RL/RLVR 之后的下一个范式吗?

异常现象

在业余时间维护 EnvPool 的时候,我想用一个便宜一点的策略来测试游戏环境正确性,不然每次 CI 都跑神经网络,很费测试资源。

一开始的问题只是:

能不能写一些便宜、可复现、比随机强很多的 heuristic,专门把环境跑到有信息量的状态?

我试着使用 codex(gpt-5.4)写一个基于规则的版本,完全不依赖 NN。没想到弄了几下,结果比我预期离谱很多:

  • 一个打砖块游戏 Atari Breakout,策略从 387 -> 507 -> 839 -> 864,最后打到理论最高分;

  • 一个仿真四足机器人关节控制任务 MuJoCo Ant,纯 Python 程序策略先学会节律步态,再接上短视窗模型规划,最后上了 6000+ 分,进入常见 Deep RL 结果的量级;

  • 一个仿真机器人跑步任务 MuJoCo HalfCheetah,靠可解释的步态 / 姿态规则和在线规划,迭代到 5 局复测均值 11836.7,也进入了常见 Deep RL 结果的量级;

  • 一整套 Atari 57 个游戏,一共跑了 57 个游戏 x 2 种输入 x 3 次运行 = 342 条 coding-agent 搜索轨迹,表现有好有坏;但在固定环境交互步数下,中位数 HNS 游戏得分在 1M 环境步附近已经远高于 PPO 这类 Deep RL 算法的曲线。

这些结果第一次见到十分震撼,更让我在意的是:codex 没有训练神经网络,它在维护一套还能继续生长的软件系统。

Breakout 策略到最后远远超过一句 “球在左边就往左”。这个策略长出来的是动作探测、状态读取、球和挡板检测、落点预测、卡住循环检测、回归测试、视频回放和实验记录。Ant 策略也超过一条步态公式,里面有节律控制、姿态反馈、接触信息、短视窗模型展开。

于是我意识到有必要在这里创造一个新的概念:这里被更新的对象已经不只是策略函数,而是一套带有记忆、反馈入口和回归机制的软件系统。

Heuristic Learning

在接着和 codex 交流了一阵子之后,我想把这个过程定义为 Heuristic Learning(HL):

  • HL 的主体由程序代码构成;

  • 它和今天常见的 Deep RL 实践共享状态、动作、反馈、更新的闭环;但更新对象从神经网络参数换成了软件结构;

  • 它的反馈由 coding agent 消化,可以来自环境 reward、testcase、日志、视频、回放、人类反馈;

  • 它的更新不走反向传播;coding agent 直接修改 policy、状态检测器、测试、配置或者 memory;

  • HL 是学习和更新的过程;被 HL 长期维护的对象称之为 Heuristic System(HS);

  • HS 超过一个孤立的 policy.py:它至少包含程序策略、状态表示、反馈入口、实验记录、回放或测试、memory,以及由 coding agent 执行的更新机制。单条 rule 不够,规则、反馈、历史和下一轮更新全部接起来,才称之为 HS。

列一个表就是:

Heuristic Learning 相比 Deep RL 有很多良好的性质:

  • 可解释性(Explainability):神经网络很难解释,HL 的代码策略可以翻译成人话;

  • 样本效率(Sample Efficiency):一次有效代码更新可以直接跳到新策略,不用调学习率慢慢爬;

  • 可回归 / 可验证(Regression-testable):旧能力可以变成 test、replay、golden case;

  • 可约束过拟合:代码 heuristic 也会过拟合到 seed、环境细节或测试漏洞,但简化、回归和多 seed 检查可以形成一种工程正则化;

  • 可以避免一部分灾难性遗忘(Catastrophic Forgetting):旧能力不用全靠模型自己记住,可以被写进 rule set 和测试里。

重点在于,有一类原来因为维护成本太高而不值得写的 heuristic,现在突然可能值得长期拥有了。

为什么 Heuristic Learning 以前没发展起来

如果说 HL 的前身是专家系统、规则系统,那么在 coding agent 没发展起来之前,这玩意的维护成本十分高昂。

人类手工维护 heuristic 很容易变成这样:

今天加一条规则修 case A。明天发现 case B 被修坏了。后天再加一个 if大后天没人敢删了。

问题不在 heuristic 没用,在没人力能养得起。之前人力维护专家系统,有点像工业革命前手工纺纱:规模一大,稳定性和维护成本就压死人。纺织机改变的是产能曲线;coding agent 改变的是 heuristic 的维护曲线。它像一条可以输送智力的营养管道,可以持续浇灌一个 HS,让它自己迭代进化。

目前常见的 agentic 反馈闭环主要是:

feature request -> agent 写代码 -> 过 test -> 人类给一点反馈 -> 下一轮 patch

但随着大模型能力提升,人类介入次数会逐渐变少,这个反馈循环就有机会在某些边界明确的系统里自动闭合,从而能够实现自动化用 HL 批量生产 HS:

环境反馈 / 测试失败 / 日志异常-> coding agent 读 context-> 修改 policy /test/memory-> 重新运行-> 把结果写回 trials 和 summary-> 下一轮继续

Heuristic Learning 怎么做 Continual Learning

神经网络里的灾难性遗忘,是新数据把参数往新任务推,旧能力被覆盖掉。HL 也会忘,例如:

  • 新规则修好了一个失败模式,同时破坏旧场景;

  • 新 memory 把 agent 反复带到错误方向;

  • 新测试太窄,导致策略学会钻空子;

  • 新 patch 改了公共接口,旧调用方悄悄坏掉;

  • 规则越堆越多,最后 agent 自己也维护不动。

所以 HL 不会自动解决 Continual Learning。它把 “防遗忘” 变成了更工程化的东西。

在 HL 里,旧能力可以被固化成:

  • 回归测试;

  • 固定 seed 的 replay;

  • golden trace;

  • 失败视频;

  • 版本 diff;

  • 明确写下来的失败方向。

与神经网络把经验压进权重完全不一样:HL 的历史是显式、可读、可删、可重构的。它负责 “记住”,也负责把一堆局部补丁压缩成更简单的表示。

(只增长不压缩的 HS,最后一定会变成屎山代码。它会 “记住” 很多东西,但记住的方式太差,导致谁也不敢动,从而腐化)

所以一个健康的 HS 至少需要两个操作维持:

  1. 吸收反馈:把新失败、新日志、新 reward 写回系统。

  2. 压缩历史:把一堆局部补丁折回更简单、更可维护的表示。

这就把 Continual Learning 从 “怎么更新参数” 变成了 “怎么维护一个持续吸收反馈的软件系统”。

Heuristic System 的复杂度

此处定义 耦合复杂度 为 coding agent 能维护多复杂的策略来支持 HL。展开说,就是一次更新必须同时照顾多少相互牵连的状态、规则、测试、反馈和历史。

这个量不能按代码行数算。一个 500 行策略,如果模块边界清楚、测试完整、状态可复现,可能很好维护;一个 80 行策略,如果每行都互相牵制、没有日志、没有回放,也可能是个定时炸弹,一碰就崩。

朝代码一侧看,耦合复杂度受模块边界、接口稳定性、测试覆盖、日志观测性、回滚成本和状态可复现性限制。好的模块化会把全局耦合切成局部耦合,从而降低耦合复杂度;好的测试能让 coding agent 不必每次在脑子里模拟整个系统。

朝 coding agent 一侧看,能接受多少耦合复杂度,取决于模型能力、上下文长度、memory 质量、工具质量、整体迭代速度。更强的模型能够同时处理更多相互作用;更长的上下文能让它少丢线索;memory 可以把跨轮次迭代经验留下;搜索、定位、运行、回放这些工具能够把一部分认知负担搬到外部。

把这两侧放一起,可以得到一组判断:

  • 反馈越清楚,单位 agent 智力能维护的耦合复杂度越高;

  • 同等工具和反馈下,模型能力越强,能处理的耦合复杂度越高;

  • 模块化、测试、回放会把一部分耦合复杂度转移到环境里;

  • memory 和工具会提高 agent 的有效上下文;

  • 只增长不压缩的 HS 会让耦合复杂度持续上升,直到超过维护能力。

Breakout 策略能走到 864 的满分,有规则简单的一面,也有失败可以视频回放、局部复现、回归验证的一面。Ant 复杂得多,但它可以拆成节律、姿态、接触、residual MPC 这些模块。

Montezuma 是一个很好的反例。Atari57 里有一条无人值守的记录到了 400 分,但那条路线由 86 个宏动作组成,基本是开环执行。这个例子说明,有些环境需要更强的程序形态,比如可组合宏动作、可恢复搜索状态、长期 memory。普通 if else 不能解决所有问题。

下一个范式?

目前的范式转移是从最开始的 pretrain,到 RLHF,再变成 large-scale RL / RLVR。凡是可以验证的,都开始能被解决。

Online Learning 和 Continual Learning 可以被当前 RLVR 生产出来的 agentic coding,通过 Heuristic Learning 的方式部分解决。从这个愿景出发,我愿称其为下一个范式:凡是可以被持续迭代的,都开始能被解决。

为什么说是部分解决?因为 Heuristic Learning 并不能做所有神经网络能做的事情。它受制于代码的表达能力,比如复杂感知和长程泛化。比如在我目前认知范围内,我想不出有个 agent 能搓出一个纯 Python code、不用神经网络去解决 ImageNet。

于是问题在于如何结合神经网络和 HL,同时解决 Online Learning 和 Continual Learning。最有希望的方向是:用 HL 处理在线数据快速生成在线经验,把在线经验内化成可训练、可回归、可筛选的数据,再周期性更新神经网络。

以机器人为例,如果套用 System 1/2 的术语,一个可能的分工形态如下:

  • 专用、浅层 NN:当作 System 1 的一部分,快、便宜,负责感知、分类、物体状态估计;

  • HL:也可以当作 System 1 的一部分,负责最新数据处理、规则、测试、回放、memory、安全边界、局部恢复;

  • LLM agent:作为 System 2,负责给 HL 提供反馈、改进数据,并周期性提取 HL 生成的数据来更新自身。

这套东西可以继续拆成层级结构:

关节级 HL -> 肢体级 HL -> 全身平衡 HL -> 任务级 HL

低层负责安全和低延迟控制,中层负责步态和接触,高层负责任务、恢复和长期记忆。coding agent 不一定直接 “懂得走路”,它更像插进系统里的更新管线:持续把失败视频、传感器流、仿真结果、测试结果喂进系统,再把反馈改写成代码、参数、保护规则和 memory。

LLM agent 可以共享,也可以相互隔离在机器人体内自行学习。这里的问题是:HL 提供的特定数据分布如何才能不让 LLM 的周期性更新崩溃。这是一个经典的 post-training 问题,已经有很多成熟经验,由于某些原因在这里就不展开了。

Agentic coding 改变了写代码速度,也改写了哪些代码值得被长期拥有。

过去很多 heuristic 看起来没有前途,原因常常落在维护成本上;它们本身未必太弱。coding agent 改变的是这条维护成本曲线。规则、测试、日志、memory 和补丁原来只是散落的工程材料,现在开始可以组成一个会持续更新的 Heuristic System,能够真正解决 Online Learning 和 Continual Learning 所未能解决的问题。

欢迎来到下一个范式!

附录:实验过程和复现入口

完整 artifact repo 在 https://github.com/Trinkle23897/learning-beyond-gradients。下面命令默认你已经 clone 了这个 repo,并在仓库根目录运行;GitHub Pages 只展示文章和必要静态文件,完整脚本、CSV、视频和实验材料都在 repo 里。

以下实验中 codex 模型版本均为 gpt-5.4,最新版本模型尚未测试。以下实验报告均由 codex 自行攥写。

A.1 实验过程简述

一开始我直接问 Codex:“写一个能解决 Breakout 的策略。” 效果一般。低分没有解释力:它不知道是动作语义错了、状态检测错了、评测设置错了,还是策略结构本身不行。后来我把任务改成另一种形式:别只交一个 policy.py,要维护完整闭环。

闭环大概长这样:

探测动作和观测-> 写状态检测器-> 写策略-> 跑完整回合-> 记录 trials.jsonl 和 summary.csv-> 生成视频或曲线-> 看失败模式-> 改策略-> 简化代码并做回归

到这里,任务的形状已经变了。最后产出的东西从一个策略文件,变成了一套还能继续改的实验系统。它有探测器,有记录,有回放,有失败模式,也有下一轮该怎么改的线索。

Breakout

相关 artifact:heuristic_breakout.py、heuristic_breakout_trials.jsonl、heuristic_breakout_trials_summary.csv。

Breakout 表面上是几何问题:球在哪里,挡板在哪里,球撞墙以后会落到哪里。麻烦在后半段。策略可以一直接到球,却不再打到新砖,分数卡在一个稳定循环里。

Codex 第一轮先确认动作空间和观测形状,再从 RGB 画面里找挡板、球、砖块颜色,然后用这些图像标签去扫 128 个 RAM 字节。早期实验记录大概是这样:

trial_name                 score   cumulative_env_steps   noteshape_action_probe          -      32                     inspect obs/info/actionram_byte_corr_probe_v1      -      5,032                  correlate RAM bytesram_fit_action_probe_v2     -      9,532                  action 2=right, 3=leftbaseline_v0                99      16,303                 initial RAM intercepttunnel0_v1                387      43,303                 no tunnel offset

387 是第一个很容易骗过人的局部高分。策略已经能稳定接球,但它把球送进了一个周期:不会死,也不会继续清砖。人手写到这里,很容易继续调 “接球精度”。Codex 看了视频和最后几十步轨迹后,把问题定位到球路缺少扰动。

已关注
关注
重播 分享

视频 artifact:heuristic_breakout_score387_tunnel0_render210x160.mp4。

第一个有效机制是打破循环:如果连续很久没有奖励,就在预测落点上周期性加偏移,把球从局部循环里打出去。这一改把分数从 387 推到 507。

后来又遇到另一个失败模式:高速低位球如果按普通截距追,挡板会被过度前视带偏。Codex 加了 fast_low_ball_lead_steps=3,分数从 507 跳到 839。

从 839 到 864,更像是在照料一个已经变复杂的系统。Codex 试了死区、发球偏移、卡住偏移、砖块平衡偏置、前视步数,很多方向都没用。最后起作用的是一个后期条件:分数超过第一面墙以后,卡住偏移只在离挡板还远的时候生效;快接球时把偏移逐步收掉,不然最后几块砖阶段会把挡板带偏。同时它加了一个很小的挡板漂移补偿,用来补动作和挡板位置之间的一步延迟。

已关注
关注
重播 分享

视频 artifact:heuristic_breakout_ci3985ae2_score864_render210x160.mp4。

最终 RAM 默认配置三局验证是 864 / 864 / 864。后面 Codex 又把同一套几何控制迁移回纯图像输入:不用 RAM,只用 RGB 分割找挡板、球和砖块平衡。纯图像版本先是 310,然后 428,最后把后期 “卡住偏移逐步收掉” 的阈值放低到全程生效,7 个策略本地回合后第一次到 864,对应 14,504 个策略本地环境步。

这里不能写成 “纯图像从零 14.5K 步到满分”。真实过程是:Codex 先在 RAM 版本里摸出了几何控制、打破循环、后期收偏移这些结构;等结构稳定以后,再把状态读取层从 RAM 换成 RGB 检测器。纯图像的 14.5K 是迁移预算。

Ant 和 HalfCheetah

相关 artifact:heuristic_ant.py、ant_envpool.xml、heuristic_ant_trials.jsonl、heuristic_ant_trials_summary.csv、heuristic_halfcheetah_v5.py、heuristic_halfcheetah_v5_log.md。

Ant 的信号和 Breakout 不一样。Breakout 的几何结构很直观;Ant 是连续控制,动作是 8 个关节,失败模式也从 “球没接到” 变成了身体动力学问题。

我没有一开始就指定 “用 CPG” 或 “用 MPC”。要求只有几条:别训练神经网络,能本地复现,每轮实验留下记录,继续把分数往上推。Codex 先读 EnvPool/Gymnasium 的 Ant 观测和回报,确认动作顺序、根部速度、躯干朝向、关节位置和关节速度,然后自己提出第一版节律步态。

第一版是四腿相位振荡器:左右腿反相,髋关节和踝关节跟踪正弦目标角,动作由 PD 控制器给出。它不优雅,但一上来就比随机强很多,5 个随机种子的平均分是 2291。

后面的早期迭代很像调一个真实控制器:先加偏航反馈到 2718,再调相位速度、髋 / 踝幅度、偏航角速度增益到 3025,然后加二阶 / 三阶谐波到 3162。Codex 也试过大范围参数搜索,但结果没有稳定超过当前节律策略,于是停止扩大搜索预算,转向另一种表示。

跃迁来自 residual MPC。粗略讲,MPC 是 “边走边想一小段未来”:保留节律步态作为基础反射,每个真实环境步在本地 MuJoCo 模型里采样几十条小的残差动作序列,打分后只执行第一个残差动作;下一步重新看状态、重新规划,并把上一轮没执行完的计划作为热启动。

这样每一步都不用从零规划 8 个关节怎么动。策略先有一个稳定步态,再用短视窗模型规划去修正它。

trial_name                               score_mean   cumulative_env_steps   noteant_lr_cpgpd_v1                         2291.9       5,000                  左右腿反相 CPG + PDant_yawaxis_grid_v2                     2857.9       20,000                 偏航反馈 + 重调参数ant_h3_428_v1                           3162.0       50,000                 二阶/三阶谐波ant_mpc_residual_v1_ep1                 3635.5       62,000                 视窗=6,候选=32ant_mpc_residual_cfg4_eval5             3964.7       67,000                 视窗=8,候选=48ant_mpc_residual_cand07_eval5           4647.1       73,000                 围绕 MPC 配置做局部搜索ant_mpc_residual_narrow04_eval5         4871.3       79,000                 降低 z 目标,增大 kp/候选数ant_mpc_residual_warm02_eval5           5165.2       85,000                 热启动残差计划ant_mpc_fast065x060_sigma008_clip012    5759.4       95,000                 更快步态 + 更大残差ant_mpc_term001_ep1                     6054.5       100,000                终端速度代价ant_mpc_default_adaptive_ep1            6146.2       106,300                速度自适应相位 + 支撑期

到最后,策略里有振荡器相位、支撑期比例、速度自适应、滚转 / 俯仰 / 偏航反馈、脚部接触、短视窗模型内展开、残差平滑、终端速度代价、热启动计划衰减。人类当然能写其中一两个模块,但要在短时间内同时照顾实验记录、代码、视频和失败方向,难度完全不同。

已关注
关注
重播 分享

视频 artifact:heuristic_ant_mpc_default_6146_render480.mp4。

HalfCheetah 是同一类证据的另一个点。我重新跑了 mpc-staged-tree-asym-pd-cpg 的 5 局复测,seeds 100..104 的结果是均值 11836.7、最小值 11735.0、最大值 12041.2。策略靠的是可解释的步态 / 姿态规则和在线 staged-tree MPC:先用 CPG/PD 形成高分步态,再用短视窗模型评分和 staged swing-amplitude schedule 修正动作。

Atari57

相关 artifact:atari57_prompt_template.txt、atari57_aggregate_curve_steps.csv、atari57_env_mode_summary.csv、openrl_atari57_per_game_hns_comparison.csv、atari57_hns_normalization_inferred.csv。

Breakout 和 Ant 都是单点故事。Atari57 想看的,是这套工作流离开单个漂亮案例以后还剩多少。做法很直接:把同一套 Codex 流程扔到整套 Atari57 上,每个环境同时跑 ram 和 native_obs 两种输入,每种输入跑 3 个独立重复。总共是:

57 个游戏 x 2 种输入 x 3 次运行 = 342 条 coding-agent 搜索轨迹

这组实验没有人在旁边一点点提示。每个 agent 拿到同一个模板和不同的 ENV_ID / OBS_MODE / REPEAT_INDEX,然后自己执行到停止。每个 run 都要写 policy.py、trials.jsonl、summary.csv、sample_efficiency.png 和 README.md。

主要约束是:

- 不训练神经网络。- 不读环境源码、测试、ROM 细节或隐藏状态。- native_obs 模式只能用 reset/step 返回的原生 obs。- ram 模式可以用 info ["ram"]。- Atari 初始化参数固定,包括 frame_skip=1、reward_clip=False、sticky action=0。- 所有实际 step 过环境的 probe/debug/trial 都必须计入 cumulative_env_steps。

先看环境步曲线。HNS 是 human-normalized score,也就是把每个游戏分数按人类基线归一化以后再比较。在完全无人工介入的批量运行里,native_obs 到 1M 步附近的 Atari median HNS 已经到 0.32,ram 是 0.26,明显高于图里 PPO2 / CleanRL EnvPool PPO 的早期曲线;到 9.7M 步附近,native_obs 是 0.81,ram 是 0.59。同一张对比里,OpenRL Benchmark 保存的 PPO2 / CleanRL EnvPool PPO median HNS 曲线到 10M 步大约是 0.88 / 0.92。

这里比较的是环境交互效率;coding agent 读日志、写代码和看视频的开销没有折算进总计算成本。它给出的信号很具体:一个还很粗糙的 coding agent 批量流程,在完全不看中途结果的情况下,已经能把 Atari57 的中位数推进到接近这些 baseline 的区间。

如果换成每个游戏最终取 best input 的汇总口径,Codex median HNS 是 0.83,OpenAI Baselines PPO2 是 0.80,CleanRL EnvPool PPO 是 0.98;如果再放宽到 best single run,Codex median HNS 是 1.18。这个口径不能替代严格训练曲线比较,但能更直接地说明这批无人值守搜索最后覆盖到了什么水平。

聚合曲线会把差异压到一个中位数里,所以我又看了每个游戏自己的 HNS。Breakout、Krull、DoubleDunk、Boxing、DemonAttack 这些游戏里,heuristic 和 Deep RL baseline 都能拿到明显高于人类基线的分数;Asterix、Jamesbond、Centipede、Bowling、Skiing、Tennis 这类游戏里 heuristic 相对突出;Atlantis、VideoPinball、UpNDown、Assault、RoadRunner、StarGunner 上 PPO 明显强很多。

Atari57 最有意思的地方,是样本效率的来源变了。传统神经网络 Atari 学习要在每个环境里从高维输入重新学表示、信用分配和动作含义;Codex 做的是把环境拆成可维护的小程序系统:射击游戏的瞄准 / 躲避,接球游戏的反弹,躲避游戏的位置规则,环境包装器细节,以及每个环境自己的失败实验记录。

Montezuma

相关 artifact:heuristic_montezuma.py、heuristic_montezuma_state_graph_search.py、heuristic_montezuma_400_policy.py、heuristic_montezuma_400_macros.json、heuristic_montezuma_400_metadata.json。

有些环境不适合普通反应式启发式策略。Montezuma's Revenge 是典型例子。

之前那轮单独搜 Montezuma 的状态图搜索能把钥匙距离从 72 推到 28,但奖励仍然是 0。后面 Atari57 的纯图像批量实验里,有一条无人值守 Codex run 到了 400.0 分:修复后的最佳回放是 repair_replay_r1_t19734,seed 是 10001,用了 1769 个环境步,本质是一条 86 个宏动作组成的开环路线。

已关注
关注
重播 分享

Montezuma 暴露的是表达力问题。普通 policy.py 状态机很难装下这类路线:动作必须对齐时机,失败后要能恢复,中间状态还要能重新进入计划。有些环境需要可组合宏动作、可恢复搜索状态,甚至需要一种比普通 if else 更适合长期规划的程序结构。

这类失败对 HL 很有价值。它告诉我们边界在哪里,也提示下一层抽象大概该长什么样。有些反馈需要新的表示和新的程序形态,才进得了系统。Montezuma 指向的下一层接口,大概会包括宏动作、可恢复状态、搜索和长期记忆。

A.2 复现入口

下面这些命令默认在本文所在目录运行,依赖已经按 requirements.txt 装好,用来检查前面提到的几个代表性结果。

Pong 21

复现入口:heuristic_pong.py。

python heuristic_pong.py \  --policy ram \  --episodes 1 \  --seed 0

期望输出里应该包含 episode=0 score=21.0 和 mean=21.000。

Breakout 864

复现入口:heuristic_breakout.py。

rm -f /tmp/repro_breakout_864.jsonl /tmp/repro_breakout_864.csvpython heuristic_breakout.py \  --policy ram \  --episodes 1 \  --seed 0 \  --max-steps 108000 \  --deadband 3 \  --chase-lead-steps 6 \  --tunnel-offset 0 \  --launch-offset 24 \  --fast-ball-min-vy 3 \  --fast-low-ball-lead-steps 3 \  --stuck-trigger-steps 1024 \  --stuck-switch-steps 256 \  --stuck-offset 12 \  --stuck-release-horizon-steps 8 \  --brick-balance-deadzone 0.01 \  --brick-balance-bias-min-score 432 \  --late-game-paddle-lag-px 2 \  --late-game-lag-ball-y 170 \  --trial-name repro_breakout_864 \  --log-path /tmp/repro_breakout_864.jsonl \  --summary-path /tmp/repro_breakout_864.csv

期望输出里应该包含 score=864.0 和 mean=864.000。

Ant 默认 MPC 策略

复现入口:heuristic_ant.py、ant_envpool.xml。

rm -f /tmp/repro_ant_6146_eval5.jsonl /tmp/repro_ant_6146_eval5.csvpython heuristic_ant.py \  --policy mpc \  --episodes 5 \  --seed 0 \  --max-steps 1000 \  --mujoco-xml-path ant_envpool.xml \  --trial-name repro_ant_6146_eval5 \  --log-path /tmp/repro_ant_6146_eval5.jsonl \  --summary-path /tmp/repro_ant_6146_eval5.csv

我本地重跑时是 mean=6005.521、min=5776.805、max=6146.208。

HalfCheetah staged-tree MPC

复现入口:heuristic_halfcheetah_v5.py。

python heuristic_halfcheetah_v5.py \  --policy mpc-staged-tree-asym-pd-cpg \  --eval-episodes 5 \  --eval-seed 100

我本地重跑时 5 局均值是 11836.693。

Montezuma 400 分回放

复现入口:heuristic_montezuma_400_policy.py。

python heuristic_montezuma_400_policy.py \  --metadata-out /tmp/repro_montezuma_400.json

期望输出里应该包含 "score": 400.0 和 "env_steps": 1769。这条是边界案例,不要把它理解成通用 Montezuma 策略。

本文系学术转载,如有侵权,请联系CVer小助手删文

何恺明在MIT授课的课件PPT下载
在CVer公众号后台回复:何恺明,即可下载566页课件PPT!大家赶紧学起来!
CVPR 2026 所有论文和代码下载
在CVer公众号后台回复:CVPR2026,即可下载CVPR 2026 所有论文和代码!

CV垂直方向和论文投稿交流群成立

扫描下方二维码,或者添加微信号:CVer2233,即可添加CVer小助手微信,便可申请加入CVer-垂直方向和论文投稿微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer、NeRF、3DGS、Mamba等。

一定要备注:研究方向+地点+学校/公司+昵称(如Mamba、多模态学习或者论文投稿+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲扫码或加微信号: CVer2233,进交流群

CVer计算机视觉(知识星球)人数破万!如果你想要了解最新最快最好的CV/DL/AI论文、实战项目、行业前沿、从入门到精通学习教程等资料,一定要扫描下方二维码,加入CVer知识星球!最强助力你的科研和工作!

扫码加入星球学习

▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-11 12:23:18 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/603532.html
  2. 运行时间 : 0.110633s [ 吞吐率:9.04req/s ] 内存消耗:4,685.51kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1de7f27782adf3f1f6f45dcb4106ddb4
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000608s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000787s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000326s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000290s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000525s ]
  6. SELECT * FROM `set` [ RunTime:0.000211s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000550s ]
  8. SELECT * FROM `article` WHERE `id` = 603532 LIMIT 1 [ RunTime:0.001822s ]
  9. UPDATE `article` SET `lasttime` = 1778473398 WHERE `id` = 603532 [ RunTime:0.000898s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000226s ]
  11. SELECT * FROM `article` WHERE `id` < 603532 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000535s ]
  12. SELECT * FROM `article` WHERE `id` > 603532 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001323s ]
  13. SELECT * FROM `article` WHERE `id` < 603532 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004115s ]
  14. SELECT * FROM `article` WHERE `id` < 603532 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002590s ]
  15. SELECT * FROM `article` WHERE `id` < 603532 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.008300s ]
0.112489s