一句话结论:把飞书交给 AI,不是让它学会点窗口,而是给它一条硬规则——国内版、官方 CLI、身份显式、对象唯一、写入幂等、结果回读。
什么时候用
你希望 AI 帮你找人、发消息、查任务、读文档、改知识库、排日程或处理审批时,用这套方法。
如果只是让飞书里的一句话进入 Codex,那是消息通道,走 WebSocket、事件订阅或可靠网关;如果 AI 要真的操作飞书里的业务资源,才进入本文的 CLI 控制面。两层可以配合,不能混成“遥控飞书客户端”。
本文默认你使用中国大陆版飞书。国际版 Lark 的账号和端点不同,不要混用。验证码、实名、付款、法律确认和不可逆高风险动作仍由本人处理;普通 OAuth、Scope 补齐和 Token 刷新,可以按你预先写下的授权规则交给 AI 静默完成。
怎么做
1. 先锁国内版,不要让 AI 猜
安装官方 CLI:
npx @larksuite/cli@latest install
lark-cli --version
初始化时显式写 feishu,并给工作账号一个稳定配置名:
lark-cli config init --new --brand feishu --name work
看到 accounts.feishu.cn、open.feishu.cn 或 mcp.feishu.cn 才是国内版链路。若出现国际版 Lark 端点,先修配置,不要带着错误品牌继续授权。
2. 先选身份,再选命令
| 你想做什么 | 身份 | 关键前提 |
|---|---|---|
| 以本人名义发消息、读本人日历、云盘、邮箱 | --as user | 应用后台 Scope + 本人 OAuth,两层都要有 |
| 让应用机器人发通知、管理机器人可见资源 | --as bot | 应用后台 Scope,不需要本人 OAuth |
| 上一步用哪种身份拿到 ID,下一步继续消费 | 沿用原身份 | 每条命令都显式写 --as,不依赖默认值 |
权限报错不是切换身份的理由。本人权限不足,就补本人权限;机器人权限不足,就补机器人 Scope。偷偷换身份,也许命令会成功,但发信人、资源归属和可见范围已经变了。
3. 一次授权,分层验收
如果目标就是把常用飞书域一次打通:
lark-cli auth login --profile work --domain all --no-wait --json
命令会返回国内版授权地址。AI 能在已经登录的受管浏览器中完成普通同意,就直接完成;遇到验证码、实名或只能由本人做的身份确认,再只交还那一个闸门。授权结束后,不要凭“网页显示成功”收工:
lark-cli auth status --profile work --json --verify
lark-cli doctor --profile work
lark-cli auth check --profile work --scope "im:message.send_as_user contact:user:search"
这里要分清三件事:应用后台已经开通 Scope、当前用户已经 OAuth、目标文档或群对当前身份有 ACL。前两项全开,也不会自动得到每一份私有资源。
4. 找到唯一对象,再写入
同名联系人不能靠猜。先用本人身份搜索,并尽量加“聊过、内部成员”等过滤:
lark-cli contact +search-user \
--profile work \
--query "张三" \
--has-chatted \
--exclude-external-users \
--as user \
--json
只有姓名、组织、是否聊过和 open_id 能共同锁定唯一对象时才继续。群聊同理:最终发送使用精确 chat_id,不用群名临时再猜一次。
先预演:
lark-cli im +messages-send \
--profile work \
--user-id "ou_xxx" \
--text "今晚 7 点见。" \
--as user \
--idempotency-key "source-msg-20260812-001" \
--dry-run
确认收件人、正文和身份后,用同一个幂等键去掉 --dry-run 真正发送。幂等键来自稳定的来源消息 ID 或任务 ID,不能每次重试都随机换一个。
发送成功会返回 message_id。最后按这个 ID 回读:
lark-cli im +messages-mget \
--profile work \
--message-ids "om_xxx" \
--as user \
--json
回读里的发件人、收件会话和正文都一致,才叫送达闭环。CLI 超时、返回未知或回读不一致时停止,不自动重发,也不回退机器人或客户端界面。
容易踩坑
- 把飞书当成 Lark。网页能打开,不代表 OAuth 和 API 会落到同一租户。
- 只看“521 项权限已开”。应用 Scope、用户 OAuth、资源 ACL 是三层,不能互相代替。
- 省略
--as。CLI 可能按默认配置选身份,结果由机器人发出,或资源归机器人所有。 - 用名字直接发。重名、外部联系人和历史会话都可能让“张三”不是你以为的张三。
- 发送超时就重试。没有稳定幂等键和回读时,最容易制造重复消息。
- CLI 报错就点客户端。界面点击难审计、难幂等、难回读,也会抢走正在使用的键盘和鼠标。
- 把“豆豆全权处理”理解成无边界。授权自治解决的是少打扰,不是取消付款、法律、不可逆删除和身份硬闸。
验收标准
lark-cli auth status --json --verify显示目标用户已验证,Token 有效。lark-cli doctor通过,端点属于国内版飞书。- 关键 Scope 用
auth check逐项通过;具体资源 ACL 另行实测。 - 联系人或群只命中一个精确对象,不靠名字猜。
- 写操作能 dry-run,创建或发送带稳定幂等键。
- 成功后按返回 ID 回读,身份、对象和内容一致。
- 失败时真实停止,没有机器人代发、界面补点、未知投递重试或重复消息。
可复用提示词
把下面这段写进 AI 的全局规则,只需一次:
以后所有飞书事项都按中国大陆版执行,统一使用官方 lark-cli / OpenAPI,客户端界面遥控默认禁用。
联系人、群、消息、任务、文档、知识库、多维表格、日历、会议、审批、邮箱、权限和附件都先走 CLI。初始化显式使用 brand=feishu,不得混用国际版 Lark 端点。
每条命令必须显式选择 --as user 或 --as bot,并让身份贯穿整条工作流。以我本人名义操作时使用 user;权限不足就修原身份的 Scope、OAuth 或资源 ACL,不得换机器人绕过,也不得退回界面点击。
写入前解析唯一对象;支持时先 dry-run;创建或发送使用稳定幂等键;成功后按返回 ID 回读。重名、权限不足、投递未知或回读不一致时停止,不自动重发。
普通 OAuth、Scope、Token 刷新和资源访问授权,在当前明确业务目标内由你静默判断并完成,不要打扰我。验证码、实名/活体、银行卡与真实付款、法律确认、不可逆删除,以及 CLI 明确标为 high-risk-write 的动作,仍保留本人硬闸。
最后只告诉我:做成了什么、用的身份、回读证据和剩余风险;不要汇报中间过程。
以后日常只要自然说:
用我的飞书身份找到腾龙网维里和我聊过的张三,先确认唯一对象,再把“今晚 7 点见”发给他。全程 CLI,dry-run、幂等发送并回读;如果对象不唯一或投递未知就停。
来源与修订
安装、认证、user / bot 身份、命令层级、JSON 成功信封和 dry-run 以飞书官方维护的 larksuite/cli 仓库为准;Scope、OAuth、资源 ACL、授权拆分和高风险写入边界以官方 lark-shared Skill 为准。企业需要接入自己的凭据库、审计或请求拦截时,参考飞书开放平台的 CLI Agent 嵌入文档。
本文命令于 2026 年 8 月 12 日按官方 lark-cli 1.0.86 实测。CLI 仍会更新,具体命令以本机 --help 和官方文档为准;租户管理员审批、组织策略和具体资源 ACL 不会因为复制本文而自动放开。
还没有评论。欢迎留下第一句。