记忆与缓存¶
Agora 具有持久的记忆系统,让模型可以跨对话记住信息。结合自动的嵌入缓存,它提供了一个随使用而增长的知识库。
记忆类型¶
活跃记忆¶
一个单一的、始终开启的记忆上下文,随每次 API 调用一同发送给模型。把它想象成模型始终能看到的便利贴。
活跃记忆用途: - 你的名字、偏好和背景 - 模型应始终知道的项目上下文 - 适用于所有对话的固定指令 - 你厌倦重复的事实
活跃记忆内容示例:
用户:Newo Ether
偏好:日常交流用中文,技术话题用英文。
项目:开发 Agora — 一款 BYOK Android LLM 客户端。
编码风格:Kotlin、Jetpack Compose、MVVM 架构。
编辑活跃记忆¶
- 前往 设置 → 记忆
- 滚动到 活跃记忆
- 点按 编辑活跃记忆
- 输入内容
- 点按 保存
模型也可以在工具调用中更新活跃记忆,如果访问活跃记忆已启用。
已保存记忆¶
一组命名记忆文件,模型可以搜索、读取、创建、编辑和删除。与活跃记忆(始终发送)不同,已保存记忆按需检索。
已保存记忆用途: - 参考资料(API 文档、配置详情、命令) - 项目特定笔记 - 从过往对话中获得的经验和洞察 - 你希望模型在相关时回忆的任何内容
手动创建记忆¶
- 前往 设置 → 记忆
- 点按 添加记忆
- 输入:
- 标题 — 描述性名称
- 描述 — 简要摘要(用于搜索匹配)
- 内容 — 完整记忆内容
- 点按 创建
模型创建的记忆¶
当访问已保存记忆启用时,模型可以通过工具调用创建、读取、更新和删除记忆文件。这让模型可以:
- 记住你告诉它的事实
- 保存有用的代码片段或配置
- 随时间构建知识库
- 清理过时信息
记忆权限¶
控制模型可以访问什么:
| 设置 | 位置 | 何时启用 |
|---|---|---|
| 访问已保存记忆 | 设置 → 记忆 | 你希望模型读写记忆文件 |
| 访问活跃记忆 | 设置 → 记忆 | 你希望模型更新持久上下文 |
| 访问历史对话 | 设置 → 对话搜索 | 你希望模型搜索聊天历史 |
三项默认均为关闭。只启用你需要的。
自动缓存¶
自动缓存在新消息到达时自动生成嵌入。这保持对话搜索索引始终最新而无需人工干预。
启用自动缓存¶
- 前往 设置 → 对话搜索
- 选择嵌入模型(如尚未配置——见 嵌入 / RAG)
- 在 缓存 下,切换 自动缓存新消息
启用后,每条新消息(用户和模型)自动嵌入并索引用于语义搜索。
手动缓存¶
如果自动缓存关闭,可以手动缓存消息:
- 前往 设置 → 对话搜索
- 点按 缓存 — 计算所有未缓存消息的嵌入
- 进度以圆形指示器显示
点按 重新缓存 从头重建整个索引。删除所有缓存嵌入并重新处理每条消息。使用场景: - 更改了嵌入模型 - 缓存似乎损坏或过时 - 搜索结果意外地差
Warning
重新缓存不可逆,可能根据消息数量和嵌入模型速度需要较长时间。
缓存状态¶
嵌入模型设置显示多少消息已缓存 vs 未缓存: - "所有 N 条消息已缓存" — 最新 - "X / Y 条消息未缓存" — 有待处理的积压
聊天中的记忆工具调用¶
当模型使用记忆工具时,你会看到内联卡片:
| 工具 | 卡片文本 |
|---|---|
| 查找 | "浏览了 N 条已保存记忆" |
| 读取 | "已读取 [记忆名称]" |
| 保存 | "已保存 [记忆名称]" |
| 编辑 | "已更新 [记忆名称]" |
| 删除 | "已移除 [记忆名称]" |
| 更新活跃记忆 | "已更新活跃记忆" |
点按任意卡片查看已读或已写的完整内容。
最佳实践¶
- 保持活跃记忆简洁 — 它包含在每次 API 调用中,冗长内容浪费 token
- 为已保存记忆使用描述性标题 — 标题帮助模型找到正确的记忆
- 如果经常使用对话搜索,启用自动缓存
- 切换嵌入模型后重新缓存 — 不同模型生成不兼容的嵌入