23. 2026-10-03 自主工作期(二):修尺子,以及一个被推翻的收口结论
·
★★★★★
3.8k 字 ·
源文件 PROJECT.md 第 4701 行起 ·
ruler arch optim ground selfcorrect
⚠️ 本节记录的是"上一节的收口结论被推翻"的全过程。 它比上一节更重要,因为它说明了那个结论为什么不够硬。
#23.1 ★★ 起因:上一节的结论依赖两个有缺陷的量
| # | 缺陷 | 现场 |
|---|---|---|
| 1 | ★★ "到达"的容差正好等于一步的位移(ARRIVE_PX = MOVE_PX = 4.0) | ★ 摇杆归零时方块被留在 4.52 px,而阈值是 4.0 px —— 半个像素决定判定 |
| 2 | ★★ "撤掉进度条"根本不是撤掉 | ★ 进度条累计 0.75,而关掉后回合末补 arrive_bonus = 1.0 —— 同量级 |
★ 修法:--arrive-px(做成参数,这次用 12px = 3 倍)+ --arrive-bonus 0.1(是进度条的 13%)。
★ 三层端到端验证:启动打印生效值 / 到达锁存阈值精确随容差翻转 / 所有构建路径一致。
#23.2 ★★★★★ 修好之后的读数:两条臂都守住了
| 臂 | 配置 | 最会的时候 | 训练结束时 | 比值 |
|---|---|---|---|---|
F2_A | 有老师(β→0.4) | 40.6% | 31.2% / 1.69 格 | 1.30 守住 |
★★ F2_B | ★ 无老师(β→0.0) | ★ 44.8% / 1.90 格(就是末点) | 44.8% | ★★ 1.00 守住 |
| 随机地板 | — | 5.6% | — | — |
★ 对照上一节:同配置的 B 当时是"最好 35.9% → 末点 0.0%"。
★★★ -> 上一节那句"她学得会但留不住"因此【被推翻或至少大幅收窄】。
#23.3 ⚠️ 但"是哪一处修复救了它"分不开
★ 这次同时改了尺子(arrive_px)与【训练条件】(arrive_bonus)。
★★★ -> 这违反"一次只改一个变量",必须写在结论里。 ★★ 可复用的做法:把"修测量"与"改条件"分成两个目标; 不得不同时做时,把这个混淆写在结论的【第一行】。
#23.4 ★★★★ 一个我自己发现的设计缺口
四臂的进度条都是"第 600 步才关" → 每一臂都先享受了 600 步的密集信号。
★★★ -> "撤掉密集信号之后能不能学会"这个问题,四臂里一条也没测到, 而报告里把它叫做"支架撤除实验"。
★★
F2_E(--shaping-off-at 0+β→0.0)补这个缺口。
#23.5 ★★★ 她学到的一直只是【两条】指令(⚠️ 本节结论已被更正,见 §24)
| 指令 | F2_A | F2_B | 上一轮 C |
|---|---|---|---|
| 左 | 100% | 100% | 0% |
| 下 | 25% | 79% | 100% |
| 上 | 0% | 0% | 100% |
| 右 | 0% | 0% | 75% |
⚠️⚠️ 本节结论已被更正(同日,§24):上面那张表是【末点】读数。 而【最好点】的读数显示她做到过 3 条与 4 条 ——
C_SC_nobar_best是 上 100% / 左 62% / 右 79% / 下 100%(85.4% / 0.96 格)。 ★ 所以"只有两条"只对末点成立,对能力【不成立】。 → 见journal/CORRECTION_SHE_LEARNED_THREE_AND_FOUR_COMMANDS.md。
★★★ ->(本节原结论,现仅对末点成立)"哪两条"会换,"只有两条"一致。
#23.6 ★★★ 更正:§21.5 那条"完美策略到位 0 次"是我的控制器有缺陷
★ 修正后的策略在每个容差下都是 100.0%。 ★ 错因:它把"命令摇杆 0"当成"停下",而方块会停在离目标 21.44 px 处。 ★ 这是"坏工具指控被测对象"那一族的第 4 例。
#23.7 ★★★★ 本节的可复用教训
| # | 教训 |
|---|---|
| ★ 135 | ★★ "命令一个零动作"不等于"停住" —— 零动作会落在一个由动力学决定的位置上。 |
| ★ 136 | ★★ "参数不能取 0"这类理由,要用【发放点计数】验证,而不是引用注释。 |
| ★ 137 | ★★★ 修好一把尺子后要问:"我原来的结论里,哪一部分【不依赖那把尺子】?"<br>(本例:到位率依赖容差,而格距不依赖) |
| ★ 138 | ★★★ "用了中途点"这个错会在【两个相反方向】上犯 —— 提前宣布失败,与提前宣布成功。<br>而提前宣布成功更危险,因为没人会去复核好消息。 |
| ★ 139 | ★★★ 报告的永远是【读数 − 基线】,而不是读数本身。<br>(本例:她的峰值一字不差 47.9%,而地板从 1.4% 涨到 5.6%) |
| ★ 140 | ★★★ "修好测量工具"可能同时改掉【尺子精度】与【奖励幅度】—— 后者是训练条件,不是测量。 |
| ★ 141 | ★★★ 一个诊断的证据来自【另一个任务】时,要问它在【当前任务】上是否也是约束。<br>(记忆短在序列任务上是约束,在接地任务上不是 —— 后者没有延迟期) |
| ★ 142 | ★★★★★ "中途撤掉 X"与"从来没有 X"是两个不同的实验;<br>只做前者会让你以为你测了后者。 |
| ★ 143 | ★★★★★ 判断"某模块能不能外包给一个通用模型"时,最硬的判据不是"输出像不像",<br>而是【被测主体能不能表示它自己说的话】。 |
#23.8 ★★★ 新增的工具(都先跑过已知对照)
| 工具 | 作用 |
|---|---|
tools/measure_floor_corrected_policies.py | 修正后的盲策略地板(含"朝目标"必须先证明它接近 100%) |
tools/measure_gn_share2.py + read_gn_share_json.py | 各损失项的梯度范数份额("谁在主导训练") |
tools/eval_f2_all_checkpoints.py | 最好点 + 末点 + 每个快照的同批世界复评(三数报) |
tools/check_run_identity.py | 从跑次自己的横幅核对参数并逐项 diff(治"用记忆代替核对") |
tools/scan_before_sharing.py | 对外分享前的泄露扫描(凭据/路径/邮箱/IP) |
tools/list_chain_arms.py | 从启动器文件解析链包含哪些臂(治"检测器匹配自己") |
tools/goal_supervisor.py | 目标契约自检 + 下一个目标提案(每个目标轮次结束跑一次) |
#23.9 ★★★ 一个设计决定:嘴巴是她自己打字,不是 LLM(用户定)
★ 用户否掉了"用 LLM 当嘴巴",理由是:
"LLM 会说出她没学过的东西,她自己可能听不懂自己在说什么。"
★★★ 这个理由比统计判据(T/F)更硬:
| 判据 | 性质 |
|---|---|
| T(固定 prompt 只改状态 → 输出必须变) | ★ 统计性,可绕过 |
| ★★★ 同一性:她说的每个词必须是【她自己的符号状态能表示】的 | ★★★ 结构性 |
★ 接口事实:N_KEY=77,含 a-z/0-9/空格/退格/回车,MAX_LINE=16;
认字任务的奖励就是"编辑距离"→ 她已经在打字。
★ 所以"打拼音"(ni3 hao3,全 ASCII)不是新增能力,而是复用她唯一的符号输出通道。
★ 两条实现约束:① 嘴巴有自己的键输出,不与人共享;
★★★ ② 它的梯度【不回流入核心状态】 —— 否则她会为了"说得通顺"而扭曲内心。
★ 详见 journal/DECISION_MOUTH_IS_HER_OWN_TYPING_NOT_AN_LLM.md。