用了 lark-cli 一个月,AI 操作飞书再也没出过岔子——说说真实体验

📅 2026/6/30 6:28:41
用了 lark-cli 一个月,AI 操作飞书再也没出过岔子——说说真实体验
de 很流畅地组织好了内容然后调用 lark-cli 发送。在它真的发出去之前终端里打出了一段 dry-run 预览——消息体、目标群组 ID、发送时间全部清清楚楚列在屏幕上等我确认。我看了一眼发现它把「后端研发群」的 chat-id 填对了但消息结尾多了一句「以上由 AI 生成如有错误请见谅」。我直接让 Claude 删掉那句话重新 dry-run确认没问题最后一条命令真正执行。整个过程没有一秒钟的惊慌。这和一个月前我第一次让 AI 操作飞书的感受完全不一样——那次我在 AI 发送前盯着屏幕屏住了呼吸生怕它群发给了整个部门。区别只在于一个开关--dry-run。飞书 CLI 是什么为什么 45 天拿到 1 万 Starlarksuite/cli是飞书团队今年 3 月 28 日开源的官方 CLI 工具GitHub 当前 star 数10.9k截至 2026-05-16 实测最新版本 v1.0.32Go 语言开发通过 npm 分发MIT 协议。一句话描述它的定位专为人类和 AI Agent 双重设计的飞书命令行工具。「专为 AI 设计」这几个字是认真的不是蹭热度。它配套了24 个结构化 AI Agent Skills可以直接通过npx skills add larksuite/cli -y -g安装到 Claude Code 或 Cursor 里让 AI 工具直接读懂怎么操作飞书的各个模块而不是靠 AI 自己从--help里猜。覆盖范围上17 个核心业务域200 精心封装命令底层可调用 2500 飞书 OpenAPI。图lark-cli 三层命令体系——Shortcuts前缀→ API 命令层 → 原始 API 层覆盖消息、文档、日历等 17 个业务域为什么能快速拿到 1 万 star中文职场 AI 工具这个赛道之前一直缺一个像样的「飞书 × AI Agent」基础设施。钉钉没有官方 CLI企业微信的机器人 API 裸调体验差Notion AI 又是英文产品。飞书团队这次直接出手把 2500 个 API 包成了 200 条能让人和 AI 直接用的命令还附带了 Skills 集成——这个组合在 3 月底发出来正好踩在 Claude Code 和 MCP 生态爆发的节点上。涨粉不是靠噱头靠的是真实填补了一个空缺。10 分钟装好并跑通第一条命令环境准备本文环境macOS / zsh / Node.js 18node --version验证Windows 用户PowerShell 同样支持但 JSON 参数格式有细节差异文末 FAQ 有说明前置确认已有飞书账号能正常登录Node.js ≥ 16node --version验证飞书开放平台有应用或能创建下面会引导安装 lark-clinpx larksuite/clilatest install这条命令会把lark-cli安装到全局安装完成后验证lark-cli --version预期输出类似lark-cli version 1.0.32初始化应用凭证lark-cli 需要一个飞书应用的 App ID 和 App Secret 来调用 API。如果你没有现成的应用去飞书开放平台新建一个「企业自建应用」5 分钟能搞定。lark-cli config init这条命令会进入交互式引导依次要求输入App IDcli_开头的字符串App Secret一长串字符应用所在飞书域名通常是默认值直接回车踩坑记录如果你的飞书是独立域名非 feishu.cn初始化时要手动改域名不能直接回车。公司用飞书的同学留意一下。授权登录lark-cli auth login --recommend--recommend参数会自动勾选常用权限范围消息、日历、文档等省去逐个确认的麻烦。执行后会弹出浏览器授权页用你的飞书账号登录点授权。登录完成后验证状态lark-cli auth status看到✓ Logged in as [你的名字]就说明全部搞定了。第一条命令查今天的日程lark-cli calendar agenda预期输出今天的会议列表包含时间、标题、参与者。如果日历是空的说明命令本身跑通了只是今天没有安排。可以加--next-day查明天的lark-cli calendar agenda --next-day注意前缀这是 lark-cli 的 Shortcuts 层——agenda是精心封装的快捷命令参数少、默认值合理、输出可读。和原始 API 命令相比这是推荐给日常使用的入口。三层命令体系为什么要设计这么复杂很多人装好之后就开始用前缀命令用着用着发现有些场景满足不了然后不知道该怎么办。理解这个三层结构能让你在碰壁的时候知道去哪里找答案。第一层Shortcuts前缀面向日常使用参数最少默认值最合理。覆盖 80% 的高频场景。例lark-cli calendar agenda lark-cli im messages-send --chat-id oc_xxx --text 周报已提交 lark-cli docs create --title 5月站会纪要 --markdown # 5月16日站会\n...第二层API 命令映射飞书 OpenAPI 里约 100 个最常用的端点参数完整支持分页、过滤等精细控制。当 Shortcuts 不够用时用这层lark-cli calendar calendars list lark-cli im messages list --chat-id oc_xxx --page-size 20第三层原始 APIlark-cli api直接调用任意飞书 OpenAPI 端点完全覆盖 2500 接口。这是兜底层理论上飞书文档里有的操作这里都能做lark-cli api GET /open-apis/calendar/v4/calendars lark-cli api POST /open-apis/im/v1/messages --body {receive_id:oc_xxx,msg_type:text,content:{\text\:\hello\}}对 AI 来说这个分层设计很聪明。AI 在用 Shortcuts 层的时候错误率最低因为封装好的参数少选错的可能性小。当 Shortcuts 不够用时AI 可以降级到 API 命令层最后才用原始 API——这个梯度和人类的使用习惯一样。核心场景演示发消息IM发消息是最高频的场景也是最怕 AI 搞错的场景。# 发送文本消息到某个群 lark-cli im messages-send \ --chat-id oc_a0553eeea09c272383c7c87de0b53f87 \ --text 今天的代码审查会议推迟到 16:30请注意 # 发送 Markdown 格式消息飞书支持富文本 lark-cli im messages-send \ --chat-id oc_xxx \ --msg-type interactive \ --text **会议提醒**\n\n 时间今天 16:30\n 地点6 楼会议室 Achat-id 怎么拿飞书 PC 端打开某个群URL 里有oc_开头的那串字符就是。踩坑记录--chat-id要填群的 ID不是群名称。很多人第一次用会把群名称直接填进去然后报「找不到会话」的错。查询和创建日历事件# 查今天日程最常用 lark-cli calendar agenda # 查指定日期范围 lark-cli calendar agenda --start-date 2026-05-16 --end-date 2026-05-20 # 输出为 CSV方便导入其他工具 lark-cli calendar agenda --format csv this-week-agenda.csv文档操作# 创建一个新文档用 Markdown 内容初始化 lark-cli docs create \ --title 2026-05-16 周报 \ --markdown # 本周进展\n\n## 完成事项\n- 功能 A 上线\n- Bug 修复 3 个\n\n## 下周计划\n- 功能 B 开发 # 读取某篇文档内容需要文档 token lark-cli docs content get --doc-token doxcnXXXXXX多维表格Base多维表格是飞书里最复杂的模块也是 AI 最容易出错的地方。# 查询某张表的记录 lark-cli base records-list \ --app-token bascnXXXXXX \ --table-id tblXXXXXX \ --page-size 20 # 新增一条记录 lark-cli base records-create \ --app-token bascnXXXXXX \ --table-id tblXXXXXX \ --fields {任务名称: 接入 lark-cli, 负责人: 码哥, 状态: 进行中}多维表格操作最好配合--dry-run使用下一节重点讲这个。dry-runAI 时代的「后悔药」这是整篇文章最想讲的一个机制。背景AI 操作办公系统最大的心理障碍是「不可逆」。发出去的消息收不回来写错的多维表格数据可能被别人看到误操作日历事件可能影响团队。这种不可逆性让很多人在 AI 真正能帮到他们的场景里踩了刹车。lark-cli 的--dry-run解决的就是这个问题。dry-run 的工作原理加上--dry-run参数后lark-cli 会完整构建 API 请求包括认证 token、请求体、目标端点把请求的所有参数以可读格式打印到终端不发送任何实际请求不改变任何数据lark-cli im messages-send \ --chat-id oc_a0553eeea09c272383c7c87de0b53f87 \ --text 今天的站会已结束会议纪要见文档链接 \ --dry-run输出类似[DRY RUN] POST /open-apis/im/v1/messages receive_id_type: chat_id receive_id: oc_a0553eeea09c272383c7c87de0b53f87 msg_type: text content: {text:今天的站会已结束会议纪要见文档链接} → 以上请求未执行。确认无误后去掉 --dry-run 重新运行。你可以在这个输出里核对群 ID 对不对、消息内容对不对、API 端点对不对——全部确认后再去掉--dry-run执行真实操作。图dry-run 工作流——AI 生成命令后先预览人确认内容无误再执行适合所有有副作用的操作什么时候必须用 dry-run不是所有命令都有副作用查询操作不需要 dry-run。以下这几类必须先 dry-run操作类型典型命令为什么必须 dry-run发送消息im messages-send发出去收不回群发更是灾难创建/修改文档docs create内容错了所有人都能看到多维表格写入base records-create数据格式错了可能影响整个表日历事件创建calendar events create发邀请给错误的人是社交事故任务创建/修改task create指派给了错误负责人查询类操作agenda、base records-list、docs content get不改变任何数据不需要 dry-run。在 AI 工作流里使用 dry-run当你让 Claude Code 帮你操作飞书时正确的工作流是你帮我把今天的站会纪要发到后端研发群内容是 [xxx] Claude我来构建这条发送命令先 dry-run 给你确认一下 [Claude 执行 lark-cli im messages-send ... --dry-run] 输出 receive_id: oc_a0553eeea09c272383c7c87de0b53f87 ← 后端研发群 ✓ content: 今天站会纪要... ← 内容 ✓ 你确认发送 Claude[去掉 --dry-run 执行真实发送]这个流程的关键在Claude 不应该跳过 dry-run 直接执行有副作用的操作。如果你发现 Claude 在没有确认的情况下直接发消息可以在 Claude Code 的 CLAUDE.md 里加一条 rule「调用 lark-cli 执行任何写入操作前必须先 dry-run 并等待我确认」。与 Claude Code 集成Skills 是核心安装 CLI 只是第一步。让 Claude Code 真正「懂飞书」需要安装配套的 AI Agent Skills。安装 Skillsnpx skills add larksuite/cli -y -g这条命令会把 24 个飞书 Skills 安装到你的全局 Claude Code Skills 目录。安装完成后重启 Claude Code让它重新加载 Skills 定义。Skills 做了什么每个 Skill 文件SKILL.md里描述了这个模块有哪些可用命令每个命令的参数说明和典型使用场景常见报错的处理方式什么时候用 user identity以你自己的身份操作什么时候用 bot identity以应用 bot 的身份操作24 个 Skills 覆盖的核心模块lark-shared认证、配置、身份切换这是「总闸」lark-calendar日历和日程管理lark-im消息发送和群聊管理lark-doc文档读写和 Markdown 转换lark-drive云盘文件管理lark-base多维表格操作lark-sheets电子表格lark-task任务管理lark-mail邮件lark-wiki知识库... 以及会议、审批、考勤、OKR 等图24 个 Skills 的组织结构——lark-shared 管理认证和权限业务 Skills 覆盖 11 个核心域user identity vs bot identity这个坑你早晚会踩这是我用了一个多月之后最想单独拿出来说的一点。lark-cli 支持两种身份执行命令# 以你自己的账号身份操作默认 lark-cli calendar agenda --as user # 以应用 Bot 的身份操作 lark-cli im messages-send --chat-id oc_xxx --text xxx --as bot什么时候用 user identity查询自己的日程、文档、任务——需要基于你的个人权限创建只属于你的内容什么时候用 bot identity向群发通知——Bot 可以主动发消息给非好友批量操作——Bot 的权限范围更可控不会误碰个人数据CI/CD 场景——Bot token 不过期比用户 token 更稳定混用会出什么问题最常见的情况是用 user identity 向某个群发消息结果发现自己没有加那个群或者没有向群发消息的权限。用 bot identity 查询个人日程结果返回的是 Bot 账号下空空如也的日程表。Skills 里对这个有详细说明但如果你让 Claude 操作时发现权限报错第一个要检查的就是--as参数。实战让 Claude 帮你写周报并发送装好 Skills 之后Claude Code 可以处理这样的自然语言请求我帮我生成这周的周报。这周完成的事情 1. 完成了支付模块的接口改造接口响应时间从 320ms 降到 85ms 2. 修复了 3 个 P2 级 Bug 3. 完成了代码审查 5 次 周报格式按公司模板发到文档里然后把文档链接发到后端研发群。Claude 会依次用lark-cli docs create创建周报文档先 dry-run 确认拿到文档 URL用lark-cli im messages-send发链接到群先 dry-run 确认整个过程两次确认没有意外。常见问题Q安装后lark-cli命令找不到提示 command not found大概率是 npm 全局 bin 目录没在 PATH 里。运行npm config get prefix拿到 npm 前缀路径然后把{prefix}/bin加到你的 shell 配置文件~/.zshrc或~/.bashrc里的PATH变量重新 source 一下就好。Qlark-cli config init的 App ID 和 App Secret 去哪里拿飞书开放平台open.feishu.cn→ 创建一个「企业自建应用」→ 应用凭证里有 App ID 和 App Secret。如果公司没有开放平台权限联系飞书企业管理员帮你创建一个测试应用。Qdry-run 之后如何执行真实操作原来的命令要全部重敲吗直接在原命令基础上去掉--dry-run即可。在终端里用上键调出历史命令删掉--dry-run执行比重敲快得多。Claude Code 会帮你管理这个流程通常不需要手动操作。QWindows 上运行 JSON 参数时报错怎么处理Windows PowerShell 的单引号和双引号处理和 Unix 不同。JSON 参数建议写成文件# 把 JSON 写到临时文件 echo {任务名称: xxx} params.json lark-cli base records-create --app-token xxx --table-id xxx --fields (cat params.json)官方文档里有 Windows 专项说明版本 1.0.x 后期会改善这个问题。QAI Agent Skills 安装后 Claude Code 没有反应首先确认npx skills add larksuite/cli -y -g执行成功然后完全重启 Claude Code不只是重开窗口是彻底关掉重开。Claude Code 在启动时才会加载 Skills 定义已运行的进程不会热更新。