跳转至

# 记忆与缓存

Agora 具有持久的记忆系统，让模型可以跨对话记住信息。结合自动的嵌入缓存，它提供了一个随使用而增长的知识库。

## 记忆类型

### 活跃记忆

一个单一的、始终开启的记忆上下文，随每次 API 调用一同发送给模型。把它想象成模型始终能看到的便利贴。

活跃记忆用途： - 你的名字、偏好和背景 - 模型应始终知道的项目上下文 - 适用于所有对话的固定指令 - 你厌倦重复的事实

活跃记忆内容示例：

    用户：Newo Ether
    偏好：日常交流用中文，技术话题用英文。
    项目：开发 Agora — 一款 BYOK Android LLM 客户端。
    编码风格：Kotlin、Jetpack Compose、MVVM 架构。

#### 编辑活跃记忆

1. 前往 设置 → 记忆
2. 滚动到 活跃记忆
3. 点按 编辑活跃记忆
4. 输入内容
5. 点按 保存

模型也可以在工具调用中更新活跃记忆，如果访问活跃记忆已启用。

### 已保存记忆

一组命名记忆文件，模型可以搜索、读取、创建、编辑和删除。与活跃记忆（始终发送）不同，已保存记忆按需检索。

已保存记忆用途： - 参考资料（API 文档、配置详情、命令） - 项目特定笔记 - 从过往对话中获得的经验和洞察 - 你希望模型在相关时回忆的任何内容

#### 手动创建记忆

1. 前往 设置 → 记忆
2. 点按 添加记忆
3. 输入：
   - 标题 — 描述性名称
   - 描述 — 简要摘要（用于搜索匹配）
   - 内容 — 完整记忆内容
4. 点按 创建

#### 模型创建的记忆

当访问已保存记忆启用时，模型可以通过工具调用创建、读取、更新和删除记忆文件。这让模型可以：

- 记住你告诉它的事实
- 保存有用的代码片段或配置
- 随时间构建知识库
- 清理过时信息

## 记忆权限

控制模型可以访问什么：

设置 | 位置 | 何时启用
--- | --- | ---
访问已保存记忆 | 设置 → 记忆 | 你希望模型读写记忆文件
访问活跃记忆 | 设置 → 记忆 | 你希望模型更新持久上下文
访问历史对话 | 设置 → 对话搜索 | 你希望模型搜索聊天历史

三项默认均为关闭。只启用你需要的。

## 自动缓存

自动缓存在新消息到达时自动生成嵌入。这保持对话搜索索引始终最新而无需人工干预。

### 启用自动缓存

1. 前往 设置 → 对话搜索
2. 选择嵌入模型（如尚未配置——见 嵌入 / RAG）
3. 在 缓存 下，切换 自动缓存新消息

启用后，每条新消息（用户和模型）自动嵌入并索引用于语义搜索。

### 手动缓存

如果自动缓存关闭，可以手动缓存消息：

1. 前往 设置 → 对话搜索
2. 点按 缓存 — 计算所有未缓存消息的嵌入
3. 进度以圆形指示器显示

点按 重新缓存 从头重建整个索引。删除所有缓存嵌入并重新处理每条消息。使用场景： - 更改了嵌入模型 - 缓存似乎损坏或过时 - 搜索结果意外地差

Warning

重新缓存不可逆，可能根据消息数量和嵌入模型速度需要较长时间。

### 缓存状态

嵌入模型设置显示多少消息已缓存 vs 未缓存： - "所有 N 条消息已缓存" — 最新 - "X / Y 条消息未缓存" — 有待处理的积压

## 聊天中的记忆工具调用

当模型使用记忆工具时，你会看到内联卡片：

工具 | 卡片文本
--- | ---
查找 | "浏览了 N 条已保存记忆"
读取 | "已读取 [记忆名称]"
保存 | "已保存 [记忆名称]"
编辑 | "已更新 [记忆名称]"
删除 | "已移除 [记忆名称]"
更新活跃记忆 | "已更新活跃记忆"

点按任意卡片查看已读或已写的完整内容。

## 最佳实践

- 保持活跃记忆简洁 — 它包含在每次 API 调用中，冗长内容浪费 token
- 为已保存记忆使用描述性标题 — 标题帮助模型找到正确的记忆
- 如果经常使用对话搜索，启用自动缓存
- 切换嵌入模型后重新缓存 — 不同模型生成不兼容的嵌入