来自 2026 年 6 月 Build Small Hackathon 的现场笔记。第三篇。 在这些笔记的第一篇里,我讲了一个我引以为豪的故事。我画了一个叫《突袭乌娜的宝藏》的林地传说,把 1929 年的银行挤兑重新包装成林地民间传说,然后看着那只守着蜂蜜的猫头鹰读懂恐慌情绪并开始抛售。供应洪流在接下来的几个回合里把蜂蜜价格从 10 砸到了 3。没有人写脚本安排这一切。一个重新包装的银行挤兑让一个智能体抛售了一项资产,而这次抛售又推动了价格。这就是整个论点:给一个小模型一个角色和一份预算,涌现出的市场行为就会免费掉出来。
然后我重建了这片林地,崩盘就不再发生了。这一篇讲的就是为什么,因为这次失败教给我的关于在智能体之上做构建的东西,比最初那次成功还要多。
五个实验室,五种心智
这次重建把用一个模型驱动五个生物,换成由五个不同实验室的小模型组成的议事会,每个模型驱动自己的生物:一个 OpenAI 模型、一个 NVIDIA 模型、一个 OpenBMB 模型,还有一个我自己微调的 5 亿参数模型,由它驱动其中两个。关键在于诚实。如果主张是小模型能够运行一个活生生的经济体,那么这个主张最强的版本就是五种不同的架构在同一个市场里做出不同的选择,而不是一个模型戴五顶帽子。
正是这种异质性,击碎了我早已写好的那个故事。
价格就是智能体们决定以什么价格交易
我也重建了操盘手这一侧。玩家现在是一名在暗处运作的金融家:做空某种商品,悄悄放出真实的内幕消息来为它的下跌铺路,触发那个传说,然后在价格暴跌时收割。我把这个循环在屏幕上做得清晰可读,有目标、有记分板,还有一键完成首笔交易。让一个承诺变得可见,是发现这个承诺为假的最快方式。
因为当我做空蜂蜜并触发对 Oona's Hoard 的挤兑时,蜂蜜并没有崩盘。它反而上涨了。议会模型们读到一则金库已空的谣言,以及一条收成注定完蛋的内幕消息,并没有像最初那个单一模型那样抛售蜂蜜。它们把它囤了起来。是稀缺,而非贱卖。这笔做空亏了钱,而叙事者写下的标题,毫无讽刺意味,说的是这场蜂蜜赌局已经变味了。
这就是教训,而且它并不局限于某个游戏。在智能体经济中,参考价格不是你可以随意拧动的旋钮。它是智能体们实际选择交易什么的沉淀结果。最初的那场崩盘是真实的,但它取决于某一个模型的性情,而不是这个系统的一个稳健属性。改变参与者群体,你所记录下的涌现行为就可能干脆蒸发。
三种失败的方式
我花了三次实盘运行,试图通过从外部推动这个经济体来让那场崩盘重现,就像你会去冲击一个教科书式的供需模型那样。
首先,我把那条传闻纯粹当作谣言放着,信任智能体会自行反应。它们没有抛售。其次,我把一大笔意外之财般的蜂蜜倾倒进每个生物的金库,推断供应过剩会压垮需求、把价格拉低。这一招对我的测试策略——一个我用于快速离线运行的基于规则的替身——效果极佳,因为测试策略遵循机械式的需求阈值:把它的库存灌满,它就会停止买入。而真实模型无视了这笔横财,按照它们自己对场面的解读进行交易。这一招又输了。第三,我加大了做空的规模,结果只是让亏损更大。
三段记录,三次亏损:负十五、负二十六、负二十七颗石子,而整个前提本应是这就是赚钱的方式。这个模式本身就是警告。我拉动的每一根杠杆都是智能体决策的一个输入,而智能体可以自由地拒绝。你无法用一次机械式的冲击去操控一个异质的模型群体,因为这种冲击只是对它们仍然有权做出的选择施加了一点偏向。
陷阱之中的陷阱值得单独点明。那个对我的快速测试策略有效的修正给了我虚假的信心,并让我付出了一次真实运行的代价才得以证伪。当廉价的替身和真实智能体出现分歧时,说谎的是替身,而任何只在替身下才能复现的结果都不是结果。
去编写接缝,而不是去推动输入
解决方案是停止试图说服智能体,而是通过构造让恐慌成为真实。银行挤兑,按定义来说,就是一场崩盘。所以现在传说在结算时、在市场完成该轮清算之后,直接覆写参考价格,让它的商品崩盘。智能体们想怎么交易就怎么交易;然后挤兑作为事实落地,价格腰斩,抢跑做空的那笔交易便结算为盈利。崩盘不再是我期盼的一种行为。它是我在唯一一道下游无从争辩的接缝处强加的一种被编写的后果。
这听起来像是放弃涌现,但恰恰相反。涌现层——五个模型交易、八卦、囤积、结怨——仍然在做着所有让这片林子显得有生气的工作。我学到的是,你不能靠对涌现输入施加更大压力来获得可靠的结果。你要靠选择那道精确的接缝,在那里编写一个确定性的覆写,并让上游的一切保持自由。用涌现来营造质感,用编写的控制来确保那些必须发生的时刻。真正的技艺在于分辨哪个是哪个,以及那道接缝在哪里。
| 尝试 | 机制 | 结算时的蜜糖 | 策略盈亏 |
|---|---|---|---|
| 原始版,单模型 | 那个模型选择抛售 | 10 比 3 | 展示性胜利 |
| Council,仅为传闻 | 五个模型选择持有 | 因稀缺而上涨 | 减 15 |
| Council,库存过剩 | 需求崩塌,仅为测试策略 | 几乎未动 | 减 26 至 27 |
| Council,结算覆盖 | 清算后价格暴跌,由法令所致 | 可靠地减半 | 加 40 |
表 1. 同样的策略在四个世界中的表现。崩盘在单一模型下是涌现的且脆弱的,在异构 Council 下不存在,只有在结算接缝处被编写进去后才变得可靠。
我的收获
三点,且这三点都比这个游戏更长久。
第一,涌现是偶然的,而非持久的。你从某一群智能体身上观察到并记录下来的行为,在更换群体后可能会消失,即使其他一切都没有改变。要把单次令人印象深刻的运行视为轶事,而非固有属性,直到它能在另一组不同的智能体阵容中依然成立。
第二,你无法通过冲击输入来控制一个智能体市场。供需杠杆只会影响智能体仍然可以自由做出的选择,而一个异质的议事群体往往会拒绝。可靠的结果来自于在结算接缝处进行编写——位于每一个决策的下游,而不是在上游施加更大的压力。
第三,那个让你快速迭代的廉价模拟器,也恰恰是最容易美化一个错误修复的模拟器。当替身与真实智能体出现分歧时,相信真实智能体。
我以构建基于智能体的市场模型为生,而上述每一个错误,我都曾在更大规模、更高风险的场景中犯过——远比一片住满林地生物的树林要大得多、险得多。能在这样一个唯一可能受损的只是一堆小石子和一个我初次讲述时过于自信的故事的地方,把这些错误再犯一遍,是很有益的。
小模型,大冒险,还有一场必须由你自己来书写的崩溃。
Field notes from the Build Small Hackathon, June 2026. Third installment. In the first of these notes I told a story I was proud of. I drew a Wood Legend called the Run on Oona's Hoard, a 1929 bank run reskinned as woodland folklore, and watched the owl who keeps the honey read the panic and start liquidating. The flood of supply crashed the honey price from 10 down to 3 over the next few turns. Nobody scripted it. A reskinned bank run made an agent dump an asset, and the dump moved a price. That was the whole thesis: give a small model a role and a budget, and emergent market behavior falls out for free.
Then I rebuilt the wood, and the crash stopped happening. This installment is about why, because the failure taught me more about building on agents than the original success did.
Five labs, five minds
The rebuild swapped one model running five creatures for a council of five different labs' small models, each driving its own creature: an OpenAI model, an NVIDIA model, an OpenBMB model, and a half-billion-parameter model I fine-tuned myself running two of them. The point was honesty. If the claim is that small models can run a living economy, the strongest version of that claim is five distinct architectures making distinct choices in the same market, not one model wearing five hats.
That heterogeneity is exactly what broke the story I had already written up.
The price is whatever the agents decide to trade at
I rebuilt the operator side too. The player is now a financier who works from the shadows: short a good, whisper a true tip to set up its fall, spring the legend, and collect when the price craters. I made that loop legible on the screen, with an objective, a scoreboard, and a one-click first trade. Making a promise visible is the fastest way to discover the promise is false.
Because when I shorted honey and sprang the Run on Oona's Hoard, honey did not crash. It rose. The council models, reading a rumor that the vault was empty and a tip that the crop was doomed, did not dump honey the way the original single model had. They hoarded it. Scarcity, not a fire sale. The short lost money, and the headline the narrator wrote, with no irony, was that the honey gamble had soured.
This is the lesson, and it is not specific to a game. In an agent economy the reference price is not a dial you turn. It is the residue of what the agents actually choose to trade. The original crash was real, but it was contingent on one model's disposition, not a robust property of the system. Change the population, and the emergent behavior you documented can simply evaporate.
Three ways to fail
I spent three live runs trying to make the crash come back by pushing on the economy from the outside, the way you would shock a textbook supply and demand model.
First I left the legend as a pure rumor and trusted the agents to react. They did not sell. Second I dumped a windfall of honey into every creature's stores, reasoning that a glut would collapse demand and pull the price down. That worked beautifully against my test policy, a rule-based stand-in I use for fast offline runs, because the test policy follows a mechanical wants-threshold: flood its inventory and it stops buying. The live models ignored the windfall and traded on their own read of the room. The gambit lost again. Third I sized the short up, which only made the loss larger.
Three recordings, three losses: minus fifteen, minus twenty-six, minus twenty-seven pebbles, when the entire premise was that this was how you made money. The pattern was the warning. Every lever I pulled was an input to the agents' decision, and the agents were free to decline. You cannot steer a heterogeneous population of models with a mechanical shock, because the shock only biases a choice they still get to make.
The trap inside the trap is worth naming on its own. The fix that worked against my fast test policy gave me false confidence and cost me a live run to disprove. When the cheap stand-in and the real agents disagree, the stand-in is the one lying, and any result that only reproduces under the stand-in is not a result.
Author the seam, do not push the inputs
The resolution was to stop trying to convince the agents and to make the panic true by construction. A bank run is, definitionally, a crash. So the legend now crashes its good at settlement, after the market has finished clearing for the turn, by overwriting the reference price directly. The agents trade all they like; then the run lands as a fact, the price halves, and the short that front-ran it settles into profit. The crash is no longer a behavior I hope for. It is an authored consequence I impose at the one seam where nothing downstream can argue with it.
That sounds like giving up on emergence, and it is the opposite. The emergent layer, five models trading, gossiping, hoarding, forming grudges, is still doing all the work that makes the wood feel alive. What I learned is that you do not get reliable outcomes by pushing harder on emergent inputs. You get them by choosing the precise seam at which to author a deterministic override, and leaving everything upstream free. Emergence for texture, authored control for the moments that have to happen. The craft is knowing which is which, and where the seam sits.
| Attempt | Mechanism | Honey at settlement | Gambit P&L |
|---|---|---|---|
| Original, one model | that model chose to dump | 10 to 3 | the showcase win |
| Council, rumor only | five models chose to hold | rose on scarcity | minus 15 |
| Council, inventory glut | demand collapse, test policy only | barely moved | minus 26 to 27 |
| Council, settlement override | price crashed post-clearing, by fiat | halved reliably | plus 40 |
Table 1. The same gambit across four worlds. The crash was emergent and fragile under one model, absent under a heterogeneous council, and reliable only once it was authored at the settlement seam.
What I took away
Three things, and all three outlive the game.
First, emergence is contingent, not durable. Behavior you observe and write up from one population of agents can vanish when you change the population, even if nothing else changes. Treat a single impressive run as an anecdote, not a property, until it survives a different cast.
Second, you do not control a market of agents by shocking its inputs. Supply and demand levers only bias choices the agents are still free to make, and a heterogeneous council will frequently decline. Reliable outcomes come from authoring at a settlement seam, downstream of every decision, not from pushing harder upstream.
Third, the cheap simulator that lets you iterate fast is also the one most likely to flatter a wrong fix. When the stand-in and the real agents disagree, believe the agents.
I build agent-based market models for a living, and I have made every one of these mistakes at larger scale and higher stakes than a wood full of woodland creatures. It was useful to make them again somewhere the only thing at risk was a pile of pebbles and a story I had told too confidently the first time.
Small models, big adventures, and a crash you have to author yourself.