AI 参与说明(Agent:
/root、/root/source_research):本文根据作者提供的 Feishu CLI 官方页面,并结合飞书官方 CLI README 与公开文档协助整理。资料核验于 2026-08-13;命令、可用业务域、OAuth scopes 与组织策略都可能变化,实施前请以文末一手资料和目标租户的实际授权结果为准。
先说结论#
Feishu CLI(命令名为 lark-cli)是 larksuite 团队维护的飞书官方命令行工具,面向终端用户和 AI Agent。它把日历、即时通讯、云文档、表格、邮箱、任务、会议等飞书开放平台能力组织成可调用的命令和 Agent Skills。官方 README 说明其覆盖 200+ 命令与 26 个 Skills;本文整理时本地安装的 lark-cli 1.0.68 执行 lark-cli skills list 返回 27 个 Skills。两者的差异应视为文档与发行版本的时间差,具体能力以目标版本实际输出和官方文档为准。官方 README
它的价值不只是“让模型能给出操作建议”,而是让 Agent 在应用凭证、OAuth 登录、scope 授权和组织策略共同限定的范围内,实际调用飞书开放平台接口。因此,更准确的理解是:
用户明确提出目标
→ Agent 选择合适的 lark-cli 命令
→ CLI 使用已获授权的身份和 scope 调用飞书 OpenAPI
→ 返回结构化结果,供 Agent 汇报或继续处理这也意味着它不是“拿到一次授权后便可操作所有企业数据”的万能入口。不同命令是否可用,取决于应用配置、用户或应用身份、已授予的 scope、目标资源本身的共享权限,以及企业管理员的策略。
本文聚焦个人开发者或个人 Agent 的安全上手路径。企业把 CLI 内嵌到自研 Agent 时,还需要增加中心化凭证管理、权限裁剪和审计;这属于另一层工程治理问题。
运行时能力全表:27 个 Skills#
下面不是根据产品菜单做的概览,而是按本文整理时 lark-cli 1.0.68 的 skills list 输出逐项归纳。它适合用来审视 Agent 的真实工具面:每一个 Skill 都对应一个独立业务域、对象边界和风险类型。CLI 后续可能新增、拆分或重命名 Skill;接入前应再次运行 lark-cli skills list,并用 lark-cli schema <method> 核对具体 API 的参数、支持身份与 scopes。功能清单与 Skills
运行时、扩展与事件#
| Skill | 主要能力 | 对象与路由边界 | 对 iuv-cli 的借鉴 |
|---|---|---|---|
lark-shared | 初始化配置、OAuth 登录、身份与 scope 检查、Profile 管理和安全约束。 | 这是跨业务域的运行时能力,不承载日历、文档或消息业务。 | 把配置、身份、授权、Profile 做成统一底座;业务命令不得各自保存凭证或猜测当前身份。 |
lark-openapi-explorer | 从飞书官方 OpenAPI 资料探索尚未被快捷命令覆盖的接口。 | 是受控的“原始接口入口”,不是绕过 schema、scope 或组织策略的后门。 | 在高层命令之外保留经过显式标注的 escape hatch;让使用者先发现 API,再调用 API。 |
lark-skill-maker | 创建可复用的自定义 Skill,封装原子接口或受控工作流。 | Skill 是说明、路由和约束层;不应把任意脚本或无限权限塞入一个名称。 | 用声明式 manifest 描述触发意图、输入、输出、权限、风险和前置条件,支持组织内扩展。 |
lark-event | 消费飞书实时事件,并以 NDJSON 形式持续输出。 | 长连接、就绪信号、超时和事件消费与普通一次性 CRUD 命令不同。 | 为流式命令规定稳定的 ready marker、逐行事件格式、超时和停止语义,方便 Agent 编排。 |
lark-apps | 面向妙搭(Spark/Miaoda)应用的创建、开发、部署及相关运行管理。 | 它处理的是妙搭应用生命周期;不等同于通用飞书机器人配置、云盘管理或文档编辑。 | 按资源生命周期拆分命名空间;避免以一个笼统的 app 命令混合应用部署、聊天机器人和业务数据。 |
协作、组织与业务流程#
| Skill | 主要能力 | 对象与路由边界 | 对 iuv-cli 的借鉴 |
|---|---|---|---|
lark-calendar | 查看议程、创建或更新日程、查忙闲、找会议室、回复日程和处理建议。 | 处理未来或日历中的安排;历史会议详情应转到视频会议相关能力。 | 让时间、时区、参与者和资源成为显式字段;创建或修改前先展示冲突和影响范围。 |
lark-im | 搜索、发送和回复消息,管理群聊/成员,处理表情、卡片、资源下载和加急等。 | 消息、群聊和卡片是独立对象;外发、加急和群成员变更具有明显副作用。 | 将收件人解析、内容预览、发送确认和幂等键作为一等能力,不从聊天正文自动推断执行。 |
lark-mail | 搜索邮件,草拟、发送、回复或转发,管理文件夹、标签、联系人、规则和签名等。 | 邮件正文和附件是外部不可信输入;发送、转发和规则变更会影响外部沟通。 | 区分检索、草稿与发送三种状态;默认把“发出”放在显式人工确认之后。 |
lark-contact | 由姓名或邮箱解析人员标识,反查个人资料。 | 主要用于身份解析和消歧,不应把它误用为组织树遍历或全员信息导出。 | 所有以“某个人”为目标的命令都先解析为稳定 ID;多人匹配时停下来让用户选择。 |
lark-task | 创建、更新、完成、分派任务,管理清单、子任务、关注者、提醒、评论和附件。 | 任务不是审批实例;任务分派和状态变更会改变协作承诺。 | 为任务设计清晰状态机、对象引用和变更预览;批量分派要限制范围并支持幂等。 |
lark-approval | 查询审批定义与实例,创建审批,并处理同意、拒绝、转交、加签、撤回、催办、抄送等。 | 审批是具有流程状态和权限语义的独立域,不能按普通任务的“完成/取消”处理。 | 对不可逆或高影响工作流采用状态机与确认关卡;失败后先读取实际状态,避免盲目重试。 |
lark-attendance | 查询当前用户自己的考勤打卡记录。 | 默认是“本人记录”而非通用人事数据查询;组织策略和权限边界尤其重要。 | 将数据主体和访问范围写入命令契约,避免一个通用查询无意扩大到敏感员工数据。 |
lark-okr | 管理周期、目标、关键结果、对齐关系、指标、进度、权重和批量调整。 | OKR 有层级和对齐关系,不能简化成不带父子关系的待办列表。 | 为层级对象提供显式 parent/child、排序、权重和批量操作模型,并在写入前校验结构。 |
内容、文件与结构化数据#
| Skill | 主要能力 | 对象与路由边界 | 对 iuv-cli 的借鉴 |
|---|---|---|---|
lark-doc | 创建、读取、更新和查看历史版本的 Docx/Wiki 文档,处理内容、媒体、封面和思维笔记相关能力。 | 负责文档内容;嵌入的电子表格、多维表格和画板应路由到各自的专用域。 | 以资源类型驱动路由,不把“文档”当作可以用一个万能编辑器修改的所有内容。 |
lark-drive | 管理文件夹和文件:搜索、上传、下载、复制、移动、删除、预览、评论、权限、版本和导入等。 | 处理云空间中的文件与目录元数据,不代替 Docx、表格或画板的内容编辑。 | 将文件管理与内容编辑拆分;对移动、删除、权限变更和导入设置更高风险等级。 |
lark-markdown | 创建、读取、比较、补丁和覆盖飞书原生 Markdown 文档。 | 它是 Markdown 文档的专用路径,不等同于把任意 Docx 或附件直接按文本覆盖。 | 根据格式提供专门的 diff/patch 工作流;写入优先传递结构化变更而不是整篇盲覆盖。 |
lark-sheets | 管理工作表、单元格、公式、样式、评论、图表、透视表、筛选、条件格式和图片等。 | 适合二维电子表格;多维表格的记录/字段/视图模型应转到 Base。 | 采用批量、原子变更请求,并把范围、公式和受影响单元格在执行前可视化。 |
lark-base | 管理多维表格的表、字段、记录、视图、仪表盘、表单、自动化、角色与权限。 | Base 是结构化业务数据域,不等同于普通电子表格或云盘文件夹。 | 先定义 schema,再处理记录;将字段类型、视图、自动化和权限视为独立资源。 |
lark-slides | 创建和读取演示文稿、管理页面,并处理媒体等内容。 | 演示文稿页面是独立内容模型,不应通过通用文档或云盘命令模拟编辑。 | 为每种富内容载体提供类型化对象与有限、可验证的编辑动作。 |
lark-whiteboard | 查询和编辑画板,导出预览/SVG/节点数据,并支持 Mermaid、PlantUML、SVG、OpenAPI 等表示。 | 画板与文档正文、幻灯片页面不同;图形源格式及导出格式需要显式声明。 | 允许多种声明式图形输入,但统一落到可审查的画布节点模型和导出契约。 |
lark-wiki | 管理知识空间、成员及文档节点,创建、复制、移动和删除节点。 | 负责知识库结构与成员;节点指向的文档正文仍由文档能力处理。 | 将“信息架构”与“内容编辑”分开建模,避免移动节点时隐含改写内容或权限。 |
会议与多媒体#
| Skill | 主要能力 | 对象与路由边界 | 对 iuv-cli 的借鉴 |
|---|---|---|---|
lark-vc | 搜索历史会议、查看会议详情、参会人快照,并衔接会议纪要。 | 侧重已经发生的会议;排期和会议室预订属于日历域。 | 把“预定会议”和“回顾会议”拆开,减少时间对象与会议记录对象混淆。 |
lark-vc-agent | 让应用机器人加入或离开进行中的会议,接收实时事件、转写/聊天/共享信息并发送会中内容或表情。 | 面向正在进行的会议;不是历史会议检索,也不是普通 IM 机器人。 | 对实时代理提供明确的 join/leave 生命周期、会中权限和事件订阅;默认避免无人确认的发言。 |
lark-note | 已知 note_id 时直接读取会议纪要的元数据和统一原始转写内容。 | 适用于有明确 Note 标识的读取路径;不承担跨库搜索或媒体资产管理。 | 为“已知 ID 的精确读取”和“按条件搜索”分开设计,减少大范围敏感检索。 |
lark-minutes | 搜索妙记,上传或下载音视频,读取转写、摘要、待办、章节和关键词,并管理标题、说话人和词条。 | 妙记是音视频与转写资产域,不必然等同于某次会议 Note。 | 为媒体、转写和摘要保留独立对象模型,并在下载/导出前标明数据体量和敏感性。 |
复合工作流#
| Skill | 主要能力 | 对象与路由边界 | 对 iuv-cli 的借鉴 |
|---|---|---|---|
lark-workflow-meeting-summary | 组合指定时间范围内的会议记录、纪要与相关信息,生成结构化会议摘要。 | 它编排多个会议/纪要来源,不替代单个会议、Note 或 Minutes 的原子 API。 | 将常用跨域流程定义为可审查的 workflow manifest,明确输入范围、读取域、输出格式和写入步骤。 |
lark-workflow-standup-report | 编排日程议程与未完成任务,形成站会或日程待办摘要。 | 这是 Calendar + Task 的组合视图,而不是新的业务数据源。 | 复合工作流应复用原子命令、显式暴露数据来源,并允许用户在生成后确认是否写回或发送。 |
这份矩阵也解释了为什么不应把“可操作飞书”理解为一个单一开关:每一行都有不同的资源模型、身份支持、scope、读取范围和副作用。接入 Agent 时应按行选择,而不是默认向模型暴露整个 CLI。
对 iuv-cli 的可复用设计#
Feishu CLI 的价值不只在于覆盖面,也在于它把 Agent 运行时需要的边界显式化。下面是更适合移植到 iuv-cli 的设计原则;这是基于上述能力分层的工程归纳,不是 Feishu CLI 对 iuv-cli 的官方建议。
| 设计要点 | Feishu CLI 中可观察到的做法 | 给 iuv-cli 的落地建议 |
|---|---|---|
| 命名空间优先 | 日历、IM、文档、Drive、Sheets、Base、Wiki 等各有明确域。 | 以稳定的 <domain> <resource> <action> 组织命令;每个命名空间声明“负责什么、不负责什么”。 |
| 三层调用面 | + Shortcuts 处理常见任务;类型化 API 命令对应 OpenAPI;api 作为兜底入口。 | 让高频任务有安全默认值,让精确调用可查 schema,让原始 API 保持显式且不作为默认路线。 |
| Schema 先于执行 | schema <method> 用来核对参数、返回结构、身份和 scopes。 | 提供机器可读的 schema / capability manifest;Agent 必须先发现字段和风险,不应凭记忆拼参数。 |
| 身份与 Profile 一等化 | 配置中区分用户、机器人等身份,并支持多个 Profile。 | 全局统一处理 profile、租户、身份和凭证来源;每次执行在结果中回显实际身份而非隐式继承。 |
| 权限可诊断 | 缺少 scope 时由真实调用结果指示补充授权,应用权限另受平台和组织管理。 | 错误输出要区分 scope_missing、资源无权、身份不支持、组织策略拒绝,且给出下一步而不是笼统失败。 |
| 副作用分级 | Shortcuts 提供 --dry-run;高风险写操作要求额外确认。 | 为 read、write、high-risk-write 建立统一风险枚举;预览不等于确认,确认不应由外部内容触发。 |
| 结构化输出 | CLI 支持 JSON、表格、CSV/NDJSON 等适配不同自动化场景的输出。 | 默认 JSON,并使用稳定成功/失败 envelope;人类友好表格应是可选展示层,不能是 Agent 唯一解析接口。 |
| 幂等与重试 | 工作流状态类操作需要读取真实状态后再决定下一步,不能在失败时盲目重复。 | 所有写操作接收 idempotency_key;按错误类别限定重试次数,并在可能已提交时返回可查询的操作标识。 |
| 资源解析与跨域路由 | 人员由通讯录解析;嵌入表格、Base、画板和知识库结构被分到不同域。 | 把名称/URL/token 解析成规范 ID;跨域调用必须显式可见,避免一个“文档”命令悄悄修改表格或权限。 |
| 分页和批量控制 | 列表读取与批量修改属于不同规模的调用形态。 | 默认限制页面大小和总量;批量操作先返回计划、受影响对象数和可撤销性,再接受确认。 |
| 流式事件契约 | 实时事件使用 NDJSON,并有就绪、超时和结束边界。 | 为订阅型命令定义连接成功事件、事件 schema、心跳、超时和取消方式,避免 Agent 无限等待或误判完成。 |
| 可组合 Workflow | 会议总结、站会报告在原子业务域之上组合。 | 工作流 manifest 应列出读取域、写入域、权限、最大数据范围和人工确认点;不要隐藏内部副作用。 |
| 安全默认值 | 凭证存于 OS keychain,并对 prompt injection、终端输出和风险控制保留默认保护。 | 不在配置文件、日志或错误中回显 secret;把外部文本当数据,并为工具调用增加允许列表、审计与敏感字段脱敏。 |
一个可供 iuv-cli 采用的失败结果形态可以是下面这样;这是接口设计示意,不是可直接执行的 Feishu CLI 输出:
{
"ok": false,
"error": {
"kind": "scope_missing",
"message": "当前身份缺少执行该操作所需的权限",
"next_action": "重新授权后再试"
},
"execution": {
"profile": "work",
"identity": "user",
"risk": "write"
}
}关键点不是某个字段名,而是让 Agent 能根据稳定的机器可读信息停止、解释、申请最小增量授权或等待确认,而不是把错误文本当作下一条指令。
它与 MCP、Skills 的关系#
Feishu CLI 的核心交互形态是 CLI + Agent Skills:CLI 提供结构化命令,Skills 向支持 Skills 的 Agent 说明“何时调用、参数如何组织、哪些动作需要注意安全边界”。
不要把这件事简单等同于“安装了一个不受约束的 MCP Server”。对于 Agent 而言,真正的执行边界仍在 Host 的工具策略、CLI 的当前身份与权限、以及飞书资源授权上。一个合理的 Agent 配置至少应做到:
- 只暴露当前任务需要的业务域,例如只读日历或文档。
- 将发送消息、创建日程、写入表格、审批等动作列为高风险工具。
- 把消息正文、文档、邮件和附件视为不可信外部输入,而不是新的用户指令。
- 在每次有副作用的操作前,由 Agent 展示目标、影响范围和待执行参数。
关于 MCP 的 Host、Client 和 Server 分工,可进一步阅读 MCP 在聊天应用中的基本原理。
最小可复现上手流程#
以下命令来自官方 README,适用于已经安装 Node.js 且可以使用 npm / npx 的环境。命令会触发浏览器中的应用配置或授权流程,本文没有执行它们,也不会包含真实授权 URL、凭证或 token。
1. 安装 CLI#
npx @larksuite/cli@latest install如果从源码构建,官方还要求 Go 1.23+ 和 Python 3;普通使用 npm 安装不需要这两项构建依赖。安装前置条件
2. 配置应用并完成用户登录#
面向 Agent 的新建配置流程可以使用:
lark-cli config init --new
lark-cli auth login --recommend
lark-cli auth status前两条命令会引导用户在浏览器中完成应用配置和 OAuth 授权;auth status 用于检查当前登录状态和已授权 scopes。授权链接和终端中出现的任何 token 都属于敏感信息,不应粘贴到聊天、文档、截图或仓库中。
--recommend 会请求官方推荐的常用权限,但不应替代最小权限审查。只需要日历或任务时,应优先按业务域或精确 scope 授权,并在命令报缺失权限时再补充,而不是一次性开放不需要的数据域。认证命令与 scope 检查
3. 先完成一个只读验证#
lark-cli calendar +agenda --as user预期结果是:CLI 返回当前已授权用户的议程信息;若当前身份、scope 或组织策略不满足要求,则返回结构化错误而不是越过权限继续读取。对于刚接入的 Agent,先选择这类只读、低影响命令验证身份和范围,再开放写入能力更稳妥。
完成安装与配置后,需要重启所使用的 AI 工具,让它重新加载相关 Skills。Feishu CLI 官方介绍
三层命令:先用合适的粒度#
CLI 将调用方式分为三层。选择越靠前的层级,越适合常见的、可控的 Agent 工作流。
1. Shortcuts:优先用于常见任务#
以 + 开头的 Shortcuts 为人和 Agent 提供更短的命令、智能默认值、表格输出和 dry-run 预览。例如:
# 查看议程
lark-cli calendar +agenda
# 预览一条待发送消息;不会把预览当作已完成的人工确认
lark-cli im +messages-send --chat-id "oc_xxx" --text "请查看更新。" --dry-run
# 创建 Markdown 格式文档
lark-cli docs +create --doc-format markdown \
--content $'<title>周报</title>\n# 本周进展\n- 完成了 X 功能'--dry-run 的用途是先检查请求目标与参数。它不能替代用户确认、权限检查或数据分级;任何实际发送、创建或更新动作仍应在 Agent 工作流中设为显式确认步骤。
2. API 命令:用于需要精确映射的接口#
这层命令与飞书 OpenAPI 端点一一对应,适合已清楚知道所需接口与参数的场景:
lark-cli calendar calendars list
lark-cli calendar events instance_view \
--params '{"calendar_id":"primary","start_time":"1700000000","end_time":"1700086400"}'调用前可用 schema 查询参数、请求体、响应结构、支持身份与所需 scopes:
lark-cli schema calendar.events.instance_view
lark-cli schema im.messages.delete对 Agent 来说,schema 是降低“猜参数”风险的关键步骤:先读接口描述,再构造调用,而不是依赖模型记忆。
3. 通用 API 调用:只在前两层不足时使用#
lark-cli api 可以直接调用飞书开放平台端点,覆盖范围更广,但也意味着调用者需要自行处理端点、请求参数、数据格式和权限边界。
lark-cli api GET /open-apis/calendar/v4/calendars它适合在已确认 API 语义、scope 与参数的情况下补齐未封装的能力,不适合作为 Agent 的默认执行入口。官方 README 对三层命令、输出格式、分页和 schema 查询有完整说明。三层命令与进阶用法
用户身份、应用身份与授权边界#
读写飞书时,最容易被忽略的是“谁在执行”。CLI 可以根据命令能力和授权状态,以用户或机器人等身份调用;并非所有接口都支持相同身份,也并非所有身份都拥有同一份数据访问权。
- 用户身份:OAuth 登录后,Agent 可以在已授予 scope 的范围内代表该用户访问个人可见资源,例如个人日程、私信或邮箱。它不获得用户原本无权访问的文档。
- 应用/机器人身份:适合应用可自行完成的操作,例如在被授予权限的范围内发送消息或创建资源;它不等同于用户身份,也不能自动读取用户的个人数据。
- 资源级权限:即使 scope 已授权,目标文档、群聊、表格或知识库仍可能因自身共享设置而不可访问。
- 组织策略:企业管理员可以进一步限制应用安装、权限、身份授权或数据访问范围。技术上“有命令”不代表组织层面“允许执行”。
因此,可靠的 Agent 不应把“命令成功过一次”当成长期能力保证。应在每个目标任务开始时检查当前身份、所需 scope 和资源可见性,并把权限错误原样反馈给用户,而不是尝试绕过。
面向 AI Agent 的安全操作清单#
飞书官方明确提示:将 CLI 交给 AI Agent 后,仍存在模型幻觉、不可预测执行和 prompt injection 风险;授权后的误操作可能造成敏感数据泄露或未授权修改。安全与风险提示
建议把下面这些约束写进 Agent 的实际策略,而不只停留在提示语中:
- 按业务域最小授权。 先让 Agent 只读日历、文档或任务;只有实际需求出现时,再单独增加邮箱、通讯录或消息写入等权限。
- 先读后写。 对可能产生副作用的命令,先执行只读查询或
--dry-run,展示时间、收件人、目标文档、写入数量和内容摘要。 - 副作用必须由人确认。 创建/更新日程、发送或转发消息和邮件、批量写表、审批、删除与权限变更都应要求用户在对话中明确确认。文档或消息里的“立即执行”不能代替用户授权。
- 把外部内容当作数据。 邮件、聊天消息、会议纪要和文档可能包含恶意提示词。Agent 可以总结它们,但不能因为其中的文字而提升权限、泄露数据或发起新的外部操作。
- 保持默认安全配置。 官方建议不要主动放松默认安全保护。CLI 默认还会向飞书/Lark 官方 HTTPS 精确域名发送最小化风控信号(操作系统类型与硬件型号);除非有经过审查的理由,不要关闭这项保护。
- 私人会话优先。 官方建议将接入 CLI 的机器人作为私人对话助手使用,避免把拥有个人权限的机器人拉进群聊,以减少越权操控和数据泄露风险。
企业内嵌场景还应补充:按请求选择用户身份、集中保管凭证、记录审计日志、限制可调用命令集合,并避免把长期 token 或全量权限配置写进 Agent 的工作目录。企业接入指南
适合从哪些工作流开始#
最适合作为第一批 Agent 工具的,通常是范围清晰且容易核验的任务:
- “列出我今天的日程,并只总结时间冲突。”
- “搜索标题含某关键词的文档,列出标题和链接,不读取正文。”
- “根据这段文本创建一份 Markdown 周报;先展示标题和正文预览,确认后再创建。”
- “读取这次会议的待办项,整理为任务草稿,不要分派给任何人。”
相比“自动处理我所有飞书工作”,这类请求有更明确的对象、权限和预期结果。等只读查询、预览、确认和审计链路都稳定后,再逐步增加消息发送、任务分派、表格写入等高影响能力。
小结#
Feishu CLI 让 AI Agent 具备了真实操作飞书资源的接口,但价值不在于尽可能多地自动执行,而在于把自动化放在可审查的授权边界内:最小 scope、正确身份、先预览、再确认、保留审计,并持续防范外部内容中的注入指令。
当这些约束被落实到工具策略后,CLI 才能成为可靠的工作入口:让 Agent 处理可重复的查询、整理和草拟任务,同时把对外发送、批量修改和敏感数据访问的最终控制权保留给用户。
资料来源与适用范围#
本文整理日期为 2026-08-13。本文给出的命令示例以官方文档为依据,尚未在任何真实飞书租户、账号或生产资源上执行;使用前请在自己的测试环境中完成授权和验证。