Macro 统一搜索怎么用:多词匹配规则、@提及收窄与标签 Any/All 两种口径

2026-08-17

把邮件、任务、文档、频道消息、通话记录塞进同一个工作区之后,最容易先崩掉的不是写,是找。东西是多了,但你记得的往往只是半句话——“上周谁在群里提过那个报价”、“合同续期那份文档标题里好像有个客户名”。工具如果只能按标题匹配,这类半句话就废了。

Macro 的做法是给整个工作区做一套统一索引,搜索框一个入口通吃七块内容。这篇按官方文档把它的用法拆开讲:怎么打开、多词是怎么匹配的、索引到底覆盖到哪一层、怎么用 @提及和标签把结果收窄,以及 agent 通过 MCP 调的是哪两个搜索工具。

先说清一件事:下面所有规则都来自 Macro 官方文档,我们没有安装运行过它,不谈界面手感也不谈实测速度。官方文档在搜索页的描述里写的是能在 50 毫秒以内跨邮件、任务、文档、通话转写、agent 与文件找到内容——这是官方说法,我们没有条件验证。

两个入口,分工不一样

文档给了两个打开搜索的方式,它们不是一回事:

  • /:打开搜索。这是全文检索的入口。
  • cmd + k:打开命令菜单,按名称搜索。

也就是说,你要找的如果是一个你记得住名字的东西(某份文档、某个频道),cmd + k 更直接;你只记得内容里出现过的某个词,走 /。这个分工在 MCP 工具那一层也有对应,后面会看到官方把 ContentSearchNameSearch 拆成了两个工具,逻辑是一致的。

想知道 Macro 还有哪些键位可以少用鼠标,可以看 Macro 键盘快捷键全览,搜索只是键盘流里的一环。

多个关键词:默认是独立匹配,加引号才是精确匹配

这条是最容易踩的。官方文档写得很直白:搜索多个词的时候,默认行为是在一个文档里各自独立匹配这些词;如果你要的是这几个词连在一起的原样出现,得用引号把它括起来做精确匹配。

你输入的实际匹配的
季度 报价同一份内容里分别出现”季度”和”报价”,位置不限
"季度报价"内容里原样出现”季度报价”这个连续串

搜不到的时候先回头看这一条:你要找一句原话却没加引号,结果会被撑得很宽;反过来,你只记得几个零散的词却加了引号,那基本上什么都搜不出来。

索引覆盖到哪一层

文档明确说了搜索”不止覆盖标题”,被索引的内容包括:

内容类型被索引的部分
文档正文内容
邮件整个邮件会话
频道频道内的消息
通话通话转写文本
文件文件内容

通话转写和文件内容被纳入索引,是这套索引跟”只搜标题”的搜索框最实际的差别——一次会议里口头说过的数字,理论上是能被搜到的(前提是有转写,通话录制与转写的机制另说)。

文档还提到一点:你可以直接让 agent 帮你找,agent 用的是同一个索引。这意味着搜索能力不是两套,agent 找不到的东西你手动也搜不到,反过来也一样。

收窄结果的三种手段

搜出来一大片跟搜不到一样难用。文档给了三条收窄路径。

一、按结果类型过滤。 文档写的是用右上角的过滤按钮,把结果按类型分开(agent 结果、消息等等)。想在结果列表里先看一眼再决定点不点,用 l 展开预览、h 收起——这套 h/j/k/l 的方向键习惯在 Macro 的列表导航里是通用的。

二、把关键词和某个人的 @提及组合起来。 文档给的用法是”关键词 + 特定人物的 @mention”,用来进一步缩小范围。@提及在 Macro 里本身是个跨界面的基础机制,在文档、邮件正文、频道消息、任务描述这些富文本位置输入 @ 都会触发自动补全,选中的对象会渲染成一个带实时元数据的内联 pill。在搜索里它扮演的角色是一个人物维度的筛子。

三、按标签过滤。 这条单独讲。

标签过滤:Any 和 All 是两个口径

在过滤菜单里选 Tags 这个 chip,可以把结果收窄到带特定标签的条目。关键在于:选中两个或以上标签之后,chip 上会出现一个匹配模式开关

模式含义是否默认
Any返回带有任意一个所选标签的条目
All返回同时带有全部所选标签的条目

官方给的例子很好记:想找”既标了 urgent 又标了 finance”的交集,用 All;想在一组相关标签之间撒大网,用 Any。默认是 Any,所以如果你选了三个标签结果反而更多了,不是搜索出问题,是你要的其实是 All。

标签能这么用,根子在 Macro 把 tag 定义成了一种 property。因为 property 是整个工作区共享的,所以一套标签命名空间横跨所有内容类型:给一封邮件打 marketing、给一个任务打 marketing,是同一个 marketing——一种颜色、一个过滤器。这也是为什么标签过滤能在搜索里做到跨工作区,而不是每个模块各自为政。

另外文档特别提醒:Macro 的标签不是邮件标签。Gmail 的标签(收件箱、加星标、重要以及你自己建的)仍然同步并驱动归档、加星这类收件箱动作;Macro 的标签是叠在上面的另一层,一封邮件可以同时带着两者。搜索时按 Macro 标签过滤,和你在 Gmail 里按 label 筛,筛的不是同一样东西。

文件夹与标签这两套归类逻辑的分工,可以看 Macro 的文件夹与标签怎么分工

让 agent 去搜:MCP 那两个工具

如果你是从 Claude Code、Cursor 这类客户端连 Macro 的 MCP 服务,那你能调的搜索工具是两个,参数表来自官方从 Rust 工具注册表生成的文档:

ContentSearch

参数类型必填说明
entityTypesarray要搜哪些类型的条目。留空表示搜所有类型
querystring要搜的文本内容,在文档、邮件、消息的正文里搜

NameSearch

参数类型必填说明
entityTypesarray要搜哪些类型的条目。留空表示搜所有类型
namestring要搜的名称或标题。对邮件来说是主题行;对频道来说可以是频道名或参与者名字

entityTypes 官方给的示例值是这几种写法:

["documents"]
["emails", "documents"]
["channels"]

注意这两个工具的 entityTypes 都标了必填,但描述里又说”留空表示搜所有类型”——按官方文档的字面意思,你需要显式传这个字段,传空数组表示全类型。

这里最值得注意的是 NameSearch 对”名称”的定义在不同类型上不一样:邮件的名称是主题行,频道的名称既可以是频道名也可以是参与者名字。写 agent 提示词的时候,“找一下跟老王的那个频道”落到工具上其实走的是 NameSearch 的参与者名匹配,不是内容检索。

想更完整地看这两个工具怎么和其它 MCP 工具配合,见 Macro MCP 的搜索类工具

@提及和搜索,agent 场景下怎么选

文档在讲 mentions 的时候给了一条挺实在的建议:你不需要非得把实体 @提及给 agent,因为 agent 手里有搜索工具和列举工具,能自己在工作区里找。官方推荐 @提及的场景是——当你已经知道该看哪一份东西的时候。这样能省掉一轮检索,并且保证上下文是你要的那一份,而不是搜索猜出来的。

反过来说,如果你自己也不确定东西在哪,那就别提及,直接让它搜。这条取舍规则比”什么都提及”或”什么都让它搜”都更实用。

权限这一层文档也写死了:agent 继承你的权限。你没有访问权的文档,提及给 agent 也没用,agent 会直接告诉你它没有权限。所以搜索结果里没出现某样东西,有可能不是没索引到,而是你本来就看不到它。

关于 agent 能力的完整边界,见 Macro 的 Agent 能替你做什么

什么时候这套搜索帮不上忙

几条边界,写出来免得抱有错误预期:

搜索不解决”你根本没有权限”的问题。 权限是前置的,索引再全也只在你可见范围内返回结果。

跨系统的东西不一定在索引里。 文档提到的索引范围是文档正文、邮件会话、频道消息、通话转写和文件内容。至于外部集成同步进来的内容各自被索引到什么程度,官方搜索文档没有逐项说明,不要想当然。

排序逻辑官方没写。 结果按什么排序、相关度怎么算、有没有时间衰减,搜索文档里没有交代,只给了类型过滤、标签过滤和 @提及三条收窄手段。你能控制的是”筛掉什么”,不是”把什么排前面”。

没有说明的还有:索引更新延迟、单次返回条数上限、是否支持布尔运算或字段限定语法。 文档给出的语法只有一条——引号做精确匹配。除此之外的高级检索语法(比如 from: 之类的字段前缀)文档没有提到,就当它不存在,别照着别的邮件客户端的习惯去猜。

通话内容能搜到的前提是有转写。 索引的是转写文本,不是音频本身。

真正要上手,顺序建议是这样:先用 / 搜一个你确定存在的词,确认索引覆盖到了你关心的那类内容;然后拿引号试一次精确匹配,感受一下和默认多词匹配的差别;最后再把标签体系建起来,让 All 模式能真的筛出交集。标签这一步花的时间最多,但它是唯一能让搜索从”碰运气”变成”可复现”的部分。

延伸阅读


本文依据 Macro 官方仓库(github.com/macro-inc/macro,AGPL-3.0 协议)的 apps/docs/ 产品文档、 MCP 工具参考与自托管说明整理,核对日 2026-08-17。 我们没有注册或运行过 Macro,因此不涉及界面外观与操作手感; 官方标注为计划中的能力文中已如实标明,不代表当前可用。 价格与额度以官网 macro.com 最新页面为准;许可证相关问题请咨询专业人士并以官方许可证原文为准。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。