对话日期:2026-03-16 主题:V0.3 记忆模块方案选型
| # | 问题 | 类型 |
|---|---|---|
| 1 | 对记忆方案(mem0)仍存疑,是否有更好选择? | 方案质疑 |
| 2 | NanoClaw 用的是本地文件记忆,是否可借鉴? | 竞品参考 |
| 3 | 是否有可借鉴的学习类开源项目的记忆能力? | 竞品参考 |
| 4 | 学术界和工程界对学习类记忆有什么研究? | 理论支撑 |
| 5 | sqlite-vec 是什么?文件存储在哪里? | 技术澄清 |
| 6 | sqlite-vec 能满足 Speakeasy 的记忆要求吗? | 方案评估 |
把记忆按"从哪来、用在哪"分成五个维度 ┌──────────────────────────────────────────────────────┐ │ 维度 1:语言能力记忆 │ │ - CEFR 等级 + 历史趋势 │ │ - 强项(流利的话题/句型) │ │ - 弱项(反复出现的语法错误) │ │ - 词汇盲区(用中文说但不会用英文表达的词) │ │ - 发音习惯(哪些音经常含糊) │ ├──────────────────────────────────────────────────────┤ │ 维度 2:用户画像记忆 │ │ - 职业 / 行业背景 │ │ - 常聊话题偏好(职场/生活/兴趣/时事) │ │ - 学习目标(面试英语/日常沟通/演讲/写作) │ │ - 性格风格(喜欢严肃还是幽默,话多还是话少) │ ├──────────────────────────────────────────────────────┤ │ 维度 3:学习行为记忆 ← 你提的第1点 │ │ - 用户主动问过什么("这个词怎么用""这句话地道吗") │ │ - 点击追问的内容(v02b click-to-ask 的记录) │ │ - 复习卡片的通过率 / 遗忘率 │ │ - 哪些内容被标记了 👍(觉得有用) │ │ - 学习时段规律(几点学、每次学多久) │ ├──────────────────────────────────────────────────────┤ │ 维度 4:对话内容记忆 │ │ - 聊过的事件("上周开了个重要会议") │ │ - 提到的人物关系(同事、老板、朋友) │ │ - 持续关注的话题(连续几天都在聊同一件事) │ │ - 表达过的情绪和态度 │ ├──────────────────────────────────────────────────────┤ │ 维度 5:学习节奏记忆 │ │ - 连续打卡天数 │ │ - 上次学习时间(用于续接上下文) │ │ - 当前学习计划完成进度 │ │ - 高频放弃时间点(用于预警和激励) │ └──────────────────────────────────────────────────────┘
你说得很准:关系化、结构化、识别模式、语义检索。
具体在 Speakeasy 里意味着什么:
用户聊天原文(非结构化)
"I had a tough meeting with my boss today,
he said my presentation was not clear"
↓ mem0 自动提取
{
entity: "boss",
event: "presentation feedback",
emotion: "frustrated",
learning_opportunity: "presentation vocabulary",
pattern: "user struggles in formal workplace English"
}
这是自建 SQLite 做不到的——你不可能为每一种可能的信息写一张表,但 mem0 能从自由对话里自动识别出结构。
语义检索的价值:
Alex 下次对话时检索:
"跟职场表达相关的记忆" → 找到上次 presentation 事件
→ Alex 主动说:"Last time you mentioned your presentation,
want to practice how to present ideas more clearly?"
这就是从"工具"变成"朋友"的关键一步。
三个出口,记忆必须真正流向这三个地方才有价值:
记忆
├── 服务于【聊天内容】
│ Alex 主动用记忆发起话题、续接上次的事、调整词汇难度
│
├── 服务于【学习建议】
│ "你最近 presentation 类词汇用得少,今天可以练练"
│ "你连续3天在聊职场,要不要试试切换到生活话题?"
│
└── 服务于【学习计划】
基于弱项 + 目标 + 节奏,生成个性化每周计划
"本周重点:workplace communication,目标5次对话"
数据来源 存储层 服务出口
────────── ──────── ──────────
对话内容 → → 聊天 system prompt
用户追问记录 → mem0(非结构化 → 学习建议卡片
FSRS 卡片结果 → + 向量检索) → 学习计划生成
点击追问内容 → → 记忆管理页面
学习行为数据 → SQLite(结构化)→ Alex 个性化
能力评估结果 → → Level 仪表盘
两层存储并行:
- mem0:处理非结构化对话内容,自动提取实体、事件、模式
- SQLite:存储结构化数据(FSRS 调度、CEFR 等级、打卡记录)
引入 mem0 的时机应该提前到 v03,不是因为复杂,而是因为:没有 mem0,维度 3 和维度 4 的记忆根本无法从自由对话里自动提取,全靠手写规则会漏掉大量信息。
s
目前没有「英语对话学习 + 用户记忆」兼备的开源项目。现有开源项目分两类:
WordPecker App
- LLM 生成课程 + voice agent 对话练习单词
- Agent 能访问用户词汇列表,对话中动态添加新词
- 记忆仅限词表,无用户画像
Discute
- 专注口语练习,Kokoro 模型做个性化语音反馈
- 无跨会话用户记忆
MemoryOS(EMNLPS 2025 Oral)
- 为个性化 AI Agent 设计的记忆操作系统
- 学术级项目,可借鉴架构,不可直接用
现有学习应用只记"你学了什么"(知识状态),没有人认真做"你是谁"(用户关系)。Speakeasy 的差异化恰在此处。
发展脉络
1994 BKT(贝叶斯知识追踪) → 建模知识掌握概率
2015 DKT(深度知识追踪) → 用 RNN 建模学生知识状态
2024 Dialogue KT → 在对话每轮中识别知识点
核心发现 个性化参数(individualization)效果显著:对每个学生用独立的掌握概率初始值,可以将部分学生达到掌握标准所需题目数量减少约一半。
2024-2025 最新方向 用 LLM 做对话式 KT(dialogueKT):不只追踪答题,而是在对话每一轮中识别涉及的知识点,判断学生是否真正理解。
Open TutorAI(arXiv 2026)
- 三层架构:对话界面 + 学习者仪表板 + RAG 引擎
- 入门时初始化 learner profile,实时参与度监测
FOKE 框架(学术)
- 基础模型 + 知识图谱 + Prompt 工程 = 个性化可解释学习路径
- 核心思路:把知识点用学生感兴趣的场景包装
| 学术概念 | Speakeasy 对应 | 状态 |
|---|---|---|
| Knowledge Tracing | grammar_cards + FSRS | ✅ v02b 已实现 |
| Learner Profile | 职业、话题偏好、CEFR 等级 | ⏳ v03 目标 |
| Contextualizing | Alex 把练习融入用户关心的话题 | 🎯 核心差异化 |
| Dialogue KT | 对话中隐性识别错误模式 | 🔮 未来方向 |