这门课会给你一堆比喻——账本、书签、投影。比喻帮你懂,但有个副作用:用久了,你会忘了这东西在真实世界里叫什么。所以我们立一条规矩,也给你一张随时能翻回来的对照卡。
这门课会用很多比喻:账本、书签、投影、前情提要。它们不是随便打的——每一个都是为了让你先”懂”,而不是先被术语吓退。
但比喻有个副作用:用顺了,你会忘了这东西在外面真正叫什么。 于是有一天你想跟工程师聊两句、想去搜点资料、想看懂源码里的变量名,却发现自己满脑子只有”账本""书签”,一个能出门的词都没有。
这门课的一条规矩
所以我们立个规矩,全程执行:
每个比喻,都焊一个真名。 一个帮你记(比喻),一个帮你出门(术语)。
你会在课文里反复看到这种写法——
括号里那个,就是拿去交流、查资料、看源码用的词。看到它,顺手记一下。比喻负责让你懂,术语负责让你能出门。
一个反直觉的例子
先破一个你可能有的错觉:你也许以为”投影”是我们为了讲课编出来的比喻——恰恰相反。
“投影”是原生术语。Pi 的源码里,负责”把账本一条记录变成模型能看的消息”的那个角色,作者写的就是 Projector(投影器)。往上一层,“把一串只增不减的记录,折叠算出当下该看什么”这件事,在软件架构里本来就叫 projection(投影)。
真正是比喻的,是”账本”和”书签”。 它们才是我们加的,源码里没有这两个词。
你看,这就是为什么要立那条规矩:我们的比喻太顺,顺到把旁边那个原生术语也染得”像是编的”。不标清楚,你自己都分不清哪个词能带出门。
一张图,看懂整门课
下面这张图是整门 Session 课的导览——把要学的概念用一个故事串起来。现在扫一眼建立印象,学到哪一块,回来对一次。
每次调用都是一张白纸——上一句说过什么、用的哪个模型、调过哪个工具,它全不记得。
右边的 context 变短,左边的账本一页没删。
账本上的字一个都不动——所有"修改"都是挪书签或加新页。
账本 + 投影,合起来就是它。记住这个词——拿它能搜到一大批资料,也能在别的框架里认出同一套骨架。
对照卡(随学随查)
下面这张表,现在有一半词你还没见过,很正常。它是一张对照卡——每学完一块,回来对一次,慢慢就满了。
| 我们的说法(帮你记) | 出门的叫法(帮你查、帮你聊) | 一句话 |
|---|---|---|
| 账本 | Session · event log | 只增不减的记录本,全课的地基 |
| 账本的一页 | Entry | 记录本上的一条,一次只加一条 |
| 只增不减 | append-only(追加式) | 落到磁盘就是一个只往后写的文件 |
| 书签 | lane 指针 · leaf pointer | 指着”当前读到哪一页”,回退就是挪它 |
| 从书签翻到头 | walkToRoot | 沿 parentId 一路回溯,走出”当前对话” |
| 模型这次该看的那份 | Context | 每次调模型,真正发出去的东西 |
| 把账本算成 Context | 投影 · projection | 那个”现算”的动作,本课的核心动词 |
| 前情提要 | compaction(压缩) | 让模型少看,又不丢历史 |
| 另起一条路 | branch / fork | 同一本内叫分叉,整本复印叫 fork |
这一整套,有个总名字
上面这些不是零散的技巧。把它们合起来——只追加、从不涂改、要改就再记一笔,当下状态靠回放算出来——这是一个有名字的成熟架构模式:
这是这门课最值钱的一个词。为什么:
- 你能拿它搜到一大批资料——书、文章、会议演讲,都在讲同一套骨架。
- 你能在别的框架里一眼认出它:“哦,这不就是账本 + 投影嘛。”
- 你跟人说得出口:不是”我学过一个记账的东西”,而是”我知道 agent 的会话层是怎么用事件溯源做的”。
比喻负责让你懂,术语负责让你出门,总名负责让你走得更远。 这门课三样都给你。
带走这一句
每学到一个比喻,别忘了问一句:它出门叫什么? 这张卡就是答案表,忘了随时翻回来。
下一章,我们就从第一个比喻开始——账本。