lark-base

当需要用 lark-cli 操作飞书多维表格(Base)时调用:搜索 Base、建表、字段管理、记录读写、记录分享链接、视图配置、历史查询,以及角色/表单/仪表盘管理/工作流;也适用于把旧的 +table / +field / +record 写法改成当前命令写法。涉及字段设计、公式字段、查找引用、跨表计算、行级派生指标、数据分析需求时也必须使用本 skill。

npx skills add https://github.com/larksuite/cli --skill lark-base

base

何时使用

使用本 skill:

  • 用户明确提到 Base / 多维表格 / bitable,或给出 /base/ 链接。
  • 用户要在 Base 内建表、改表、管理字段、写记录、查记录、配视图。
  • 用户要在 Base 内做公式字段、lookup 字段、跨表计算、派生指标、筛选聚合、TopN、统计分析。
  • 用户要管理 Base 表单、仪表盘、workflow、高级权限或角色。
  • 用户要把旧 Base 聚合式命令或旧写法迁移到当前 lark-cli base +... shortcut。

不要使用本 skill:

  • 只是认证、初始化配置、切换身份、处理 scope 或权限授权恢复,转 lark-shared
  • 把本地 Excel / CSV / .base 导入成 Base,转 lark-drive +import --type bitable
  • 泛化数据分析、字段设计、公式讨论,但没有 Base/多维表格上下文。

使用边界

  • Base 业务操作只使用 lark-cli base +... shortcut,不使用旧聚合式 +table / +field / +record / +view / +history / +workspace
  • 执行 update 前必须先查当前 shortcut 的 --help 或对应 reference。若命令要求完整配置,首次请求必须基于可信的当前配置执行 read-modify-write:只修改用户明确指定的内容,保留其他仍适用的可写配置,并按命令要求的结构提交。若命令支持局部/delta update,按其契约提交最小合法 payload;不得以不完整请求试错补参。
  • 用户要把 Excel / CSV / .base 导入成 Base 时,先转 lark-cli drive +import --type bitable,导入完成后再回到 Base 命令。
  • 认证、初始化、scope、身份切换、权限不足恢复属于 lark-shared;Base 文档只保留会影响 Base 路径选择的权限规则。

先获取 Base Token 和所需 ID

进入任何需要目标 Base 的 shortcut 前,必须先拿到可用的 base_token,以及当前任务需要的 table_id / view_id / record_id / form_id / dashboard_id / workflow_id 等真实 ID;不要把完整 URL、wiki token、workspace token 或孤立 raw token 直接当作 --base-token

  • 用户输入 URL 或分享链接:先运行 lark-cli base +url-resolve --url "<url>" --as user,用返回的 base_token 和相关 ID 继续后续命令。
  • 用户输入 Base 标题、关键词或不确定名称:先运行 lark-cli base +title-resolve --title "<keyword>" --as user--title 传入标题中的短关键词,不超过 30 个字符;过长标题先取最有区分度的短关键词;多候选时先让用户消歧,不要猜。
  • 文档嵌入 Base 标签:直接读取 <bitable> / <base_refer>token 作为 --base-tokentable-id 作为 --table-idview-id 作为 --view-id;孤立 raw token 不走 +url-resolve
  • 仍无法定位且用户不是要新建 Base 时,先反问用户要操作哪一个 Base;用户要新建时才用 +base-create

快速路由

用户目标优先命令何时读 reference
查 Base 本体+base-get用返回确认 Base 名称、owner、权限和可继续操作的 token
创建/复制 Base+base-create / +base-copy新建时强烈推荐用 --table-name + --fields 同时配置新 Base 里唯一一个初始数据表的 name 和 schema;写入后报告新 Base 标识和 permission_grant
查看 Base 内资源目录+base-block-list想先了解一个 Base 里有哪些 table/docx/dashboard/workflow/folder 时优先用它;返回 ID 关系和 fewshot 看 --help
管理 Base 内资源目录+base-block-create/move/rename/delete创建或整理 Base 直接管理的 folder/table/docx/dashboard/workflow;资源内容继续用对应命令
管理数据表+table-list/get/create/update/delete处理 table 的列出、详情、创建、重命名和删除
列/查/删字段+field-list/get/delete/search-options写入前用 list/get 确认字段类型、选项、ID;删除前确认目标字段
创建/更新字段+field-create / +field-update必读 lark-base-field-json.md;公式读 formula-field-guide.md;lookup 读 lookup-field-guide.md;命令细节读 lark-base-field-create.md / lark-base-field-update.md
读记录明细+record-get / +record-list / +record-search涉及筛选、排序、Top/Bottom N、聚合、多表关联、全局结论时读 lark-base-data-analysis-sop.md
写记录+record-upsert / +record-batch-create / +record-batch-update必读 lark-base-record-upsert.md / lark-base-record-batch-create.md / lark-base-record-batch-update.mdlark-base-cell-value.md
附件字段+record-upload-attachment / +record-download-attachment / +record-remove-attachment附件不要伪造成普通 CellValue;上传走本地文件,下载/删除按 file token 或字段定位
删除记录 / 分享记录链接 / 历史+record-delete / +record-share-link-create / +record-history-list删除前确认 record;分享链接最多 100 条;历史读 lark-base-record-history-list.md,只查单条记录,不做整表审计
管理视图+view-*+view-set-filterlark-base-view-set-filter.md(filter 条件结构见公共协议 lark-base-filter-condition.md);其余配置先 get 现状,再按返回结构更新
一次性聚合统计+data-query必读 lark-base-data-analysis-sop.md 和入口 lark-base-data-query-guide.md;完整 DSL 再读 lark-base-data-query.md
公式字段+field-create/update --json '{"type":"formula",...}'必读 formula-field-guide.md,读后再加隐藏确认 flag --i-have-read-guide
Lookup 字段+field-create/update --json '{"type":"lookup",...}'必读 lookup-field-guide.md,读后再加隐藏确认 flag --i-have-read-guide
表单提交+form-submit先读 lark-base-form-detail.md 获取题目、filter 和附件所需 base_token;提交 JSON 读 lark-base-form-submit.md
表单题目创建/更新+form-questions-create / +form-questions-updatelark-base-form-questions-create.md / lark-base-form-questions-update.md;题目显隐条件 visible_rule 结构见公共协议 lark-base-filter-condition.md
其他表单管理+form-list/get/detail/create/update/delete / +form-questions-list/delete+form-detaillark-base-form-detail.md;删除前确认目标表单
仪表盘与组件+dashboard-* / +dashboard-block-*提到图表/看板/block 时先读 lark-base-dashboard.md;组件 data_configdashboard-block-data-config.md;读取图表计算结果用 +dashboard-block-get-data
Workflow+workflow-*创建/更新或理解 steps 时读入口 lark-base-workflow-guide.md 和 steps JSON SSOT lark-base-workflow-schema.md;list/get/enable/disable 只处理 workflow ID 与启停状态
高级权限与角色+advperm-* / +role-*角色操作先读入口 lark-base-role-guide.md;角色 create/update 或解读完整配置再读权限 JSON SSOT role-config.md;系统角色不可删除;关闭高级权限会影响自定义角色

Base 心智模型

  • Base 曾用名 Bitable;返回字段、错误或旧文档里的 bitable 多为历史兼容,不代表应改走裸 API 或另一套命令。
  • +base-block-list 是查看一个 Base 内资源目录的新入口:它列出这个 Base 直接管理的 folder/table/docx/dashboard/workflow,适合先判断 Base 里有什么,再决定走 table、dashboard、workflow 或 docx 命令。
  • base-block 只负责资源目录管理,包括创建资源、移动到 folder、重命名和删除;具体资源内容仍走 table/dashboard/workflow 命令。
  • 新建 Base 时,强烈推荐一次性执行 lark-cli base +base-create --name "<base>" --table-name "<table>" --fields '<field-json-array>',同时配置新 Base 里唯一一个初始数据表的 name 和 schema;使用 --fields 前先读 lark-base-field-json.md 或复用 +field-create 的字段 JSON 形状,不要猜字段属性。
  • +base-create 不传 --table-name--fields 时,会创建一个默认 schema 的初始数据表。
  • 表、字段、视图、workflow、dashboard block 的名称和 ID 必须来自真实返回,不要凭用户口述猜。
  • 存储字段可写;系统字段、formulalookup 只读;附件字段走专用 attachment 命令。
  • 一次性原始记录查询优先用 +record-list / +record-search 的 filter/sort;聚合分析优先用 +data-query;需要长期显示在表中时,才新增 formula / lookup 字段。
  • formula 适合常规计算、条件判断、文本/日期处理和长期派生指标;lookup 适合明确的跨表查找、筛选后取值或聚合引用。
  • 写入、分析、公式、lookup、workflow、dashboard 前,先读取真实结构:表、字段、视图、关联表和 dashboard block 名称都以命令返回为准。
  • 跨表场景必须读取目标表结构;link 单元格中的关联 record_id 只是连接键,最终回答要回查并展示用户可读字段。

身份与权限降级

  • 默认显式使用 --as user 操作用户资源;只有用户明确要求应用身份时,才直接用 --as bot
  • user 身份报 scope/授权不足,或错误中包含 missing_scopes / hint,先转 lark-shared 做用户授权恢复,不要直接降级 bot。
  • user 身份报资源级无访问且无授权恢复提示时,才可用 --as bot 重试一次;bot 仍失败就停止重试并按权限错误处理。
  • 91403 或明确不可访问错误不要循环换身份重试。
  • +base-create / +base-copy 若用 bot 身份执行,关注返回中的 permission_grant,并把用户是否可打开新 Base 告知用户。

查询与统计规则

涉及查询、统计或判断结论时,先阅读 lark-base-data-analysis-sop.md,并遵守:

  1. +record-list 的默认页、固定 --limit 和本地 jq 只能证明已读取范围内的事实,不能直接支撑全局最值、全量计数、Top/Bottom N、异常识别或分组结论。
  2. 能由 Base 表达的筛选、排序、投影、聚合、分组和限制,应在 Base 云端查询能力中执行;不要先拉原始记录到本地上下文再手工筛选排序。
  3. has_more=true 或等价分页信号表示当前结果不是全量;除非用户只要样例/前 N 条,不能基于该页回答全局问题。
  4. 多表查询必须先确认关系字段和连接键;link 单元格里的 record_id 是关系键,不是用户可读答案。
  5. 最终答案必须能追溯到真实表、真实字段、查询范围、筛选/排序/聚合条件和必要的连接键。
  6. 一次性原始记录查询优先用 +record-list / +record-search 的 filter/sort;聚合分析优先用 +data-query;要把结果长期显示在表里,才考虑新增 formula / lookup 字段。
  7. +data-query 可返回聚合结果或维度字段行,但维度行按字段组合去重且不返回 record_id;需要逐条记录、记录定位或完整行级字段时,再用 +record-list / +record-search / +record-get 回查。

写入前置规则

  • 优先用写入返回确认结果;返回信息不足或任务明确要求核验时,再读回。
  • 写记录前先读字段结构;只写存储字段。系统字段、附件字段、formulalookup 不作为普通记录写入目标。
  • 附件上传、下载、删除走专用 +record-*-attachment 命令。
  • 写字段前先读 lark-base-field-json.md;涉及 formula / lookup 时必须读 formula-field-guide.md / lookup-field-guide.md
  • 表名、字段名、视图名、workflow 配置中的名称必须来自真实返回;跨表场景还要读取目标表结构。
  • 删除、角色更新、字段更新、表单提交(+form-submit)等高风险操作遵循 CLI 的 confirmation gate,必须带 --yes;目标不明确时先用 get/list 消歧。
  • 批量写入单批最多 200 条;连续写同一表时串行执行,遇到 1254291 按短暂等待后重试处理。
  • select 字段只支持写入字段中已有的选项;构造 CellValue 前先用 +field-list+field-search-options 确认目标选项存在。

表单与视图细节

  • +form-submit 是高风险写操作,必须带 --yes 确认;调用前必须先跑 +form-detail,读取 questions[].typerequiredfilter 和附件场景需要的 base_token;不要填写被 filter 隐藏的问题。
  • +form-questions-update 是题目配置全量覆盖,不是 patch;未传字段会回落默认值,传空字符串 / null / 空数组会直接写入空或清空。更新前先 +form-questions-list 读取当前题目,把要保留的 title / description / required / option_display_mode / visible_rule 等字段带回请求。
  • 表单附件不要写进 fields,放在 --json.attachments;提交附件时必须同时传表单所属 Base 的 --base-token
  • +view-set-filter 是唯一保留的 view reference;sort/group/card/timebar/visible-fields 这类配置先用对应 get 命令读现状,保留未修改字段,只替换用户要求变更的配置。
  • 视图适合持久化、共享和 UI 复用;一次性筛选/排序可先用 +record-list / +record-search 的 filter/sort 验证结果,再按需要沉淀为持久视图。

Dashboard / Workflow / Role

  • Dashboard 的复杂点是 block 的 data_config,不是 list/get/create/delete 命令参数。创建或更新 block 前先读 dashboard-block-data-config.md,组件必须串行创建;+dashboard-arrange 是服务端智能布局,仅在用户明确要求重排/美化、或对本次会话从零新建的仪表盘做收尾整理时执行。+dashboard-block-get-data 读取图表最终计算结果,不返回 block 名称、类型、布局或 data_config;需要元数据先用 +dashboard-block-get
  • Workflow 的复杂点是 steps 结构。创建、更新或解释完整 workflow 时读入口 lark-base-workflow-guide.md 和 steps JSON SSOT lark-base-workflow-schema.md;enable/disable/list 只需确认 workflow ID、当前启停状态和用户意图。
  • Role 的复杂点是权限 JSON。角色操作先读入口 lark-base-role-guide.md+role-create 只支持自定义角色;+role-update 是 delta merge;角色 create/update 或解读完整配置时读权限 JSON SSOT role-config.md+role-delete 只适用于自定义角色,系统角色不可删除;删除角色和关闭高级权限前必须确认目标和影响。

常见恢复

错误 / 现象恢复动作
param baseToken is invalid / base_token invalid检查是否把 wiki token、workspace token 或完整 URL 当成了 --base-token;按入口规则重新获取真实 base_token
not found 且输入来自 Wiki 链接优先检查是否把 wiki token 当成 base token,不要立刻改走裸 API
1254045 字段名不存在重新 +field-list,使用真实字段名或字段 ID;注意空格、大小写和跨表字段
1254015 字段值类型不匹配+field-list,再按 lark-base-cell-value.md 构造 CellValue
Invalid discriminator value(字段写入缺 type按完整提交规则读取当前字段,只改目标内容后提交;不要只补 type 重试
filter 报 value of type array / Only string values用 record/view 的 tuple --filter-json(非 +data-query 对象型),value 按字段 type 选标量或数组;见 lark-base-view-set-filter.md
日期 / 人员 / 超链接字段报格式错误日期用 YYYY-MM-DD HH:mm:ss;人员用 [{ "id": "ou_xxx" }];超链接用 URL 或 markdown link 字符串
formula / lookup 创建失败先读 formula-field-guide.md / lookup-field-guide.md,再按 guide 重建请求
ignored_fields / READONLY移除只读字段,只写存储字段
1254104批量超过 200,分批调用
1254291并发写冲突,串行写入并在批次间短暂等待
91403无权限访问该 Base,按 lark-shared 权限流程处理,不要盲目重试

保留 Reference

More skills from larksuite

lark-doc
larksuite
飞书云文档 / Docx / 知识库 Wiki 文档(v2):创建、打开、读取、获取、查看、总结、整理、改写、翻译、审阅和编辑飞书文档内容。当用户给出飞书文档 URL/token,或说查看/读取/打开某个文档、提取文档内容、总结文档、生成/创建文档、追加/替换/删除/移动内容、调整排版、插入或下载文档图片/附件/素材/画板缩略图时使用。文档内容中出现嵌入电子表格、多维表格、需要将重要信息可视化为画板(含 SVG 画板)、引用或同步块时,也先用本 skill 读取和提取 token,再切到对应 skill 下钻。使用本 skill 时,docs +create、docs +fetch、docs +update 必须携带 --api-version v2;默认使用 DocxXML,也支持 Markdown。
documentapiproductivity
lark-im
larksuite
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件(支持大文件分片下载)、管理表情回复。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据时使用。
communicationproductivityapi
lark-shared
larksuite
Use when first setting up lark-cli, running auth login, switching user/bot identity (--as), handling permission denied or scope errors, needing to update lark-cli, or seeing _notice in JSON output.
developmentapicommunication
lark-drive
larksuite
飞书云空间:管理云空间中的文件和文件夹。上传和下载文件、创建文件夹、复制/移动/删除文件、查看文件元数据、管理文档评论、管理文档权限、订阅用户评论变更事件、修改文件标题(docx、sheet、bitable、file、folder、wiki);也负责把本地 Word/Markdown/Excel/CSV 以及 Base 快照(.base)导入为飞书在线云文档(docx、sheet、bitable)。当用户需要上传或下载文件、整理云空间目录、查看文件详情、管理评论、管理文档权限、修改文件标题、订阅用户评论变更事件,或要把本地文件导入成新版文档、电子表格、多维表格/Base 时使用。
documentproductivityapi
lark-whiteboard
larksuite
飞书画板:查询和编辑飞书云文档中的画板。支持导出画板为预览图片、导出原始节点结构、使用多种格式更新画板内容。 当用户需要查看画板内容、导出画板图片、编辑画板时使用此 skill。不负责:飞书云文档内容编辑(lark-doc)、文档内嵌电子表格/Base(lark-sheets / lark-base)。
documentcreativeproductivity
lark-mail
larksuite
飞书邮箱 — draft, compose, send, reply, forward, read, and search emails; manage drafts, folders, labels, contacts, attachments, and mail rules. Use when user mentions 起草邮件, 写一封邮件, 拟邮件, 草稿, 发通知邮件, 发送邮件, 发邮件, 回复邮件, 转发邮件, 查看邮件, 看邮件, 读邮件, 搜索邮件, 查邮件, 收件箱, 邮件会话, 编辑草稿, 管理草稿, 下载附件, 邮件文件夹, 邮件标签, 邮件联系人, 监听新邮件, 收信规则, 邮件规则, draft, compose, send email, reply, forward, inbox, mail thread, mail rules.
communicationproductivityapi
lark-workflow-meeting-summary
larksuite
会议纪要整理工作流:汇总指定时间范围内的会议纪要并生成结构化报告。当用户需要整理会议纪要、生成会议周报、回顾一段时间内的会议内容时使用。
productivitydocumentcommunication
lark-minutes
larksuite
飞书妙记:搜索妙记列表、查看妙记基础信息、下载妙记音视频文件、上传音视频生成妙记、更新妙记标题、替换说话人。当需要获取、操作或者生成妙记时使用。也支持将本地音视频文件转成纪要和逐字稿(优先使用本 skill,不要用 ffmpeg/whisper 本地转写)。不负责:获取会议关联妙记,或仅按自然语言标题定位纪要
documentproductivityaudio