W
AI-Wiki
CONCEPT

search

定义

searchclaude-mem 提供的一个 MCP 搜索工具,用来查询记忆索引并返回 compact index,而不是直接返回完整 observation 详情。

它的核心定位是作为三层检索流程中的第一层:先给出可快速浏览的结果索引,每条结果大约只占 50–100 tokens,帮助使用者先缩小范围,再决定是否继续拉取详细内容。

与直接读取全文相比,search 追求的是“先粗筛、后精取”的 token 效率。

在本文档中的语境

在本文语境里,search 不是泛指任何搜索能力,而是指 claude-mem 的 MCP Search Tools 中的第一步工具。

该工具属于一个明确的 3 层工作流:

  1. search:先获取 compact index 与结果 ID。
  2. timeline:查看某条 observation 或某个查询附近的时间序上下文。
  3. get_observations:只对已经筛出的 ID 拉取完整详情。

这个设计服务于 thedotmack claude-mem README 摘要 中强调的 token-efficient workflow:不要一上来就取全文,而是先通过 search 做低成本筛选。

关键机制或组成

1. 返回 compact index

search 的直接产物不是长文本正文,而是一个紧凑索引。索引里最关键的是结果 ID,以及足以帮助判断相关性的精简摘要信息。

文档明确说明:每个结果大约为 50–100 tokens/result。这意味着它被有意限制为轻量结果,适合先浏览一批候选项。

2. 支持全文查询

search 支持 full-text queries。也就是说,调用时可以直接传入自然语言或关键词文本去搜索记忆索引,例如:

search(query="authentication bug", type="bugfix", limit=10)

这里的 query 就体现了全文查询能力,不要求调用者必须先知道精确 ID 或固定标签。

3. 支持多种过滤

除了 query 本身,search 还支持按以下维度过滤:

  • type
  • date
  • project

这几个过滤项的意义在于:当全文搜索命中过多时,可以进一步把候选结果收缩到某一类记录、某个时间段、或某个项目范围内。

4. 与其他工具配合使用

search 不是独立闭环工具,它通常与 get_observationstimeline 连用:

  • 先用 search 找候选结果和 ID;
  • 再用 timeline 理解某个 observation 前后发生了什么;
  • 最后只对真正相关的 ID 调用 get_observations 拉取完整细节。

文档特别强调,采用这种“先筛选再取全文”的方式,能够带来约 ~10x token savings

典型使用流程

一个标准流程如下:

  1. 先调用 search 查询某个主题,得到 compact index。
  2. 浏览结果列表,识别出值得深挖的 observation IDs。
  3. 如有需要,用 timeline 查看这些 observation 周围的时间序背景。
  4. 最后把筛出的多个 ID 批量传给 get_observations,获取完整详情。

文档中的示例流程是:

// Step 1: Search for index
search(query="authentication bug", type="bugfix", limit=10)

// Step 2: Review index, identify relevant IDs (e.g., #123, #456)

// Step 3: Fetch full details
get_observations(ids=[123, 456])

从这个例子也能看出,search 的结果要能支撑“人工或模型二次判断”,因此它返回的是适合筛选的紧凑信息,而不是一次性展开全部上下文。

细节与边界

结果不是完整 observation

search 的边界非常清晰:它返回的是索引级结果,而不是完整 observation 内容。

如果需要完整细节,应该继续调用 get_observations。文档甚至把两者的 token 量级直接区分开:

  • search:约 50–100 tokens/result
  • get_observations:约 500–1,000 tokens/result

因此,search 更适合“找什么值得看”,而不是“把内容全读出来”。

适合先广搜,再精取

因为 search 支持全文查询并可叠加 typedateproject 过滤,所以它最适合做第一轮广义定位。

如果一开始就跳过 search 直接取 observation 详情,就会失去这个系统设计中的 token 节约优势。

属于 MCP Search Tools 的一部分

文档在“Available MCP Tools”下列出 3 个搜索相关工具:

  1. search
  2. timeline
  3. get_observations

虽然文档前一句提到“4 MCP tools”,但该分块实际展开列出的搜索工具名称是上述 3 个。因此在本文语境中,search 至少可以确定是这组三层检索流程中的首要入口。

过滤维度不是无限扩展的

当前原文明确写出的过滤维度只有 typedateproject。因此本文不把其他可能的字段扩展成既定能力,以避免把未明确说明的参数误写为事实。

与整体架构的关系

search 所处的不是孤立功能,而是 claude-mem 的整体记忆检索体系的一部分。

在同一段说明里,系统还包括:

  • 本地 Worker Service,提供 HTTP API、Web Viewer UI 与搜索端点;
  • SQLite Database,用于存储 sessions、observations、summaries;
  • Chroma Vector Database,用于 hybrid semantic + keyword search;
  • mem-search skill,用于自然语言查询与渐进式信息展开。

因此,search 可以理解为暴露给 Claude 的 MCP 入口,而其背后依托的是本地服务、持久化数据库与向量/关键词混合检索能力。

相关条目