飞书开发方式颗粒度对比

同一个任务,四种打开方式。

用同一个真实任务走一遍 API、CLI、MCP、SKILL,帮你建立选型直觉。

B站评论 飞书表格 群通知

API

最细颗粒度。

每次调用只做一件事,一个 HTTP 请求 = 一个原子操作。

1 创建电子表格 1× API
POST /open-apis/sheets/v3/spreadsheets Authorization: Bearer t-xxx { "title": "B站视频评论 - BV1ooDyBmE6v" } → 返回 spreadsheet_token
2 写入表头 1× API
PUT /open-apis/sheets/v2/spreadsheets/{token}/values Range: Sheet1!A1:H1 Body: [["序号","用户名","等级","评论内容","点赞数","发布时间","回复数","是否一级"]]
3 批量写入数据 1× API
PUT /open-apis/sheets/v2/spreadsheets/{token}/values Range: Sheet1!A2:H51 Body: [[1,"lmpker",6,"不错",79,"2026/04/12",8,"yes"], ...]
4 设置列宽 1× API
PUT /open-apis/sheets/v2/spreadsheets/{token}/dimension_range Body: {"dimension": {...}, "dimensionProperties": {"fixedSize": 20}}
5 获取群聊信息 1× API
GET /open-apis/im/v1/chats?page_size=20&query_type=group → 返回 chat_id
6 发送飞书消息 1× API
POST /open-apis/im/v1/messages?receive_id_type=chat_id Body: { "receive_id": "oc_xxxx", "msg_type": "interactive", "content": "{...卡片消息 JSON...}" }
6
次 API 调用
0
AI Token 开销
×处理 OAuth 鉴权 token 刷新
×手动管理 spreadsheet_token、sheet_id、chat_id 等中间状态
×拼接请求 URL、构造 JSON body、解析响应
×处理分页、限流、错误重试

CLI

中颗粒度。

一条 CLI 命令封装了多次 API 调用 + 状态管理 + 错误处理。

1 创建表格并写入数据 2× CLI
# +create 内部:创建表格 API + 设置列宽 API lark-cli sheets +create \ --title "B站视频评论 - BV1ooDyBmE6v" \ --headers '["序号","用户名","等级","评论内容",...]' \ --data '[[1,"lmpker",6,"不错",79,...], ...]' # +append 内部:写入值 API(自动处理分页) lark-cli sheets +append \ --spreadsheet-token "A0StsA30qh..." \ --sheet-id "eb15be" \ --range "A52:H101" \ --values '[[51,...],[52,...],...]'
2 发送飞书消息 1× CLI
# 内部:查找群聊 API + 发消息 API lark-cli im +send \ --chat-name "产品群" \ --msg "已采集 170 条B站评论,已写入飞书表格"
3
条 CLI 命令
~0
AI Token 开销
不用关心 OAuth token 刷新
不用手动拼接 URL 和 JSON body
不用管理中间状态

MCP

粗颗粒度。

一个 MCP tool 封装了整个业务流程,AI 只需一次调用。

T Tool 定义 JSON Schema
{ "name": "bilibili_comments_to_feishu", "description": "采集B站视频评论并写入飞书表格", "parameters": { "bv_id": {"type": "string"}, "limit": {"type": "number", "default": 100}, "notify_chat": {"type": "string"} } }
AI 调用:一次搞定 1× MCP
{ "tool": "bilibili_comments_to_feishu", "input": { "bv_id": "BV1ooDyBmE6v", "limit": 100, "notify_chat": "产品群" } }
1
次 MCP 调用
5K–30K+
tokens / 每轮对话
Token 隐性成本
MCP 协议要求每轮对话都注入所有已注册 tool 的完整 schema
单个 tool
~200
1 个 Server
20–50 tools
5K–15K
多个 Server
飞书+GitHub+Slack
30,000+
普通对话
4K–8K tokens

每轮都要重复发送,无论是否调用任何 tool

SKILL

编排层。

SKILL 不是接口,不是协议,而是一份操作手册。
告诉 AI 如何组合 CLI / MCP / API 完成任务。

SKILL: bilibili-comment-crawler ├── SKILL.md (操作手册) │ ├── 采集:python3 scripts/bilibili_comments.py --cookie ... │ ├── 创建表格:lark-cli sheets +create --title "..." │ └── 通知群聊:lark-cli im +send --chat-name "..." ├── scripts/bilibili_comments.py (Python 采集脚本) │ └── 内部调用 curl → B站 API (3–6 次) └── cookie.json (配置文件)
0
未触发时 Token
~2K
触发时加载一次
未触发时不消耗 Token,只在匹配任务时加载
!依赖 AI 执行能力,复杂编排可能出错
!SKILL.md 需要维护,底层接口变了要同步更新

对比

总览。

以"B站评论 → 飞书表格"这个任务为例。

方式调用AI 开销灵活性安全性稳定性成本
API 6 次 0 最高 最低 最低
CLI 3 条 ~0
MCP 1 次 5K–30K+ 最高 最高
SKILL 1 次 ~2K 最高 取决于底层 取决于底层

组合

SKILL 的组合模式。

SKILL 是编排层,组合底层能力。同一个任务可以用不同的底层实现。

多个 API
人工写每个 curl,最灵活最累
SKILL=API× N
1 个 MCP
直接调一个 MCP tool,最省事
SKILL=MCP
混合模式
灵活操作走 CLI,权限操作走 MCP
SKILL=CLI+MCP
嵌套编排
高级 SKILL 编排子 SKILL
SKILL=SKILL+SKILL

选型指南

如何选择。

一句话:默认从 SKILL + CLI 开始。

默认推荐:SKILL + CLI。 SKILL 编排,CLI 执行。

场景推荐原因
AI 自由组合工具CLI管道符组合,非预置流程
企业部署,权限控制MCPtool 白名单,预置流程
多步复杂工作流SKILL + CLISKILL 编排,CLI 执行
偶尔调用固定能力MCP一次调用搞定
共享给团队SKILL文档 + 脚本 = 完整能力包

核心比喻

🧱
API
砖块
🏗
CLI
预制板
🏠
MCP
精装房
📋
SKILL
施工方案

砖块最灵活但最累,精装房最省事但最难改。
施工方案指挥用哪些材料、按什么顺序组装。