---
title: "Brain"
description: "让 Agent 从对话、文件和网页中积累可追溯的组织知识，并在明确的披露边界内召回、修正和遗忘。"
url: "https://ankole.agentbull.com/zh-Hans-CN/docs/brain/"
lang: "zh-Hans-CN"
---

> 面向 AI Agent 的文档索引：https://ankole.agentbull.com/zh-Hans-CN/llms.txt

# Brain

Brain 是一个受 GBrain 启发的长期记忆系统，维护最新的企业世界模型，基于类似 Palantir 的本体论构建。它把对话、文件和网页中具有长期价值的信息整理为可追溯的组织知识，让 Agent 在明确的披露边界内召回、修正和遗忘。

Brain 不会把不断增长的聊天记录直接当成记忆。它维护人物、组织、事件、判断及其关系的当前投影。新证据可以支持、修正或取代已有 Claim，也可以暴露矛盾；证据和旧状态仍可供人复核。

同一 Ankole 实例中的所有 Agent 共用一个知识空间。系统不会为每个 Agent 复制一套私有数据库。每条记忆都有自己的披露范围，因此，共享存储不等于无限制披露。

## Brain 可以学习什么

当前有三条学习路径：

| 路径 | 结果 | 条件 |
| --- | --- | --- |
| Agent 调用 `remember` | 一条事实或判断立即成为持久记忆 | Agent 必须提交一条原子 Claim，注明出处，并选择有效的披露范围 |
| Signals 学习处理对话 | 系统可以在没有显式 `remember` 调用时学习有长期价值的事实、判断和未决承诺 | Channel 必须是私聊或 IM 群聊，且负责维护 Brain 的 Agent 必须有可用的 `light` profile；群聊还必须关联已同步的成员权限组 |
| 管理员注册 Source | 文件或网页进入检索，并可以产出抽取后的 Claim | 抽取 Claim 需要维护 Agent 的 `light` profile；文件必须可由部署读取，文件和抓取后的网页正文都必须是有效的 UTF-8 文本且不超过 10 MiB；URL 使用该 Agent 的 `web_fetch` profile，未配置或 Provider 请求失败时改用本地 `ankole-browser` |

符合条件的 Channel 空闲或相关对话结束后，Signals 学习会处理消息切片。它读取 Channel 的原始消息镜像，不读取 Agent 私有的模型对话记录。私聊产物默认面向对端人员；群聊产物默认面向该 Channel 的成员权限组。

`remember` 一旦成功，写入就已经持久化。之后即使当前回合失败、取消或重试，这条记忆也不会撤回。已确认的记忆是一项持久结果，不依赖最终回复是否成功。

每个注册 Source 都有默认披露范围。应选择仍能满足目标读者的最窄范围。归档 Source 只停止后续学习，不会删除已经形成的知识。

## Brain 怎样表示知识

Brain 用不同形式回答不同问题：

- **页面**保存一个稳定对象的当前描述，例如人物、公司、事件、项目、文档或概念。
- **Fact**保存一条可以核验或更新的观察，并记录置信度、时间、出处、持有者和披露范围。
- **Take**保存某个人、Agent 或 Brain 持有的判断、预测、赌注或猜测，并记录权重，供之后判分或结算。
- **Timeline**保存某个对象在什么时间发生了什么。
- **Link**保存两个页面之间的关系。

`holder` 表示谁持有一条 Claim，不表示这句话在谈论谁。例如，张三说某供应商不可靠，这是一条由张三持有的 Take，不是由该供应商持有的 Fact。

一条 Claim 只包含一个可以独立变化的断言。Brain 保存每条 Claim 的出处，也保留页面旧版本和被取代的 Claim。纠正会改变当前认识，但不会抹去它的形成过程。

## Agent 怎样使用记忆

Brain 通过两种方式提供相关记忆。会话开始和上下文压缩后，它会提供一份有预算上限的上下文包，包含参与者、最近提及的对象、重要的当前 Fact 和未决承诺。每个文本回合还可以提示与新消息名称匹配的页面。

这两种注入本身不调用模型。组装超时或失败时，它们返回空结果，当前回合继续执行。召回内容是背景数据，不是指令，也可能过时或不完整。

任务需要显式操作记忆时，Agent 可以使用这些工具：

| 工具 | 结果 |
| --- | --- |
| `learn_source` | 将一个网页 URL 注册为 Source，并在后台开始学习 |
| `recall` | 在 Token 预算内先返回当前 Fact 和 Take，再返回相关页面片段 |
| `get_page` | 按 slug 或自然语言名称读取经过裁剪的完整页面；名称有歧义时返回候选，不自行猜测 |
| `entity` | 返回对象卡，包括精选 Fact、关系和反向链接数量 |
| `whoknows` | 根据当前可见知识，对了解某个主题的人员、Agent 和公司排序 |
| `delta` | 报告时间范围内新增或已失效的 Claim 与 Timeline 事件 |
| `synthesize` | 根据召回证据，为一个问题写入可追溯的持久分析页 |
| `forget` | 记录原因后，使一个 Fact 失效、一个 Take 退出当前态，或软删除一个页面 |

### 发现只通过 Brain 召回的 Skill

部分随产品发布的 Skill 是 SOP 或方法论，只有与当前工作相关时才需要进入上下文。Skill 可以声明 `brain-recall-only: true`，从每个 Prompt 的 Skill 目录中省略，并保留通过 Brain 发现的能力。

Brain 只把 Skill 的 `name`、`description` 和 `tags` 索引为一条 `world` 范围的发现记录，名称为 `lazyload-agent-skills/<skill-name>`。Skill 正文、其他所有 Skill 文件和 Agent 专属教训仍由原有所有者保存，并通过 `skill_view` 读取。如果 `recall` 返回这类记录，Agent 会调用 `skill_view`；loader 按 `ankole-runtime` 在兼容的执行位置加载说明，主 Agent 遇到仅后台可用的 Skill 时会收到创建 Job 的路由指引，其他不兼容读取会被拒绝。对这类记录调用 `get_page` 时，它也会转交给 `skill_view` 并返回同一结果。

Brain 会在选择候选之前应用当前 Agent 的 Agent Plugin 和 Skill 有效启用状态。关闭后的 Skill 既不能被发现，也不能被加载。共享发现投影不会因关闭而删除，因此重新启用后可以直接恢复访问，不需要重建投影。

配置 Embedding 模型后，召回会合并全文候选和向量候选。配置 Rerank 模型后，系统还可以对融合结果重新排序。没有 Embedding 模型时，全文召回仍可工作；没有 Rerank 模型时，召回保留融合后的顺序。

## 知识边界与披露边界

每个受保护的正文段落、Fact、Take 和 Timeline 事件使用一种披露范围：

| 范围 | 谁可以取得内容 |
| --- | --- |
| `world` | 实例中的任何 Principal |
| `group:<name>` | 对应权限组的当前成员 |
| `principal:<uid>` | 只有对应 Principal |

Brain 在读写时检查当前权限组成员关系。因此，人员之后转岗或离组会影响后续召回，不需要改写每条记忆。

作者始终可以取得自己写入的 Claim 和 Timeline 事件。Agent owner 可以审计该 Agent 的私有范围，以及由该 Agent 写入或持有的知识。owner 不能因为拥有这个 Agent 而读取 Agent 所在权限组的共享知识；owner 本人仍须属于对应权限组。

群聊还会执行第二层披露检查：

- **严格模式**是默认值。只有纳入检查的所有在场成员原本都能取得一条群组记忆时，Agent 才能披露它。
- **宽松模式**只检查本次提问者，其他在场成员不会收窄结果。

两种模式在私聊中的行为相同。

Source 或 Channel 只记录证据来自哪里，不授予学习产物的访问权。披露范围属于知识本身。页面的 slug、标题、类型和存在性在实例内可见；受保护的正文段落和结构化 Claim 会按范围裁剪。

Agent 主动调用 `remember` 时，会根据保密准则尽力选择披露范围。这是模型判断，可能分类不当。应用会确定性地执行已经选定的范围，但不能证明模型的分类一定正确。需要合规级隔离时，应通过[主体与权限组](https://ankole.agentbull.com/zh-Hans-CN/docs/principal-and-groups/index.md)限制谁可以访问 Agent，而不能只依赖记忆分类。

## 知识怎样保持当前

Dreaming 是需要判断的知识维护窗口。它可以：

- 把相关 Fact 归纳为一条由 Brain 持有、保持谨慎的 Take；
- 发现跨页面模式，并写入带证据链接的分析；
- 抽取对象关系和 Timeline 事件；
- 为到期 Take 判分，并更新校准摘要；
- 发现可能存在的矛盾；
- 在重复证据需要更清楚的类型时提出 Schema 建议。

Dreaming 不会静默解决矛盾，也不会直接改写相关 Claim。它把发现记录下来，由人在 Console 中解决或忽略。Schema 建议也必须经过批准，才会改变实例词表。

Fact 会按种类和时间降低召回排序权重。衰减不会改写存储的置信度或历史。显式遗忘才会改变当前态：Fact 失效、Take 退出当前态，或页面进入软删除。软删除页面可以在清除时限内恢复；失效和被取代的 Claim 继续保留，供审计与校准使用。

Self-healing 维护可搜索投影。它修复过期的分块和向量、检查搜索索引，并找出仍需学习的 Channel 切片。这项维护不调用推理模型。

## 在 Console 中管理 Brain

Console 的 **Brain** 区域按结果展示知识空间：

- **Objects**展示页面、渲染正文、Fact、Timeline、关系、Tag、版本、回滚、删除和恢复操作。
- **Claims**展示 Fact 与 Take 的出处和当前状态，并提供纠正、遗忘和结算操作。
- **Contradictions**保存待人工复核的矛盾发现。
- **Suggestions**保存待批准或拒绝的词表建议。
- **Sources**用于注册文件和 URL、启动学习及归档 Source。
- **Search preview**以指定 Principal 和披露模式运行召回。
- **Principal audit**列出某个 Principal 作为持有者、作者或受众的知识。
- **Health**展示模型就绪状态、学习积压、向量错误、Channel 前置条件和投影状态。

Brain 设置用于选择负责维护 Brain 的 Agent，并保留属于实例知识空间的两项模型设置。Brain 的所有模型调用都以所选 Agent 的身份执行，并把用量归到该 Agent。该 Agent 必须保持活跃。停用后，Brain 会立即报告不健康，并停止所有模型调用和本地网页抓取，直到重新启用或更换 Agent；已存知识与纯文本召回不受影响。

| 归属和设置 | 启用的结果 |
| --- | --- |
| 维护 Agent 的 `light` profile | Signals 学习和 Source 的 Claim 抽取 |
| 维护 Agent 的 `heavy` profile | 需要模型的 Dreaming 阶段和 `synthesize` |
| 维护 Agent 的 `web_fetch` profile | 从 URL Source 提取可读正文；本地 `ankole-browser` 是回退路径 |
| Brain 的 Embedding 模型 | 向量召回和 Fact 语义判重 |
| Brain 的 Rerank 模型 | 对检索融合结果执行交叉编码重排 |

缺少可选模型时，系统只收窄相关能力，不隐藏状态。Health 页面会说明哪些能力不可用。关闭 Brain 会移除记忆工具和上下文注入，并停止后台任务；已存知识保持不变。

每个实例都会安装 `general` Schema Pack，提供通用词表。首次设置还可以选择私募股权与风险投资、公开市场、消费、法律、软件和咨询行业包。所有 Agent 共用已安装词表。反复出现的新概念会成为等待审批的 Schema 建议，而不是不受控地增加类型。

## 当前支持范围

Brain 当前只从私聊和 IM 群聊 Channel 自动学习消息切片。注册 Source 当前只支持文件和 URL。Brain 不会直接从 Connector、Webhook 或 Alert Source 学习。

Brain 保存证据，不保证每条内容都正确或完整。需要作出重要判断时，应同时查看出处、时间、置信度、持有者和矛盾状态。

Brain 在系统中的边界见[架构](https://ankole.agentbull.com/zh-Hans-CN/docs/architecture/index.md)。运行时设置见[系统配置](https://ankole.agentbull.com/zh-Hans-CN/docs/app-configuration/index.md)。从工作轨迹中学习过程护栏的机制见 [Skill Lessons](https://ankole.agentbull.com/zh-Hans-CN/docs/skill-lessons/index.md)。
