收官推演一断言:上下文会膨胀成经验库,证伪条件是持续学习在参数内突破。本篇把这条推演展开成完整战场地形——智能的记忆分层、上下文记忆的工程形态、参数内学习为什么迟迟不突破、以及行业正在成型的系统级答案。伏线早已铺好:第 7 篇留下"上下文记忆 vs 参数记忆的仲裁问题",第 9 篇留下"上下文装不下的,放进环境里",第 16 篇留下"覆盖度只能靠外部熵源维持"——三句话在本篇合流。

一、记忆的分层:从寄存器到固件

生物记忆的类比不要过度引用,但分层本身是计算系统的普适结构。LLM 系统的存储介质有五种,价格表互不兼容:

介质写入成本读取延迟容量易失性
参数极贵(全量重训)0(前向即取)~10^13 token不可删改
LoRA 适配器中(离线训练)~0领域级可插拔
KV Cache免费(前向副产物)0会话级会话结束即失
上下文窗口低(注入)0 但有注意力税≤10^6 token会话结束即失
外部存储极低需检索无限持久、可删

关键的不对称有两个。其一是容量:1M 上下文装下的知识不足参数的万分之一。其二是易失性倒挂:越容易写的介质越容易丢,唯一持久可删的介质(外存)读取最慢——整个记忆工程就是在这个倒挂上做套利。而参数有一条独特属性:不可删除。GDPR 遗忘权在参数上无法执行(第 4 篇的成员推断攻击能证明"记过",却删不掉)——这一条就是记忆放外存而非参数的最硬理由,与训练成本无关。

二、上下文作为记忆:写策略与读策略

会话内的记忆已被第 5 篇解决了一半:KV Cache 本质是计算的物化——算过的注意力不再重算,prefix caching 把它变成可复用资产。跨会话才是战场,第 9 篇给出了工程形态:状态外置到文件系统,Agent 自己读写维护。剩下的核心问题只有两个:什么值得写,怎么读回来。

写策略的答案出人意料地古老:意外与纠正才值得记。用户明确纠正过的偏好、与模型先验冲突的事实、重复出现两次以上的模式—— surprise 驱动的写入天然过滤了噪声。读策略则是第 11 篇 RAG 的退化版:语料极小、查询意图模糊、时间高度敏感,所以检索打分要叠加三维——相关性、新近度、重要性(Generative Agents 的经典公式):

def maybe_remember(turn, memory):
if turn.user_corrected or surprise(turn) > θ:    # 纠正与意外才写
memory.write(fact_card(turn))                # 结构化事实卡
def recall(memory, query, now):
return topk(memory, score=lambda m:
rel(m, query) * recency(m, now) * importance(m))  # 三维权衡

工程上的暗礁与第 7 篇同源:写多了,上下文被记忆占满,注意力税(context rot)反噬任务本身;写少了又退化成金鱼。记忆系统的第一性设计约束不是容量,是上下文预算——所以生产形态正在收敛为"外存全量 + 上下文按 JIT 取用",第 9 篇的那句话在这里升格为定理。

三、参数内学习:为什么迟迟不突破

理想的记忆是经验直接写回权重。现实卡在六十年前的老问题上:稳定性-可塑性困境。新梯度写新经验的同时冲刷旧分布——而第 16 篇刚证明过,分布覆盖度只能靠外部熵源维持;没有 replay 缓冲的在线更新,正是"纯自食"的最劣情形:灾难性遗忘不是工程缺陷,是热力学。

两条技术路线在打这个墙。妥协路线:LoRA 把经验写成小补丁,可插拔可回滚,绕开"改固件",代价是适配器一多就路由爆炸。激进路线:把记忆写入重新定义为一种计算——测试时训练(TTT 层)与神经记忆模块(Titans 一系)在推理中对一个小记忆网络做梯度更新,用意外度门控写入、用衰减项防冲刷:

def remember_step(M, x, surprise, lr=1e-3):
g = M.grad_fit(x)                    # 拟合新信息的梯度
gate = sigmoid(surprise - θ)         # 意外度门控: 平凡输入不写
M.W -= lr * gate * g                 # 写入
M.W *= (1 - decay)                   # 遗忘项: 老记忆让位

这是"计算四位置"之外的第五位置——参数内、但临时的:权重在变,却只为当前任务服务,会话结束即可丢弃。它绕开了持久性难题(不用管遗忘权,因为本来就不持久),也绕开了遗忘难题(主参数不动)。但它的上限受制于记忆网络的容量与更新步数——本质是把上下文窗口换成了一块可微分的便签,离"经验刻进固件"还隔着一整个反向传播协议的离线性:梯度是唯一成熟的写参数协议,而它是全局、离线、重透明的,与"在线、局部、轻量"的记忆写入需求处处相反。

四、系统级答案:睡眠巩固

单点技术都不过关,生产系统于是长成了分层架构,其形状与海马-皮层巩固机制惊人地同构——清醒期快写、睡眠期慢刻:

def sleep_consolidation(agent, buffer, verify):
episodes = [e for e in buffer.drain() if verify(e)]   # 只留验证过的经验
lora = distill_episodes(agent, episodes)              # 离线蒸馏: 慢而净
return agent.attach(lora, gateway="gated")            # 门控挂载, 可回滚

清醒期,经验以最低成本写进外存(快、脏、可删);睡眠期(离线批处理),验证过的经验被蒸馏成适配器挂回参数——replay 缓冲、验证器过滤、可回滚挂载,恰好是第 16 篇防坍缩配方在记忆场景的逐项复用。评测也跟着系统化:LoCoMo 一类长对话基准测的不是模型是系统——跨会话偏好保持、信源过时后的更新、被纠正后不再犯,记分牌挂在记忆管线整体上,这是第 13 篇"评测对象从模型迁移到系统"的又一实例。

五、收束

对收官推演一的裁定:边界确实在右移,但右移的是"上下文 + 外存 + 周期蒸馏"的组合拳,证伪条件(纯参数内在线学习的突破)尚未触发——Titans 们的便签只是把窗口变大了一点,没有把固件变软。生物界用两套介质(海马快写、皮层慢刻)跑了几亿年的方案,工程界正在独立重新发明它,这本身是对"分层是唯一解"最硬的旁证。

一句话收束:上下文是寄存器,外存是硬盘,参数是固件——固件的刷写协议六十年来只有一个(梯度下降),所以在更好的刷写协议出现之前,智能体只能像生物一样:白天记在纸上,晚上睡一觉,把验证过的那些,刻进骨头。

Logo

更多推荐