---
title: "检索审计"
description: "Agents → Audit 板块：智能体实际搜索并打开了什么、有没有找到，以及它的盲区在哪里——那些反复出现却始终一无所获的查询。"
---

# 检索审计

上下文构建器负责在开始时决定往智能体里预先加载什么。审计则是它在工作过程中的对应物：它展示智能体实际搜索了什么（`search` / `recall`）、打开了什么（`get_note`），以及有没有找到东西。这一点很重要，因为记忆最主要的失效方式并不是「事实缺失」，而是检索失败：你需要的笔记明明存在，查询却触及不到它。没有可观测性，梳理记忆就成了瞎猜。

该板块位于 **Agents → Audit**。

## 日志里记录什么

每一次对读取工具（`search`、`recall`、`get_note`）的调用都会往日志里追加一行：搜索了什么（query、scope、class），以及找到了什么（带 `noteId`、`title`、`score`、`class` 的头部命中项，外加结果数）。采集在后台进行——它既不影响延迟，也不影响返回给智能体的答案的正确性。

写入工具（`create_note`、`remember_*`、`edit_note`）**不会**记入检索审计——它们的溯源存放在[修订日志](/docs/concepts/versioning/)里。审计只关乎读取。

每一行还会记住**智能体的名称**——令牌或应用的友好名称（例如某个 CLI 或 Claude），在令牌仍然有效时被采集下来。这样这一行就能永久记住究竟是哪个智能体发起了查询。

## 盲区

审计最主要的信号是**反复出现却一无所获的查询**。单次的空搜索很正常（智能体只是验证了一个假设）。但一个**一次又一次**什么都找不到的查询，就是一处盲区：智能体需要一个记忆里没有的事实，或者一个归档在了不恰当标题下的事实。这直接指明了该补充什么，或者该如何重新措辞。

界面把这一切归纳成两个面板：

- **Blind spots**——反复出现的空查询（阈值：两次及以上无结果），以黄色/琥珀色高亮显示。
- **Frequent**——最常出现的查询。

此外还有一条历史流（最新的在最上方），带有按工具筛选的过滤器（All / Search / Recall / Open）：工具图标、查询本身、智能体的名称、类别/分类标签、项目（仅在应用了作用域收窄时显示）、结果数以及时间。展开某一行会显示它找到的命中项——它们可点击，直接跳转到对应笔记。

> [!note] 空结果
> 审计能可靠地捕捉到的正是「空结果」这一种情况。而「确实存在相关内容，只是没进入头部命中」这种情况需要把查询对着记忆重新跑一遍——那是另一个更细微的信号，审计并不会把它呈现出来。

## 隐私与覆盖范围

日志仅对所有者可见：你看到的是你自己那些智能体的检索，与你的用户名绑定。由于查看者就是所有者，你自己智能体的名称会不加隐去地显示出来。审计一次性覆盖你所有的空间——一行记录并没有唯一的归属空间。

> [!info] 检索在什么情况下不被记录
> 审计存储在元数据库中。没有元数据库的宿主（例如没有数据库的 `none` 模式）不会记录检索——该板块只是保持为空，不会报错。

## 下一步

- [上下文集合与固定项](/docs/agents/context-pins/)——预先加载什么；审计展示的则是按需拉取了什么。
- [智能体记忆](/docs/agents/memory/)——`search` 和 `recall` 究竟在找什么。
- [安全与可见性](/docs/agents/security/)——为什么读取日志仅对所有者可见。
