【Python × 深度学习 × Agent 系列·第四篇】Agent 异步编程:async/await 原理、并发 LLM 调用、流式输出与 FastAPI 集成
【开源观察】飞书 CLI 45 天破万星:AI 操作可见可控,MCP 黑箱给不了的透明感
导语:飞书开源命令行工具 lark-cli,45 天 GitHub 破万星,成为国内首个万星办公套件开源项目。但比星标数字更有说服力的是——主干代码已合并 10 位外部开发者的 PR,而钉钉和企业微信是零。lark-cli 让 AI 通过命令行直接操作飞书,建群、建文档、发消息、查日历,每一步都可预览、可审查。这种"透明感"是 MCP 黑箱模式给不了的,也是开发者放心把任务交给 AI Agent 的前提。1 万星和 10 个外部 PR,这组数字比任何 PR 稿都诚实。

文章目录
一、为什么办公套件突然都在做 CLI?
2026 年 3 月,三天之内,钉钉、飞书、企业微信相继开源了各自的 CLI 工具。这不是巧合,而是一个信号:办公套件正在为 AI Agent 时代重新设计接口。
为什么?因为 AI Agent 操作 GUI 太难了——按钮位置会变、弹窗不可预测、操作无法回滚。但 CLI 天然就是 Agent 友好的:
| 维度 | GUI | MCP | CLI |
|---|---|---|---|
| Agent 可操作性 | ❌ 需要视觉识别 | ⚠️ 受限于 MCP Server 能力 | ✅ 文本命令,天然可解析 |
| 操作可预览 | ❌ 不可预览 | ❌ 黑箱执行 | ✅ --dry-run |
| 过程可审查 | ❌ 无日志 | ⚠️ 部分有日志 | ✅ 终端完整输出 |
| 权限可控性 | ⚠️ 粗粒度 | ⚠️ 全有或全无 | ✅ 精确到单条命令 |
| 可组合性 | ❌ 不可组合 | ⚠️ 有限 | ✅ 管道 + 脚本 |
| Token 消耗 | — | ⚠️ 高(JSON Schema) | ✅ 低(纯文本) |
CLI 不是退回到命令行时代,而是为 AI Agent 开了一扇门——一扇透明、可控、可审计的门。
二、lark-cli 是什么?三层架构 + 200 命令
lark-cli 是飞书官方开源的命令行工具,由 larksuite 团队维护,npm 包名 @larksuite/cli。
2.1 三层架构
lark-cli 最精妙的设计是三层命令架构,让不同复杂度的任务走不同层级:

| 层级 | 名称 | 特点 | 适用场景 | Token 消耗 |
|---|---|---|---|---|
| 第一层 | Shortcuts(快捷命令) | 人类 & AI 友好,语义化 | “建个群”、“发个消息” | 最低 |
| 第二层 | API Commands(API 命令) | 与平台 API 同步,精确控制 | 标准业务操作 | 中等 |
| 第三层 | Raw API(原始 API) | 2500+ 端点全覆盖 | 复杂/非标操作 | 最高 |
为什么三层? 因为 AI Agent 的 Token 是按上下文长度计费的。一个 Shortcut 命令 lark chat create --name "项目组" 只需要几十个 Token,但如果用 Raw API,需要构造完整的 HTTP 请求体,Token 消耗翻 10 倍。三层架构让简单任务保持低 Token,复杂任务不失灵活性。
2.2 覆盖范围
11 大业务域,200+ 命令,19 个 AI Agent Skills:
| 业务域 | 典型命令 | AI Skill |
|---|---|---|
| 消息 Messenger | lark message send |
自动选择群聊/个人 |
| 文档 Docs | lark doc create |
根据描述生成文档 |
| 多维表格 Base | lark base create |
自动建表+填充数据 |
| 表格 Sheets | lark sheet read |
数据分析+图表 |
| 幻灯片 Slides | lark slide create |
根据大纲生成 PPT |
| 日历 Calendar | lark calendar list |
智能安排会议 |
| 邮件 Mail | lark mail send |
智能起草邮件 |
| 任务 Tasks | lark task create |
自动拆分+分配 |
| 会议 Meetings | lark meeting create |
一键创建会议 |
| 知识库 Wiki | lark wiki search |
语义搜索知识库 |
| Markdown | lark md convert |
Markdown ↔ 飞书文档 |
三、核心亮点:--dry-run 让 AI 操作可见可控
3.1 为什么"可见"这么重要?
想象这个场景:你让 AI Agent “把项目周报发给全组”。在 MCP 模式下,Agent 直接调用 API 执行——你不知道它发了什么内容、发给了谁、发到了哪个群。如果发错了,撤回都来不及。
lark-cli 的 --dry-run 彻底解决了这个问题:
# AI Agent 执行的命令
$ lark message send --chat "项目组" --text "本周进度:v2.0 已发布,bug 修复 12 个"
# --dry-run 输出(不实际执行)
[dry-run] 将执行以下操作:
→ 目标群聊: 项目组 (chat_id: oc_xxxxx)
→ 消息内容: "本周进度:v2.0 已发布,bug 修复 12 个"
→ 消息类型: text
确认执行? (y/n):
每一步操作都摊在终端里,你可以:
- 预览:看到 Agent 要做什么,再决定是否放行
- 审查:检查目标对象、内容、操作类型是否正确
- 拦截:发现不对,直接 n 掉,零损失
- 回溯:终端日志完整记录,出问题可追溯
3.2 MCP 黑箱 vs CLI 透明

这两种范式的本质区别是信任模型不同:
| 维度 | MCP 模式 | CLI 模式 |
|---|---|---|
| 信任模型 | 先执行,后知道 | 先知道,后执行 |
| 操作可见性 | ❌ 云端黑箱 | ✅ 本地终端 |
| 人工介入点 | 执行后(可能已晚) | 执行前(--dry-run) |
| 审计能力 | ⚠️ 依赖 MCP Server 日志 | ✅ 终端输出即日志 |
| 错误恢复 | ⚠️ 需要额外操作 | ✅ 不确认就不执行 |
一句话总结:MCP 是"先斩后奏",CLI 是"先看后做"。对于涉及消息发送、文档修改、权限变更等不可逆操作,"先看后做"才是正确的信任模型。
四、实战:5 分钟让 AI Agent 操作飞书
4.1 安装与初始化
# 安装 lark-cli
npm install -g @larksuite/cli
# 初始化(扫码授权)
lark auth login
# 验证安装
lark --version
# 输出: @larksuite/cli 2.x.x
初始化过程会打开浏览器让你扫码授权。授权后,lark-cli 获得一个 OAuth token,后续所有操作都基于这个 token。token 存在本地,不上传云端。
4.2 基础操作示例
# 查看今日日历
$ lark calendar list --today
📅 2026-05-15
09:00-09:30 站会 (每日重复)
10:00-11:00 产品评审 (会议室 A)
14:00-15:30 技术方案讨论 (线上)
# 发送消息(带 dry-run)
$ lark message send --chat "技术组" --text "v2.1 已部署到预发环境"
[dry-run] 将向「技术组」发送: "v2.1 已部署到预发环境"
确认? y
✓ 消息已发送
# 创建文档
$ lark doc create --title "Q2 技术规划" --folder "技术文档"
✓ 文档已创建: https://feishu.cn/docx/xxxxx
# 查询多维表格
$ lark base read --app "项目看板" --filter "status=进行中"
| 任务名 | 负责人 | 截止日期 |
|-----------|--------|-----------|
| 用户模块重构 | 张三 | 2026-05-20 |
| API 网关升级 | 李四 | 2026-05-25 |
4.3 与 Claude Code 集成
lark-cli 最强大的用法是和 AI Coding Agent 配合。在 Claude Code 中:
# 在 Claude Code 对话中直接使用
> 帮我查一下明天有什么会议
# Claude Code 自动执行:
$ lark calendar list --tomorrow
# 或者更复杂的任务
> 把这个代码审查结果发到飞书技术群
# Claude Code 自动执行:
$ lark message send --chat "技术组" --text "代码审查结果:..."
Claude Code 会自动识别 lark-cli 命令,并在执行前展示 --dry-run 结果让你确认。
4.4 与 Cursor 集成
Cursor 同样支持。安装 lark-cli 后,在 Cursor 的 Agent 模式中:
> 帮我创建一个飞书文档,把当前项目的 README 内容填进去
# Cursor 自动执行:
$ lark doc create --title "项目说明" --content "$(cat README.md)"
4.5 自定义 AI Skill
lark-cli 内置了 19 个 AI Skill,但你也可以自定义:
# ~/.lark/skills/daily-standup.yaml
name: daily-standup
description: 自动收集昨日工作并发送站会消息
steps:
- action: calendar list
args: { range: "yesterday" }
- action: task list
args: { assignee: "me", status: "completed" }
- action: message send
args:
chat: "站会群"
template: |
昨日完成:
{{#each completed_tasks}}
- {{this.name}}
{{/each}}
今日计划:
{{#each today_events}}
- {{this.title}} ({{this.start_time}})
{{/each}}
# 执行自定义 Skill
$ lark skill run daily-standup --dry-run
[dry-run] 将执行 3 步操作:
1. 获取昨日日历事件
2. 获取已完成任务列表
3. 向「站会群」发送站会消息
确认? y
✓ 站会消息已发送
五、开源生态:10 个外部 PR 说明什么?
5.1 数字背后的真相

| 指标 | 飞书 lark-cli | 钉钉 ding-cli | 企微 wecom-cli |
|---|---|---|---|
| GitHub Stars | 10,200+ | 1,800 | 460 |
| 外部 PR 合并 | 10 个 | 0 个 | 0 个 |
| 外部贡献者 | 10 人 | 0 人 | 0 人 |
| 命令数量 | 200+ | 80+ | 30+ |
| 业务域覆盖 | 11 个 | 6 个 | 3 个 |
--dry-run |
✅ | ❌ | ❌ |
| AI Skills | 19 个 | 5 个 | 0 个 |
| 三层架构 | ✅ | ❌ | ❌ |
10 个外部 PR 意味着什么? 意味着这个项目不是"甩出去就不管"的甩开式开源,而是真正有开发者在用、在改、在贡献。外部贡献者提交了新命令、修复了 Bug、改进了文档——这些是真金白银的社区活跃度指标。
钉钉和企微的零 PR 则说明:项目虽然开源了,但社区还没建立起来。可能是因为功能覆盖不够、文档不够友好、或者贡献门槛太高。
5.2 为什么飞书的生态最好?
三个原因:
- 先发优势 + 功能覆盖:200+ 命令覆盖 11 个业务域,开发者想做的操作基本都有现成命令
--dry-run降低贡献门槛:贡献者可以安全地测试新命令,不用担心误操作- 三层架构降低开发门槛:Shortcut 层封装了常用操作,贡献者不需要理解底层 API 就能添加新命令
六、一句话指令驱动完整项目流程
lark-cli 的终极愿景是:一句话指令,驱动完整项目流程。
想象这个场景:
你: "启动 Q3 项目,建群、建文档、排会议、分配任务"
AI Agent 自动执行:
✓ 创建「Q3项目组」群聊,拉入 8 位成员
✓ 创建「Q3技术规划」文档,填入模板
✓ 创建「Q3启动会」日历事件,邀请全员
✓ 在项目看板创建 5 个任务,分配给对应负责人
✓ 发送项目启动通知到技术大群
每一步都有 --dry-run 预览,每一步都可以审查和拦截。AI 做了 5 件事,你只需要确认 5 次。 比手动操作快 10 倍,比 MCP 黑箱安全 10 倍。
七、适用场景与建议
7.1 适合谁?
| 用户类型 | 使用方式 | 推荐度 |
|---|---|---|
| AI Agent 开发者 | 集成到 Agent 工具链 | ✅ 强烈推荐 |
| 飞书重度用户 | 日常操作自动化 | ✅ 推荐 |
| 团队管理者 | 项目流程自动化 | ✅ 推荐 |
| 轻度飞书用户 | 偶尔用 CLI 操作 | ⚠️ 收益有限 |
7.2 最佳实践
- 先开
--dry-run:所有操作先预览,确认无误再实际执行 - 从 Shortcut 层开始:不要一上来就用 Raw API,Shortcut 够用且 Token 省
- 自定义 Skill:把重复操作封装成 Skill,一键执行
- 配合 AI Agent:lark-cli + Claude Code / Cursor = 飞书自动化最强组合
- 关注更新:lark-cli 更新频繁,新命令和新 Skill 持续增加
7.3 注意事项
- 权限最小化:只授权必要的权限,不要全量授权
- 敏感操作加确认:消息发送、文档删除等不可逆操作,务必开启
--dry-run - Token 安全:OAuth token 存在本地,不要提交到 Git 仓库
- 版本锁定:生产环境建议锁定 lark-cli 版本,避免更新引入 Breaking Change
八、总结
lark-cli 的核心价值不是"又一个 CLI 工具",而是为 AI Agent 操作办公套件建立了一种新的信任模型:
可见,所以可信。可控,所以敢用。
MCP 模式的黑箱操作让开发者不敢把关键任务交给 AI——因为你不知道它在云端做了什么。lark-cli 把每一步操作都摊在终端里,让你在放行之前就能看到、审查、拦截。这种透明感,才是 AI Agent 真正融入工作流的前提。
45 天万星、10 个外部 PR、200+ 命令、11 个业务域——这组数字比任何 PR 稿都诚实。飞书在 AI Agent 时代的开放姿态,值得所有办公套件学习。
项目地址:github.com/larksuite/cli
官方文档:open.feishu.cn/document/mcp_open_tools/feishu-cli
如果觉得这篇观察对你有启发,欢迎点赞 + 收藏 + 关注,你的支持是我持续创作的动力!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)