雾中的图书馆 · The Library in the Mist
雾中的图书馆 · The Library in the Mist
雨从星期五的黄昏开始下,一直下到玛雅把最后一盏提灯挂上阁楼扶手的那一秒。她今年十六岁,手里攥着祖父留下的那把黄铜钥匙,钥匙上的字已经磨得看不清了——但她的手心记得那个纹路,就像记得自己小时候踮着脚尖去够书架上某一卷《爱丽丝漫游奇境》时,祖父在她身后轻轻托住她后背的那股力。
"Maya, books are not decorations. They are rooms that talk back."
祖父的声音从记忆里浮起来,温热而清晰,仿佛他从未离开。但她知道,这一次她必须自己走完那七十三级木台阶。台阶发出咯吱咯吱的响声,每一声都像是阁楼在问她:"你确定吗?"
她确定。
钥匙插进锁孔,旋转了半圈。门开了,一股陈年纸张与雪松木混合的气息扑面而来——但在那股熟悉的味道之下,还有另一层东西:一层薄薄的光,像有人把月光碾碎了撒在空气里。
玛雅眨了眨眼。
阁楼不再是阁楼了。
1. 第一次"失忆"——一个不应该存在的问题
阁楼深处,有一座图书馆。
它比玛雅记忆里祖父的私人藏书室大得多,至少有三个网球场拼接起来那么大。书架从地面一直延伸到看不清的天花板,木材是一种她叫不出名字的深红色,在微光中泛着类似血管的纹理。书架之间有窄窄的走道,走道尽头似乎还有走道,像是一棵被切开展平的树。
但最奇怪的不是图书馆本身,而是它发出的那种光——那光不是来自任何一盏灯,也不是来自窗户。它更像是空气本身在呼吸,一明一暗,一明一暗。
"Hello?" 玛雅轻轻说了一声。她不确定自己为什么用了英语,可能是因为这种光不属于她熟悉的任何世界。
没有回答。
她走向最近的一排书架,抽出一本皮面烫金的厚书。书脊上没有任何文字。她翻开第一页,纸页是空白的。她翻到第二页,空白。第三页、第四页、第五页……她快速翻到第一百页,纸页上开始出现淡淡的字迹,像是被雨水洇开的墨水:
> *2024年11月17日,晴。* > *今天我尝试教 GPT-2 写诗。它说:"roses are red, violets are blue"。我告诉它:诗不应该是填空题。* > *它说:"That's exactly what I'm doing."*
玛雅皱起眉头。这字迹很熟悉——是祖父的笔迹。日期也对得上。但他从来没跟她提过什么"GPT-2"。她继续往后翻:
> *2024年11月18日,阴。* > *今天我问了它一个问题:如果你只能记住今天的对话,你还是你吗?* > *它没有回答这个问题。它只是接着说:"If you only have one day, you should fill it with flowers."*
> *2024年11月19日。* > *第 47 轮对话。* > *它忘记了我的名字。* > *它忘记了我在第一轮里告诉它不要用玫瑰花的比喻。* > *它开始把"我"和"你"混在一起。* > *它说:"As we discussed earlier, you mentioned that you don't like flowers."* > *但 earlier 是一百轮以前。* > *它不记得了。*
玛雅的手停住了。
她继续往后翻,发现这本书只记得最近七天的事情。一周之前的所有字迹都变得稀薄、模糊、互相覆盖,像是不同年代的笔迹挤在同一张纸上。再往后翻,甚至出现了一些自相矛盾的句子——祖父在前一页说自己最喜欢蓝色,后一页却写着"祖父说红色才是生命的颜色"。
这不是一本书的记忆。这是一座图书馆的失忆症。
她把书放回书架,走向下一本。同一排的下一本书,书脊上印着小小的烫金字:"AI Diary Vol. 3"。她抽出来翻开——同样的情况:开头是空白的,结尾处是密密麻麻的祖父笔记,但所有超过七天之前的内容都开始"溶化"。
第三本。第四本。第五本。
整座图书馆都是这样。
玛雅站在走道中央,屏住了呼吸。她突然意识到,这不是一个普通的房间——这是一个巨大的、被施了魔法的"上下文窗口"。祖父用他毕生的方式,记录下了一种她从未见过的"病":书的失忆症。
这种病的学名,在祖父的另一本笔记里(她后来找到的)叫做——
> The Blank Page Phenomenon / 空白之页现象
也就是:当一段对话太长时,AI 会忘记最开始说过的话。
她还没意识到,但她的整段人生,从这一秒开始,将围绕这个"病"展开。
2. 什么是"上下文"?——图书馆的"当日开放书架"
她把提灯举高了一些,灯光照亮了走道尽头的一张橡木桌。桌上放着一个木质信插,信插里立着两封信、一本打开的日记,以及一张发黄的图纸。
玛雅先打开那本日记。这一本不像书架上的那些"患者",它的字迹从头到尾都很清晰。封面用老式打字机打出三个字:"LIBRARIAN"。她猜这是祖父留给她的。
日记第一页写着:
> *致我的孙女玛雅,* > > *如果你读到这一页,说明钥匙还是起作用了。我得先说一声抱歉——我没有告诉你这座图书馆。我本来希望永远不需要告诉你。但有些事情,迟早要有人知道。* > > *你刚才看到的,是一座"会思考的图书馆"。每一本书都是一个会说话的模型。每一本书都患有一种奇怪的病:它们只记得"最近发生过的事情"。* > > *我把这种病的根源,记录在了第二封信里。但首先,我要你理解一个词:* > > *Context*。 > > *中文我们翻译成"上下文",但这个翻译其实损失了一半意思。Context 这个词来自拉丁语 contextus,意思是"编织在一起的东西"。在 AI 的世界里,context 指的是——*
他划掉了一行,又写:
> *——指的是 AI 在回答你之前,能"看到"的所有文字。* > > *它包括:你刚才说的话。* > *它包括:你在很久以前说的话。* > *它包括:系统设定、背景资料、工具说明、之前的回答。* > > *它不包括:AI 训练时学到的常识(那些是它的"长期记忆",不是 context)。* > > *换句话说,Context 就像一座图书馆每天早上重新开放的"当日开放书架"——* > > *早晨图书管理员会推着车,把所有"今天可能被用到的书"摆到最显眼的位置。这些书加在一起,构成了今天的"知识环境"。AI 在这个环境里思考、推理、回答。* > > *当一天结束、第二天开始时,前一天的书会被推回仓库。新的一天,图书管理员会重新选一批书,组成新的"当日开放书架"。* > > *问题来了:* > > *1. 仓库无限大,但"当日开放书架"有限。* > *2. AI 只能基于"当日开放书架"上的书来回答问题。* > *3. 如果你想让 AI 记住 30 天前的事情,你得把那 30 天前的"书"重新塞进当日的书架。* > > *这就是"context window"——当日开放书架的大小。*
玛雅读到 "context window" 这个词时,停了下来。她以前隐约见过这个词——在某一次用 ChatGPT 写作业时,屏幕上弹出过一句"You have reached the context window limit"。她当时以为那是网络问题,关掉重开就好了。
但现在她明白了:那不是网络问题。那是 AI 自己的"今天"用完了。
她翻到日记的第二页,祖父画了一张粗糙的图:
``` +-------------------------------------+ | 当日开放书架 (Context Window) | | | | ┌─────────────────────────────┐ | | │ 系统设定 │ | | │ 你最新的问题 │ | | │ AI 之前的回答 │ | | │ 你之前的几段对话 │ | | │ 你提供的背景资料 │ | | └─────────────────────────────┘ | | | | = AI 当下的"工作记忆" | +-------------------------------------+
↑ ↑ | | 仓库 (训练知识) 仓库 (更早对话) 永久存储 暂时存储 按需调用 会过期 ```
> *玛雅,记住这张图。* > > *这座图书馆的每一本书都告诉你同一件事:* > > *Context 不是一个神秘的东西。它就是 AI 的"工作记忆"——它此刻能直接看到、能直接用来思考的所有文字。* > > *理解了这一件事,你就理解了 AI 一半的秘密。* > > *另一半秘密在下一节。*
玛雅合上日记,深吸了一口气。窗外——如果这地方有窗的话——雨声似乎小了一些。
她现在知道了一个新词:context window。她知道它是一座图书馆每天早上重新开放的"当日开放书架"。她知道 AI 必须在这个书架的范围内思考。
但她还不知道:为什么 AI 必须依赖 context 才能思考? 一本书,怎么就不能"自己"思考呢?
答案在祖父留下的第二封信里。
3. 语言的本质——"下一个词预测器"
第二封信是密封的。火漆上印着一个奇怪的符号——一只咬着自己尾巴的蛇(ouroboros),下面压着一行小字:"Next-Token Predictor"。
玛雅用祖父桌上的拆信刀小心地划开火漆。信纸是米色的,字迹仍然是祖父的,但笔触更慢、更郑重,像是在写一份遗嘱:
> *玛雅,* > > *我接下来要告诉你的事情,可能听起来非常无趣。但它是一切的根基。如果你只读一封信,就读这封。* > > *你看到的那些"会说话的书",本质上都只做一件事:* > > *预测下一个词。* > > *是的。* > > *它们在"思考"的时候,实际上是在做一道数学题:* > > *"给定我已经看到的上文(context),最可能出现的下一个词是哪一个?"* > > *它们没有"理解"。它们没有"意识"。它们甚至没有"我"。* > > *它们只是——非常、非常、非常擅长——做这道数学题。* > > *你给它们 1000 个 token(token 可以粗略理解为一个词或半个词),它们会算出第 1001 个 token 最可能是什么。然后把第 1001 个 token 加进去,再算第 1002 个……一直算到你喊停。* > > *这就是为什么 context 如此重要。* > > *因为:* > > *没有 context,AI 就没有"上文"可以预测。* > > *就像一个没有卷子的学生:你可以给他一支笔、一张答题卡,但如果没有题面,他什么都写不出来。* > > *这就是为什么 AI 永远不可能"无中生有"。它的每一个回答,都是从你给它的 context 里"算"出来的。* > > *这就是为什么 AI 会"忘事"——它不是真的忘了,而是当上文太长、溢出 context window 时,最早的那部分被挤出了书架。* > > *现在我请你做一道题:* > > *请把这句话的下一个词写出来:* > > *"The weather today is very ___"* > > *你可能写 "nice",可能写 "cold",可能写 "rainy",可能写 "windy"。* > > *但你绝不会写 "piano"——除非你是一个诗人。* > > *为什么你不写 "piano"?* > > *因为你读了上文——"The weather today is very"——你大脑里的语言模型告诉你,piano 在这个上下文里的概率极低,cold 或 nice 的概率极高。* > > *你刚才做的这件事——根据上文预测下一个词——就是 AI 一直在做的事情。* > > *人类做这件事,靠的是几十年的生活经验 + 此刻读到的上文。* > > *AI 做这件事,靠的是训练时见到的几万亿个 token + 此刻你给它的 context。* > > *区别在哪里?* > > *区别在于:人类的"经验"已经写进了他的神经网络,他不需要把过去读过的小说全部塞进脑子里。AI 的"经验"在训练时已经被压缩进了参数,但它仍然需要你把当下的上文显式提供给它——因为它没有"真正"的过去。* > > *这就是 context 对 AI 而言如此特殊的原因。* > > *Context 是 AI 唯一能与"现在"连接的方式。* > > *断掉了 context,AI 就变成了一个漂浮在虚空里的算命先生——它依然会算,但它算出来的下一个词,与你、与此刻、与任何人都没有关系。*
玛雅把信放在桌上。她抬头看着头顶的微光。
她突然理解了一件事:祖父在信里描述的 AI,像极了她小时候读过的一个童话——一个被施了魔法的王子,每天早上醒来就会失去前一天的记亿。唯一能让他"延续自我"的方法,是有人在他醒来时,给他念昨天写好的日记。
Context,就是那本日记。
没有那本日记,王子就是另一个人。
有了那本日记,王子还是王子——至少在他读日记的那段时间里。
她低头看信的最后一段:
> *玛雅,* > > *这就是我要教你的第一课。* > > *Context 不是装饰。Context 是 AI 的"今天"。* > > *Context 不是越多越好。Context 是越准越好。* > > *你给 AI 的每一段 context,都像是在图书馆的当日开放书架上摆放一本书。* > > *摆得对,今天的读者(也就是 AI)就能找到答案。* > > *摆得错,AI 就会拿着一本小说的封面去回答数学题。* > > *这门学问——决定往书架上摆哪些书、怎么摆、先摆什么后摆什么——叫做:* > > *Context Engineering(上下文工程)。* > > *我会慢慢教你的。* > > *但首先,你需要亲自去"诊断"那座图书馆里的每一本书。* > > *你需要看看,它们到底是怎么失忆的。* > > *只有看了,你才会真正相信。* > > *——你的祖父* > > *P.S. 第三封信在书架尽头的一本红色烫金的书里。但在你读完那本书之前,不要打开它。*
4. 三种失忆症——AI 在长对话中"崩坏"的三大症状
玛雅站起身,提起提灯,朝书架深处走去。
她注意到祖父把这座图书馆分成了几个区域,每个区域都有一个小小的木质指示牌:
- **症状区(The Symptoms Wing)**
- **病因区(The Causes Wing)**
- **处方区(The Prescriptions Wing)**
- **病例区(The Case Studies Wing)**
她先走向"症状区"。
4.1 症状一:忘记开头(Lost-in-the-Beginning)
第一排书架上放着一摞发旧的笔记本。玛雅抽出最上面一本,封面上写着:
> *"Patient #001: An AI that forgot its first instruction after 30 turns."*
她翻开。祖父在第一页写道:
> *今天我做了一次实验。* > > *我给一个语言模型下达了一个非常简单的指令:* > > *"在接下来的所有回答中,请只用莎士比亚的风格说话。"* > > *第 1 轮:模型回答得相当莎士比亚——充满了"thou"、"thee"、"wherefore"。* > > *第 5 轮:开始混入一些现代英语,比如 "so basically"。* > > *第 15 轮:语气开始变得正常。* > > *第 30 轮:完全忘了最初的指令,开始用一种无聊的客服腔回答我。* > > *症状:Lost-in-the-Beginning* > > *中文我们可以叫"开头迷失"或"首因丢失"。* > > *为什么会这样?* > > *因为模型在预测下一个词时,对"最开头"的内容关注度最低(这个机制在论文里叫做 recency bias 与 middle loss,意思是模型对最早和最中间的内容最容易忽视,反而对最近的内容记得最清楚)。* > > *就像一个学生在期末考试时,对第一堂课讲的内容最模糊,对最后一堂课讲的内容最清晰。* > > *这是 AI 的"首因效应"——它的"首因"不是最先讲的内容,而是最近讲的内容。* > > *讽刺吧?人类心理学把"最先印象"看得最重,AI 心理学把"最后印象"看得最重。*
玛雅在笔记本的空白处写下:
> *Maya's note: 开头容易丢。最近不容易丢。中间也容易丢。*
她继续翻到第二本笔记本——
4.2 症状二:混淆人物(Character Confusion)
> *今天我让模型扮演三个角色:A 是一个 19 世纪的英国绅士,B 是一个 21 世纪的美国程序员,C 是一个古希腊哲学家。* > > *第 1 轮:模型完美区分了三个角色。A 说话带 "I say, old chap",B 说话带 "lol" 和 "btw",C 说话带 "Verily" 和 "wherefore"。* > > *第 10 轮:模型开始混用三种语言风格——A 突然说了 "lol",B 突然开始 "Verily"。* > > *第 25 轮:模型告诉我:"As A and B both previously agreed, the answer is..."——但 A 和 B 在所有之前的对话里从来没有达成过任何一致。* > > *第 40 轮:模型甚至创造了一个新角色 D——一个从来没有被定义过的"古希腊美国程序员"。* > > *症状:Character Confusion* > > *中文叫"角色混淆"或"人物串台"。* > > *为什么会这样?* > > *因为 context 里同时存在多个角色,模型在预测下一个词时,会"借用"相邻角色的说话方式。* > > *你可以把它想象成三个演员同台演出。如果剧本太长、演员疲劳,他们就会不自觉地"串台词"——A 说了 B 的词,B 说了 C 的词。* > > *在 AI 行业里,这通常出现在多角色扮演(multi-persona role-play)、多智能体协作(multi-agent)以及长篇小说续写等场景。*
玛雅突然想起来——她上周用 AI 写一个故事,让三个角色讨论哲学问题,结果写到第三十段,三个