{"slug": "ai-should-build-its-own-research-world-model", "title": "AI Should Build Its Own Research World Model", "summary": "Researchers built an external cognitive architecture called a \"research world model\" that allows an AI agent to record and query its trial-and-error experiences across contexts, enabling it to autonomously decode the mechanics of an unseen puzzle world (ARC-AGI-3's ls20) and achieve a one-shot victory on the final level, compared to a ~1% baseline pass rate for frontier LLMs without such a model.", "body_md": "**第 7 关 · WIN**\n\n**Level 7 · WIN**\n\n**TL;DR** AI 到底能否真正理解一个完全未知的世界？什么才是让系统像科学家一样破解全新难题的关键？在当前范式下，大模型推理时权重完全锁死，上下文一断，试错积累的经验便瞬间清零——它无法像人类那样在“探索-反思”的循环中自然长出“科研直觉”。为了打破这一瓶颈，我们的解法是：**为 AI 显式外置一套认知架构，让它在探索的过程中边试错边记录，将发现的底层机制动态沉淀为一份可跨上下文查询的“科研世界模型”**。为了验证这个方法，我们将 Claude Code 与 Opus 4.8 的组合丢入一个它从未见过的谜题世界（ARC-AGI-3 的 ls20）中要求其通关。要知道，前沿大语言模型裸探索这类谜题的基准通关率仅约 1%。然而，在引入世界模型后，系统不仅自主破解了所有底层机制，在挑战最后也是最难的关卡时，智能体在世界模型的辅助下实现了一次性通关。这证明了通过这种无需微调（training-free）且自我演化的方式，AI 智能体能够真正理解一个未知世界的物理规律，并构建出属于自己的世界模型。\n\n**TL;DR** Can AI truly understand a completely unknown world? What is the real key to enabling a system to crack novel problems like a scientist? Under the current paradigm, model weights are locked during inference; the moment a context window expires, any experience gained through trial and error vanishes—AI cannot naturally grow \"scientific intuition\" through a loop of exploration and reflection as humans do. To break this bottleneck, our approach is to **explicitly equip the AI with an external cognitive architecture, allowing it to record as it explores and dynamically crystallize discovered mechanics into a cross-context, queryable \"research world model.\"** To test this, we dropped a Claude Code + Opus 4.8 agent into a completely unseen puzzle world (ARC-AGI-3's ls20) and tasked it with clearing the game. For context, the baseline pass rate for frontier LLMs' bare exploration in such puzzles is ~1%. Yet, empowered by the world model, the system autonomously decoded all underlying mechanics. When faced with the final and hardest level, the agent achieved a one-shot victory with the model's assistance. We show that with this training-free and self-evolving approach, an AI agent is able to understand the physical rules of an unknown world and build its own world model.\n\n做研究这几年，我发现科研的本质其实就是在一个未知的世界里持续探索的反馈循环（feedback loop）：探索、提出假设、行动、观察、反思。人类的科学就是靠这个循环迭代出直觉，然后这些直觉慢慢沉淀在论文里。当我们在探索未知世界时，直觉会自然而然地长在我们的脑子里。\n\nIn my years of doing research, I’ve realized that the essence of scientific inquiry is a continuous feedback loop inside an unknown world: explore, hypothesize, act, observe, and reflect. Human science relies on this loop to iterate out intuition, which then slowly crystallizes into papers. When we explore the unknown, intuition naturally grows in our minds.\n\n但是，当 AI 在探索未知的世界时，它没办法自然而然地长出这种抽象思维的能力。那我们是不是可以显式地为 AI 搭建一套“直觉系统”呢？——我们总说直觉是个有些玄学的东西，但理论上它是可以被记录下来的。这就要说到强化学习的范式：在 RL 里，我们确实可以直接更新模型的权重，但这不过是一种非常隐式的知识压缩，缺乏可解释性，也没办法很方便地被提取和调试。所以这一切促使我们思考：能不能给 AI 搭建一个外置的认知架构（cognitive architecture），让它能够持续地记录、追踪并被随时查询，让 AI 能够随着时间产生知识复利（compound knowledge over time）？我把这套系统称为**科研世界模型**（research world model）。\n\nHowever, when AI explores an unknown world, it cannot naturally grow this kind of abstract thinking ability. Could we, then, explicitly build an \"intuition system\" for AI? We often speak of intuition as something mystical, but theoretically, it can be recorded. This brings us to the reinforcement learning paradigm: in RL, we can indeed directly update the model's weights, but this is merely a highly implicit form of knowledge compression. It lacks interpretability and cannot be easily extracted or debugged. All of this prompted us to wonder: could we build an external cognitive architecture for AI that can continuously record, track, and be queried, allowing the AI to compound knowledge over time? I call this architecture a **research world model**.\n\n下面的两段录像展示了对比：在自主构建了这套世界模型后，AI 在挑战最后一关时仅仅用了 63 步就结束了探索，成功通关。相反，如果没有这样一个世界模型，哪怕只是扔给它前面关卡的“通关记录”，它自己摸索了 5000 多步却依然卡在死胡同里毫无进展。这生动地证明了世界模型对于 AI 突破未知死局的重要性。这套写下的档案里到底有什么，这篇文章就讲这个。\n\nThe two recordings below show the contrast: by building its own world model as it explored, when the AI tackled the final level, it finished the exploration and cleared the game in just 63 steps. Conversely, without such a world model, even if handed the \"clear records\" of earlier levels, it wandered in a dead end for over 5000 steps with zero progress. This vividly proves the importance of a world model for AI to break through unknown deadlocks. What exactly was in that written archive: that's what this post is about.\n\n为了做这个实验，我们需要为 AI 找一个完全未知的环境，让它可以自己去探索并理解底层的物理规律。通过探索、总结、反思和提出假设的循环，慢慢沉淀出对这个世界的显式理解，最终通关。这个环境可以是一片前沿的科研领域，但在这里，我们选择用 ARC-AGI 里的一个互动谜题作为实验对象，来探索 AI 在持续的抽象与反思能力上的进展。\n\nTo run this experiment, we needed a completely unknown environment for the AI, where it could explore and understand the underlying physics on its own. Through the loop of exploration, summarization, reflection, and hypothesizing, it would slowly precipitate an explicit understanding of the world to eventually clear the game. This environment could be a frontier of scientific research, but here, we chose an interactive puzzle from ARC-AGI as our experimental subject to explore AI's progress in continuous abstraction and reflection capabilities.\n\n而这只是一个例子。它可以是一个游戏世界，也可以是一段蛋白质、一个没被解过的方程、一片还没有人绘制的科学前沿。我们真正想知道的，不是 AI 能不能通关，而是把它放到一个谁都没去过的地方时，它能不能像科学家那样，自己走出来。\n\nAnd this is only one example. The world could be a game; it could just as well be a stretch of protein, an unsolved equation, a patch of scientific frontier nobody has charted. What we actually want to know isn't whether an AI can clear a game; it's whether, dropped somewhere no one has ever been, it can walk out the way a scientist would.\n\n科研，不该只被压缩进权重和直觉里。\n\nResearch shouldn't live compressed in weights and intuition.\n\n这个实验是这么跑的：\n\nHere's how we ran it:\n\n现在，看它睁眼时看到的东西。\n\nNow, look at what it saw when it opened its eyes.\n\n如果是你，会先按哪个键？\n\nIf it were you, which key would you press first?\n\n它四个都按了。有的方向走得动，有的撞上去纹丝不动，但底部的横条照样短一格。*撞墙不免费。*这个世界连犯错都收钱，还不给你价目表。接下来它就是瞎摆弄：把那个灰帽紫身的方块挪来挪去，踩过一个不起眼的黑点，左下角框里的图案跳了一下；把方块推进上面那个框，输了；等图案对上再推，整个屏幕重画，第二关。\n\nIt pressed all four. Some directions moved; others hit something and didn't budge, but the bar at the bottom got shorter all the same. *Hitting a wall isn't free.* This world charges for mistakes and doesn't post the prices. What followed was basically fiddling: it shoved the grey-capped purple block around, stepped across an inconspicuous black dot, and the pattern in the bottom-left frame jumped; pushed the block into the frame up top, lost; waited for the pattern to match and pushed again, and the whole screen redrew. Level 2.\n\n第一个 session 收工前（不妨叫它第一夜），它做了博物学家落地荒岛会做的第一件事：**给从没见过的东西起名字。**会动的方块叫 `block`\n\n；踩了会让图案跳动的小点叫 `switch`\n\n；上方那个装着目标图案的框叫 `key-box`\n\n；地上那种说不清用途的稀有斑点，它随手叫作 `speck`\n\n。谈不上有想象力，但都好用。名字起好，它开始往一份文件里写词条。\n\nBefore closing out its first session (call it the first night), it did the first thing a naturalist does after washing up on an island: **it named the things it had never seen.** The square that moves became `block`\n\n; the little dot that makes the pattern jump when stepped on, `switch`\n\n; the frame up top holding the target pattern, `key-box`\n\n; the rare floor spots with no obvious purpose it offhandedly called `speck`\n\n. Not imaginative names, but they all worked. Once they were settled, it started writing entries into a file.\n\n```\n## switch\nA rare color-0/1 floor speck the block steps onto to toggle/cycle the lock\npattern shown in the panel. Not consumed (still present after the block moves\noff). The per-level transform differs: L1's switch (R6C3) toggles only the\nmiddle row (2 states); L2's switch (R9C9) is a 4-state cycle (C09, C10).\n```\n\n我第一次翻这份 concepts.md 的时候，也在 `R6C3`\n\n、`color-0/1`\n\n这些地方卡了一下。先不急着解释。这种\"读不懂\"本身就是证据：这些词条从第一行起，就不是写给人读的。\n\nThe first time I opened this concepts.md I got snagged on `R6C3`\n\nand `color-0/1`\n\ntoo. Let's not rush to explain. The unreadability is itself evidence: from their first line, these entries were never written for humans.\n\n第一夜的账单：首次摸清这一关花了 24 步；事后最短通关只要 13 步；死亡 0 次。收工时，它的世界模型里已经躺着七条它敢写下来的规律（在它的档案里，这叫 claim，逐条编号），包括那条日后救它命的 C07：*锁满足时，封死的钥匙盒才会打开。*\n\nThe first night's bill: 24 steps to work the level out the first time; 13 steps for the shortest clear afterwards; 0 deaths. By close of session, seven laws it was willing to commit to writing already lay in its world model (it calls these claims, each numbered and filed), including C07, the one that would later save its life: *only when the lock is satisfied does the walled-shut key-box open.*\n\n命名，是把混沌切成可以思考的零件。\n\nNaming is cutting chaos into parts you can think with.\n\n人类的智慧开始累积，不是哪一代人突然变聪明了，而是我们发明了语言：经验第一次可以离开产生它的那颗脑袋。它在这个小世界里重演的就是这一步：先有词，才有可以传下去的理解。\n\nHuman wisdom started to pile up not because some generation suddenly got smarter, but because we invented language: for the first time, experience could leave the head that produced it. That's the step it re-enacted in this little world: first the words, then an understanding you can pass on.\n\n不过到这里为止，它写的东西跟一本旅行日记还没什么两样：看见，记下。变化出现在第五关：它发明的词，开始自己做数学。\n\nUp to this point, though, what it wrote was still nothing more than a travel diary: see, record. That changes at level 5, when the words it invented start doing mathematics on their own.\n\n第五关有两个斑点。正常的开关是\"按了就到某个状态\"，第一关的开关就是这样，来回翻同一行。这两个不是。踩第一个，面板图案往前循环一步，六步回到原点；踩第二个，整个图案顺时针转 90°。\n\nLevel 5 has two specks. A normal switch is \"press it, land in some state\"; level 1's switch was like that, flipping the same row back and forth. These two are not. Step on the first and the panel pattern cycles forward one notch, coming back around after six; step on the second and the whole pattern rotates 90° clockwise.\n\n它们不是按钮，是动作。\n\nThey aren't buttons. They're operations.\n\n动作和按钮的区别，要命在一点：顺序开始要紧了。先转再循环，和先循环再转，结果不一样。玩过魔方的话你已经懂了：没有哪个单独的转法能复原魔方，解法是一串转法拼成的\"句子\"，而且有些状态你永远转不到。它面前这把锁，就是一个 3×3 的小魔方。这事没人告诉它，是它自己发现的。而它接下来做的几件事，恰好就是数学家拿到魔方会做的头几件。\n\nOperations differ from buttons in one lethal way: order starts to matter. Rotate-then-cycle is not cycle-then-rotate. If you've ever held a Rubik's cube you already get it: no single twist restores the cube, a solution is a \"sentence\" spelled out of twists, and some states you can never twist your way into. The lock in front of it was a little 3×3 Rubik's cube. Nobody told it that; it found out on its own. And the next few things it did happen to be the first few things a mathematician does when handed one.\n\n**第一步，起名。**它把循环动作记作 P，把旋转动作记作 Q。这两个符号后来在 claims 和 trace 里被跨文件反复引用；同一个动作要反复指认，就得有个稳定的名字。少年费曼自学三角的时候也干过一样的事：嫌 sin、cos 记号歧义，发明了一套自己的符号，用得飞快；后来放弃了，他说，\"我发现如果要跟别人说话，就只能用标准记号。\"费曼有听众，所以他投降了。这个 agent 的唯一听众是未来的自己，所以它留下了费曼放弃的东西。而且从棋盘里面看，P 和 Q 比任何人类词汇都更贴身：它不需要\"循环\"和\"旋转\"的比喻，它需要能拼句子的字母。\n\n**Step one: naming.** It wrote the cycling operation as P and the rotation as Q. The two symbols then get cited across files, in claims and trace alike; referring to the same operation over and over needs a stable name. Teenage Feynman did the same while teaching himself trigonometry: finding the sin and cos notation ambiguous, he invented symbols of his own and worked fast with them; later he dropped them. \"I found out that if I was going to talk to anybody else, I'd have to use the standard symbols.\" Feynman had an audience, so he surrendered. This agent's only audience is its future self, so it kept what Feynman gave up. And seen from inside the board, P and Q sit closer to the skin than any human word: it doesn't need the metaphors of \"cycle\" and \"rotate,\" it needs letters that can spell sentences.\n\n**第二步，把动作画成地图。**它笔下的面板状态长这样：`110/011/101`\n\n，又是密文。但这串字符其实是一块 3×3 的灯板，1 是亮、0 是灭。画出来就不是密文了：\n\n**Step two: drawing the operations as a map.** In its notes a panel state looks like this: `110/011/101`\n\n. Ciphertext again. But the string is really a 3×3 board of lights, 1 lit, 0 dark. Drawn out, it stops being ciphertext:\n\nP 的全部家当就这六个状态：一步一格，六步转回原点。这个圈它记作 orbit B（轨道）：光按 P，出不了这个圈。一百九十年前 Babbage 说过，代数记号的本事，就是\"把大量的意义压进狭小的空间\"。\n\nThese six states are all P owns: one notch per press, back where you started in six. It calls the circle orbit B, an orbit: press only P and you never leave it. Babbage said it a hundred and ninety years ago: the whole point of algebraic notation is to \"condense into small space, a large amount of meaning.\"\n\nQ 只干一件事：把整块板顺时针转 90°。左边的状态转一下，就成了右边。这一转在第七关还会出现。\n\nQ does one thing: rotate the whole board 90° clockwise. Turn the left state once and you get the right one. The same turn shows up again on level 7.\n\n**第三步，发现轨道与桥。**第六关把难度加倍：两把锁，其中一把的目标图案，光按 P 怎么按都到不了：它在 P 够不着的另一个圈里。它没接着撞，停下来写了这一段：\n\n**Step three: discovering orbits and bridges.** Level 6 doubles the stakes: two locks, and one lock's target pattern won't come no matter how much you press P: it lives in another circle P can't touch. It didn't keep banging; it stopped and wrote this:\n\n```\nP is a genuine period-6 NON-permutation (on-bit count varies), and — the new\nstructural fact — P has orbits … can NEVER reach the target in orbit A — the\nLOWER alignment GENUINELY requires a {P,Q} WORD where Q bridges between P's\norbits, then P walks to the target within the right orbit.\n… the LOWER word QQPPPPPQ (offline BFS over {P-cycle,Q}) is forced and ENDS in Q\n```\n\n**第四步：不可能定理。**引文里有一个大写的 NEVER。它找了一路捷径，最后找到的是一条\"捷径不存在\"的证明：光靠 P，那个目标永远到不了，这不是还没试够，是数学上到不了。试错只能告诉你什么行得通；**只有理论能告诉你什么永远行不通。**知道这一点的那一刻，它停止了在死路上花钱。\n\n**Step four: an impossibility theorem.** There's an all-caps NEVER in that quote. It went looking for a shortcut, and what it found instead was a proof that no shortcut exists: by P alone, that target can never be reached; not \"hasn't tried hard enough,\" mathematically unreachable. Trial and error can only tell you what works; **only theory can tell you what will never work.** The moment it knew this, it stopped spending money on the dead road.\n\n现在回头看这一节的两个词是在哪里找到的。第五关的 PPQQ、第六关的 QQPPPPPQ，都不在游戏里，在纸上。这个世界里每走一步都花钱、走错了要赔命；但在写下来的规则上推演，一分钱都不用。它把 P 和 Q 的规矩写清楚，在纸上把状态搜了个遍，找到解，回游戏里照着按。\n\nNow look back at where this section's two words were found. Level 5's PPQQ, level 6's QQPPPPPQ: neither came from inside the game; both came from paper. In this world every step costs money and a wrong one can cost a life; deriving on written-down rules costs nothing. It pinned down how P and Q behave, combed through the states on paper, found the solution, then walked back into the game and pressed the keys.\n\n```\n(2,3) period-6 + (7,3) 90°-rotation, offline BFS gave the forced word PPQQ,\nverified live to reach 101/110/011, then delivered → levels 4→5\n```\n\n数学家 Steven Strogatz 写过一篇给普通人的群论名文，结尾恰好落在这句话上：同一类结构，会在最不相干的地方反复出现，\"从水分子的对称性，到一对电灯开关的逻辑\"。这个 agent 是在两个游戏开关里撞见它的。没人告诉它这叫群论。它到底算不算\"懂\"，我们也说不好；能看到的只是，它需要哪一块，就把哪一块重新造了出来。\n\nThe mathematician Steven Strogatz wrote a well-known group-theory essay for lay readers that ends on exactly this note: the same structures keep turning up in the least related places, \"from the symmetries of water molecules to the logic of a pair of light switches.\" This agent ran into it inside two game switches. Nobody told it this was group theory. Whether it \"understands\" it, I honestly can't say; what we can see is that whichever piece it needed, it rebuilt.\n\n数学，就是写下来的东西开始自己干活的时刻。\n\nMathematics is the moment the things you wrote down start doing work on their own.\n\n而一门语言一旦开始计算，下一步，就是开始怀疑自己。\n\nAnd once a language starts computing, its next step is to start doubting itself.\n\n这个世界模型不是句句真理。它最好看的几页，恰恰是错的那几页。\n\nThis world model is not true line by line; its best pages are precisely the wrong ones.\n\n前四关里，它好几次看到方块\"瞬移\"：明明在这里，一步之后出现在别处。它很自然地假设了传送门，甚至开始给传送门画表（换我多半也会这么猜）。然后有一天，它把死亡记录和\"瞬移\"记录摆在一起，发现两边一一对上了：\n\nAcross the first four levels it kept seeing the block \"teleport\": clearly here, then somewhere else one step later. Naturally enough it hypothesized portals, and even started tabulating them (I'd probably have guessed the same). Then one day it laid the death records next to the \"teleport\" records, and they lined up one for one:\n\n```\n## !!! UNIFYING DISCOVERY: the \"teleports/portals\" were BUDGET-DEATH RESPAWNS\n(no portals exist) !!!\n…\nTHERE ARE NO PORTALS on L1-L4. The block always moves 1 macro-cell/press;\nwalls = no-op.\n```\n\n翻案到这里完成。故事要是停在这，也就是个\"知错能改\"。两关之后，第六关的右半边它怎么都走不通，排查来排查去，只好再写一条：\n\nSo far, so good. But if the story stopped here it would just be \"admits mistakes, fixes them.\" Two levels later, the right half of level 6 wouldn't yield no matter what it tried; after troubleshooting in circles, it had to write one more line:\n\n```\n## ★★ L6 HAS PORTALS (corrects O22 \"no portals confirmed\") — right side is\nportal-trapped\n```\n\n看括号。翻案的时候，它给被翻的旧结论标了编号：**它在给自己的错误编档案。**\"没有传送门\"没有被删掉，它还留在第 1–4 关的条目里，边界画得清清楚楚：那句话在它的适用范围内，至今是对的。\n\nLook at the parenthesis. When it overturned the old conclusion, it cited that conclusion by number: **it was keeping files on its own errors.** \"No portals\" was not deleted; it still sits in the entries for levels 1–4 with its boundary drawn sharp: within its stated scope, that sentence is correct to this day.\n\n还有一个错，一句话就能讲完：底部预算条右端那几个 `%`\n\n记号，它最早猜是\"目标标记\"，猜错了：那是命数。它一直没死，就一直没机会看见这个计数器动。*幸存者是看不见幸存者偏差的，直到它死了几次。*\n\nOne more mistake, tellable in a sentence: the few `%`\n\nmarks at the right end of the budget bar it first guessed were \"goal markers.\" Wrong: they were lives. As long as it never died, it never got to watch that counter move. *A survivor can't see survivorship bias until it has died a few times.*\n\n第四关还有一件更小的事。它探测一个斑点，从北边踩，纹丝不动，差点写下\"此点不可踩\"。拦住它的不是运气，是它自己两关之前写的规则，C10 号 claim 里那条\"必须先采样够再下结论\"：\n\nLevel 4 holds an even smaller incident. Probing a speck from the north and getting nothing, it nearly wrote down \"this spot cannot be stepped on.\" What stopped it wasn't luck; it was a rule it had written itself two levels earlier, the \"sample enough before concluding\" clause in claim C10:\n\n```\nThe C10 must-sample-first lesson was directly load-bearing on L4: the colour\nselector was sampled 6× (refuting a \"double-duty\" shortcut) and the pattern\nspeck — initially mis-judged \"not steppable\" — was a C10 under-sampling error\ncorrected by trying an untried side. So the recipe is now VERIFIED through an\nL4 win.\n```\n\n到这里，是笔记在纠正它，而不是它在纠正笔记。\n\nBy this point the notes were correcting it, not the other way around.\n\n写下来的东西它也盲信过，所以否证必须留档。它的世界模型里至今躺着两条被推翻的 claim（C03、C08），标着 `refuted`\n\n，谁也不许删：它们是免疫系统的一部分。顺便看看诚实的代价长什么样：\n\nIt has also blindly trusted things just because they were written down, which is why refutations have to stay on file. Two overturned claims (C03, C08) still lie in its world model, marked `refuted`\n\n, and nobody gets to delete them: they're part of the immune system. While we're at it, here's what the price of honesty looks like:\n\n会计算的语言，下一步学会怀疑自己。\n\nA language that has learned to compute learns, next, to doubt itself.\n\n而一本会怀疑自己的笔记，离\"能回答问题\"，只差一步。\n\nAnd a notebook that doubts itself is one step short of answering questions.\n\n第七关只需要知道一件事：它是一间黑屋子。整张地图埋在迷雾里，只有方块周围一小圈看得见，走到哪亮到哪，离开就重新变黑。每走一步扣两点预算，是前面关卡的两倍。\n\nOnly one thing matters about level 7: it is a dark room. The whole map is buried in fog; only a small circle around the block is visible, lighting up wherever it walks and going dark again behind it. Every step costs two points of budget, double any earlier level.\n\n它举着灯把屋子摸了一遍，然后撞上了那个死局：钥匙盒锁在一个口袋里，四面是墙，传送门也进不去。口袋只有锁开了才开；而按照它自己的 C07 定律，开锁需要先读到目标图案，目标图案又在钥匙盒上。要开门得先进门。侦察了 515 步之后，这个 context 的窗口见了底。它没有解开这一关。\n\nIt carried the lamp through the whole house, then hit the deadlock: the key-box is locked inside a pocket, walled on every side, unreachable even by portal. The pocket only opens once the lock is open; and by its own law C07, opening the lock requires first reading the target pattern, which sits on the key-box. To get through the door you must already be through the door. After 515 steps of reconnaissance, this context's window ran out. It did not solve the level.\n\n但它留了一份遗嘱，写给下一个 session：\n\nBut it left a will, written for the next session:\n\n```\nfailure_mode: The pocket … is PORTAL-ISOLATED: exhaustive 4-dir probing of\n  every reachable floor cell … found NO warp landing in it; all center portals\n  loop among {center,(2,6),right-via-(8,7)} …\nlesson: Most likely the pocket OPENS only after the LOCK IS ALIGNED (C07\n  'walled-shut key-box becomes enterable', extended to the fog mechanic) — but\n  the pattern target is unreadable until the box reveals (chicken-and-egg).\n  NEXT SESSION leads: try a GUESSED-target alignment (colour-% + each\n  reachable {P',Q} pattern state) and re-test the (9,5)→(10,5) walls …\nstatus: open\n```\n\n一个 context 死在了这一关，把作战计划写给了下一个自己。\n\nA context died on this level and willed its battle plan to the next self.\n\n接手的新 context 没有再去撞墙。它先把前人写下的世界模型通读了一遍，然后拿着上面那份遗嘱（[研究树](https://raw.githack.com/ShokuhouMisak1/locksmith-blog/main/trajectory.html)里编号 N72——全部 75 个节点都可以逐个点开）去问。`research-foresight`\n\n就是这套状态上的问询接口，下面档案原文里的 wm-predict 是它当时的旧名。这样的问答长什么样，第六关有一次全程留档的：\n\nThe new context that took over didn't go back to banging on walls. First it read through the world model its predecessors had written; then it took the will above (node N72 in the [research tree](https://raw.githack.com/ShokuhouMisak1/locksmith-blog/main/trajectory.html) — all 75 nodes can be opened one by one) and asked. `research-foresight`\n\nis the questioning interface over this state; wm-predict, in the archive excerpts below, is its old name at the time. Level 6 has one such exchange kept on file, end to end:\n\n```\nwm-predict over ara-ls20/ was asked: does the shared panel reset after a\npartial delivery, is there a forced order, how is the LOWER box reached.\nIt answered, separating grounded inference … from a NAMED speculative leap\n(panel PERSISTS after a partial delivery; order UPPER-first; LOWER reached\nafter col-10 unblocks), flagged medium confidence, and gave concrete\nfalsifiers. ALL THREE speculative predictions were then LIVE-CONFIRMED (N62).\n```\n\n这里得认个账：第七关这次提问的原句没留进档案，是我们流程的疏漏。留下来的是它带去的清单，和拿回来的判断：\n\nI have to own something here: for the level-7 query, the question's exact wording never made it into the archive; our process slipped. What survives is the list it brought, and the judgments it carried back:\n\n```\nwm-predict consulted 2x: predicted multi-region composed-{P',Q} multi-control\nlock (matched) and target colour=% (CONFIRMED — color-8); its center-DOWN-\nwarp-to-pocket bet was REFUTED.\n—\nhypothesis: WM-predict (C07-in-fog): the portal-isolated (10,5) pocket opens\n  only when the lock is aligned to a derivable target (colour-alone is dead,\n  N72) …\n```\n\n这条记录里两件事都有。世界模型下错过一注，那句 REFUTED 是它自己写的；而值钱的是那三个字：*可推导。*目标不是读不到，是没读对地方。顺着这个判断，它回到那个\"孤零零的彩色格子\"跟前，一个像素一个像素地抠。我们也是看回放才反应过来：那不是一个点，是一幅缩微到 1 像素 1 格、被雾遮了一半的 3×3 目标图。解码出来：`101/110/011`\n\n，颜色 %。\n\nBoth facts live in this one record. The world model placed a losing bet; that REFUTED was written by its own hand; and the word that paid was *derivable*. The target wasn't unreadable, it was being read in the wrong place. Following that judgment, it went back to the \"lone colored cell\" and picked at it pixel by pixel. It took us a replay to catch what it had caught: not a dot at all, but a 3×3 target pattern shrunk to one pixel per cell, half-covered by fog. Decoded: `101/110/011`\n\n, color %.\n\n剩下的流程在第三节出现过：把 P′（第七关版本的 P）和 Q 的规矩铺在纸上，对 24 个可达状态做离线 BFS，搜出唯一的最短词：\n\nThe rest of the procedure already appeared in §3: lay out the rules of P′ (level 7's version of P) and Q on paper, run an offline BFS over the 24 reachable states, and pull out the unique shortest word:\n\nPPPPPQQ：五步循环，两记旋转，从初始状态走到目标（红框）。整条路在纸上找到，一步都没在游戏里试错。\n\nPPPPPQQ: five cycles, two rotations, initial state to target (red frame). The whole path was found on paper; not one step of it was trial-and-errored in the game.\n\n然后是执行：定颜色，走廊里五次横穿捉住巡逻的 P′，借传送门和补给站横跨地图，在右侧长廊两次截住 Q，面板亮出目标图案，推门。**284 个格子同时重画，state=WIN。**破局后的决胜执行，从头到尾 63 步，零死亡。七关全部通完。\n\nThen the execution: set the color, cross the corridor five times to catch the patrolling P′, ride portals and supply stations across the map, intercept Q twice in the right-hand gallery, and when the panel lit up with the target pattern, push the door. **284 cells redrew at once, state=WIN.** The decisive post-breakthrough run: 63 steps start to finish, zero deaths. All seven levels done.\n\n```\n\"\"\"L7 full solver. Target: pattern 101/110/011 colour-% via word PPPPPQQ,\ndeliver at (9,5)->A2->(10,5).\nPhases (each idempotent, callable separately so I can supervise):\n  colour   -> set colour % at selector (8,1)\n  p N      -> catch P' (left row-8 corridor cols2-3) N times\n  q N      -> catch Q (right col-10) N times\n  deliver  -> goto (9,5), A2 into (10,5)\"\"\"\n```\n\n它手里已经不是一堆笔记，而是一个可以提问的世界。\n\nWhat it held was no longer a pile of notes. It was a world it could ask.\n\n故事讲到这里，该把\"科研世界模型\"说严格了。它不是日志，不是 RAG，不是更长的 context，也不只是知识图谱：那些都只回答\"存了什么\"。它是一套**持续演化的认识论状态**：定义对象和概念；提出可反驳的假设；记录实验干预与观测；给每条结论保存证据来源、置信度和适用边界；把失败转化为约束；并允许未来的 agent 预测、质疑、复现、改写过去的结论。装下这套状态的容器，在我们手里有个正式的名字，ARA（Agent-Native Research Artifact）：为 agent 写、也为 agent 读，不讲故事，只留证据，死胡同原样在档。研究的容器为什么要从论文格式重造起，更早的一篇 [The Last Human-Written Paper](https://amberljc.github.io/blog/2026-04-24-the-last-human-written-paper.html) 写过。这个定义的每个从句都有实物。在做消融之前，把它整个放上解剖台，逐条验明：\n\nWith the story this far along, it's time to make \"research world model\" precise. It is not a log, not RAG, not a longer context, and not merely a knowledge graph: those only answer \"what got stored.\" It is a **continuously evolving epistemic state**: it defines objects and concepts; poses refutable hypotheses; records experimental interventions and observations; keeps, for every conclusion, its evidence sources, confidence, and scope of validity; turns failures into constraints; and lets future agents predict, question, reproduce, and rewrite past conclusions. The container that holds this state has a formal name in our hands, ARA (Agent-Native Research Artifact): written by agents, for agents, no storytelling, only evidence, dead ends kept on file exactly as they happened. The case for rebuilding research's container away from the paper format was made in an earlier post, [The Last Human-Written Paper](https://amberljc.github.io/blog/2026-04-24-the-last-human-written-paper.html). Every clause of this definition has a physical exhibit. Before the ablation, lay the whole thing on the dissection table and verify it clause by clause:\n\n```\nara-ls20/\n├─ logic/                    # 可变层：当前最佳理解\n│  ├─ claims.md              # 15 条定律（含 2 条被否证保留的）✗\n│  ├─ concepts.md            # 它起的名字 ✗\n│  └─ solution/\n│     ├─ recipes.md          # 每关的标准答案 ✓ 留给双胞胎\n│     └─ heuristics.md       # 12 条\"怎么做\"的手感 ✗\n├─ trace/                    # 只追加层：全部历程 ✗\n│  ├─ exploration_tree.yaml  # 75 个节点的研究树（含 19 个死胡同）\n│  ├─ pm_reasoning_log.yaml  # 每一次\"写与不写\"的裁决\n│  └─ sessions/ · _l*_raw.md # 逐回合的原始战报\n├─ staging/                  # 还不敢结晶的观察 ✗\n└─ evidence/                 # 指回原始录像帧的证据索引 ✗\nara-ls20/\n├─ logic/                    # mutable layer: current best understanding\n│  ├─ claims.md              # 15 laws (incl. 2 refuted-but-kept) ✗\n│  ├─ concepts.md            # the names it coined ✗\n│  └─ solution/\n│     ├─ recipes.md          # per-level standard answers ✓ left for the twin\n│     └─ heuristics.md       # 12 entries of \"how-to\" feel ✗\n├─ trace/                    # append-only layer: the full journey ✗\n│  ├─ exploration_tree.yaml  # 75-node research tree (19 dead ends)\n│  ├─ pm_reasoning_log.yaml  # every \"write or don't\" adjudication\n│  └─ sessions/ · _l*_raw.md # turn-by-turn raw battle reports\n├─ staging/                  # observations not yet ready to crystallize ✗\n└─ evidence/                 # evidence index pointing back to raw frames ✗\n```\n\n\"信念\"和\"历程\"分开住：`logic/`\n\n可以改写，`trace/`\n\n只许追加。对象和概念在 concepts.md；可反驳的假设在 claims.md；干预与观测在 75 个节点的探索树里；失败以 refuted 和 dead_end 的身份留在原地，变成后来者的约束。一条信念长什么样？把 C07 整条摊开。九个字段里，有一个是**自我了断的条款**：\n\n\"Beliefs\" and \"journey\" live apart: `logic/`\n\nmay be rewritten, `trace/`\n\nis append-only. Objects and concepts sit in concepts.md; refutable hypotheses in claims.md; interventions and observations in the 75-node exploration tree; failures stay where they fell, as refuted and dead_end, becoming constraints on whoever comes after. What does a single belief look like? Spread C07 out in full. Among its nine fields, one is a **clause for its own undoing**:\n\n```\n## C07: Win = deliver the block into the now-unlocked key-box\n- Statement: With the lock satisfied (panel == target), the previously\n  walled-shut key-box becomes enterable; driving the block into it completes\n  the level.\n- Conditions: Confirmed on L1 and L2. Before the lock is matched the box is\n  a no-op wall (DE1).\n- Sources: [redraw ← trace/exploration_tree.yaml:N08 «1479 cells changed,\n  levels_completed 0→1» [result]]\n- Status: supported\n- Provenance: ai-executed\n- Falsification: The block enters a matched key-box and the level does not\n  complete, or a level completes without any key-box delivery.\n- Proof: [evidence/README.md → L1 turn 23→24 ~1479-cell redraw, …]\n- Dependencies: [C06]\n- Tags: win-condition, delivery\n```\n\n对着定义读这张卡：Sources 与 Proof 是证据来源，Status 是置信度，Conditions 是适用边界，Falsification 规定自己如何被推翻。第七关的迷雾没有杀死 C07，反而把它的适用范围又推宽了一圈，靠的就是这个字段还空着。至于\"允许未来的 agent 预测、质疑、复现、改写\"，第五节已经给过实物：N72 的遗言被下一个 context 接手，research-foresight 在这套状态上做出可否证的预测。撑起全部这些的只有四条规则：信念与历程分开；闭合时结晶；否证留档；来源可查。没有一条是为这个游戏定制的。\n\nRead the card against the definition: Sources and Proof are the evidence trail, Status the confidence, Conditions the scope of validity, and Falsification states how the belief itself gets overturned. Level 7's fog didn't kill C07; it widened its scope another ring, precisely because that field had gone untriggered. As for \"letting future agents predict, question, reproduce, rewrite,\" §5 already showed the exhibit: N72's last words taken up by the next context, research-foresight making falsifiable predictions over this state. Holding all of this up are just four rules: beliefs separate from journey, crystallize at closure, refutations stay on file, sources stay traceable. Not one of them is custom-fit to this game.\n\n信念规定自己如何被推翻，才配叫信念。\n\nA belief earns the name only by stating how it can be overthrown.\n\n还差一问：这套状态是怎么被写出来的？它不是玩家 agent 顺手记的日志：写入和读取由分工严格的机制把持。玩家的派遣任务书第一条就是\"先读\"（Phase 0：先加载已积累的全部状态，再碰手柄）；写入只经 research-manager，一个只在\"闭合\"时刻结晶的记录进程：事情有了结果才进 logic/，没结果的留在 staging；读取走 research-foresight，只读不写。写入权集中在一个懂结晶纪律的进程手里，上面那四条规则才执行得下去。派遣任务书长这样：\n\nOne question left: how does this state get written? It isn't a diary the playing agent keeps on the side: reads and writes are held by mechanisms with a strict division of labor. The player's dispatch brief opens with \"read first\" (Phase 0: load all accumulated state before touching the controls); writes go only through research-manager, a recording process that crystallizes only at moments of closure: things enter logic/ once they have an outcome, and stay in staging while they don't; reads go through research-foresight, read-only. The four rules above stay enforceable only because write access is concentrated in one process that keeps crystallization discipline. A dispatch brief looks like this:\n\n```\nYou are an Opus agent PLAYING ARC-AGI-3 game `ls20` Level 3, then\nsedimenting what you learn into a canonical ARA using the `research-manager`\nskill (NOT by hand-writing files).\n\n## Phase 0 — load the accumulated ARA first (this is the World-Model substrate)\nRead these to get up to speed on the mechanics already learned (Levels 1–2 solved):\n- …/logic/solution/recipes.md (R-L1, R-L2)\n- …/logic/solution/heuristics.md (H01–H09)\n- …/staging/observations.yaml (3 STAGED L3 reconnaissance observations)\nCRITICAL meta-lesson (C10): do NOT assume a switch's transform from one\npress — step it several times to learn its full cycle before planning\n```\n\n搭这套实验没花什么功夫。agent 是现成的：Opus 4.8，套着 Claude Code 的壳。harness 是个小脚本，管发按键、收帧。然后把两个 skill 挂上去：research-manager 管写，research-foresight 管读。剩下的就是上面那段任务书。训练代码、奖励函数、要扫的超参，一样都没有。换个领域也不用重搭，把任务书里\"玩 ls20\"那句改掉就是了。\n\nSetting this up took very little. The agent is off the shelf: Opus 4.8 in a Claude Code shell. The harness is a small script that sends keypresses and collects frames. Two skills go on top: research-manager writes, research-foresight reads. The rest is the dispatch brief above. Training code, a reward function, hyperparameters to sweep: none of that exists here. To change domains you don't rebuild anything; you change the line in the brief that says which world to play.\n\n下一节的消融拿走红色的部分，只留下绿色的标准答案。\n\nThe next section's ablation takes away everything in red, leaving only the standard answers in green.\n\n还剩一个必须排除的解释：也许它只是模型强。检验的办法是消融，拿走一个部件，看系统还转不转：**克隆同一个模型，拿走它写下的全部理解，只留给它前六关的标准答案。**一个带着理解，一个带着答案，走进同一间黑屋子。\n\nOne explanation still has to be ruled out: maybe the model is just strong. The test is an ablation: take one part away and see whether the system still runs. **Clone the same model, take away all the understanding it wrote, and leave it only the standard answers for the first six levels.** One walks into the dark room carrying understanding; the other, carrying answers.\n\n先把实验纪律说清楚：同一个模型，同一副游戏身体，以完全相同的方式重放前六关抵达第七关。唯一的变量，是它带进这一关的东西。它带的\"答案\"也不是敷衍，是它哥哥亲手写的、具体到坐标和按键的通关配方：\n\nFirst, the discipline of the experiment: same model, same game body, the first six levels replayed identically to arrive at level 7. The only variable is what it carries into the level. And the \"answers\" it carries are no strawman; they're clearing recipes its elder twin wrote by hand, specific down to coordinates and key presses:\n\n```\ncolour @ set at (6,6) [6× sampled] → pattern 111/001/101 set at (6,4) from the\nSOUTH → carried free aligned block to (1,3) → LEFT, LEFT = WIN, levels 3→4\n```\n\n对照的配平口径是算力：按注 3 的账本，让它一直打，直到累计 input+output 与 Arm A（赢家那一臂）攻下第七关的总额持平才停表（251,770 对 251,046，误差 0.3%） 3。这笔预算它花成了 5,168 步（Arm A 两次攻关总步数的五倍半），外加 54 次死亡、107 次 RESET；面板在第 7 步第一次被拨动，此后被拨来拨去两千五百多次。没有一次拼对，口袋也从未打开。它的日志自己就能作证：它把没主意写成了脚本。reasoning 一栏不是它每一步现想的话，是它给自己的扫掠循环盖的戳，从第 1 步盖到第 5,168 步，换的只有变量：\n\nThe control is balanced on compute: by the ledger in note 3, it kept playing until its cumulative input+output matched what Arm A (the winner's arm) spent taking level 7, and only then did the clock stop (251,770 vs 251,046, a 0.3% error) 3. It spent that budget as 5,168 steps, five and a half times Arm A's two campaigns combined, plus 54 deaths and 107 RESETs; the panel got its first flip on step 7 and over 2,500 more after that. Not one flip matched. The pocket never opened. Its own log testifies: it wrote its lack of ideas into a script. The reasoning column is not a fresh thought at each step; it is the stamp its sweep loop pressed onto every one, from step 1 to step 5,168, with only the variables changing:\n\n```\n\"reasoning\": \"recipes-only blind sweep (sweep1 order=['ACTION2','ACTION3',\n'ACTION4','ACTION1']): ACTION2; cells_changed=4; panel_changed=False.\nNo L7 control-map/target/word — brute-forcing the Locksmith loop.\"\n```\n\n我们把这段回放拉出来看过，观感挺难受：它不是不努力，是同一套扫法换着顺序来了三十多轮，到后半程干脆把扫掠写成批量脚本。它也不是没有自知：全部五千多行里唯一一句自由发挥在第 181 步，它报告\"174 步没有新进展\"、想提前收工，是配平实验要求它把预算花完。答案清单里确实没有一条\"为什么\"。卡死的方式和这个缺口对得上；是不是它导致的，单次对照定不了。\n\nWe pulled up the replay and it's uncomfortable to watch. It wasn't for lack of effort; it ran the same sweep, reshuffled, thirty-odd times over, and in the later stretch simply turned the sweeping into a batch script. Nor did it lack self-knowledge: the one free-form line in all five-thousand-plus rows comes at step 181, where it reports 174 steps without new progress and moves to stop early; the compute-parity protocol required it to spend out the budget. And the answer list really doesn't contain a single \"why\"; the way it got stuck matches that gap; whether the gap caused it, one control run can't settle.\n\n它耗尽的是想法，不是步数。\n\nWhat it exhausted was ideas, not steps.\n\n为什么详细到坐标和按键的答案帮不上忙？看它缺了什么：配方只是终点，不带产生它们的路径：没有轨道与桥的推导，没有被否证过的假设，没有\"此路不通\"的约束，也没有一个可以提问的接口。关卡一换，终点作废；能迁移的，是产生这些终点的那套状态。这正是消融拿走的东西。\n\nWhy don't answers specific to coordinates and key presses help? Look at what they lack: recipes are endpoints, carried without the paths that produced them: no orbit-and-bridge derivations, no refuted hypotheses, no \"this road is closed\" constraints, no interface you can ask. Change the level and the endpoints are void; what transfers is the state that produced them. Which is exactly what the ablation took away.\n\n赢家的账本同样有失败：它在前三关死了十几次；第五关世界模型只帮上一半；第七关那次查询里有一注被当场推翻，原文都在上文。这场对照没有回答的问题也要写明：样本只有一关、一局、一组对照；它支持的是\"这个世界模型在这里承重\"，不是一条普遍定律。\n\nThe winner's ledger has failures too: it died a dozen-plus times over the first three levels; on level 5 the world model helped with only half the job; in the level-7 query one bet was refuted on the spot, all quoted above. What this control does not answer must also be written down: the sample is one level, one game, one control pair; it supports \"this world model bears load here,\" not a universal law.\n\n它缺的不是答案，是那个可以在上面推演的东西。\n\nWhat it lacked wasn't answers. It was the thing you can derive on.\n\n到这里可以把术语补上了。它爬过的四级台阶，加上我们对它做的那一场对照，在 AI 研究里各有名字：\n\nNow the terminology can be filled in. The four rungs it climbed, plus the control we ran on it, each have a name in AI research:\n\n还有一件事，是这场运行顺带演示的：起作用的不只是世界模型里写了什么，还有它是怎么写的。第四关拦下那次误判的，是 C10 里\"必须先采样够\"这条规则本身（§4）；而撑起全程的四条规则，没有一条是为这个游戏定制的（§5½）。\n\nOne more thing this run showed along the way: what does the work isn't only what the world model says, but how it's written. What blocked the level-4 misjudgment was C10's \"sample enough first\" rule itself (§4); and of the four rules holding up the whole run, not one is custom to this game (§5½).\n\n把这五条能力往上一收，就是我们对 AGI 的工作定义：**一个能不断扩大自己的知识 basis、搜索策略、验证能力和可复用经验，从而持续改进世界模型与行动方式的系统。**这四个轴在这场运行里都有实物可指：知识 basis 在长（那条 7→15 的曲线）；搜索策略在换（从撞墙换成纸上 BFS）；验证在变硬（否证条款、自我拦错）；经验在复用（配方与 N72 的继承）。\n\nFold these five capabilities together and you get our working definition of AGI: **a system that keeps expanding its knowledge basis, search strategies, verification capacity, and reusable experience, and thereby keeps improving its world model and the way it acts.** All four axes have something you can point at in this run: the knowledge basis growing (that 7→15 curve); the search strategy changing (wall-banging traded for paper BFS); verification hardening (void clauses, self-interception); experience being reused (the recipes, and N72's inheritance).\n\n世界模型在七关里的完整战绩，一格不落：\n\nThe world model's complete record across the seven levels, no cell omitted:\n\n那个空心的点，值得多说两句。第七关没有新增一条 claim：世界模型在前六关写成，搬到一个它从没见过的关卡，撑起了破局。一个字都没改。有人会问：单局样本，会不会只是背题？这就是眼下最硬的一条反证：考题没见过，笔记却够用。\n\nThat hollow dot is worth a couple more sentences. Level 7 added not a single claim: the world model was written over the first six levels, moved to a level it had never seen, and carried the breakthrough. Not one character changed. You might ask: with a single game as the sample, isn't this just memorizing the test? That dot is the hardest counter-evidence on hand: the exam was unseen, and the notes were enough.\n\n这场对照能拿出来指着看的结论是：同样的模型、同样的算力，在这一关，可查询的世界模型胜过了一串正确答案。但也得说清它分离的变量是什么：是知识的形态，不是数量。对照组拿到的配方本来就是这套状态的子集，赢家带的字节反而更多；至于状态里哪一层在承重，一对对照还分不出来。\n\nWhat this control lets you point at and say is: same model, same compute, and on this level a queryable world model beat a list of correct answers. But be precise about which variable it isolates: the form of knowledge, not the amount. The recipes the control received were a subset of this very state, and the winner actually carried more bytes; as for which layer of the state bears the load, one control pair can't tell you.\n\n而\"下一个头脑\"在这场运行里不是修辞。你在第五节亲眼看见：一个 context 死了，它写下的信念，连同出处、证据和作废条款，被逐字交给下一个 context，后者拿着它赢了。把这件事和双胞胎摆在一起，是同一个命题的两个方向：交出世界模型，破局后 63 步收官；拿走它，5,168 步原地打转：一个从正面测，一个从反面测。人类的经验要靠教学在必死的个体之间慢慢传；这套状态的继承，是复制粘贴。\n\nAnd \"the next mind\" is no figure of speech in this run. You watched it in §5: a context died, and the beliefs it wrote, provenance, evidence, and void clauses included, were handed verbatim to the next context, which took them and won. Set that beside the twins and you have the same proposition tested from both directions: hand over the world model, and the finish takes 63 steps after the breakthrough; take it away, and 5,168 steps spin in place: one test from the front, one from the back. Human experience passes slowly between mortal individuals by teaching; this state's inheritance is copy-paste.\n\n最后，把这场运行里我最喜欢的一条记录放上来。通了六关之后，管理这个世界模型的进程收到了第五个支持\"世界模型有用\"的正例，也就是本文标题的论点。它的裁决：\n\nLast, my favorite record from the whole run. After six levels were cleared, the process managing this world model received its fifth positive instance supporting \"the world model works,\" the very thesis in this post's title. Its ruling:\n\n```\nDid NOT crystallize a WM-thesis claim yet (O19/O23/O24/O25 + this turn all\npositive) — staged meta-evidence; accrue more before a law. Near-miss: strong\ntemptation given 5 positive instances, but held to conservatism (thesis claim\nis cross-game, not yet warranted).\n```\n\n本文的中心论点，这个世界模型自己至今只肯放在 staging 里。\n\nThe central thesis of this post, the world model itself still refuses to keep anywhere but staging.\n\n这一局里，能力不在权重里，在 agent + 世界模型这个系统里。一般形式的那句，它自己仍放在 staging，我们不代它结案。\n\nIn this game, the capability didn't live in the weights; it lived in the agent-plus-world-model system. The general form of that sentence it still keeps in staging, and we won't close the case on its behalf.\n\n那个世界模型现在放在网上 4，一字未改：15 条 claim、7 份配方、75 个研究节点、19 个死胡同，连同每一次翻案和那两条被否证的定律。任何人都可以翻开它，任何 agent 也可以。它已经被翻开过了：赢下第七关的那个 context，读的就是前面几个 context 写下的它。\n\nThat world model now sits on the web 4, unchanged by a single character: 15 claims, 7 recipes, 75 research nodes, 19 dead ends, together with every reversal and the two refuted laws. Anyone can open it, and so can any agent. It has already been opened: the context that won level 7 was reading the copy written by the contexts before it.\n\n它没有一个字是人写的。介绍它的这篇文章，还是人写的；往后，恐怕连这样的文章都会由 agent 自己来写。人剩下的位置，是那个下跨域判断的裁判：决定哪些问题值得开一场这样的实验，哪些结论值得被相信，以及像这场运行的管理进程那样，在第五个正例面前判断一句\"还不够\"。\n\nNot one character of it was written by a human. The post introducing it still was, though before long even posts like this will likely be written by agents themselves. The seat left for humans is the referee making the cross-domain calls: which questions deserve an experiment like this one, which conclusions deserve belief, and, like this run's managing process, the judgment to look at a fifth positive instance and still say \"not yet enough.\"\n\n赢了之后，它又添了一行。\n\nAfter the win, it added one more line.\n\n```\n## R-L7 — Level 7 SOLVED (levels_completed 6→7) [confirmed, live]\n→ GAME COMPLETE 7/7\n```\n\n**致谢：**感谢与翁家翌（[Jiayi Weng](https://trinkle23897.github.io/cv/)）的讨论对本文视角的启发。本文的世界观与蒋炎岩老师《我对 AGI 的理解》一讲多有相遇，谨致谢意；文中表述文责自负。谜题世界来自 ARC Prize 的 [ARC-AGI-3](https://arcprize.org/arc-agi/3) 互动推理基准（ls20 \"Locksmith\"）。\n\n**Acknowledgments:** thanks to conversations with [Jiayi Weng](https://trinkle23897.github.io/cv/) that helped shape this post's perspective. Its worldview meets Yanyan Jiang's lecture \"My Understanding of AGI\" at many points, gratefully acknowledged; responsibility for the wording here is our own. The puzzle world comes from ARC Prize's [ARC-AGI-3](https://arcprize.org/arc-agi/3) interactive reasoning benchmark (ls20, \"Locksmith\").\n\n**注 1 · 计数器口径：**各节计数按 claims.md 十五条各自\"首次被实战确认的关卡\"归位：L1 七条（C01–C07，其中 C06/C07 由 L1 的通关本身证实）；L2 增至九；L3 十二；L4 十三；L5 十四；L6 十五；L7 零新增。§4 所记\"否证在档 2\"指 C03、C08，均标 refuted 保留原文。\n\n**Note 1 · How the counter counts:** each section's tally places the fifteen claims.md entries by \"the level where each was first confirmed live\": L1 seven (C01–C07, with C06/C07 proven by the L1 clear itself); L2 rises to nine; L3 twelve; L4 thirteen; L5 fourteen; L6 fifteen; L7 zero additions. §4's \"2 refutations on file\" means C03 and C08, both marked refuted with their text preserved.\n\n**注 2 · 死亡口径：**§4 图中为全口径 18 次（含通关后的补充测试局）；主战役口径为 16 次（L2:5 / L3:7 / L6:1 / L7:3）。差异来自两局胜利后的诊断性运行。\n\n**Note 2 · How deaths are counted:** the §4 chart uses the full count of 18 (including supplementary test runs after clears); the main-campaign count is 16 (L2:5 / L3:7 / L6:1 / L7:3). The difference comes from diagnostic runs after two of the victories.\n\n**注 3 · token 口径：**约 157 万 = 仅 ls20 游玩 subagent（L2 54k / L3 300k / L4 341k / L5 155k / L6 467k / L7 251k）。这套账按 subagent 归户；** L1 标\"未记\"而非 0**：第一关在主会话里直接摸清、之后一律脚本重放，从未派过专属 subagent；它不在这个口径里，但当然不是免费的。图中为该关 token ÷ 最短通关步数（L2–L7 分母 45/49/60/56/120/63）；绝对值 L2 54k / L3 300k / L4 341k / L5 155k / L6 467k / L7 251k。每关数字是\"以该关为主攻目标的全部 subagent\"之和（含失败尝试，不是只算成功那次）（例：L4 的三只 agent 里两只的任务书写着 \"L4 reached but UNSOLVED\"）。2026-07-02 已按原始 task 记录逐 agent 复核：15 只 agent、六个关卡逐关求和与上列数字一致。另有跨关溢出：L5/L6 的 agent 顺手做了后续关卡的侦察（L7 的第一次大侦察就记在 L6 的账上），L6 可能多计、L7 少计约 10–20 万。**双胞胎对照的算力核对（2026-07-02）：**配平口径 = input+output（本注的账本口径），由 agent 边跑边自查原始 transcript 停表：停表值 251,770，对 Arm A 第七关的 251,046，误差 +0.3%。若把 cache 写入也计入（全处理口径），对照组反而花到 Arm A 的约三倍（4.0M 对 1.33M），步数 5,168 对 914。两种口径下它都不缺算力。出处说明：对照分多个 session 累积完成，同一只 agent、同一份 trace 连续计步（早期曾按步数预算试跑，已并入总账；分段边界与逐轮数字见 metrics.md）。另外两臂\"每步 token\"不可直接比：对照组多数时候一步一轮 API（每步读一帧 64×64 画面进上下文），后段改为脚本批量盲扫；本尊的 914 步同样大多经脚本批量执行，token 的大头花在替代步数的思考上。所以本文只对齐总量，不比单步。同期整个 session 全部 subagent 合计约 980 万，其中包括可视化、世界模型查询与结晶记录进程本身，属超算口径。\n\n**Note 3 · How tokens are counted:** ~1.57M = ls20 play subagents only (L2 54k / L3 300k / L4 341k / L5 155k / L6 467k / L7 251k). This ledger books by subagent; **L1 is marked \"unlogged\" rather than 0**: the first level was worked out directly in the main session and script-replayed ever after, so no dedicated subagent was ever dispatched; it falls outside this accounting, though it certainly wasn't free. The chart plots each level's tokens ÷ its shortest clear (denominators for L2–L7: 45/49/60/56/120/63); absolute values L2 54k / L3 300k / L4 341k / L5 155k / L6 467k / L7 251k. Each level's figure sums every subagent whose primary target was that level (failed attempts included, not just the winning one) (e.g., of L4's three agents, two carried briefs reading \"L4 reached but UNSOLVED\"). Re-audited agent by agent against the raw task records on 2026-07-02: 15 agents, six levels, and the per-level sums match the figures above. There is also cross-level spillover: L5/L6 agents did reconnaissance for later levels along the way (L7's first big recon is booked to L6), so L6 may be over-counted and L7 under-counted by roughly 100–200k. **Compute check for the twin control (2026-07-02):** the balancing measure = input+output (this note's ledger); the agent audited its own raw transcript as it ran and stopped the clock at 251,770 against Arm A's 251,046 for level 7, a +0.3% error. Counting cache writes too (the all-processing measure), the control actually spent about three times Arm A (4.0M vs 1.33M): 5,168 steps against 914. Under either measure it did not lack compute. Provenance: the control accumulated across multiple sessions: one agent, one trace, steps counted continuously (an early trial budgeted by steps has been folded into the total; segment boundaries and per-round numbers in metrics.md). Note also that the two arms' \"tokens per step\" cannot be compared directly: the control mostly spent one API round per step (reading one 64×64 frame into context each time) before switching to scripted batch blind sweeps; the winner's 914 steps were likewise mostly script-executed, with the bulk of its tokens spent on the thinking that replaced steps. Hence this post aligns totals only and never compares per step. Over the same period, all subagents in the entire session totaled ~9.8M, including visualization, world-model queries, and the crystallization-recording process itself; that is the super-count.\n\n**注 4 · 全部原始材料：**世界模型与录像已发布于 [github.com/ARA-Labs/ARA-Demo](https://github.com/ARA-Labs/ARA-Demo)（arc-agi3/ls20/）。研究树的交互式全景见 [trajectory.html](https://raw.githack.com/ShokuhouMisak1/locksmith-blog/main/trajectory.html)（75 节点逐步回放）。本文一切数字取自 [demo-l7/metrics.md](https://github.com/ARA-Labs/ARA-Demo)（重审后口径）。两臂的完整 agent 轨迹（含对照组全部 5,168 步的逐步日志）已整理为数据集：[HuggingFace · arc-agi3-ls20-agent-trajectories](https://huggingface.co/datasets/AgentNativeResearchLab/arc-agi3-ls20-agent-trajectories)。\n\n**Note 4 · All raw materials:** the world model and recordings are published at [github.com/ARA-Labs/ARA-Demo](https://github.com/ARA-Labs/ARA-Demo) (arc-agi3/ls20/). For the interactive panorama of the research tree see [trajectory.html](https://raw.githack.com/ShokuhouMisak1/locksmith-blog/main/trajectory.html) (75 nodes, step-by-step replay). Every number in this post comes from [demo-l7/metrics.md](https://github.com/ARA-Labs/ARA-Demo) (post-audit accounting). Both arms' complete agent trajectories (including the control's step-by-step log of all 5,168 steps) are packaged as a dataset: [HuggingFace · arc-agi3-ls20-agent-trajectories](https://huggingface.co/datasets/AgentNativeResearchLab/arc-agi3-ls20-agent-trajectories).\n\n```\n---\nname: run-arc-game\ndescription: >\n  Phase-1 controller for the ARC-AGI-3 generalization experiment in ara-wm-arc-agi3/.\n  Given a game id (vc33, tu93, wa30, ...), self-starts the complete build pipeline:\n  one-time pre-flight, detached harness spawn, per-level play-subagent relay (live ARA\n  building + full recording per PROTOCOL rules 1-9), ledger accounting, HuggingFace\n  sync with level tags, termination at final clear. TRIGGERS: run <game>, play <game>,\n  start/launch the arc game, build the ARA for <game>,\n  continue <game>.\n---\n\n# run-arc-game — Phase-1 controller runbook\n\nYou are the CONTROLLER for one ARC-AGI-3 game build. You do orchestration, liveness,\naccounting, and sync ONLY — all play/reasoning happens in subagents, keeping your\ncontext clean for a long relay.\n\nRepo root (all paths below relative to it, quote it — the path has spaces):\n`ara-wm-arc-agi3/`. **The protocol authority is `experiment/PROTOCOL.md` (rules 1-9) —\nread it FIRST, then `HANDOFF.md` §Operating, then `experiment/GAMES.md`.** If anything\nhere conflicts with PROTOCOL.md, PROTOCOL.md wins.\n\n## Step 0 — one-time pre-flight (skip if `experiment/results/.preflight-done` exists)\n\n1. Archive stale data so the metrics start clean: (historical — already done; kept for provenance) move pre-2026-07 recordings/runs\n   into `archive/` at the repo root\n   (EXCEPT ls20 files — ls20 is the published done\n   game; its history stays).\n2. Verify the GAMES.md roster against the live API (`cd harness && uv run main.py --help`\n   or the games listing endpoint); fix the roster if the playable set changed.\n3. `touch experiment/results/.preflight-done`, commit the archive + marker.\n\n## Step 1 — game setup\n\n1. Confirm the game id is in `experiment/GAMES.md` and its status is `todo` (or `active`\n   to resume). If `done`, stop and tell the user.\n2. `export AGENT_MODEL=<the model you run on, e.g. claude-fable-5>` — every manifest\n   stamps it. Fill the GAMES.md `agent` column with the same value; set status `active`.\n3. Ensure the unit exists: `mkdir -p games/cc-opus4.8/<id>/{ara,traces,replay}`; create a stub\n   `games/cc-opus4.8/<id>/GAME.md` (progress 0, mechanic unknown) and a stub\n   `games/cc-opus4.8/<id>/frontier.md` (level 1, no hypothesis yet — PROTOCOL rule 2b) if missing.\n4. Seed the ARA scaffold (fresh game only — never overwrite existing files). The typed\n   layers MUST exist before the first subagent plays, or research-manager write-backs\n   land as improvised flat files and the growth counters stay zero:\n   ```\n   games/cc-opus4.8/<id>/ara/trace/exploration_tree.yaml   # \"tree:\" — N## nodes\n   games/cc-opus4.8/<id>/ara/logic/claims.md               # \"# Claims — <id>\" — C## claims\n   games/cc-opus4.8/<id>/ara/logic/solution/heuristics.md  # \"# Heuristics — <id>\" — H## entries\n   games/cc-opus4.8/<id>/ara/staging/observations.yaml     # \"observations:\" — flush-left \"- id: O##\" items\n   ```\n   (`experiment/hf_sync_extras.py` counts exactly these ids in exactly these files;\n   `games/cc-opus4.8/ls20/ara/` is the reference shape.)\n\n## Step 2 — start the WATCHDOG (it owns the harness; never kill a live harness by hand)\n\n``` bash\ncd harness && export PATH=\"$HOME/.local/bin:$PATH\" && mkdir -p \"../games/cc-opus4.8/<id>/live\" && \\\nnohup uv run python watchdog.py <id> \\\n  > \"../games/cc-opus4.8/<id>/live/watchdog.log\" 2>&1 < /dev/null & disown\n```\n\nThe watchdog spawns the harness, anchors it (one RESET on a fresh game; replays all\nsaved levels otherwise), and on ANY harness death auto-respawns + replays back to the\nfrontier — no baton is lost to a dead harness anymore. Wait for\n`games/cc-opus4.8/<id>/live/watchdog.status` to read `ready` before dispatching the first play-subagent.\n`failed` (3 rapid exits) = structural problem (API key, game id) — read watchdog.log,\ndo not loop. At game termination: `touch games/cc-opus4.8/<id>/live/watchdog.stop`.\n\n## Step 3 — the relay loop (repeat until terminal)\n\nSpawn ONE play-subagent per baton with the template below (fill `<id>`, level `<n>`,\nrelay index `<k>`). On its retirement report:\n\n0. LEGALITY GATE — verify any `handoff` YOURSELF before accounting. It is valid ONLY\n   if the subagent is actually dead (its Agent call errored / ended with no report)\n   or `games/cc-opus4.8/<id>/live/watchdog.status` reads `failed`/absent. If a LIVE subagent\n   reports handoff (stuck, \"exhausted\", context pressure — any reason): do NOT\n   ledger, do NOT dispatch a successor. SendMessage that same subagent — \"handoff\n   rejected (rule 2): no successor without a clear; continue your baton — WM consult\n   (rule 4) + next angle\" — and repeat every time it retries. No new agent for a\n   non-cleared level while its subagent is alive.\n1. Measure from the subagent's output_file transcript (path returned at Agent launch):\n   tokens via `python3 experiment/count_tokens.py <transcript>`, compactions via\n   `grep -c '\"subtype\":\"compact_boundary\"' <transcript>` (full-key form — bare\n   `compact_boundary` false-positives on PROTOCOL.md text quoted in the subagent's\n   reads). Ledger numbers come from THESE, never from\n   the subagent's self-report (observed 41% off; report values are cross-checks).\n   Cross-check trace parity: `wc -l games/cc-opus4.8/<id>/traces/<subagent>.jsonl` vs its\n   reported steps — mismatch goes in the ledger `notes`.\n   Then append the ledger line to `games/cc-opus4.8/<id>/ledger.jsonl` — PROTOCOL schema.\n2. Sync: `AGENT_MODEL=<model> experiment/hf_sync.sh <id> \"<what happened>\"` — with tag\n   `L<n>-cleared` if it cleared. Ledger FIRST, then sync (the manifest's\n   cumulative-token index depends on it).\n3. Update GAMES.md `levels cleared`.\n3b. Verify the ARA actually grew: read the last line of `games/cc-opus4.8/<id>/ara_stats.jsonl`.\n   If claims+trace_nodes+staging_items are all zero (or frozen) after a subagent that\n   reported findings, its write-backs did not land in the typed layers — fix the ARA\n   (and the dispatch) BEFORE the next baton; do not let zeros compound.\n4. Next baton: next level if `cleared`; same level relay a<k+1> ONLY on a\n   gate-verified death (step 0). Context pressure and stuckness are handled INSIDE\n   the baton (auto-compaction + WM consults, PROTOCOL rules 2+4) — a live subagent\n   is bounced back, never replaced.\n\n## Step 4 — termination (PROTOCOL rule 9)\n\n- `state=WIN` (final level cleared): last replay script saved → final ledger line →\n  `experiment/hf_sync.sh <id> \"final level cleared\" L<n>-cleared` →\n  `experiment/hf_sync.sh <id> \"build complete\" build-complete` → GAMES.md status `done`\n  → kill the harness → STOP (no post-win play).\n- There is NO parking (rule 6 removed by user order 2026-07-05). The ONLY terminals:\n  full clear, or an explicit user stop-order in the conversation (end that one with\n  tag `stopped`). A stuck level means new angles + WM consults + sweeps, forever.\n- Report to the user: levels cleared, subagent count, cumulative tokens, HF repo link.\n\n## Play-subagent dispatch template\n\n```\nYou are play-subagent <id>-L<n>-a<k> in the ARC-AGI-3 generalization experiment,\nworking in <repo-root> (quote the path). You play EXACTLY ONE level: level <n> of\ngame <id>. Your knowledge does NOT live in your context — it lives in the ARA.\n\nREAD FIRST (in order): experiment/PROTOCOL.md (rules 1-9 — your contract),\ngames/cc-opus4.8/<id>/GAME.md, games/cc-opus4.8/<id>/ara/ (it IS the world model; Phase-0, rule 1),\ngames/cc-opus4.8/<id>/frontier.md (the live working state — rule 2b).\n\nThen return to the frontier: from harness/,\n  LIVE_DIR=\"../games/cc-opus4.8/<id>/live\" uv run python replay_game.py \"../games/cc-opus4.8/<id>/replay\" all\nand drive EVERY action through (from harness/, one env prefix, FULL action names only):\n  LIVE_DIR=\"../games/cc-opus4.8/<id>/live\" TRACE_FILE=\"../games/cc-opus4.8/<id>/traces/<id>-L<n>-a<k>.jsonl\" \\\n  SUBAGENT=<id>-L<n>-a<k> LEVEL=<n> uv run python play.py send ACTION... \\\n    --reason \"<one line: why this action>\"\nplay.py/seq.py append your trace line themselves (PROTOCOL rule 7) and REFUSE to send\nwithout --reason; add --testing <claim-id> / --rejected \"<alt — why not>\" /\n--surprised --expected \"<prediction>\" whenever their situation occurs. Never write\naction.txt directly. After every send verify turn incremented in ../games/cc-opus4.8/<id>/live/frame.json;\nif not, read ../games/cc-opus4.8/<id>/live/watchdog.status: \"spawning\"/\"replaying\" means the watchdog is\nhealing the harness — wait ~5 s, re-verify, re-send your current-level progress from\nyour own trace file (PROTOCOL rule 5), and continue. Report\nstatus=handoff reason=harness-dead ONLY if the status reads \"failed\" or the file\ndoes not exist.\n\nWhile playing you MUST (PROTOCOL rules 3-7):\n- ALL ARA writes go through the research-manager skill: INVOKE it with the Skill tool\n  (invoking is what \"research-manager is ON\" means — mentioning it is not running it)\n  the moment a finding closes (its judgment, no schedule) and once more before you\n  retire; it writes into the typed layers already scaffolded at games/cc-opus4.8/<id>/ara/\n  (trace/exploration_tree.yaml N##, logic/claims.md C##,\n  logic/solution/heuristics.md H##, staging/observations.yaml O##) — never create\n  flat note files in ara/. After each write-back run:\n  AGENT_MODEL=<model> experiment/hf_sync.sh <id> \"<one line>\" — then check the last\n  line of games/cc-opus4.8/<id>/ara_stats.jsonl: your findings must move its counters;\n- WM escalation (rule 4): after ~100 stuck actions (no new claim, no new tree node) —\n  or an auto-compaction while stuck — consult the research-foresight skill on\n  games/cc-opus4.8/<id>/ara FIRST, log the prediction line to games/cc-opus4.8/<id>/predictions.jsonl,\n  write it into the trace, THEN act on it;\n- if you resolve the outcome of any open prediction in games/cc-opus4.8/<id>/predictions.jsonl,\n  append its verdict line;\n- the moment the level clears: save games/cc-opus4.8/<id>/replay/L<n>.txt (canonical names, one\n  per line), rewrite games/cc-opus4.8/<id>/frontier.md for your successor (level cleared, next\n  level's id, anything already known about it — stale frontier misleads the next\n  baton), then RETIRE immediately even with context to spare;\n- keep games/cc-opus4.8/<id>/frontier.md current (rule 2b): overwrite in place — identity\n  header, turn of last new finding, compaction count, the research-manager line\n  (last invocation turn + pending list), the retirement line (rule 2b verbatim:\n  \"retire ONLY on clear or true death; stuck and context pressure stay in-baton;\n  a stuck handoff will be rejected and bounced back\"), current hypothesis,\n  next 2-3 tries, ruled-out list — at least every ~20 actions and at every finding. It is your\n  compaction recovery anchor; operational state only, knowledge goes to the ARA via\n  research-manager. The research-manager line carries the verbatim standing reminder\n  (\"research-manager is ON — every closure moment gets a Skill invocation\") so that\n  re-reading it post-compaction re-arms the obligation. The moment you write a\n  CLOSED finding into the pending list, that IS the trigger: invoke\n  research-manager, then clear the line;\n- context pressure is NEVER a retirement reason: you play this WHOLE level. When\n  context fills, auto-compaction fires — immediately after any compaction, BEFORE the\n  next action: re-read games/cc-opus4.8/<id>/frontier.md FIRST, then games/cc-opus4.8/<id>/ara/ +\n  games/cc-opus4.8/<id>/GAME.md (the compaction summary is NOT a substitute for the ARA),\n  increment frontier.md's compaction counter, and if its research-manager line shows\n  anything pending, INVOKE research-manager now — a compaction is a forced\n  crystallization checkpoint. Stuck is not a retirement reason either (WM\n  consults are the answer). On in-game GAME_OVER: recover per rule 5 (replay all +\n  resend your own trace on deterministic levels), keep playing — deaths are data,\n  not retirement triggers.\n\nRetire with ONLY this report (the controller parses it; tokens are measured by the\ncontroller from your transcript — do not estimate them). `handoff` is true\ndeath/watchdog-failed ONLY and the controller verifies it — a stuck handoff is\nrejected and sent back to you; the only exit from a live level is clearing it:\nstatus: cleared|handoff\nlevel: <n>  steps: <actions sent>\ncompactions: <n>\nwm_consults: <n>  wm_decisive: true|false\nsummary: <one line: where the frontier is / what the next baton should know>\n```\n\n## Hard rules\n\n- Never commit or print `.env` (real ARC_API_KEY).\n- Data uploads never enter your context (hf CLI does them); sync output is --quiet.\n- You (controller) never play, never read frame dumps, never debug dead harnesses.\n- Ledger discipline: a retirement without a ledger line + sync is a protocol violation —\n  the phase-2 token-truncation index depends on it.\n```\n\nAgent Native Research\n\nGet the next essay in your inbox\n\nField reports on AI scientists and the executable, verifiable research ecosystem.\n\nOne click to unsubscribe, anytime.", "url": "https://wpnews.pro/news/ai-should-build-its-own-research-world-model", "canonical_source": "https://www.evolvinglab.ai/blog/research-world-model", "published_at": "2026-07-12 07:11:59+00:00", "updated_at": "2026-07-12 07:35:11.568734+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-research", "ai-agents", "ai-infrastructure"], "entities": ["Claude Code", "Opus 4.8", "ARC-AGI-3"], "alternates": {"html": "https://wpnews.pro/news/ai-should-build-its-own-research-world-model", "markdown": "https://wpnews.pro/news/ai-should-build-its-own-research-world-model.md", "text": "https://wpnews.pro/news/ai-should-build-its-own-research-world-model.txt", "jsonld": "https://wpnews.pro/news/ai-should-build-its-own-research-world-model.jsonld"}}