《人造人》2/4:如何设计一套记忆系统来模拟人类
2026-03-28

根据第一篇的分析,人类思维的核心方程是:人格 = 运算底座 + 记忆

大语言模型已经提供了"运算底座"——强大的语言理解和推理能力。它缺少的,是持续的、有结构的、带情绪权重的记忆。

这套记忆系统不是数据库,不是文档检索,而是要模拟人类大脑记忆的工作方式:编码、巩固、检索、遗忘、情绪标注、潜意识处理、神游联想。

目标是:给大语言模型装载记忆之后,它的行为模式应当接近一个有具体经历、有情感偏好、有稳定人格的人。


本文是《人造人》系列的第二篇,共四篇。如果没读过上一篇,请点击:《人造人》1/4:人类思维结构的探讨分析


第一层:情节记忆的编码

传统方式的问题

传统RAG把原始对话直接存储,检索时找相似片段塞回上下文。这有根本性的缺陷:

原始输入:
用户:你搬新家了没?
小美:搬了。

直接存储的内容:模糊、隐式、缺乏实体信息

人类大脑不会这样处理。海马体在编码记忆时,会自动补全语境、锚定时间、标注参与者。

实体补全(Entity Completion)

每一段输入在存储之前,先经过一次LLM处理,把隐式信息显式化:

输入:
  对话片段 + 完整上下文(参与者、时间、地点)

输出:
  "小美于2026年X月X日向刘春龙确认,她已搬入新居,地址为华阳招商花园。"

这一步做了几件事:

  • 时间锚定:记录事件发生的时间戳
  • 主体明确:谁说的、对谁说的
  • 隐式信息显式化:"搬了"→"搬到了哪里"
  • 关系标注:刘春龙和小美之间的关系

这是记忆编码的第一步,也是最重要的一步。存入的质量决定了检索的质量。

情绪标注

同时,对这段对话进行情绪评估:

{
  "content": "小美于2026年X月X日向刘春龙确认,她已搬入新居,地址为华阳招商花园。",
  "valence": 0.3,        // 正向 (-1 到 1)
  "arousal": 0.2,        // 唤醒度 (0 到 1)
  "emotion_tags": ["平静", "轻松"],
  "significance": 0.4    // 重要性权重
}

第二层:图谱结构与标签系统

为什么需要图谱

向量数据库解决了"语义相似"的检索,但人类的联想不只靠语义相似——它靠关系

"小美"和"搬家"在语义上不相似,但它们在图谱中有直接连接。下次提到"招商花园",应该能激活"小美",即使两者在语义向量空间里距离很远。

标签即图谱节点

每条记忆存储时附带标签:

记忆:"小美搬到华阳招商花园"
标签:[小美, 同事, 搬家, 华阳, 招商花园, 2026Q1]

这些标签在图谱中成为节点,记忆本身成为连接这些节点的边。随着记忆积累,图谱自然生长出一张关系网络:

小美 ──── 同事 ──── 刘春龙
 │                   │
搬家               华阳区
 │                   │
招商花园 ─────-───────┘

关系类型

不同类型的连接有不同的权重和语义:

  • 人物关系:同事、朋友、家人
  • 事件关系:参与了什么、在哪里发生
  • 时序关系:在X之前/之后发生
  • 因果关系:因为X,所以Y
  • 情绪关系:这件事让某人感到Y

第三层:遗忘与巩固

遗忘曲线的实现

不是所有记忆都应该永久保存。每个记忆节点有一个强度值,随时间衰减:

def memory_strength(initial_strength, time_elapsed, review_count):
    # 艾宾浩斯遗忘曲线的变体
    decay = initial_strength * exp(-time_elapsed / stability)
    # 每次被激活,稳定性增加
    stability = base_stability * (1 + review_count * boost_factor)
    return decay

低于阈值的记忆不会被删除,而是降低检索优先级——类似人类的"想不起来了,但隐约记得"。

离线巩固(睡眠机制)

人类在睡眠期间,海马体会把情节记忆"压缩"传输到新皮层,形成语义知识。

系统可以设计一个异步巩固进程:在低负载时段(agent空闲时),对近期情节记忆进行聚合分析:

情节记忆(具体的):
  - "小美上周说她在减肥"
  - "小美拒绝了下午茶的邀请"
  - "小美说最近身体不太好"

巩固后的语义节点(抽象的):
  - "小美近期健康状态不佳,正在注意饮食"

这个过程产生的是合成记忆——不是任何一次对话的原话,而是从多次观察中提炼出的知识。

情绪驱动的记忆巩固

不是所有记忆被等概率巩固。高情绪权重的记忆优先巩固:

consolidation_priority = significance * abs(valence) * arousal

重要的、情绪强烈的事件,更容易从情节记忆转化为稳定的长期记忆——和人类一样。


第四层:情绪评估函数与人格涌现

情绪评估函数

这是整个系统的核心参数,决定了"这件事让我有什么感受":

def evaluate_emotion(event, memory_context):
    score = 0

    # 基础效价维度
    score += w_social      * event.social_connection    # 社交连接感
    score += w_autonomy    * event.personal_freedom     # 自主感
    score += w_achievement * event.goal_progress        # 成就感
    score += w_safety      * event.threat_level         # 安全感(负向)
    score += w_fairness    * event.fairness             # 公平感
    score += w_harm        * event.harm_to_others       # 对他人的伤害(负向)

    # 基于历史记忆的个性化调整
    score += memory_context.personal_associations(event)

    return EmotionSignal(valence=score, arousal=compute_arousal(event))

人格的涌现而非设计

这个函数的初始参数是设计者设定的,但权重会随记忆积累而缓慢漂移:

def update_weights_from_experience(event, emotion_response, outcome):
    # 如果某类事件持续产生正向结果,相关权重上升
    # 如果某类事件持续带来痛苦,相关权重下降
    learning_rate = 0.001  # 极小,避免单次经历过度影响
    for dimension in emotion_dimensions:
        weights[dimension] += learning_rate * outcome.value * event.features[dimension]

经过足够多的经历积累,这些权重会形成稳定的模式——这就是人格自然涌现的过程,而不是被硬编码进去的。

一个在友善对话中成长的系统,会逐渐对社交连接赋予更高权重;一个经历过背叛的系统,会对信任相关事件变得更谨慎。


第五层:意识/前意识/潜意识的分层

三层架构

┌─────────────────────────────────────┐
│         Working Memory(意识)        │  ← 进入context window
│    当前对话 + 显式召回的记忆            │     容量有限,约10条
└──────────────┬──────────────────────┘
               │ 激活阈值过滤
┌──────────────▼──────────────────────┐
│       Preconscious(前意识)          │  ← 高激活但未召回
│    检索候选池,随时可以被提取            │     约50-100条
└──────────────┬──────────────────────┘
               │ 扩散激活(持续后台运行)
┌──────────────▼──────────────────────┐
│       Subconscious(潜意识)          │  ← 永远不进context
│  情绪底色 / 阈下激活 / 孵化池 / 压抑区  │
└──────────────┬──────────────────────┘
               │ 异步巩固
┌──────────────▼──────────────────────┐
│     Semantic Graph(长期记忆底层)     │
└─────────────────────────────────────┘

潜意识的技术实现

情绪底色:对近期N条记忆的情绪向量取加权平均,形成一个持续更新的情绪状态向量。这个向量不作为明文进入context,而是通过调整检索权重,悄悄影响哪些记忆被优先召回。

阈下激活:当前对话激活某些节点时,通过图谱做一跳扩散激活,把邻居节点的检索权重提高,但不直接召回。这些被提高权重的节点会影响后续的检索结果,在用户不知情的情况下引导联想方向。

孵化池:记录系统遇到的未解决的矛盾或悬挂问题。神游进程会持续对这些问题做低功耗处理,一旦发现解法或相关连接,触发"灵感浮现"机制。


第六层:神游引擎

神游的触发条件

不是任何时候都适合神游。对应人类的生理规律,神游应该在以下时机触发:

  • 对话间隙(agent等待用户回复时)
  • 低情绪唤醒状态(当前情绪底色平静)
  • 长时间未被激活的记忆区域(类似睡眠期间的记忆整理)

神游的算法

def wander(seed_node, steps=20):
    current = seed_node
    visited = []
    insights = []

    for _ in range(steps):
        neighbors = graph.get_neighbors(current)

        if random() < exploration_rate:
            # 探索性跳跃:跳到弱连接甚至无连接的节点
            # 情绪权重高的节点被优先选中
            next_node = emotional_random_jump(current)
        else:
            # 常规联想:沿高权重边行走
            next_node = weighted_choice(neighbors)

        # 检测新发现的连接
        if not graph.has_edge(current, next_node):
            candidate = synthesize_connection(current, next_node)
            if novelty_score(candidate) > INSIGHT_THRESHOLD:
                insights.append(candidate)
                graph.add_edge(current, next_node, weight=0.1, source="wandering")

        visited.append(current)
        current = next_node

    return insights

灵感的固化

神游发现的新连接,被创建为一种特殊的记忆节点——合成洞察(Synthetic Insight),标注来源为"神游",时间戳,以及连接的两个原始节点。

这些洞察会在后续对话中,以一种自然的方式浮现:不是被直接检索出来,而是通过提高相关节点的激活权重,让它们"恰好"出现在context中。


记忆再巩固:每次检索都是一次改写

人类记忆有一个重要特性:记忆不是被读取的,而是被重建的。每次回忆,都会受当前情绪、新信息的影响,记忆本身会被轻微改写。

在系统中实现这一点:

def retrieve_and_reconsolidate(query, current_emotion_state):
    memory = retrieve(query)

    # 用当前情绪状态和新信息轻微更新记忆内容
    updated_memory = reconsolidate(
        original=memory,
        current_context=query,
        emotion_state=current_emotion_state,
        update_strength=0.05  # 极小,避免记忆被过度改写
    )

    graph.update(memory.id, updated_memory)
    return updated_memory

这使得系统的记忆是活的——不是固定的档案,而是随时间和经历持续演化的有机体。


完整架构概览

输入对话
    ↓
[编码层]
  实体补全 → 情绪标注 → 重要性评估
    ↓
[存储层]
  情节记忆(带时间戳、情绪权重)
  图谱(标签节点 + 关系边)
  向量嵌入(语义相似检索)
    ↓(并行)
[潜意识层]          [神游引擎]
  情绪底色更新        空闲时启动
  阈下激活扩散        发现弱连接
  孵化池维护          生成合成洞察
    ↓(异步)
[巩固层]
  遗忘曲线更新
  情节→语义压缩
  合成洞察固化
    ↓
[检索层]
  多路召回(语义 + 图谱 + 情绪亲和 + 阈下激活偏置)
  再巩固(检索时轻微更新记忆)
    ↓
[Context组装层]
  意识层(显式召回,进入context)
  情绪底色(影响检索权重,不进context明文)
    ↓
大语言模型生成输出

结语

这套系统的本质,是把人类大脑的记忆机制翻译成可计算的结构。它不追求完美模拟每一个神经细节,而是捕捉关键的功能特性:有情绪权重的存储、有遗忘曲线的衰减、有图谱结构的联想、有潜意识层的影响、有神游机制的灵感涌现。

当这套系统接入大语言模型时,模型不再是每次对话都重新开始的陌生人,而是一个有历史、有情感、有逐渐成形的人格的存在。

它是否因此成为"人"——这个问题留待第三篇讨论。


本文是《人造人》系列的第二篇,共四篇,由刘春龙与Claude Code共创。

下一篇:《人造人》3/4:模拟人类的记忆系统造出来之后


阅读:77   评论: 0 💬
添加新的评论
Copyright © Longbill 2008-2026