白皮书 · 自主系统与试验鉴定 · 研究原型(仿真与游戏)
冻结的权重
在两场战斗之间改变的大脑,与必须重建的模型。来自一个有完整录像的坦克竞技场的发现,写给自主系统与试验鉴定项目——《方向盘上的规则》的姊妹篇。
部署自主系统的项目要面对一个大多数基准测试不问的问题:系统被击败之后,它如何变得更好,修正又能多快被核验?我们报告一个有完整录像的 BZFlag 坦克竞技场对这个问题的说明。五类驾驶员在同样的自由混战比赛中、依据同一份引擎状态作战:一个规则驾驶员(按顺序排列的规则,在做决策的环节中没有神经网络),三个语言模型(经命令行接口的 Claude、DeepSeek,以及在本机运行的 llama3.2:3b),以及 BZFlag 内置的 AI。在十分钟的主赛中(一场比赛),规则驾驶员做出 60,140 次决策;各模型做出 58 到 415 次,每次决策的中位时间为 1.0 到 7.6 秒——尽管在没有时间压力时,它们在 8 道情境考题中答对 4 到 6 道。在全部 20 场有效录制比赛中,内置 AI 领先(击杀/阵亡比 1.84,45 个坦克场次),其次是规则驾驶员(0.61,43),DeepSeek(0.55),Claude 与 llama(各 0.06;每个模型 7 个坦克场次)。在比赛之间、没有任何权重可改的情况下,一个学习循环改变了规则驾驶员十个具名开关中的两个,每一处改动都只在通过配对检验后才被采纳(\(z = 3.08\) 与 \(2.68\))。在与内置 AI 等数量对抗的比赛中,每坦克分钟净击杀从 −1.17(手写驾驶员,8 场)提高到 −0.26(3 场;差值 \(z = 2.93\))。它还没有追上内置 AI:后者每坦克分钟击杀 2.10,它只有 1.28。各语言模型的权重自始至终没有变化;我们没有尝试重新训练它们。我们列出对试验鉴定的推论(明确标注为推论),以及局限:样本小、只有一款游戏、仅限仿真、未曾部署。
一个模型上午输了,下午还是带着同样的权重上场。一个规则驾驶员输了,可以从中得到一处具名的改动,在保留之前先经过检验——而它仍然可能输。
我们做了什么。我们让五类驾驶员在一款电子游戏里打同样的坦克战,并记录下一切:一小份我们写的规则;三个 AI 语言模型(Claude、DeepSeek,以及在同一台笔记本电脑上运行的小型 Llama);以及游戏自带的电脑玩家。
我们发现了什么。规则每秒决策约一百次;语言模型每一到十秒才决策一次——对三秒半就消失的炮弹来说太慢了。规则击败了模型。游戏自带的玩家击败了所有人。随后,在一夜之间,规则在比赛之间学习——不是重新训练任何东西,而是改变两个具名设置,每一个都只在赢得一场公平检验之后才被采纳——在与游戏自带玩家的对抗中,朝着"不赔不赚"(击杀与阵亡一样多)走完了大半段路。但没有走完:它仍然会输。
这为什么与你有关。系统输了之后,你想知道会改什么、改动有多大、你怎么知道它有帮助。在这里,每一处改动都是你能读懂的一行,附带让它通过的证据,而大多数提出的改动都被拒绝了。
它不是什么。它不是已部署的系统,不是"规则普遍胜过 AI"的论断,也不是对 Claude 能力的测量(只能通过一条缓慢的途径调用它)。它是游戏中的研究原型,样本很小,并如实说明。
1 · 发现一览
六项发现,每项都附样本量。前四项是测量;第五项是关于什么能改变、什么不能改变的架构陈述;第六项是局限清单。对项目的推论见 §8,并明确标注为推论而非结果。每个数字都可以在随附的论断文件中追溯到具体文件。
- 规则驾驶员与模型之间最清楚的差别是决策速率,而不是知识。在同一场十分钟比赛中(一场比赛),规则驾驶员做出 60,140 次决策,约每秒 101 次。DeepSeek 做出 415 次(每次中位 1.01 秒),llama3.2:3b 213 次(2.55 秒),Claude 58 次(7.55 秒,经由会自带额外延迟的命令行接口)。在没有时间压力时,同样这些模型在 8 道情境考题中分别答对 6、5、4 道(规则 8 道)。这款游戏里的炮弹在发射 3.5 秒后消失。速度是必要条件而非充分条件:BZFlag 内置 AI 的决策频率与规则驾驶员相同,却击败了它。
- 在所有有效录制比赛中,内置 AI 领先;规则驾驶员领先于各模型。在 20 场比赛中(排除 2 次无效运行,并注明原因):内置 AI 击杀 804、阵亡 437(K/D 1.84;45 个坦克场次);规则驾驶员 394–649(0.61;43);DeepSeek 30–55(0.55),Claude 3–47(0.06),llama3.2:3b 2–33(0.06),每个模型 7 个坦克场次,其中一场只有 0.3 分钟。
- 规则驾驶员在两场战斗之间进步了,不涉及任何权重。一个循环回放每一次死亡、每次只改变一个具名开关、只在配对检验之后才保留改动;它在 1 小时 43 分钟的比赛中晋升了两处改动,第二处发生在第一场录制比赛之后 7 小时 03 分钟。在与内置 AI 等数量对抗的比赛中,每坦克分钟净击杀从 −1.17(手写驾驶员,8 场)到 −0.43(1 场)再到 −0.26(3 场)。从手写驾驶员到当前驾驶员的提升为 \(z = 2.93\)。一个从不开火的参照驾驶员得分为 −2.05(1 场)。
- 它还没有追上内置 AI。当前驾驶员每坦克分钟击杀 1.28,AI 为 2.10(击杀 45 对 74;差距真实存在,\(z = 2.66\))。它每坦克分钟阵亡 1.53,AI 为 1.73,但阵亡 54 对 61 在随机波动范围内(\(z = 0.65\))。第二次晋升之后,循环又做了 25 次决定,没有晋升任何改动,并在再无未尝试的改动时自行停止。
- 在这一设置下,语言模型不可能在比赛之间改变;规则驾驶员改变了。三个模型在每一场比赛中都使用同一个模型标识和同一组设置,只有一份系统提示词,从一次决策到下一次不携带任何记忆,更不用说从一场比赛到下一场。它们的权重只能通过重新训练或微调来改变,而我们没有尝试。规则驾驶员在两场模型比赛之间被人工修改过一次(v1 到 v2),又被循环修改了两次(v2 到 v3 再到 v4),每一处改动都是具名、可读、可撤销的编辑。这是关于架构的陈述,而不是对学习速度的测量比较。
- 局限。样本小(一场主赛;每个驾驶员版本 1 到 8 场对等对抗;每个模型 7 个坦克场次),只有一款游戏,仅限仿真,只有一台测试机器,Claude 只能经由缓慢的命令行途径调用,循环所选择的开关由工程师编写,而且内置 AI 仍是更强的一方。这里的一切都没有部署,也没有第三方复现。
2 · 项目办公室要问的问题
一位试验鉴定负责人看着自主系统输掉一场交战,会有三个实际问题。它为什么输?会改什么,才能让它不再以同样的方式输掉?谁能知道这处改动有帮助、而且没有损害别的东西?对于决策来自大型训练模型的系统,今天诚实的回答往往是:我们能重放输入,却不能重放推理;改动就是新一轮训练或微调;核验就是对整个模型的重新评估,因为权重更新并不局限于人们想修正的那一种行为。先后在不同任务上训练的网络会丢失先前的技能,这是已知的("灾难性遗忘" [14],[13])。
本文在一个小而完整录制的场景中考察这三个问题:开源 3D 坦克游戏 BZFlag 中的坦克战 [6]。它是研究论文《方向盘上的规则》 [1] 的姊妹篇;那篇论文把一个规则驾驶员与三个语言模型驾驶员及游戏内置 AI 作比较,并回放驾驶员的死亡,找出内置 AI 为何胜过它。那篇论文的数据冻结于 2026 年 9 月 27 日 01:05:50,当时驾驶员的学习循环仍在运行。本白皮书补上冻结之后循环所记录的内容,直到当天上午 11:49:06 的最后一次决定,并为国防读者说明整份记录意味着什么。
我们使用的术语
- 规则驾驶员。一份简短、有序的规则清单(闪避、脱困、交战、搜索、探索),每帧把游戏状态变成一个动作。做决策的环节中没有神经网络。每一次决策都记录下触发的规则和一句理由。
- 开关(基因组)。十个具名设置,改变规则的行为方式,例如一枚经过的炮弹要多近,驾驶员才会闪避它。循环所做的每一处改动都是对一个开关的改动。
- 循环。驾驶员的学习程序:回放死亡,找出最常见的原因,改变针对该原因的那一个开关,在同样的比赛中让旧版与新版对照检验,只在证据充分时保留改动。它在比赛之间运行。
- 对等对抗。由某一版本的规则坦克与同样数量的内置 AI 坦克对战、没有其他参与者的比赛。它是对照内置 AI 的公平测量。
- 每坦克分钟净击杀。一方的总击杀减去总阵亡,除以其坦克的总上场分钟数。零表示击杀与阵亡一样多。
- 冻结的权重。训练好的模型在使用期间参数不变。竞技场中的三个语言模型都是这样运行的;这类模型通常就是这样部署的。
3 · 一页说清竞技场
完整方法见姊妹论文 [1];这里是读者判断各项发现所需的内容。
- 一款游戏,多个客户端。每辆坦克都是一个独立的 BZFlag 客户端,有自己的驾驶员,全部连到同一台自由混战服务器上。对客户端的一个小补丁把每辆坦克的操控交给外部进程,并每帧向它发送一个状态数据包(自身位置、可见的敌人、来袭的炮弹、开阔空间)。内置 AI 运行 BZFlag 自己未经修改的代码。服务器为每场比赛生成新的随机地图。炮弹以 100 米/秒飞行,350 米(3.5 秒)后消失;坦克行驶速度为 25 米/秒。
- 每个驾驶员得到同样的事实。规则驾驶员与三个语言模型拿到的是同一个数据包。各模型使用同一份提示词、同一种输出格式和同一个解析器,并有一个伺服机构执行它们的上一条命令,直到下一条到来。失败或迟缓的模型调用会被计数,但从不替它补救:坦克只是保持上一条命令。模型永远不会被问到超过 1.5 秒的旧状态。
- 各模型。Claude(claude-opus-5,低推理强度)经由 claude -p 命令行接口调用——这是测试机器上唯一可用的途径,每次决策都要重新启动;DeepSeek(deepseek-chat)经由其网络 API;llama3.2:3b 是约三十亿参数的模型,通过 Ollama 在本机运行。每场比赛的设置都相同(表 1)。
- 一切都有记录。每场比赛写入一段录像、每 10 秒一次的记分板、最终结果,以及每辆坦克的黑匣子:每一次向模型提问和它的回答及耗时、每一次规则决策及其理由、每一发射击,较晚的比赛还记录每次死亡前的最后两秒。本文的数字只来自 JSON 记录。
- 计数。带有 INVALID.md 文件的运行(该运行的前提已经失效)被排除,并列出原因(表 3)。姊妹论文还使用更严格的规则(至少上场 1.5 分钟);我们两者都报告。
- 硬件。一台 16 GB 内存的 Apple M4 笔记本电脑运行服务器、每一个客户端、规则驾驶员和 llama3.2:3b。DeepSeek 与 Claude 经由网络作答。
| 坦克 | 它参加的每场比赛中记录的驾驶员标识 |
|---|---|
| Claude | claude-opus-5 (cli, effort low) |
| DeepSeek | deepseek-chat (api, json mode, temp 0) |
| llama3.2:3b | llama3.2:3b (local ollama, schema format, temp 0) |
4 · 发现一:决策速率,而不是知识
主赛(20260926-183228)让每类坦克各一辆参加同一场十分钟自由混战(实际上场 9.92 分钟)。它是一场比赛,我们只用它来说明一场比赛能说明的东西:每个驾驶员决策有多频繁。
| 驾驶员 | 决策次数 | 每次决策的中位时间 | 击杀–阵亡 | 笔试(8 个情境,不限时) |
|---|---|---|---|---|
| 规则驾驶员(v1) | 60,140 | ≈0.01 秒(每帧) | 20–20 | 8/8 |
| DeepSeek | 415 | 1.01 秒 | 10–18 | 5/8 |
| llama3.2:3b | 213 | 2.55 秒 | 0–10 | 4/8 |
| Claude(命令行) | 58 | 7.55 秒 | 1–15 | 6/8 |
| BZFlag 内置 AI | 每帧 | 在客户端内 | 38–6 | – |
这些数字在战斗中意味着什么。这里的炮弹一秒飞 100 米,3.5 秒后消失。在 Claude 7.55 秒的中位决策时间里,提问时发射的一枚炮弹早已飞完全程并消失——两次都绰绰有余;一辆全速行驶的坦克已经移动了 189 米。DeepSeek 的 1.01 秒相当于炮弹飞行 101 米。以这样的速率,模型无法对某一枚具体的炮弹作出反应;它只能定下一条航向,并寄希望于这条航向是对的。笔试表明,答案常常是有的(Claude 8 道对 6 道,DeepSeek 8 道对 5 道);缺的是时间。
两点提醒。第一,Claude 的时间既反映模型,也反映调用途径:命令行接口每次决策都要启动一个新进程,我们不主张任何更快的 Claude 数字 [1]。第二,光有速度不够。内置 AI 同样每帧决策,而它在每一场对等比赛中都击败了规则驾驶员;它赢在更好的规则,而不是更多的决策。
5 · 发现二:所有有效录制比赛的结果
该实验线的代码仓库保存了 9 月 26 日晚上的 22 次录制运行。其中两次带有 INVALID.md:在 182000 中,Claude 的客户端在比赛开始约 10 秒后退出,而它的驾驶员继续依据冻结的状态做决策;在 192915 中,控制台内部对图像核查的训练拖垮了控制器。两者都被排除。表 3 汇总了其余 20 次(上场共 109.8 分钟):7 场有语言模型参加,13 场只有规则驾驶员与内置 AI。
| 驾驶员 | 坦克场次(20 次运行) | 击杀–阵亡(20 次运行) | K/D(20 次运行) | 击杀–阵亡(16 次运行 ≥1.5 分钟) | 每坦克分钟击杀(16 次运行) |
|---|---|---|---|---|---|
| BZFlag 内置 AI | 45 | 804–437 | 1.84 | 780–426 | 3.05 |
| 规则驾驶员 | 43 | 394–649 | 0.61 | 386–631 | 1.51 |
| DeepSeek | 7 | 30–55 | 0.55 | 29–55 | 0.90 |
| Claude(命令行) | 7 | 3–47 | 0.06 | 3–47 | 0.09 |
| llama3.2:3b | 7 | 2–33 | 0.06 | 2–32 | 0.06 |
如何读这张表。无论怎样汇总,内置 AI 都是测得的最强驾驶员,而且差距很大。在 6 场计入的模型比赛中的 5 场以及总体上,规则驾驶员的 K/D 高于每一个模型 [1]。最快的模型 DeepSeek(中位 1.0 秒)最接近规则驾驶员。Claude 和 llama3.2:3b 几乎没有击杀。每个模型只有 6 或 7 场比赛,属于小样本;方向是一致的,具体比值则不可靠。
模型遇到的是哪一版驾驶员。模型比赛中的规则驾驶员是 v1(前四场)和 v2(后三场),两者都是手写的。自动学得的 v3 和 v4 从未与语言模型交手。无论规则驾驶员相对于模型的优势是什么,它都不是学习循环的产物。
6 · 发现三与发现四:在两场战斗之间学习,以及它停在了哪里
6.1 · 驾驶员如何学习
这个循环沿用了 Perslis 早先一篇论文所描述的失败优先循环 [2]:失败、观察、解释、构建规则、验证、重试。在这条实验线中,它的运行方式如下 [1]。
- 观察。每一次死亡都连同其前两秒的状态数据包一起记录。
- 解释。每一枚致命炮弹都沿其弹道回放,每一条候选闪避规则都在每个数据包上重新运行,为这次死亡给出一个原因(例如"近距离中弹"、"放弃闪避")。在进攻一方,驾驶员自己的射击也用同样方式评定(例如"射击距离太远")。
- 构建。尚未尝试过的最常见原因指向一个要改变的开关。候选版本与当前驾驶员恰好只在这一个开关上不同。
- 验证。在同样的比赛中,两辆坦克运行当前驾驶员,两辆运行候选版本,两辆是内置 AI,因此两者面对相同的地图、时刻和敌人。每一组的得分是跨比赛汇总的每坦克分钟净击杀。
- 决定。只在 \(z \ge 2\) 时晋升;在 \(z \le -1\) 时拒绝;介于两者之间即为"未证明",当前驾驶员保持不变,该改动可以带着此前的比赛数据再次回来,总计最多 9 场。
被晋升的改动成为之后每一场比赛的驾驶员。开关是循环唯一能改变的东西:带有未知开关或非法取值的基因组会被拒绝,并有一项单元测试固定了这一点。循环在比赛之间运行;驾驶员在比赛中从不改变。
6.2 · 记录:9 月 26 日 23:31 至 9 月 27 日 11:49
循环的第一场 A/B 比赛开始于 23:31:35。到 11:49:06 为止,它做了 34 次决定:晋升 2 次,拒绝 8 次,未证明 24 次,共进行 83 场 A/B 比赛(上场 323 分钟)。两次晋升都出现在前 20 场 A/B 比赛中(上场 77.5 分钟):
| 时间 | 改动 | 作用 | 配对检验 |
|---|---|---|---|
| 00:27:51 | v2 → v3:dodge_miss_m 4.0 → 6.0 | 任何弹道从 6 米以内(而不是 4 米以内)经过的炮弹都要闪避 | \(z = 3.08\),2 场 |
| 01:14:10 | v3 → v4:juke 开 → 关 | 开火之后继续对准目标,而不是偏离其射线 60° | \(z = 2.68\),2 场 |
从第一场录制比赛(18:11:33)到第二次晋升(01:14:10)共 7 小时 3 分钟;这段时间包括工程师看录像后手写的 v1 和 v2,以及循环本身的搭建(23:22 提交)。自动化部分,从第一场 A/B 比赛到 v4,用了 1 小时 43 分钟。
6.3 · 真正算数的测量:与内置 AI 的对等对抗
A/B 比赛决定是否晋升,但它们是四辆规则坦克对两辆内置 AI 坦克,因此不能在对等条件下测量驾驶员与 AI 的高下。实验线另行测量这一点:由某一版本的三辆规则坦克对三辆内置 AI 坦克、没有其他参与者的对等对抗(表 5,图 2)。
| 驾驶员 | 场数 | 我方 击杀–阵亡 | 每坦克分钟净击杀(± 标准误) | 每坦克分钟击杀 | 每坦克分钟阵亡 | 内置 AI 击杀–阵亡 |
|---|---|---|---|---|---|---|
| v0(下限,从不开火) | 1 | 0–24 | −2.05 ± 0.42 | 0.00 | 2.05 | 37–13 |
| v2(手写,起点) | 8 | 301–554 | −1.17 ± 0.14 | 1.40 | 2.57 | 645–389 |
| v3(学得) | 1 | 15–20 | −0.43 ± 0.51 | 1.28 | 1.71 | 28–22 |
| v4(学得,当前) | 3 | 45–54 | −0.26 ± 0.28 | 1.28 | 1.53 | 74–61 |
| 内置 AI,v4 的比赛 | 3 | 74–61 | +0.37 | 2.10 | 1.73 | – |
对于判断这张表有多可信的读者,有三点最重要。提升是在与选出改动的比赛不同的比赛上测得的:晋升由 A/B 比赛决定;阶梯来自对等对抗比赛,所以 v2 到 v4 的 \(z = 2.93\) 不是把同一份证据计算两次。样本很小:v4 有三场(35 坦克分钟),v3 只有一场。驾驶员仍然会输:在同样的比赛中,v4 每坦克分钟击杀 1.28,AI 为 2.10(击杀 45 对 74,\(z = 2.66\))。它的阵亡频率低于 AI,每坦克分钟 1.53 对 1.73,但阵亡 54 对 61 在随机波动范围内(\(z = 0.65\));我们不主张这一点。
6.4 · 它停在了哪里
第二次晋升之后,循环又工作了十个半小时,其间有暂停(00:44、01:05、01:51、02:12 和 02:29 的停止与交接请求;02:54 磁盘写满使其停止;05:19 和 10:09 重新启动)。它又做了 25 次决定:没有任何晋升,拒绝 7 次,未证明 18 次(图 3)。11:49:06,它以"这些原因已没有未尝试的改动"这一行自行停止。它对 v4 记录的最后解释是:653 次回放的死亡中有 82% 是发现太晚、来不及闪避的炮弹("近距离中弹"),5,689 发射击中有 73% 是在 100 米以外发射的,而内置 AI 会躲开这些射击。针对第二个原因的改动(只在 100 米或 50 米以内开火)被拒绝了。
工程师做了什么。循环是在工程师编写的开关中作选择,其中一些是在同一夜里写的:闪避走廊和后撤开关在循环启动时(23:22)就已存在;后来成为 v4 的开关(juke)在 00:54 加入,晋升前二十分钟;射程开关在 02:21 加入。循环负责挑选、检验,然后保留或丢弃;它不会发明新的行为。这是一项局限,同时也可能正是项目办公室想要的特性:可能的改动范围事先写明,在使用任何一项之前都可以审查。
7 · 发现五:冻结权重的论证
本节是一个关于架构的论证,依据的是记录中改变了什么、没有改变什么。它不是对不同系统学习速度的测量比较:我们没有尝试在比赛之间改进语言模型。
7.1 · 决策者可以在三个地方改变
- 它的权重,即模型训练得到的参数。对语言模型来说,这意味着微调或重新训练:收集数据、训练,然后重新评估整个模型,因为权重更新并不局限于它想修正的那种行为 [14],[13]。
- 它的输入,即模型看到的东西:提示词、示例、检索到的文档,或对过往经历的记忆。语言模型可以通过输入进行适应而不改变任何权重 [9],以这种方式构建的智能体可以把反思或技能库写入上下文,从而在多轮之间进步 [17],[18]。
- 它的决策程序,即把情境变成动作的显式规则和设置。
| 本竞技场中的语言模型驾驶员 | 本竞技场中的规则驾驶员 | |
|---|---|---|
| 权重 | 固定;每个驾驶员在每场比赛中只有一个模型标识;从未重新训练 | 没有权重 |
| 输入 | 固定;一份系统提示词,只有当前情境,从一次调用到下一次不携带记忆 | 与每个驾驶员相同的状态数据包 |
| 决策程序 | 在模型内部;无法检视 | 有序规则和 10 个具名开关;人工修改一次(v1 → v2),循环修改两次(v2 → v3 → v4) |
| 一处改动是什么样子 | 一个新模型或一份新提示词;两者都没有尝试 | 一个开关中的一行,附带促成它的回放和让它通过的配对检验 |
| 如何撤销 | 重新部署旧模型或旧提示词 | 把开关改回去 |
7.2 · 记录支持什么
在这个竞技场中,语言模型在每一场比赛中都和开始时完全一样。这不是模型的缺陷;这类模型就是这样部署的,这也正是"冻结的权重"的含义。一个模型上午输了一场比赛,下午还是带着同样的权重上场,除非有人重新训练它,或改变它看到的东西。
相比之下,规则驾驶员的有记录的失败被转化成了具名的候选改动。一夜之间,有两次改动通过了配对检验,成为之后每一场比赛的驾驶员;另外 32 次决定让驾驶员保持原样。每一处被晋升的改动都只有一行(dodge_miss_m: 6.0;juke: false),记录中附有明确的理由("开火后偏离目标,占交战时间的 18%")、检验它的比赛,以及它赢得的分数。当前驾驶员与手写驾驶员之间的全部差别,一张表 4就能装下。
对国防读者来说,其中有两点最值得重视。第一,改动小而可读。审查者可以读懂差异,看到让它通过的证据,并把它撤回。第二,核验是改动的一部分。任何东西进入驾驶员之前,都要与它所替换的版本在同样的比赛中进行配对检验,而大多数候选都没有通过。
7.3 · 记录不支持什么
- 它没有表明会学习的规则驾驶员胜过会学习的语言模型系统。这里的模型没有学习途径——这是我们的选择;在多轮之间给模型提供记忆或反思的系统是存在的 [17],[18],而我们既没有构建也没有测试这样的系统。
- 它没有表明学习解释了规则驾驶员相对于模型的优势。驾驶员在 v1 和 v2 时就击败了模型,那时循环还不存在。
- 它没有表明在战斗之间学习总体上是安全的。它展示的是一个只能改变十个预先写好开关的循环,在仿真器中,面对一个不会改变的对手。
7.4 · 其他领域中的同一思路
保留一个小而可检视的部件来做决策,或来约束一个复杂部件所能做的事,是安全工程中的老思路:Simplex 架构把高性能控制器与一个简单且经过验证的控制器配对 [16],屏蔽(shielding)则依据形式规约过滤学习策略的动作 [7]。Perslis 早先的论文把它用于受指挥的运行时(命令只能收窄驾驶员可做的事)[3] 和失败优先循环 [2]。这份记录补上的是学习的那一半:这个小部件同时也是发生改变的部件,而每一处改动都带着自己的证据。
8 · 对国防项目的推论
I1. 问清楚系统输了之后如何改变,以及什么证据能让改动通过。项目可以向任何自主系统供应商提出竞技场所具体化的三个问题:改动存在于何处(权重、输入还是决策程序);最小的改动有多大;改动在使用之前必须给出什么样的配对证据。在这份记录中,答案是:一个具名开关;一行;在与被替换版本相同的比赛中 \(z \ge 2\),而 34 次决定中有 32 次拒绝改变任何东西。
I2. 在交战之间学习是可行的;在交战之中学习是另一种主张。循环需要 20 场 A/B 比赛(上场 77.5 分钟)才完成两次晋升,而在用完候选之前共进行了 83 场(323 分钟)。这适合靶场、仿真器或两次出动之间的时间,而不是交战进行之中。它还假定对手不会随之改变;一个会思考的对手则会。
I3. 把决策延迟当作一项需求,并对照威胁的时间线来表述。在这款游戏里,炮弹发射后 3.5 秒就消失,而各模型的中位决策时间为 1.0 到 7.6 秒。无论在什么领域,"决策回路在 X 之内闭合,以应对在 Y 之内见分晓的威胁"这种形式的需求,在任何准确性测试之前就能区分不同架构。不计时测得的知识(我们的笔试)并不能迁移到有时钟的战斗中。
I4. 可重放的决策让失败可以解释。这里的每一次规则决策都记录了触发的规则及其理由,每一次死亡都记录了它之前的两秒。正是这一点,让姊妹论文得以证明它对失败的第一个解释是错的 [1]。美国国防部的 AI 原则要求系统可追溯、可治理 [11];一份写明所用规则的决策记录,是前者的一种具体形式。
I5. 学习不应移动人类权限的边界。在这条实验线中,来自人的命令(停止射击、原地待命、指定目标)会收窄规则可以做的事,并且无论开关如何设置,都在同一个决策函数中施加;一组单元测试在驾驶员上固定了这些命令,而开关是一份封闭清单 [3]。我们没有测试每一个开关与每一条命令的组合,也没有任何对等对抗比赛在有命令的情况下进行。其设计意图与美国国防部第 3000.09 号指令对自主武器系统的要求一致:它们"will be designed to allow commanders and operators to exercise appropriate levels of human judgment over the use of force"(其设计应使指挥官和操作员能够对武力的使用行使适当程度的人类判断)[10]。
I6. 对算法的改动是一次审查事件;让它成为一次小的审查。2023 年重新发布的国防部第 3000.09 号指令要求,除其他情形外,当"changes to the system algorithms"(系统算法的变更)与此前批准的实质性不同时,须再次进行高级审查 [12]。一个在实地学习的系统会碰上这一条款。一处附带自身配对证据的一行改动,比一个重新训练的模型更容易审查,但它仍然是一次改动,项目应当假定它会触发审查,而不是能够回避审查。
I7. 在任何部署之前必须具备什么。独立复现;一个使用物理传感器而不是引擎状态的领域;一个会适应的对手;对开关所能做之事的界限——要经过证明而不只是测试;一份经过签名、事后无法篡改的记录;以及一项检验,证明在每一个开关的每一种设置下,每一条命令都成立。对这条实验线来说,这些今天都还不存在。
9 · 局限
- 样本小。决策速率这一发现依据的是一场十分钟比赛。每个语言模型参加了 7 场有效比赛,其中一场只有 0.3 分钟(按实验线 1.5 分钟的规则为 6 场)。阶梯中 v0 有 1 场,v2 有 8 场,v3 有 1 场,v4 有 3 场。\(z\) 值假定计数服从泊松分布且比赛相互独立;同一场比赛内的击杀与阵亡并不独立,所以真实的不确定性大于误差线所显示的。
- 重复检验。循环在每场比赛之后都进行检验,在 34 次决定中的任何一次都可能晋升。对不断累积的数据反复查看,会使错误晋升的概率高于单次 \(z \ge 2\) 检验所暗示的水平 [8]。独立的对等对抗阶梯(v2 到 v4,\(z = 2.93\))是针对这一点的主要防护;v4 只有 3 场,这层防护很薄。
- Claude 经由命令行接口。测试机器上没有可用的 API 密钥,所以只能经由每次决策都重新启动的命令行接口调用 Claude。它 7.55 秒的中位时间既反映这条途径,也反映模型本身。我们不主张任何更快的 Claude 数字,Claude 的低分也不应被解读为对该模型的测量。
- 一个小型本地模型。llama3.2:3b 约有三十亿参数,并与游戏共用一台机器;它不能代表更大的本地模型。
- 没有尝试改进模型。我们没有微调、重新训练,没有在比赛之间调整提示词,也没有给模型提供记忆、示例或反思。冻结权重一节是关于架构的论证,而不是对学习的比较。
- 选项由工程师编写。循环在十个开关中作选择,其中一些是工程师在同一夜里加入的,而且循环曾被人工暂停和重启。它是在已写好的选项中自动选择,而不是开放式学习。
- 一款游戏,仅限仿真。所有结果都来自在一台 Apple M4 笔记本电脑上运行的 BZFlag,依据的是引擎自身的状态而不是传感器,对手(内置 AI)的行为不会适应。没有新的证据,这里的任何结论都不能迁移到另一款游戏、一辆真实的车辆或一个真实的对手身上。
- 内置 AI 更强。它在记录的每一种汇总方式中都领先,并且仍以明显的差距在击杀上胜过最好的学得驾驶员。学得驾驶员较低的阵亡率并不显著。
- 未曾部署,未经复现。这是游戏中的研究原型。它不是经过认证的安全系统,也没有第三方重复过这些测量。这些记录是本地磁盘上未经签名的 JSON 文件。
11 · 结论
在一个有完整录像的坦克竞技场中,三个语言模型在每一场比赛中都和开始时完全一样,大约每 1 到 10 秒决策一次;一个规则驾驶员每秒决策约一百次,并击败了它们。游戏的内置 AI 击败了两者。在比赛之间、没有任何权重可改的情况下,一个循环改变了规则驾驶员十个开关中的两个,每一个都只在配对检验之后才改变;在与内置 AI 对抗的独立比赛中测得,每坦克分钟净击杀从 −1.17 变为 −0.26,零表示击杀与阵亡一样多。它没有越过零,而在没有可尝试的东西之后,它停了下来。
对项目办公室来说,有用的部分不是比分。而是:有记录的失败产生了具名的候选改动,每一处改动都只有一行并附带证据,大多数候选被拒绝,而手写驾驶员与学得驾驶员之间的全部差别可以在一张表中读完。这一切在电子游戏之外是否成立,是尚未回答的问题;我们已经列出,在任何人应当相信它之前,必须具备哪些条件。
参考文献
- Perslis Research. Rules at the wheel: tanks, language models and an honest loss. September 2026. research.perslis.com/tank-arena.
- Perslis Research. Fail-first models: failure becomes structure, structure changes the next attempt. September 2026. research.perslis.com/fail-first;概述见 www.perslis.com/fail-first-model。
- Perslis Research. VDSG: a commanded admission-control runtime for autonomous agents. September 2026. research.perslis.com/vdsg.
- Perslis Research. Runtime admission control on a photoreal driving simulator. September 2026. research.perslis.com/carla-admission.
- Perslis Defense. Offense and Evolution pages (the BZFlag ladder as published). www.perslis.com/defense/offense;www.perslis.com/defense/evolution.
- BZFlag. Open-source multiplayer 3D tank battle game. github.com/BZFlag-Dev/bzflag.
- M. Alshiekh, R. Bloem, R. Ehlers, B. Könighofer, S. Niekum, U. Topcu. Safe reinforcement learning via shielding. Proc. AAAI Conference on Artificial Intelligence 32(1), 2018. doi:10.1609/aaai.v32i1.11797.
- P. Armitage, C. K. McPherson, B. C. Rowe. Repeated significance tests on accumulating data. Journal of the Royal Statistical Society, Series A 132(2):235, 1969. doi:10.2307/2343787.
- T. B. Brown et al. Language models are few-shot learners. Advances in Neural Information Processing Systems 33, 2020. arXiv:2005.14165.
- U.S. Department of Defense. DoD Directive 3000.09, Autonomy in Weapon Systems. Reissued 25 January 2023.
- U.S. Department of Defense. DOD adopts ethical principles for artificial intelligence (responsible, equitable, traceable, reliable, governable). Press release, 24 February 2020.
- Human Rights Watch. Review of the 2023 US policy on autonomy in weapons systems. 14 February 2023. hrw.org(引述 DoDD 3000.09 §4.1(a))。
- J. Kirkpatrick, R. Pascanu, N. Rabinowitz, J. Veness, et al. Overcoming catastrophic forgetting in neural networks. Proceedings of the National Academy of Sciences 114(13):3521–3526, 2017. doi:10.1073/pnas.1611835114.
- M. McCloskey, N. J. Cohen. Catastrophic interference in connectionist networks: the sequential learning problem. Psychology of Learning and Motivation 24:109–165, 1989. doi:10.1016/S0079-7421(08)60536-8.
- National Institute of Standards and Technology. Artificial Intelligence Risk Management Framework (AI RMF 1.0). NIST AI 100-1, January 2023. doi:10.6028/NIST.AI.100-1.
- L. Sha. Using simplicity to control complexity. IEEE Software 18(4):20–28, 2001. doi:10.1109/MS.2001.936213.
- N. Shinn, F. Cassano, E. Berman, A. Gopinath, K. Narasimhan, S. Yao. Reflexion: language agents with verbal reinforcement learning. Advances in Neural Information Processing Systems 36, 2023. arXiv:2303.11366.
- G. Wang, Y. Xie, Y. Jiang, A. Mandlekar, C. Xiao, Y. Zhu, L. Fan, A. Anandkumar. Voyager: an open-ended embodied agent with large language models. arXiv:2305.16291, 2023.
附录 A · 每个数字从何而来
每个数字及其来源都列在随附的论断文件中。来源是 BZFlag 实验线自己的证据文件,读取时未作任何修改;本文没有为此运行任何比赛、游戏或学习循环。一个分析脚本重新计算每一个派生数字。它从记录循环最后一次决定的那次提交(b0d4380,2026 年 9 月 27 日 15:01)中导入实验线自己的比赛计数、对等对抗和驾驶员代码,并检查该提交中的证据文件与它读取的文件完全一致。
| 结果 | 来源 |
|---|---|
| 主赛:决策次数、中位决策时间、比分 | evidence/arena/20260926-183228/results.json、meta.json、scoreboard.jsonl |
| 笔试 | evidence/exam.jsonl(48 个回答,六个驾驶员) |
| 汇总结果(表 3) | evidence/arena/ 中 22 次运行各自的 results.json;两个 INVALID.md 文件;上场分钟数由实验线的 history.match_row 计算 |
| 对等对抗阶梯(表 5) | 实验线的 evolve.benchmarks(),作用于离线存储盘上的每一次运行(116 个运行目录,截至 20260927-114455) |
| 循环的决定、晋升与停止(图 3) | evidence/pilots/evolution.jsonl(34 条记录)、evolve.log、current.json、progress.json |
| 基因组及其封闭的开关清单 | b0d4380 时的 bzflag_floor/pilot.py;测试 test_orders.py 与 test_unknown_genes_are_refused,在固定代码的临时副本中运行:21 项通过 |
| 每个开关的编写时间 | 对 pilot.py 执行 git log -S |
复现这些数字。在论文目录下运行 python3 -B analysis/fw_analysis.py(写出 analysis/out/fw.json),然后运行 python3 -B analysis/figure_data.py(PDF 和本页所用的图表坐标)。这些脚本只读取;-B 让 Python 不向实验线写入字节码。本页的图表与 PDF 使用相同的数字绘制。
如何引用
Perslis Research. Frozen Weights: A Brain That Changes Between Fights, Models That Must Be Rebuilt. White paper, research prototype, September 2026. https://research.perslis.com/frozen-weights
@techreport{perslis2026frozenweights,
title = {Frozen Weights: A Brain That Changes Between Fights, Models That Must Be Rebuilt},
author = {{Perslis Research}},
institution = {Perslis Research},
type = {White paper},
year = {2026},
month = {9},
note = {Research prototype; simulation and games; not a certified safety system.},
url = {https://research.perslis.com/frozen-weights}
}