指南
Memory 与 Context Memory
Vibecape 如何保存长期记忆,以及如何构建每次请求的上下文窗口。
Vibecape 的「Memory」可以理解为两层:
- 持久化 Memory(Persistent / Long-term Memory):跨会话保存的长期信息,主要用于「用户偏好」「习惯」「个人信息」等【用户相关】内容。
- Context Memory(上下文窗口构建策略):每次请求发送给模型的消息集合,目标是在预算内尽可能保留关键信息。
设置页的 Memory 面板用于管理持久化 Memory 条目(查看、编辑、删除、新增)。
1) 持久化 Memory(长期记忆)
存储位置
长期记忆保存在用户目录的本地数据库中:
~/vibecape/chat.db其中包含 long_term_memories 表,记录包括:
category:分类(当前仅使用user_preference,用于用户相关信息)content:记忆内容importance:重要度(1–10)access_count / last_accessed:命中统计embedding:语义向量(用于语义检索;生成失败时可能为空)
检索与使用
- 工具检索:AI 可通过
search_memory工具按语义检索用户相关记忆。 - RAG 注入:在构建上下文时,应用会尝试检索与当前输入相关的用户记忆,并以系统消息形式注入到上下文中(默认最多 3 条,约 500ms 超时,失败/超时会跳过)。
编辑会发生什么
当你在设置页编辑某条长期记忆的 content 时,应用会尝试重新生成该条目的 embedding(失败则会清空 embedding,意味着它可能暂时无法被语义检索命中)。
2) Context Memory(上下文窗口)
Vibecape 每次请求会综合多种来源,构建最终发送给模型的消息列表。常见组成包括:
- System Prompt(Hero 系统提示词)
- Thread Summary(会话摘要):用于压缩较长历史,减少 token 占用
- Long-term Memory(长期记忆检索结果,可选注入)
- Recent Messages(滑动窗口):保留最近若干轮对话
- Current Input(当前输入)
这套策略的目标是:在上下文预算有限的情况下,尽量保留「指令」「背景」「近期对话」与「可检索记忆」的有效信息。
项目 / repo / 文档相关的上下文不应写入 LongTermMemory。建议通过工作区的
llm.txt、文档内容本身或其他项目级存储来管理。
3) 工具输出与 Working Memory
当某些工具返回内容过大(例如长文本、文件内容等),它们可能会被外置到 Working Memory 中,以避免挤占上下文窗口。
- Working Memory 通常会落盘缓存一段时间,并自动清理过期数据。
- 需要时,AI 会通过
read_working_memory按memoryId取回完整内容或片段。