Ignis · Feishu Capability

Mai 的飞书能力,设定与交互

用户把飞书链接丢给 Mai,Mai 就能读;让它写文档、记表格、搬素材、发通知,它都能干。这页讲清楚:它以什么身份干活、界面上用户会经历什么、哪些规矩是刻死的。

2026-07-21 · 测试环境已全量可用 · PR #438 待合并

At a glance

一眼看全

8
个动作 · 一个工具
1 次
授权 · 之后自动续期
双向
飞书 ⇄ 素材库
200MB
单文件进文档上限

一句话:Mai 以用户本人的身份操作他的飞书。用户能看的它才能读,它建的文档所有者就是用户自己。全部能力都在对话里发生——用户说话,Mai 干活,结果给链接。

Identity model

核心设定:不是机器人账号,是用户本人

很多产品接飞书用的是"机器人进群"。我们没走这条路。用户授权一次后,Mai 拿到的是用户自己的飞书身份,由此带来三条产品性质:

对话 动作 用户TOKEN 素材双向 USER 用户 chat · 授权一次 AGENT Mai feishu 工具 · 7 动作 GATEWAY 飞书网关 token 保险箱 · 续期 FEISHU 用户的飞书 文档 · 表格 · 消息 STORE 素材库 file_id · CDN LEGEND 焦点 · 凭证只存在这里 我们的服务 存储 外部 带用户凭证的调用

值得记住的一点:飞书的登录凭证只存在网关的保险箱里,Mai 的模型、对话记录、日志全都碰不到它。哪怕对话记录被导出,里面也没有任何凭证。

Onboarding

交互 ①:授权只在第一次,只打断一次

用户第一次让 Mai 碰飞书时,才会遇到授权。流程刻意做得很轻:

  • 第 1 步 — Mai 发现没权限,申请授权:系统直接把一张带"去授权"按钮的卡片发到用户的飞书上。授权链接不会出现在对话里——它只存在于系统内部和那张卡片的按钮里,连 Mai 自己都看不到。
  • 第 2 步 — 用户在飞书里点卡片按钮,在官方页面上确认。按钮 15 分钟有效,过期让 Mai 再发一张就行。
  • 第 3 步 — 用户回对话里说"好了",Mai 接着干刚才没干完的事,不用重新说需求。

之后永远不再打扰:凭证自动续期,后台每天还有一次保活检查,把快到期的凭证提前换新。授权一次就一直有效,除非用户自己在飞书侧撤销(撤销后下次使用会重新走一遍授权卡)。

等待期间 Mai 不轮询、不反复推卡片,就安静等用户回话。

Actions

设定 ②:一个工具,八个动作

对模型来说这是一个 feishu 工具;对用户来说,是八件他能用自然语言唤起的事:

动作用户怎么说Mai 干什么
read"看看这个文档"+ 链接读文档、知识库页、多维表格、电子表格,直接读,不反问
create"把方案写成飞书文档"整篇建新文档,回链接,所有者是用户
edit"把这篇改成…"整篇替换,带警告门和恢复版本(见下节)
extract_media"把表里的视频拎进素材库"文档/表格里的图·视频·附件下载成素材库 file_id
append_records"往表里加一行"多维表格追加记录,附件列可以直接写素材
update_records"把那行的状态改了"按行更新记录,行号不明就先读表拿
send_card"弄完飞书叫我"往用户飞书推通知卡片,内容 Mai 写,可带按钮链接
request_auth(Mai 发现没权限时自动使用)申请飞书授权:系统把授权卡直发用户飞书,链接不经过 Mai

还有一个包装原则,决定了用户看到的形态:短话直接说,长产出进文档,任务完成推卡片。超过一屏的内容不会刷在对话里,Mai 会主动提议"要不要建成飞书文档给你链接"。

Assets

设定 ③:素材在飞书和素材库之间双向流动

飞书 → 素材库(拿进来)

  • 文档或表格里的图、视频、附件,一句话拎进素材库,变成 file_id。
  • 先报"货单"(名字+大小),总量小直接全拿;有大件时让用户点名要哪些。
  • 进了素材库就能被分析、被引用、进生成流程。

素材库 → 飞书(放出去)

  • 表格附件列:直接把素材写进单元格,单个 20MB 以内。
  • 文档正文嵌图:变成真图片块,不是外链。
  • 文档正文嵌视频/文件:变成真文件块,可在线播放和下载,单个 200MB 以内,大文件自动分片上传。

验收标准我们用的是最严的一条:素材从素材库放进飞书、再从飞书取回来,两份文件逐字节相等。图片、视频、大文件三条链都按这个标准真机验过。

Interaction rules

交互 ②:五条刻死的规矩

下面这些不是"模型自觉",是写进工具说明书、每次调用都会被约束的硬规则。PM 可以拿它们当承诺对外讲:

1 · 改文档必须先警告,还自动留后悔药

"改"的本质是整篇替换。改任何不是 Mai 自己建的文档前,它必须原话告知用户风险并等确认;动手前自动创建一个带 Ignis 标记的恢复版本,改坏了在文档"版本"里一键还原。

2 · 多张表先让用户挑,绝不自己选第一张

链接指向的文件里有多张表时,Mai 列出候选让用户点名,不猜、不默认。

3 · 失败就说失败,不偷偷变通

文件超 20MB 传不进表格?直说传不了,不偷偷压缩、不换文件。用户要删行?直说没有删除能力,不拿别的动作凑数。读到的内容被截断?明说"这是节选"。

4 · 每一步都亮牌子

每次调用都带一个用户能看懂的短标题("读取飞书文档"/"提取表格附件"),用户在界面上始终知道 Mai 正在干什么。

5 · 通知节制,一件事最多一张卡

卡片只在三种时机出现:长任务完成、需要用户拍板、授权引导。不拿卡片刷进度、刷存在感。

Limits

边界:能力有多大,墙在哪里

项目上限超了怎样
读文档256KB截断并明说"这是节选"
读表格500 行同上
表格附件(写入)20MB / 件如实报"太大传不了"
文档嵌文件200MB / 件文档照建,警告点名哪件没进
素材提取(单次)总量 500MB超出部分列入"跳过"清单如实汇报

三件明确不做的事,建议对外话术也保持一致:

Status

现在到哪了