私信、频道与消息列
在私信、频道还是群聊里发起任务、ZAI 什么时候回应,以及怎样让补充和结果留在同一个消息列里。
图中实线表示同一个消息列里的连续任务。在私信里直接发一条新消息,或在频道、群聊里 @zai 发一条新消息(不在任何消息列里),会开始一个新的任务。
私信
- 在 Z Tag 的应用页面打开 消息 标签页即可私信,不用 @,打开方法见打开私信。不需要另行关联账号或配对。
- 私信里直接发的每条新消息(不在消息列里)都是一个独立的任务,ZAI 在这条消息的消息列里回复。
- 在这个消息列里继续说,就是同一个任务。不同消息列可以同时进行,各自的结果只回到各自的消息列。
邀请 ZAI 进频道
在频道里发送 /invite @zai,或在频道详情里添加 Z Tag 应用。公开频道和私人频道都可以这样邀请。群聊只能在新建时把 ZAI 加进来,见群聊。
第一次被成员邀请进频道时,ZAI 会在频道里发一条「已加入频道。在消息里 @zai 即可发起任务。」每个频道只发一次,移出后再邀请也不再发;被其他应用拉进频道、频道与其他组织共享或有访客,或者频道里已经有 ZAI 的记忆时,不发这条消息。
邀请进来后不需要别的设置,在频道里 @zai 就能发起任务。ZAI 在频道里用组织为这个频道准备的资源,见频道、群聊和私信里用的资源与记忆。
频道限制了谁能发言时,ZAI 可能发不了言,见ZAI 不能在频道里发言时。把 ZAI 移出频道,或频道被归档、删除后各项功能会怎样,见ZAI 被移出频道时。
频道与消息列
- 在频道里 @zai 发起任务,ZAI 在这条消息的消息列里回复。频道里每条 @zai 的新消息都是一个独立的任务;补充要求请回到对应的消息列。
- 任务进行中,消息列里追加的消息会打断正在进行的工作:ZAI 手头正在运行的命令等操作先执行完(超过两分钟仍没结束的会被中止),再从新消息开始处理。之前的进展都保留,新消息没有改要求时,ZAI 会接着把原来的工作做完;想让它立刻停下,用
@zai !stop。 - Slack 的消息列只有一层,回复上不显示“回复了哪条消息”:ZAI 需要指明对象时,会在正文里写明回复的是谁的哪条消息。
- 在消息里输入 @zai 就能提及它;如果你们的应用给 bot 起了别的名字,按 Slack 里显示的名字 @ 它。
- 在频道画布(canvas)的正文里 @zai 也会开始一个任务。ZAI 的回复作为评论挂在被提及的那一节下面,处理中的表情也显示在那里;之后再编辑那一节不会再次触发。画布里 @ 的是别人时,ZAI 不会回应。ZAI 看到的是被提及那一节的文字,以及是谁在哪份画布里提到了它;画布的其余内容按把文件作为输入里画布的规则读取。画布里的命令不执行。画布的评论在 Slack 里是单独的一个聊天,ZAI 在那里使用为它准备的资源与记忆,而不是画布所在频道的。
- 命令以
!开头。频道里先 @zai,例如@zai !status;私信里直接发送!status。完整清单见命令速查。
群聊
- 只能在新建群聊时把 ZAI 加进来。
- 群聊的用法和频道一样:@zai 发起任务,在消息列里继续,使用为这个群聊配置的资源与记忆。组织可以像频道一样为它单独配置资源。
- 群聊里有其他组织的成员时,ZAI 不回答,并提示改用本组织的频道或私信。
ZAI 什么时候回应
- 私信里:你发的每条消息,ZAI 都会处理。
- 频道和群聊里被 @ 时:@zai 的消息会开始一个任务。
- 在已经参与的消息列里:ZAI 在一个消息列里成功回复过一次后(被 @、有成员接受了它的主动协助建议,或它免确认介入),就会持续参与这个消息列。任何成员继续发言都不必再 @,ZAI 会根据讨论决定发送回复、添加表情回复,或保持安静;有人点名问另一位成员、它又没有对方缺的信息时,它不插话。
- 频道和群聊里没有 @ 它的新消息:默认不处理。开启主动协助或免确认介入后,ZAI 可能主动提出建议或直接接手,见主动协助、免确认介入与 Dream。
- 只 @ 了其他应用的消息:ZAI 不会接手,即使是在它已经参与的消息列里。其他应用 @zai 时怎样处理,见其他应用的 @。
在消息列里发送 @zai !mute 可以让 ZAI 不再跟进这个消息列、也不在这里发言,进行中的任务不受影响;怎样恢复见静音消息列。
ZAI 在后台判断要不要主动协助、整理频道记忆,或者检查定时任务的运行条件、收到的 Webhook 是否符合事件订阅时,频道里不会出现处理状态;只有真正开始执行的任务才显示。
处理状态与进度消息
ZAI 开始处理时,会在触发任务的消息上加处理中的表情,完成或失败时换成对应的表情,各表情的含义见你会看到什么。
ZAI 为任务列出清单时,消息列里会有一条进度消息,显示任务标题、最近一条说明、任务清单和“更新于 HH:mm”,并原地更新。任务结束后进度消息保留,被中断、停止或未完成时会注明。
要停止任务,点消息列底部 Slack 运行指示上的停止按钮(工作区没有显示运行指示时,改用进度消息末尾的「停止」按钮),或在消息列里发送 @zai !stop;已经发出的消息和已经完成的操作不受影响,见停止任务。
ZAI 在一次任务中可以发多条消息,但不先回“收到”“我先看看”,也不在消息列里播报做到了哪一步,进展看处理状态和进度消息。要做几分钟以上、你又在等时,它可能先用一句话说明打算怎么做;中途遇到需要你决定的问题,或需要你据此处理的发现,会直接发出来;完成后再发结果。超过约一屏的结果(例如调研、完整的审阅、长清单)整理成文档交付,消息列里只写结论、需要你处理的事和打开文档的入口,不拆成几条长消息,见回复的形式。
ZAI 也能修改自己发过的文字消息,例如纠正措辞或更新一条汇总。你要它删除某条消息,或它发错了地方、带出了不该出现的内容时,它会删除自己发过的消息或文件,不会提醒任何人;Slack 不允许删除时,它会告诉你删不了。它发出的文件不会被它修改,失败说明和命令回复既不会被它修改也不会被它删除,进度消息由 ZAI 自动更新。
ZAI 只 @ 需要回答、决定或处理事情的人。在消息列里回复向它提问、正在等它答复的人时不 @,对方照样会收到;只是提到某人、引用他的话,或告诉他不用做什么时,只写名字;私信里不 @。修改消息不会提醒任何人,所以需要大家注意的新内容和需要某人看到的 @ 会另发新消息;更正一条 @ 过别人的结论时,更正同样 @ 这些人。它也不在短时间内反复 @ 同一个人。
组织开启回复审阅后,ZAI 的消息发出前会先经过检查,写法有明显问题或与消息列里已有的内容重复时,会改写或不再发送;这一轮已经发过消息后,只预告下一步或播报进度的消息不发送;没有人请求的免确认介入对眼前讨论没有直接帮助时也不发送。
频道、群聊和私信里用的资源与记忆
- 在频道和群聊里,ZAI 只用组织允许在这里使用的资源和这里的记忆,不会因为某位成员发言,就用上他的个人资源或私信里形成的个人私有记忆;但会参考发言人的个人公开记忆和他在这里的频道内个人记忆,消息里 @ 了其他成员时也会参考被 @ 的人与问题相关的个人公开记忆和频道内个人记忆,见记忆的作用范围。
- 在私信里,ZAI 用你自己的资源,以及组织授权给你或全体成员的资源。
- ZAI 在频道里自动记下的个人偏好怎样使用、怎样让它在别处也生效,见自动记住与公开范围。
各类资源和申请方法见ZAI 能用哪些团队资源。如果你也在另一个 IM 里使用 ZAI,那里是另一个账号,资源和记忆不互通,见一个组织接入多个 IM。
请 ZAI 联系同事
在频道、群聊或私信里都可以说:“请私信通知张三,明天十点验收,发送后告诉我结果。”可以直接 @ 要联系的同事;只提供姓名且有重名时,ZAI 会请你选定具体的人。
ZAI 只能联系在这个 Slack 工作区里用过它的本组织成员:私信过 ZAI、给它发过 @zai !status 这类命令,或登录过控制台的人。只在频道里 @ 过 ZAI 的同事,它还联系不到。在频道或群聊里提出这类请求时,你自己也要满足同样的条件;不满足时,先在私信里给 ZAI 发一条消息。
消息由 ZAI 发到对方和 ZAI 的私信里,末尾注明是你在哪个频道(或在私信里)请 ZAI 联系的。ZAI 在原来的消息列里回报已发送、仍在投递或失败。
对方 7 天内在这条消息的消息列里回复,回复会带回原来的消息列或你的私信:ZAI 在那里告诉你对方说了什么,需要追问时接着在同一个消息列里问对方。对方的消息上会出现完成表情,表示已经带回。对方没有在消息列里回复、而是在私信里另发一条时,ZAI 看出这是在回答你的问题,也会把他的原话带回去,同样打上完成表情;看不出来时会先问他。超过 7 天,或原来的消息列已被 @zai !mute 静音时,回复留在对方自己的私信里,ZAI 在那里接着帮他。对方回复里的文件留在他的私信里,ZAI 在原来的消息列里读不到。
请 ZAI 在频道里发通知
在消息列里可以说:“在频道里通知大家,周五下午发布。”ZAI 会在当前频道或群聊里直接发一条新消息,不回在当前消息列里。它的定时任务和事件订阅也可以这样发,例如有新的待合并 MR 时在频道里提醒。
- 成员在这条消息的消息列里回复,不用 @zai 也会得到跟进。ZAI 知道当时为什么发这条消息,需要更多背景时会读原来的消息列。
- ZAI 在原来的消息列里说明已经发出。
- 私信里不能这样发;主动协助和免确认介入也不会在频道里直接发消息。
- 原来的消息列被
@zai !mute静音后,ZAI 不再从那里往频道里发消息。
访客与 Slack Connect
其他组织的成员指不属于 ZAI 所在 Slack 工作区的人,例如通过 Slack Connect 加入频道的成员;同一组织接入的其他 Slack 工作区的成员也按此处理。
- 与其他组织共享的频道(Slack Connect,包括等待对方批准的共享)里,ZAI 不工作:@ 它只会在消息列里收到「我不在与其他组织共享的聊天里工作,请在本组织的频道或私信里找我。」频道变成共享后,进行中的任务会停止,已经参与的消息列也不再回复。私人频道与其他组织共享后同样如此。
- 有访客的频道里,ZAI 不回复,@ 它只会收到「这个频道里有访客,我不在含访客的频道里回复。」访客发的命令不执行,访客私信 ZAI 只会收到「访客账号暂不能私信使用。」
- 其他组织的成员私信 ZAI,只会收到「其他组织的成员不能私信使用我,我也不在与其他组织共享的频道里工作。需要协助时,请本组织的成员在本组织的频道里 @我。」
- ZAI 回答前要确认频道里只有本组织的成员。频道成员(包括应用)超过约 1 万个,或 Slack 暂时不提供成员列表时,@ 它只会收到「我无法确认这个频道里有哪些成员(成员很多的频道会出现这种情况),这次不作回答。请在成员较少的频道或私信里找我。」超大频道重试也不会好,请改用较小的频道或私信。
- 商店版 ZAI(从 Z Tag 提供的安装链接安装的 ZAI)不处理与其他组织共享的频道,以及同一个 Enterprise Grid 组织里多个工作区共享的频道里的消息:不回复,也不发说明,命令也不执行,见成员开始使用。
在共享或有访客的频道里(商店版 ZAI 只限有访客的频道),本组织成员仍可以用 @zai !stop 停下进行中的任务、用 @zai !mute 静音消息列,也可以用 @zai !proactive off、@zai !proactive auto off、@zai !dream off 这类命令关闭后台能力。主动协助、免确认介入、Dream、定时任务和事件订阅在这类频道里会暂停,见ZAI 被移出频道时。
其他应用的 @
- 告警机器人、工作流程等其他应用在频道里发一条新消息 @zai 时,ZAI 在那条消息的消息列里处理;在 ZAI 已经参与的消息列里,其他应用的 @ 按跟帖处理。
- 这类任务没有提出请求的成员:个人资源和个人记忆这类需要成员身份的操作不可用;ZAI 仍可以为这个频道申请资源,见发起申请后。应用发出的命令不执行。
- 应用消息里带的文件,ZAI 收到时不下载,处理中需要时再读取,见把文件作为输入。
- 同一组织的其他 Z Tag 应用之间互不响应。其他应用短时间内反复 @zai 时,超出的部分会被忽略,不回复也不加表情。
- 这个频道是否响应其他应用的 @,用
@zai !apps查看和切换,见命令速查。
ZAI 能读到的历史
- 被 @ 或跟进消息列时,ZAI 会读取前面的一段频道或消息列历史,需要时还能查询频道消息和成员。在频道里(不在消息列里)提问时,前面的消息列只看首条消息,同时知道消息列里有几条回复、最后一条是什么时候发的、ZAI 自己有没有在里面回复过,以及它最后一条回复的开头,需要时再读取消息列里的回复;之前已经在消息列里答复过的请求,它不会当作没人处理。读之前,它会向 Slack 补读一段消息:在频道里提问时补读最近的频道消息,在消息列里提问时补读这个消息列,ZAI 加入频道之前的消息列回复通常也在其中。更早的历史只包含 ZAI 观察到或补读过的消息,其他旧消息列里它没读过的回复可能不在其中,回答时它会说明检查过的范围。这段历史一时读不到时(例如 Slack 限流),ZAI 不会当作没有上文:需要时它会重新读取,仍读不到会告诉你。
- 在消息列里回复时勾选“同时发送到频道”的消息,ZAI 读频道历史时也能看到。
- ZAI 读历史时知道频道当前的主题和描述;改过之后,它可能要过一会儿才读到新的。改主题、置顶、有人加入或离开频道这类通知不在它读到的历史里。
- 告警机器人、工作流程等应用发的消息,ZAI 读历史时知道是哪个应用发的;应用改写了自己的消息(例如先发“思考中”再换成答案),ZAI 读到的是改写后的内容;应用连续快速改写时,最新的内容可能要过一会儿才读得到。
- ZAI 读历史时能看到消息下的表情回复和人数,例如 5 人点了 ✅、1 人点了 ❌,也分得清哪些是它自己加的处理状态表情;它不知道具体是谁点的。刚加上或去掉的表情,可能要过一会儿才读得到。
- Slack 免费版的工作区里,ZAI 只能读到最近 90 天的消息与文件,更早的读不到。
- 从 Z Tag 提供的安装链接安装的商店版 ZAI 读频道和消息列历史的频率受 Slack 限制,读较长的历史时常常只看到最新的一段,见读取历史较慢。
- 已删除的消息 ZAI 读不到。消息列里的文件怎样读取,见把文件作为输入。
- 语音和视频片段:Slack 已经为片段生成文字记录时(有人在片段上选择生成文字记录,或工作区管理员开启了自动生成),ZAI 会连同文件读到这份文字记录,并知道它是自动识别的、可能有误。没有文字记录时,ZAI 只拿到音视频文件,通常无法识别其中的语音,请用文字说明任务。Slack 的自动文字记录基本不能识别中文语音,中文语音同样请用文字说明任务。文字记录在消息发出之后才生成的,ZAI 处理这条消息时读不到,之后读取消息列历史时能读到。
- 转发或分享到这里的消息,会作为一段引用交给 ZAI:标明原作者、所在频道、发送时间和原消息链接,原消息里的代码、列表等格式会保留。原消息来自其他私人频道、群聊、私信或与其他工作区共享的频道(例如 Slack Connect 频道)时,引用里不写频道名,只说明是私人频道,即使 ZAI 也在那里;消息里提到这些频道时同样如此。转发内容里的 @ 只保留为文字,不会通知对方,也不会让 ZAI 执行其中的命令;需要 ZAI 处理时,转发时附上 @zai 和说明。
- 被转发消息里的文件作为这条消息的附件交给 ZAI。Slack 没有把文件分享到当前聊天时,ZAI 只知道文件名、取不到内容。
- 告警、工单这类其他应用以附件形式发的消息,标题、字段、正文和页脚都会交给 ZAI;其中的图片只给出链接。
- 其他应用发的富格式消息,例如计划与任务进度、表格、图表、按钮和菜单,其中的文字、按钮名称和链接都会交给 ZAI;格式读不全时,再附上这条消息在通知里显示的文字。图片给出标题,外部图片另附链接。
- 嵌套列表、引用里的列表和代码保持原来的层级,带勾选框的待办列表保留勾选状态。@ 用户组时,ZAI 看到的是组 ID;只有其他应用在消息里写明了组名时,才看到组名。消息里提到的其他消息、画布、文件和列表记录给出链接,日期和颜色值也会保留。
编辑与删除
- 编辑消息:ZAI 正在处理这个消息列时,你的编辑会作为“编辑前 / 编辑后”的说明并入当前工作,ZAI 不会因此单独回复。说明里写明了被编辑的是哪条消息,需要时 ZAI 会读取这条消息的最新内容和附件;消息列空闲时,编辑不会触发任何处理,补上 @ 也不会。要让更正一定生效,请在消息列里发一条新回复。ZAI 读取历史时看到的是编辑后的内容。
- 链接预览:Slack 常在消息发出后才给其中的链接补上预览,例如网页摘要、其他应用给出的链接详情,或 Slack 消息链接显示的原消息。ZAI 正在处理这个消息列时,成员消息里补上的预览会作为一条补充说明并入当前工作,不算编辑,ZAI 也不会因此单独回复;消息列空闲时不会触发任何处理。预览里的 @ 只保留为文字,文件只给出文件名;只有图片、没有文字的预览不会并入。
- 删除一条回复:它引起的处理如果还没开始,就会取消;已经开始的处理不会中途停止,但 ZAI 会知道这条消息已删除,不再引用它的内容。它正在回答的消息都删除了时,它会停下这项工作,不在消息列、频道或私信中为它发言;还有没删除的消息时,回复照常发在消息列里。ZAI 已经发出的消息不会被删除。ZAI 已经记住的内容不会因此忘掉,需要时按让 ZAI 记住、纠正或忘记的说明让它忘记。
- 删除消息列的首条消息:不论消息列里有没有回复,ZAI 都会停止这个消息列里的工作并关闭它。之后在这个消息列里 @zai,会收到「这个消息列的首条消息已被删除,这个消息列已关闭。请另开一个消息列继续。」请在频道里重新发一条消息开始。已经发出的消息和已完成的操作不受影响。设在这个消息列里的定时任务与事件订阅,改为每次触发时另开消息列。
- 删除带文件的消息,或在消息里单独删掉一个文件:ZAI 之后在这里读不到这些文件,还在进行的回复不会再把它们发回来,原处改为一条不写文件名的说明;ZAI 已经发到这里的同一个文件不受影响。更新日志里这项变化之前删除的文件,ZAI 仍可能读到。
- 在私信里刚编辑或删除的消息,ZAI 可能要过一会儿才能看到变化。
任务结束之后
所有任务完成后,消息列空闲一段时间,这段工作就会结束:ZAI 清掉这个消息列的工作上下文和它生成的临时文件。之后在原消息列追问仍能继续,ZAI 会重新读取消息列内容和记忆,见ZAI 会记住一个消息列多久。没有发回消息列的文件和临时安装的工具不会保留,需要留存的文件请让 ZAI 发回消息列,见没发回的文件保留多久。想提前开始新的一段工作,在消息列里发送 @zai !restart。
ZAI 不支持的操作
ZAI 不能搜索整个 Slack 工作区,也不能读取其他频道的消息,或把消息发到其他频道(私信联系同事见请 ZAI 联系同事);Z Tag 的应用页面没有主页(Home)标签页。需要它处理别处的内容,请把内容或文件发到当前的频道、群聊或私信里。