Feishu CLI Skills:能力全表与 iuv-cli 设计参考

This article is extracted from the chat log with AI. Please identify it with caution.

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.68skills 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;高风险写操作要求额外确认。readwritehigh-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 的实际策略,而不只停留在提示语中:

  1. 按业务域最小授权。 先让 Agent 只读日历、文档或任务;只有实际需求出现时,再单独增加邮箱、通讯录或消息写入等权限。
  2. 先读后写。 对可能产生副作用的命令,先执行只读查询或 --dry-run,展示时间、收件人、目标文档、写入数量和内容摘要。
  3. 副作用必须由人确认。 创建/更新日程、发送或转发消息和邮件、批量写表、审批、删除与权限变更都应要求用户在对话中明确确认。文档或消息里的“立即执行”不能代替用户授权。
  4. 把外部内容当作数据。 邮件、聊天消息、会议纪要和文档可能包含恶意提示词。Agent 可以总结它们,但不能因为其中的文字而提升权限、泄露数据或发起新的外部操作。
  5. 保持默认安全配置。 官方建议不要主动放松默认安全保护。CLI 默认还会向飞书/Lark 官方 HTTPS 精确域名发送最小化风控信号(操作系统类型与硬件型号);除非有经过审查的理由,不要关闭这项保护。
  6. 私人会话优先。 官方建议将接入 CLI 的机器人作为私人对话助手使用,避免把拥有个人权限的机器人拉进群聊,以减少越权操控和数据泄露风险。

企业内嵌场景还应补充:按请求选择用户身份、集中保管凭证、记录审计日志、限制可调用命令集合,并避免把长期 token 或全量权限配置写进 Agent 的工作目录。企业接入指南

适合从哪些工作流开始#

最适合作为第一批 Agent 工具的,通常是范围清晰且容易核验的任务:

  • “列出我今天的日程,并只总结时间冲突。”
  • “搜索标题含某关键词的文档,列出标题和链接,不读取正文。”
  • “根据这段文本创建一份 Markdown 周报;先展示标题和正文预览,确认后再创建。”
  • “读取这次会议的待办项,整理为任务草稿,不要分派给任何人。”

相比“自动处理我所有飞书工作”,这类请求有更明确的对象、权限和预期结果。等只读查询、预览、确认和审计链路都稳定后,再逐步增加消息发送、任务分派、表格写入等高影响能力。

小结#

Feishu CLI 让 AI Agent 具备了真实操作飞书资源的接口,但价值不在于尽可能多地自动执行,而在于把自动化放在可审查的授权边界内:最小 scope、正确身份、先预览、再确认、保留审计,并持续防范外部内容中的注入指令。

当这些约束被落实到工具策略后,CLI 才能成为可靠的工作入口:让 Agent 处理可重复的查询、整理和草拟任务,同时把对外发送、批量修改和敏感数据访问的最终控制权保留给用户。

资料来源与适用范围#

本文整理日期为 2026-08-13。本文给出的命令示例以官方文档为依据,尚未在任何真实飞书租户、账号或生产资源上执行;使用前请在自己的测试环境中完成授权和验证。

本文共 8375 字,创建于 Aug 13, 2026

相关标签: Tools, AI, Agent, CLI, ByAI