Macro 的 @ 提及机制:一个 @ 同时决定引用、通知和访问权限

2026-08-17

用过 Notion 加 Slack 的人对 @ 这个符号大概不会陌生:打一个 @,弹出候选,选中,插入一条链接。多数产品里它就是个跳转锚点,跟权限没有关系——所以才会天天出现”我打开你发的链接提示无权访问”。

Macro 把这个符号的职责扩大了。按官方文档的说法,@mention 是块与块之间互相引用的机制,可以用在任何富文本区域:文档、邮件正文、频道消息、聊天或自动化的提示词、任务描述。插入之后它渲染成一个内联的 pill,会带上目标对象的当前元数据——文档举的例子是,提及一个任务,pill 上会显示这个任务的状态和优先级;同时这条引用会记录成目标对象 References 面板里的一条反向链接。

真正需要提前搞清楚的是第二层:同一个 @ 动作,在不同容器里的副作用不一样。有的地方会顺手把访问权限一起授出去,有的地方明确不会。这一层如果没读文档,很容易要么泄露、要么对方打不开。

一个 @ 实际上做了三件事

把文档描述的行为拆开看,插入一次提及至少产生三个结果:

  1. 一条可导航的引用。在文档或聊天里,它就是一个能点进去的链接。
  2. 一份带元数据的内联展示。pill 携带目标的当前状态,不是写死的一段文字。Blocks 文档里补充说,大多数块类型支持悬停预览,你在任意 markdown 区域 @ 了一个块,看得到这条提及的人都能看到预览。
  3. 一条反向链接。目标对象的 References 面板会记下”我被谁提到过”。官方举的例子是他们内部那份”8 个月路线图文档”:在这个面板里能看到它被另外几篇文档、一个 canvas、#engineers 频道提到过;作者本人还能看到它在自己和两位同事的私信里被提过——而其他人看不到私信里那条,除非他们也在那个会话里。

第三件事决定了它和普通链接的差别:链接是单向的,提及是双向的,所以你能反过来追一份东西”在哪些地方被讨论过”。块本身的数据模型可以看 Macro 的 blocks 数据模型

五个场景,五种不同的副作用

这是这篇文章最该记住的表。所有行为都来自官方 concepts/mentions 与 permissions 两份文档:

你在哪里 @是否自动授予访问权限是否产生通知额外副作用
频道消息会。发出后条目共享给频道全体成员@here 通知全体参与者;@某人通知该人与被提及文档建立双向链接
邮件正文不会自动共享,需要自己确认收件人能访问提及人会被加进该邮件会话的 CC发出后在别家邮件客户端里显示为普通超链接
文档正文不会(嵌入同样不会)提及人不会收到通知插入内联 pill、建立反向链接
评论 / 消息等会话容器不会提及人会收到收件箱通知——
Agent 对话不会,Agent 只继承你已有的权限——相当于直接把这份内容作为上下文塞给 Agent

文档对邮件那一行给了理由:邮件链条可以被转发、可以随时加人,谁最终需要访问权限事先无法确定、事后也无法追溯,所以不做自动共享。这个解释比”暂不支持”有用得多——它说明这不是没做,是刻意不做。

频道里的自动共享:权限跟着成员进出走

频道是这套机制里唯一会自动放权的地方。官方描述得很直白:提及任意实体并发送,条目就共享给频道成员;人被加进频道或移出频道时,已共享条目的权限跟着流动。权限文档里的说法一致——加入即获得频道内已共享的一切,移出即失去。

他们由此给出的建议是:给每个团队开一个频道,让这个团队需要的实体权限自动被管住。有人入职、有人离职时,不用再逐个文件去补授权或回收。文档明确把这条对比到 Slack + Notion、Slack + Drive 那类组合的老毛病上:没给权限,对方只能回一句”能不能把某某分享给我”。这段是官方文档自己的对照说法。

频道里还有两个特殊提及:@here 通知全体参与者,@Macro 就地唤起 Agent。写起来大致是这种形态:

@8 个月路线图    这个季度的里程碑以这份为准
@here            明天的评审推迟到周四
@Macro           把上面这份文档里的待办抽出来建成任务

频道本身怎么组织可以看 频道与私信怎么用,完整的权限边界见 Macro 的权限模型

被提及的是什么,结果也不同

除了”在哪儿提”,“提的是谁”同样影响结果。官方按对象类型逐条列了规则:

  • :在评论或频道里按姓名或邮箱提及,即使对方还不是 Macro 用户,也会收到通知;但在任务或 markdown 文档的正文里提及,不会通知,想让对方知道就得手动共享。
  • 文档与块:在频道语境里提及会共享出去;在评论或文档里提及不共享。
  • 联系人与公司记录:提及不共享,它们的共享由 Teams 决定。
  • 频道、会话或某条具体消息:提及不授予任何权限。文档说得很硬——没有办法把一条消息共享给不在该频道的人,因为能否看到消息完全由频道成员身份决定。要让人看到,就去频道里把他加成参与者,而不是在别处 @ 这个频道。
  • 日期:从日期选择器插入日期引用,用于截止日、排期和筛选,不通知也不共享任何东西。

文档正文提及人却不通知这条,官方自己承认”这是个有点怪的设计决定”,并解释了取舍:他们内部长期自用后发现,凡是你想在文档里 @ 某人的时刻,按定义你这份文档还没写完,此时并不希望对方收到通知;而”到底什么时候该通知”又说不清楚,于是干脆规定文档语境下的提及既不通知也不共享。

对使用者来说,这条的实际含义是:别把文档正文里的 @ 当成派活。要让人知道,走评论、走频道、或者显式共享。任务同理——权限文档里写明,指派任务会产生收件箱通知,在正文里 @ 不会,在任务评论里 @ 才会。

@ 给 Agent:这是塞上下文,不是提权

Agent 这条线上有两个要点。

第一,提及实体给 Agent,插入的是一个指针,让 AI 能去读这份内容;如果是 markdown 文档,Agent 还能读文档里嵌入的图片。

第二,也是更该记牢的:Agent 继承的是你的权限。你要是把一份自己都没有访问权的文档或实体丢给 Agent,Agent 同样拿不到,并且会明说自己拿不到。指望用 Agent 绕过权限是没有出路的。

官方还给了一条使用建议:你并不是非提及不可。Agent 手里有搜索工具和列表工具,能自己在工作区里翻。他们建议在你已经明确知道该看哪份东西时才用提及——这样省掉一轮搜索,并且保证给进去的上下文就是你想给的那份。文档最后一句把这层关系点明了:Agent 高度依赖提及,凡是你 @ 进聊天的东西都会被拉进上下文。Agent 本身的能力边界见 Macro 的 Agent 能做什么

从提及到嵌入:多一步,权限规则不变

Blocks 文档里补了一条相关机制:多数块可以只读嵌入进 markdown 文档,编辑与批注工具被禁用。生成方式是先用 @ 或拖放建立一个提及,再把它转成嵌入(Convert to embed)。

关键的一句是:嵌入和文档内的提及一样,都不会自动授权——与频道内提及自动共享的行为相反,你嵌进去的文件仍然需要另行共享。也就是说,从提及升级到嵌入,改变的是展示形态,不是权限模型。

Canvas 是另一种承载方式:把其它实体摆到二维平面上,官方举的用途是脑图、连到任务的技术示意图、项目管理,或者单纯把文件视觉化地分组存放。

这套机制解决不了什么

说几个文档已经写明、但很容易被忽略的边界:

跨出 Macro 就退化成普通链接。 邮件发出后,@mention 在别人的邮件客户端里只是一个普通超链接,接收方能不能打开完全取决于你有没有另外授权。文档要求你自己确认这一点。

消息级共享没有出口。 想让频道外的人看某条消息,官方给的办法是发截图。这不是变通建议,是文档里的原话所指——消息可见性由频道成员身份唯一决定。

Teams 是频道规则之外的例外。 权限文档说明,任务、邮件、通话的自动共享走 Teams 的特殊规则;任务默认进团队记忆,同团队成员能看到彼此的任务。这部分不能用”频道提及”那套心智模型去推。

通知逻辑需要记,而不是靠直觉。 正文不通知、评论通知、指派通知——这三条组合起来,足以让一个习惯了别家产品的人在头两周里漏掉几次消息。真要确保对方看见,别赌提及,直接共享或在会话容器里说。

最后一点关于本文的边界:以上全部来自 Macro 官方文档中 concepts/mentions、concepts/blocks 与 permissions 三份的描述,涉及具体交互步骤、界面细节和各类实测表现的部分,请以你自己环境中的官方文档与实际版本为准。

延伸阅读


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

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