Ivan Zhao 最近快变成 AI 时代的软件代言人了。

有点像 Andrej Karpathy。隔一阵出来聊一次,每次都能把最近软件正在发生的变化说得很具体。

最近他又出了一篇访谈。里面有两个数字特别有意思。

一个是 一年半

另一个是 三四个月

第一个是一年半。

Notion 从 2023 年就开始往 Agent 方向走,不是做一个能回答问题的助手,而是直接奔着让 AI 操作电脑去的。做到最好的时候,大概 70% 能跑通。

Ivan 后来回头讲这段经历,只说了一句:

"We tried for a year and a half. Nothing worked."

第二个数字是三四个月。

今天 Agent 已经真正在跑了,但 Notion 的 Agent Harness——也就是让 Agent 真正工作起来的那层系统——差不多每三四个月就要重写一次。

Ivan 对这件事的态度很干脆:

"Just burn it. There's no sunk cost."

这两个数字放在一起,有一个很不自然的地方。

学会怎么做一件事,花了一年半。但真正写出来的系统,三四个月就可以扔掉。

如果代码可以扔,那一年半里留下来的到底是什么?

01 不能跳,不只是因为模型不够好

Ivan 自己总结那一年半,用了一句很短的话:

"You can't jump."

Notion 当时的问题不是方向看错了。

他们对 Agent 未来的判断,放到今天看也没什么问题。问题是他们想一步到位。

既然最终 Agent 应该能自己用电脑,那就直接做一个能用电脑的 Agent。

结果是 Demo 已经像那么回事了,但只要还会随机出错、误操作、需要人回来收拾,它就没法成为一个可以真正交出去的产品。

后来他们换了走法。

先让问答和 Tool Use 这些能力跑起来,再慢慢把 Computer Use 变成 Agent 可用的又一个工具。

我以前很自然地会把这种路径理解成妥协——模型暂时不行,先做个缩水版,以后再补回来。

但如果只是暂时替代,那等模型更强的时候直接删掉就好了。

问题是,很多东西并不会因为模型变聪明就自动解决。

用户怎么把任务交给 AI,哪些工具该暴露给它,失败以后怎么处理,哪些操作必须让人确认,什么结果算真的完成——这些只能在实际使用里慢慢磨出来。

模型再强也替不了这个过程。

所以那些看起来像中间状态的东西,可能根本不是临时搭的脚手架。

Notion 那一年半真正积累下来的,也许不是某一套最终被保留的实现,而是对“这件事怎样才能真正交给用户”的理解。

这种理解不是模型升级自动送给你的,它只能在真实使用里慢慢长出来。

02 但承载这些东西的代码,确实可以烧

这就是让我觉得怪的地方。

前面刚说,有些能力只能一点一点积累,不能跳。

但承载这些能力的 Harness,怎么三四个月就能重写一次?

想了一段时间以后,我大概理解了 Ivan 为什么敢说 “Just burn it”。

Harness 里很多设计,解决的其实是一个很具体的问题:

今天这代模型还不会什么。

模型不擅长稳定拆任务,就在外面补编排逻辑。

Context 塞不下,就做压缩、筛选、路由。

Tool Use 不稳定,就加控制层。

这些东西在当时都有道理,但它们跟当前模型的能力边界绑得太紧。

模型一升级,以前费很大力气绕过去的限制,可能直接就不存在了。

其实不只是 Notion。

过去这一年,折腾 AI 的人多少都有过类似的感觉。

半年前认真学会的一些 Prompt 技巧、精心搭建的 Workflow、反复调试过的 Agent 架构,过几个月回头看,可能已经不是那么回事了。

Prompt 会过时。

Workflow 会推翻重来。

模型会换。

越是紧贴当下模型能力边界的东西,保质期可能越短。

但这里有一个问题。

代码可以过时,经验不该跟着一起消失。

你换了 Harness,换了模型,换了 Agent,前面几个月踩过的坑、做过的判断、摸索出来的做法——如果这些也一起清零了,新系统凭什么不把老路再走一遍?

03 代码可以烧,但经验得有地方接住

如果 Harness 三四个月就会重写,那前一版系统踩过的坑、做过的判断,怎么带到下一版?

Notion 最近在做的 Lore,我觉得有意思的其实就是这一点。

它不是简单给 Agent 存一份聊天记录。

一次任务结束以后,Lore 会试着从这次工作里,把以后可能还用得上的东西留下来。

比如一个已经确认过的事实。某条路为什么最后没走通。当时为什么做了这个选择。或者某种已经验证过、以后还应该继续遵守的做法。

它想做的是:

把一次执行,变成下一次执行可以继承的经验。

但经验是动态的。昨天成立的判断,今天可能已经失效。不同任务留下来的经验,也可能互相冲突。

Notion 自己把一种失败的 Memory 形容成:

"a junk drawer with an API"

一个带 API 的杂物抽屉。

什么都留下来,最后不断的熵增,留下的是过期的、重复的、互相矛盾的信息。

所以 Lore 还得处理另一件更难的事情:

什么应该继续保留,什么已经被新的经验替代,什么干脆应该忘掉。

一次工作里学到的东西,能不能进入下一次工作,同时还允许下一次工作继续修改它。

代码可以烧。

但烧完以后,不应该每次都重新交一遍学费。

04 我以前以为,存下来就等于留下来

想到这里,我又想起自己以前折腾 Notion 的一段经历。

有一阵我很认真地写日报。

大概 5 个月,前前后后写了 142 篇。

每天记录做了什么、想到什么,把觉得以后可能有用的东西整理好。

当时很自然地觉得:

积累得越多,以后能调用的就越多。

几个月以后,我发现了一个挺让人泄气的事实。

不是我没记下来。

东西都还在。

只是未来的我,根本没有那么勤快地回来。

所以后来我对“第二大脑”有过一个挺悲观的判断:

第二大脑不在于存得不够多,而在于没有消费。

我以前把保存继承 混成了一件事。

默认只要把东西认真存下来,未来自然就能接着用。

但存下来,下一次也不一定用。

真正留下来的,是那些能让下一次不用重新来一遍的东西。

这是更关键的问题。