search
定义
search 是 claude-mem 提供的一个 MCP 搜索工具,用来查询记忆索引并返回 compact index,而不是直接返回完整 observation 详情。
它的核心定位是作为三层检索流程中的第一层:先给出可快速浏览的结果索引,每条结果大约只占 50–100 tokens,帮助使用者先缩小范围,再决定是否继续拉取详细内容。
与直接读取全文相比,search 追求的是“先粗筛、后精取”的 token 效率。
在本文档中的语境
在本文语境里,search 不是泛指任何搜索能力,而是指 claude-mem 的 MCP Search Tools 中的第一步工具。
该工具属于一个明确的 3 层工作流:
search:先获取 compact index 与结果 ID。timeline:查看某条 observation 或某个查询附近的时间序上下文。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 还支持按以下维度过滤:
typedateproject
这几个过滤项的意义在于:当全文搜索命中过多时,可以进一步把候选结果收缩到某一类记录、某个时间段、或某个项目范围内。
4. 与其他工具配合使用
search 不是独立闭环工具,它通常与 get_observations、timeline 连用:
- 先用 search 找候选结果和 ID;
- 再用
timeline理解某个 observation 前后发生了什么; - 最后只对真正相关的 ID 调用 get_observations 拉取完整细节。
文档特别强调,采用这种“先筛选再取全文”的方式,能够带来约 ~10x token savings。
典型使用流程
一个标准流程如下:
- 先调用 search 查询某个主题,得到 compact index。
- 浏览结果列表,识别出值得深挖的 observation IDs。
- 如有需要,用
timeline查看这些 observation 周围的时间序背景。 - 最后把筛出的多个 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 支持全文查询并可叠加 type、date、project 过滤,所以它最适合做第一轮广义定位。
如果一开始就跳过 search 直接取 observation 详情,就会失去这个系统设计中的 token 节约优势。
属于 MCP Search Tools 的一部分
文档在“Available MCP Tools”下列出 3 个搜索相关工具:
searchtimelineget_observations
虽然文档前一句提到“4 MCP tools”,但该分块实际展开列出的搜索工具名称是上述 3 个。因此在本文语境中,search 至少可以确定是这组三层检索流程中的首要入口。
过滤维度不是无限扩展的
当前原文明确写出的过滤维度只有 type、date、project。因此本文不把其他可能的字段扩展成既定能力,以避免把未明确说明的参数误写为事实。
与整体架构的关系
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 入口,而其背后依托的是本地服务、持久化数据库与向量/关键词混合检索能力。