> For the complete documentation index, see [llms.txt](https://tinyhumans.gitbook.io/openhuman/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tinyhumans.gitbook.io/openhuman/zh/gong-neng/memory.md).

# 记忆

记忆：一个可插拔引擎，可存储你的文档、对话和学习内容，在后台刷新上下文，并以引用回答问题。

记忆让代理能够在不同聊天之间记住你：你正在做什么、你的偏好是什么、文档里有什么内容。它是应用的一个功能，不是隐藏数据库。由你选择谁来存储它，查看已存储的内容，并删除任何内容。

从 **连接 > Memory**。它有八个标签页：Engine、Ask、Explorer、Learnings、Conversations、Brain、Background 和 Settings。旧的 `/brain` 和 `/settings/memory-engine` 地址会重定向到那里。

## 代理如何使用记忆

记忆会在每一轮自动发挥作用，代理无需主动请求。

* **在模型回答之前**，OpenHuman 会取出一个已完成的 *记忆包* ，如果有的话，就从其短暂缓存中取出，并开始在后台记录你的消息并刷新记忆。第一轮可能没有记忆包。缓存的包可以保存上一次查询中的学习内容、信念、文档和更早的对话；它会标记为缓存上下文，因此代理在需要当前答案时可以使用显式回忆。该包只会加入那一轮的请求中，绝不会写入聊天记录。
* **在回答之后**，回复会在后台记录，并为其使用的每个工具附上一行结果。
* **当长聊天被压缩时**，OpenHuman 可以将已完成的缓存记忆加入摘要，并开始刷新对被折叠轮次的回忆。记忆读取绝不会阻塞摘要。
* **在后台**，每隔几分钟，引擎会根据已存储的内容构建信念，例如“用户偏好简短回答”或“部署在周五进行”。

答案中的记忆标签会显示该包引用了哪些已存储项目。要查看某一轮会获得什么，请打开 **提问 > 包预览**.

## 引擎

一个引擎用于存储你的记忆并回答有关它的问题。共有两个。

| 引擎         | 它是什么                                             | 需要                                              |
| ---------- | ------------------------------------------------ | ----------------------------------------------- |
| TinyHumans | 由 TinyHumans 托管并运行的 CortexDB，通过 TinyHumans 后端访问  | 你已登录，或者主机提供 TinyHumans API 密钥（无头和库型主机）          |
| CortexDB   | 你自己的 CortexDB，直接调用（托管 `api-v1.cortexdb.ai` 或自托管） | 一个 CortexDB API 密钥（保存在操作系统钥匙串中），如果不是托管版，还需要一个端点 |

无论使用哪种引擎，已提交的记忆项目都存放在 CortexDB 中。OpenHuman 还会将已清理的、待处理的代理写入保存在私有本地队列中，直到它们被送达，同时保留作业和同步账目。缓存的包会在进程内存中短暂保留。请参见 [你的记忆存储在哪里](/openhuman/zh/gong-neng/privacy-and-security.md#where-your-memory-is-stored).

在 **引擎** 标签页上选择一个引擎。如果你已注销，而且既没有 CortexDB 密钥，也没有主机提供的 TinyHumans API 密钥，则记忆将关闭。代理没有记忆工具，不会存储任何内容，Memory 页面会告诉你原因。

## 引擎的作用

* **回忆** 会用通俗语言回答问题，并引用它所使用的已存储项目。
* **获取** 是对已存储项目的原始搜索，可使用元数据筛选器（文件夹、仓库、线程、来源、时间窗口）。两个引擎都只支持混合搜索。
* **存储** 可处理三种项目：文档、对话和学习内容。

## 存储什么

### 大脑：文档

该 **大脑** 标签页保存所有代理共享的文档，按来源类型归档： `pdf`, `markdown`, `notion`, `github`, `web`，以及每种其他来源各一项（`gmail`, `docx` 等等）。它会显示每个来源包含多少文档。你可以搜索它们，添加一个（粘贴的文本或你电脑中的文件），并忘记整个来源。

在其下方，同步的来源会让大脑保持最新。来源包括以下之一：

| 类型       | 目标               | 归档于                                   |
| -------- | ---------------- | ------------------------------------- |
| `文件夹`    | 你电脑上的一个文件夹       | `pdf`, `web` （HTML）或 `markdown`，按文件类型 |
| `文件`     | 单个文件             | 与文件夹相同                                |
| `链接`     | 网页               | `web`                                 |
| `github` | 一个代码仓库（`所有者/仓库`) | `github`                              |
| `rss`    | 一个订阅源 URL        | `web`                                 |

当你点击同步时，以及按你为每个来源设置的计划，来源会进行同步。再次同步未更改的文件不会重复存储。移除某个来源也可能会忘记它产生的项目。

### 对话

轮次记录在后台运行：在模型运行之前，你的消息会先排队，在回复提交后再记录。缓慢或不可用的记忆引擎不会延迟回答。每个代理的轮次都会彼此分开保存。工具调用只按名称和 ID 存储，并附上一行结果，绝不存储其参数。你可以在 **对话** 标签页关闭轮次记录，其中也列出每个代理已存储的轮次。

### 学习内容

一条学习内容就是一条持久陈述：偏好、事实、流程或更正。代理会通过其 `记忆` 工具（即 `学习` 操作），你也可以在 **学习内容** 标签页添加或删除它们。工具确认提示“已排队；尚未保存到记忆”确认的是本地接受，而不是引擎完成了保存。引擎构建的信念也会列在那里，并标记为“已构建的信念”。

在离开你的机器之前，一切内容都会被清除秘密和个人标识符。

### 过往对话

轮次记录启用之前的聊天不会进入记忆，直到你同步它们。 **对话** 标签页显示仍未同步的聊天和轮次数量。 **同步过往对话** 在你确认后上传它们，形式与新轮次相同，且不包含工具参数。你可以在运行时关闭页面，稍后再次同步时只会发送新增内容。

## 探索记忆中存有什么

该 **浏览器** 标签页显示记忆中包含的所有内容，每次按一个属性分组：类型、记忆节点、来源、工作区、文件夹、文件、语言、仓库、链接、线程、代理、工具或标签。每个值都会显示有多少项目具有该属性。点击某个值可缩小到这些项目，然后再按另一个属性分组。顶部的面包屑可返回上一级。每一步的项目会列在下方。 **打开** 会完整显示一项及其所有详情，并提供一个 **遗忘** 按钮。

在非常大的记忆中，这些计数可能只覆盖目前已扫描到的项目。发生这种情况时，该标签页会说明。

## 每个代理各自的记忆

记忆的组织方式与团队协作方式相同：

* **所有代理共享：** 学习内容和大脑。
* **每个代理各自的：** 它自己的对话。代理的包以其自身历史开头，其他代理的轮次只会短暂出现。
* **团队和租户：** 一个代理团队会在自己的根目录（`team:<id>`）下获得自己的记忆，与其他所有人的分开。

默认情况下，代理的记忆 ID 就是其定义 ID。在 `config.toml`, `[memory.agents.<id>]` 中可以为某个定义指定另一个记忆 ID（`agent_id`），另一个根目录（`root`），或者关闭其每轮记忆包（`recall = false`).

作为更大系统一部分运行 OpenHuman 代理的主机，例如 AI 公司或多代理产品，可以将每个代理绑定到自己的记忆。使用 `[memory] agent_id` 和 `root` 在该代理的配置中，或者使用 `AgentSpec::memory(MemoryBinding::new("employee-7").root("team:acme"))` 通过 [嵌入库](https://github.com/tinyhumansai/openhuman/tree/main/docs/gitbooks/en/developing/embedding.md).

## 代理的记忆工具

代理有一个工具， `记忆`，包含四个操作： `回忆`, `获取`, `学习` 和 `遗忘`。显式读取有当前运行的截止时间和共享预算；当记忆太慢时，代理会收到错误，并在该轮运行中继续而不重试它。代理 `学习` 和 `遗忘` 请求会在本地排队并在后台发送，因此其确认并不能证明远程已保存或已删除。OpenHuman 自带的 [MCP 服务器](/openhuman/zh/kai-fa/mcp-server.md) 向其他应用提供与代理相同的能力： `memory.recall`, `memory.fetch`, `memory.list`, `memory.learn` 和 `memory.forget`.

## 设置和后台工作

该 **设置** 标签页设置记忆包的形状：开启或关闭、以 token 计的大小、包含多少学习内容、文档和轮次，以及多久构建一次信念。 **后台** 标签页列出已排队的信念构建和最近运行，并提供一个 **立即运行** 按钮。使用 TinyHumans 引擎时，信念会按服务自身的计划构建。

## 导入你之前的记忆

如果 OpenHuman 找到了更早（v1）版本的记忆，Memory 页面会提供一次性导入。它会把这些数据上传到你选择的引擎，因此只有在你同意后才会开始。如果中断，导入会继续。来自已连接应用（Gmail、Slack、Notion、Linear、GitHub、ClickUp 等）的 v1 数据不会被导入：重新连接该应用后，它会再次同步。你的对话、记忆来源、学习内容和个人资料都会被带过来。

## 这里没有什么

当前的记忆没有记忆树、图表视图、目标列表、人物和联系人、学习档案、 `MEMORY.md` 或 `PROFILE.md` 文件，或 Obsidian 库。其他记忆引擎（Supermemory、Mem0、Cognee、agentMemory 和本地 TinyCortex 引擎）都已移除，引擎之间的迁移也不再存在。每轮记忆包取代了旧的编译 `context.md` 摘要。

## 另请参见

* [记忆架构](/openhuman/zh/kai-fa/architecture/memory.md)
* [可插拔引擎](/openhuman/zh/kai-fa/engines.md)
* [隐私与安全](/openhuman/zh/gong-neng/privacy-and-security.md)
