Skill 清单
架构总览
Skill / Tool 汇总
| 层级 | 名称 | 描述 | 底层飞书 API | 权限 Scope | 状态 |
|---|---|---|---|---|---|
| A | feishu_bitable Skill | 飞书多维表格 AI 对话技能 | — | — | 🔲 待开发 |
| B | query_bitable | 按条件查询多维表格记录 | POST /bitable/v1/apps/:app_token/tables/:table_id/records/search | base:record:retrieve / bitable:app:readonly | 🔲 待开发 |
| B | create_bitable_record | 新建一条记录 | POST /bitable/v1/apps/:app_token/tables/:table_id/records | base:record:create / bitable:app | 🔲 待开发 |
| B | update_bitable_record | 更新指定记录的字段值 | PUT /bitable/v1/apps/:app_token/tables/:table_id/records/:record_id | base:record:update / bitable:app | 🔲 待开发 |
| B | delete_bitable_record | 删除指定记录 | DELETE /bitable/v1/apps/:app_token/tables/:table_id/records/:record_id | base:record:delete / bitable:app | 🔲 待开发 |
| B | get_bitable_meta | 获取多维表格元信息 | GET .../apps/:app_token + GET .../tables + GET .../fields | base:app:read / base:table:read / base:field:read / bitable:app:readonly | 🔲 待开发 |
A 层 — Skill 定义
feishu_bitable
SKILL.md 场景化组织,作为 AI 对话入口统一调度下层 Tool。负责:
- 根据用户意图选择合适的 Tool 组合
- 自动推断
app_token、table_id(从上下文或用户提供的链接) - 人员字段的自然语言→结构化转换
- 写入操作的确认流程编排
B 层 — Python Tool 清单
公共行为
所有 Tool 共享以下行为:
- 鉴权:飞书
tenant_access_token/user_access_token自动获取与刷新 - 权限过滤:返回前过滤无权访问的内容
- app_token 解析:支持直接传 token 或完整飞书链接(自动提取)
- 人员字段映射:输入中文姓名 → 通过 PersonIndex 解析为
open_id - 错误处理:返回可读错误说明,不抛异常
1. query_bitable — 查询记录
| 项目 | 内容 |
|---|---|
| 底层 API | POST /open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/search |
| 权限 Scope | base:record:retrieve / bitable:app:readonly |
| 限流 | 20 次/秒 |
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
app_token | 是 | 多维表格 token 或完整链接 |
table_id | 否 | 数据表 ID,不填则使用第一个数据表 |
filter | 否 | 筛选条件(见下方 filter 语法详解) |
sort | 否 | 排序字段和方向 |
field_names | 否 | 指定返回字段(最多 200 个) |
max_records | 否(默认 50) | 最大返回记录数(API 单页上限 500) |
返回内容: 记录列表(字段名 → 字段值映射)+ 总记录数
filter 语法详解
filter 是 JSON 对象,结构如下:
json
{
"conjunction": "and",
"conditions": [
{
"field_name": "状态",
"operator": "is",
"value": ["进行中"]
},
{
"field_name": "优先级",
"operator": "is",
"value": ["P1"]
}
]
}conjunction — 条件间逻辑关系:
| 值 | 说明 |
|---|---|
and | 所有条件同时满足 |
or | 任一条件满足 |
operator — 支持的运算符:
| 运算符 | 说明 | 适用字段类型 |
|---|---|---|
is | 等于 | 文本、数字、单选、多选、复选框 |
isNot | 不等于 | 文本、数字、单选、多选、复选框 |
contains | 包含 | 文本、多选 |
doesNotContain | 不包含 | 文本、多选 |
isEmpty | 为空 | 所有类型 |
isNotEmpty | 不为空 | 所有类型 |
isGreater | 大于 | 数字、日期 |
isGreaterEqual | 大于等于 | 数字、日期 |
isLess | 小于 | 数字、日期 |
isLessEqual | 小于等于 | 数字、日期 |
filter 限制:
| 限制项 | 数值 |
|---|---|
| filter JSON 字符串最大长度 | 2000 字符 |
| conditions 最大数量 | 50 条 |
| sort 最大条数 | 100 条 |
| value 格式 | 始终为数组 |
2. create_bitable_record — 新建记录
| 项目 | 内容 |
|---|---|
| 底层 API | POST /open-apis/bitable/v1/apps/:app_token/tables/:table_id/records |
| 权限 Scope | base:record:create / bitable:app |
| 限流 | 50 次/秒 |
| 批量 API | POST .../records/batch_create(单次最多 1000 条) |
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
app_token | 是 | 多维表格 token |
table_id | 否 | 数据表 ID |
fields | 是 | 字段值映射(如 {"标题": "XX", "优先级": "P1"}) |
client_token | 否 | UUIDv4 幂等 token,防止重复创建 |
写入前确认: Tool 返回预览(将创建的记录内容),AI 必须展示给用户确认后执行。
3. update_bitable_record — 更新记录
| 项目 | 内容 |
|---|---|
| 底层 API | PUT /open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/:record_id |
| 权限 Scope | base:record:update / bitable:app |
| 限流 | 50 次/秒 |
| 批量 API | POST .../records/batch_update(单次最多 1000 条) |
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
app_token | 是 | 多维表格 token |
table_id | 否 | 数据表 ID |
record_id | 是 | 记录 ID |
fields | 是 | 要更新的字段值映射 |
写入前确认: Tool 返回变更对比(旧值 → 新值),AI 必须展示给用户确认后执行。
4. delete_bitable_record — 删除记录
| 项目 | 内容 |
|---|---|
| 底层 API | DELETE /open-apis/bitable/v1/apps/:app_token/tables/:table_id/records/:record_id |
| 权限 Scope | base:record:delete / bitable:app |
| 限流 | 50 次/秒 |
| 批量 API | POST .../records/batch_delete(单次最多 1000 条) |
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
app_token | 是 | 多维表格 token |
table_id | 否 | 数据表 ID |
record_id | 是 | 记录 ID |
写入前确认: 删除操作不可撤销,AI 必须展示待删除记录摘要,用户确认后执行。
5. get_bitable_meta — 获取元信息
| 项目 | 内容 |
|---|---|
| 底层 API(App 元数据) | GET /open-apis/bitable/v1/apps/:app_token |
| 底层 API(数据表列表) | GET /open-apis/bitable/v1/apps/:app_token/tables |
| 底层 API(字段列表) | GET /open-apis/bitable/v1/apps/:app_token/tables/:table_id/fields |
| 权限 Scope | base:app:read / base:table:read / base:field:read / bitable:app:readonly |
| 限流 | 20 次/秒 |
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
app_token | 是 | 多维表格 token |
返回内容: 表格名称 + 数据表列表(名称 + ID + 字段定义)
C 层 — 系统能力
| 能力 | 说明 | 涉及 Tool | 状态 |
|---|---|---|---|
| 权限过滤 | 角色 × 表格可见范围,返回前过滤无权内容 | 全部 Tool | 🔲 待开发 |
| 写入确认 | 新建/更新/删除操作二次确认,展示预览后用户确认执行 | create / update / delete | 🔲 待开发 |
| 人员字段映射 | 中文姓名 ↔ open_id 自动转换(复用 PersonIndex) | create / update | ✅ 复用现有 |
| Token 自动刷新 | tenant_access_token 过期自动刷新,复用飞书 HTTP 客户端 | 全部 Tool | ✅ 复用现有 |
字段类型完整列表
| type 值 | 类型名称 | 写入格式 | 可写 | 备注 |
|---|---|---|---|---|
| 1 | 文本 | "字符串" 或 [{type:"text", text:"内容"}] | 是 | 纯文本或富文本片段 |
| 2 | 数字 | 123 / 3.14 | 是 | 数值类型 |
| 3 | 单选 | "选项名" | 是 | 选项不存在时自动创建 |
| 4 | 多选 | ["选项A", "选项B"] | 是 | 选项不存在时自动创建 |
| 5 | 日期 | 1679900000000 | 是 | 毫秒时间戳 |
| 7 | 复选框 | true / false | 是 | 布尔值 |
| 11 | 人员 | [{"id": "ou_xxx"}] | 是 | open_id 数组(Tool 层自动从姓名映射) |
| 13 | 电话 | "13800138000" | 是 | 字符串 |
| 15 | 超链接 | {"text": "显示文本", "link": "https://..."} | 是 | — |
| 17 | 附件 | [{"file_token": "xxx"}] | 是 | 需先上传获取 token |
| 18 | 单向关联 | ["recXXX"] | 是 | 关联记录 ID 数组 |
| 19 | 查找引用 | — | 否 | 只读,由关联字段自动填充 |
| 20 | 公式 | — | 否 | 只读 |
| 21 | 双向关联 | ["recXXX"] | 是 | 关联记录 ID 数组 |
| 22 | 地理位置 | "经度,纬度" | 是 | 逗号分隔字符串 |
| 23 | 群组 | [{"id": "oc_xxx"}] | 是 | 群 open_id |
| 1001 | 创建时间 | — | 否 | 只读,系统自动填充 |
| 1002 | 最后更新时间 | — | 否 | 只读,系统自动填充 |
| 1003 | 创建人 | — | 否 | 只读,系统自动填充 |
| 1004 | 修改人 | — | 否 | 只读,系统自动填充 |
| 1005 | 自动编号 | — | 否 | 只读,系统自动填充 |
飞书 API 权限速查
| Scope | 说明 | 涉及操作 |
|---|---|---|
bitable:app | 多维表格全量读写 | 修改 App 元数据、新增数据表、新建/更新/删除记录、新增字段 |
bitable:app:readonly | 多维表格只读 | 获取 App 元数据、列出数据表、搜索记录、列出字段 |
base:app:create | 创建多维表格 | 创建新的多维表格 App |
base:app:read | 读取 App 元数据 | 获取多维表格元数据 |
base:table:read | 读取数据表信息 | 列出数据表(page_size 最大 100) |
base:table:create | 创建数据表 | 新增数据表(table.name 1-100 字符) |
base:record:retrieve | 搜索记录 | 搜索/查询记录 |
base:record:create | 新增记录 | 新建单条/批量记录 |
base:record:update | 更新记录 | 更新单条/批量记录 |
base:record:delete | 删除记录 | 删除单条/批量记录 |
base:field:read | 读取字段信息 | 列出数据表字段 |
base:field:create | 创建字段 | 新增数据表字段 |
权限说明: 同一操作通常有两个可选 scope(如
base:record:retrieve或bitable:app:readonly),应用只需满足其一即可。推荐使用最小权限原则,按需申请细粒度 scope。
飞书 API 限流速查
| API | 方法 + 路径 | 限流 |
|---|---|---|
| 创建 App | POST /bitable/v1/apps | 20 次/分钟 |
| 获取 App 元数据 | GET /bitable/v1/apps/:app_token | 20 次/秒 |
| 修改 App 元数据 | PUT /bitable/v1/apps/:app_token | — |
| 列出数据表 | GET .../tables | 20 次/秒 |
| 新增数据表 | POST .../tables | 10 次/秒 |
| 搜索记录 | POST .../records/search | 20 次/秒 |
| 新增记录 | POST .../records | 50 次/秒 |
| 批量新增记录 | POST .../records/batch_create | 50 次/秒 |
| 更新记录 | PUT .../records/:record_id | 50 次/秒 |
| 删除记录 | DELETE .../records/:record_id | 50 次/秒 |
| 批量删除记录 | POST .../records/batch_delete | — |
| 列出字段 | GET .../fields | 20 次/秒 |
| 新增字段 | POST .../fields | 10 次/秒 |
关键限制
| 限制项 | 数值 |
|---|---|
| 批量操作(batch_create / batch_update / batch_delete)单次上限 | 1000 条 |
| 单表最大字段数 | 300 个(其中公式字段最多 100 个) |
| 单表最大视图数 | 200 个 |
| 单 App 最大数据表 + 仪表盘数 | 100 个 |
| 单表最大记录数 | 20000 条 |
| search 单页最大返回 | 500 条(page_size) |
| search field_names 最大数量 | 200 个 |
| filter JSON 最大长度 | 2000 字符 |
| filter conditions 最大数量 | 50 条 |
| sort 最大条数 | 100 条 |
| 数据表 name 长度 | 1-100 字符 |
| 列出数据表 page_size 上限 | 100 |
| 写操作并发建议 | 单一多维表格同时只发一次写请求 |