检索审计
上下文构建器负责在开始时决定往智能体里预先加载什么。审计则是它在工作过程中的对应物:它展示智能体实际搜索了什么(search / recall)、打开了什么(get_note),以及有没有找到东西。这一点很重要,因为记忆最主要的失效方式并不是「事实缺失」,而是检索失败:你需要的笔记明明存在,查询却触及不到它。没有可观测性,梳理记忆就成了瞎猜。
该板块位于 Agents → Audit。
日志里记录什么
每一次对读取工具(search、recall、get_note)的调用都会往日志里追加一行:搜索了什么(query、scope、class),以及找到了什么(带 noteId、title、score、class 的头部命中项,外加结果数)。采集在后台进行——它既不影响延迟,也不影响返回给智能体的答案的正确性。
写入工具(create_note、remember_*、edit_note)不会记入检索审计——它们的溯源存放在修订日志里。审计只关乎读取。
每一行还会记住智能体的名称——令牌或应用的友好名称(例如某个 CLI 或 Claude),在令牌仍然有效时被采集下来。这样这一行就能永久记住究竟是哪个智能体发起了查询。
盲区
审计最主要的信号是反复出现却一无所获的查询。单次的空搜索很正常(智能体只是验证了一个假设)。但一个一次又一次什么都找不到的查询,就是一处盲区:智能体需要一个记忆里没有的事实,或者一个归档在了不恰当标题下的事实。这直接指明了该补充什么,或者该如何重新措辞。
界面把这一切归纳成两个面板:
- Blind spots——反复出现的空查询(阈值:两次及以上无结果),以黄色/琥珀色高亮显示。
- Frequent——最常出现的查询。
此外还有一条历史流(最新的在最上方),带有按工具筛选的过滤器(All / Search / Recall / Open):工具图标、查询本身、智能体的名称、类别/分类标签、项目(仅在应用了作用域收窄时显示)、结果数以及时间。展开某一行会显示它找到的命中项——它们可点击,直接跳转到对应笔记。
审计能可靠地捕捉到的正是「空结果」这一种情况。而「确实存在相关内容,只是没进入头部命中」这种情况需要把查询对着记忆重新跑一遍——那是另一个更细微的信号,审计并不会把它呈现出来。
隐私与覆盖范围
日志仅对所有者可见:你看到的是你自己那些智能体的检索,与你的用户名绑定。由于查看者就是所有者,你自己智能体的名称会不加隐去地显示出来。审计一次性覆盖你所有的空间——一行记录并没有唯一的归属空间。
审计存储在元数据库中。没有元数据库的宿主(例如没有数据库的 none 模式)不会记录检索——该板块只是保持为空,不会报错。