前置条件: 先阅读
../lark-shared/SKILL.md。 执行前必做: 执行任何base命令前,必须先阅读对应命令的 reference 文档,再调用命令。 命名约定: 仅使用lark-cli base +...形式的命令。 分流规则: 如果用户要“把本地文件导入成 Base / 多维表格 / bitable”,第一步不是base,而是lark-cli drive +import --type bitable。只有导入完成后,才回到lark-cli base +...做表内操作。
lark-cli drive +import --type bitable
+data-query
from/select/where/aggregate → lookup 字段+record-list / +record-get
+field-list 或 +table-get
+record-list 当聚合分析引擎+record-upsert 的写入目标+base-create、+table-create 或 +record-upsert;这一步必须先走 lark-cli drive +import --type bitable
lark-cli api GET /open-apis/bitable/v1/...
obj_type=bitable 就去找 bitable.*;在本 CLI 里应继续使用 lark-cli base +...
+record-upsert 写入,例如文本、数字、日期、单选、多选、人员、关联。附件字段例外:对 agent 而言,文件上传必须走 +record-upload-attachment。+record-upsert 入参。+data-query 或公式字段在 Base 内完成。+data-query
+record-list / +record-get
+record-list 当分析引擎;它负责取明细,不负责聚合计算。formula-field-guide.md
lookup-field-guide.md
type=formula 必须提供 expression
type=lookup 必须提供 from / select / where,必要时补 aggregate
+table-list / +table-get / +field-list 的真实返回,禁止凭语义猜测改写。执行任何 workflow 命令前,必须先读两份文档:对应的命令文档 + lark-base-workflow-schema.md
+workflow-create → 先读 lark-base-workflow-create.md + schema+workflow-update → 先读 lark-base-workflow-update.md + schema+workflow-list → 先读 lark-base-workflow-list.md + schema+workflow-get → 先读 lark-base-workflow-get.md + schema+workflow-enable → 先读 lark-base-workflow-enable.md + schema+workflow-disable → 先读 lark-base-workflow-disable.md + schematype 值(如把"新增记录"猜成 CreateTrigger),必须从 schema 的 StepType 枚举中复制准确的类型名称创建前确认依赖信息
+table-list / +field-list 获取真实的表名、字段名当用户提到 "仪表盘、dashboard、数据看板、图表、可视化、block、组件、添加组件、创建图表" 等仪表盘相关的关键词时,必须阅读 lark-base-dashboard.md 这个指引文档,了解仪表盘模块的命令和能力后再进行后续操作。
+table-list / +table-get / +field-create / +record-upsert / +view-set-filter / +record-history-list / +base-get 这类一命令一动作的写法,不使用旧聚合式 +table / +field / +record / +view / +history / +workspace
+field-list 获取字段结构,再读 lark-base-shortcut-record-value.md 确认各字段类型的写入值格式+field-create/+field-update 的 JSON 结构+view-set-filter + +record-list 组合完成筛选读取+data-query 进行数据筛选聚合的服务端计算+data-query(服务端计算),禁止用 +record-list 拉全量记录再手动计算;反之,+data-query 不返回原始记录,取数场景仍走 +record-list / +record-get
+xxx-list 禁止并发调用 — +table-list / +field-list / +record-list / +view-list / +record-history-list / +role-list 只能串行执行--base-token,不使用旧 --app-token
+data-query
+field-create / +field-update 维护字段定义外,不要把这些字段作为记录写入目标+view-rename 在目标视图和新名称都明确时可直接执行;+record-delete / +field-delete / +table-delete 在用户已经明确要求删除且目标明确时也可直接执行,不需要再补一次确认,并且执行删除命令时要主动补上 --yes;只有目标不明确时才继续追问+form-list(先拿 form-id)+form-get
+form-questions-list
+form-questions-delete
+form-questions-create / +form-questions-update
| 意图 | 推荐命令 | 备注 |
|---|---|---|
| 列表 / 获取数据表 | lark-cli base +table-list / +table-get |
原子命令 |
| 创建 / 更新 / 删除数据表 | lark-cli base +table-create / +table-update / +table-delete |
一命令一动作 |
| 列表 / 获取字段 | lark-cli base +field-list / +field-get |
原子命令 |
| 创建 / 更新字段 | lark-cli base +field-create / +field-update |
使用 --json |
| 创建 / 更新公式字段 | lark-cli base +field-create / +field-update |
type=formula;先读 formula guide,再创建 / 更新 |
| 创建 / 更新 lookup 字段 | lark-cli base +field-create / +field-update |
type=lookup;先读 lookup guide,再创建 / 更新,默认先判断 formula 是否更合适 |
| 列表 / 获取记录 | lark-cli base +record-list / +record-get |
原子命令,如果需要聚合计算,分组统计 推荐走 +data-query |
| 创建 / 更新记录 | lark-cli base +record-upsert |
--table-id [--record-id] --json |
| 聚合分析 / 比较排序 / 求最值 / 筛选统计 | lark-cli base +data-query |
不要用 +record-list 拉全量数据再手动计算,需使用 +data-query 走服务端计算 |
| 配置 / 查询视图 | lark-cli base +view-* |
list/get/create/delete/get-*/set-*/rename |
| 查看记录历史 | lark-cli base +record-history-list |
按表和记录查询变更历史 |
| 按视图筛选查询 | lark-cli base +view-set-filter + lark-cli base +record-list |
组合调用 |
| 把本地文件导入为 Base / 多维表格 | lark-cli drive +import --type bitable |
导入阶段属于 drive,不是 base |
| 创建 / 获取 / 复制 Base | lark-cli base +base-create / +base-get / +base-copy |
原子命令 |
| 列表 / 获取工作流 | lark-cli base +workflow-list / +workflow-get |
原子命令 |
| 创建 / 更新工作流 | lark-cli base +workflow-create / +workflow-update |
使用 --json,必须阅读 schema |
| 启用 / 停用工作流 | lark-cli base +workflow-enable / +workflow-disable |
一命令一动作 |
| 启用 / 停用高级权限 | lark-cli base +advperm-enable / +advperm-disable |
启用后才能使用自定义角色;停用会使已有角色失效 |
| 列表 / 获取角色 | lark-cli base +role-list / +role-get |
查看角色摘要或完整配置 |
| 创建 / 更新 / 删除角色 | lark-cli base +role-create / +role-update / +role-delete |
管理自定义角色权限 |
| 列表 / 获取表单 | lark-cli base +form-list / +form-get |
原子命令 |
| 创建 / 更新 / 删除表单 | lark-cli base +form-create / +form-update / +form-delete |
一命令一动作 |
| 列表 / 创建 / 更新 / 删除表单问题 | lark-cli base +form-questions-list / +form-questions-create / +form-questions-update / +form-questions-delete |
一命令一动作 |
| 创建/管理仪表盘及图表 | +dashboard-* / +dashboard-block-* |
必须先读 lark-base-dashboard.md |
--base-token
+xxx-list 调用纪律:+table-list / +field-list / +record-list / +view-list / +record-history-list / +role-list / +dashboard-list / +dashboard-block-list / +workflow-list 禁止并发调用;批量执行时只能串行+record-list 分页规则:--limit 最大 200。先拉首批并检查返回 has_more;仅当 has_more=true 且用户明确需要更多数据(如“全部导出/全量明细/继续下一页”)时再继续翻页。用户只要样例或前 N 条时,不要继续拉全量+record-upload-attachment 这条链路(读字段 → 读记录 → 上传素材 → 回写记录)user_id_type 与执行身份(user / bot)差异+record-history-list 按 table-id + record-id 查询记录历史,不支持整表历史扫描+base-create / +base-get / +base-copy
+base-create / +base-copy 结果返回规范:创建或复制成功后,回复中必须主动返回新 Base 的标识信息。若返回结果里带可访问链接(如 base.url),要一并返回+base-create / +base-copy 友好性规则:--folder-token、--time-zone、复制时的 --name 都是可选项。用户没有特别要求时,不要为了这些可选参数额外打断;能直接创建/复制就直接执行+base-create / +base-copy 权限处理(bot 创建):若 Base 由应用身份(bot)创建,创建或复制成功后默认继续使用 bot 身份为当前可用 user(指当前 CLI 中 auth 模块已登录且可用的用户身份)添加 full_access(管理员)权限,并在回复中明确授权结果(成功 / 无可用 user / 授权失败及原因)。若授权未完成,要继续给出后续引导(稍后重试授权或继续用 bot);owner 转移必须单独确认,禁止擅自执行+advperm-enable 启用高级权限后才能管理角色(+role-*);+advperm-disable 是高风险操作,停用后已有自定义角色全部失效;操作用户必须为 Base 管理员;先读 lark-base-advperm-enable.md / lark-base-advperm-disable.md
+role-create 仅支持 custom_role;+role-update 采用 Delta Merge(role_name 和 role_type 必须始终提供);+role-delete 不可逆且仅支持自定义角色;角色配置支持 base_rule_map(Base 级复制/下载)、table_rule_map(表级权限含记录/字段粒度)、dashboard_rule_map(仪表盘权限)、docx_rule_map(文档权限);写角色前先读 role-config.md
+form-list 获取;+form-create 返回的 id 即 form-id,可用于 +form-questions-* 操作+workflow-list 返回的不是完整树状结构,若需读取完整结构请使用 +workflow-get。+data-query 前必须先阅读 lark-base-data-query.md 了解 DSL 结构、支持的字段类型、聚合函数和限制条件;DSL 中的 field_name 必须与表字段名精确匹配,构造前先用 +field-list 获取真实字段名+view-rename 直接执行即可,不需要再补一句确认+record-delete / +field-delete / +table-delete 可直接执行,不需要再补一次确认;执行时直接带 --yes 通过 CLI 的高风险写入校验。只有目标仍有歧义时,再先用 +record-get / +field-get / +table-get 或 list 命令确认知识库链接(/wiki/TOKEN)背后可能是云文档、电子表格、多维表格等不同类型的文档。不能直接假设 URL 中的 token 就是 file_token,必须先查询实际类型和真实 token。
使用 wiki.spaces.get_node 查询节点信息
lark-cli wiki spaces get_node --params '{"token":"<wiki_token>"}'
从返回结果中提取关键信息
node.obj_type:文档类型(docx/doc/sheet/bitable/slides/file/mindnote)node.obj_token:真实的文档 token(用于后续操作)node.title:文档标题根据 obj_type 选择后续命令
| obj_type | 说明 | 后续命令 |
|---|---|---|
docx |
新版云文档 | drive file.comments.*、docx.* |
doc |
旧版云文档 | drive file.comments.* |
sheet |
电子表格 | sheets.* |
bitable |
多维表格 | lark-cli base +...(优先);如果 shortcut 不覆盖,再用 lark-cli base <resource> <method>;不要改走 lark-cli api /open-apis/bitable/v1/... |
slides |
幻灯片 | drive.* |
file |
文件 | drive.* |
mindnote |
思维导图 | drive.* |
把 wiki 解析出的 obj_token 当成 Base token 使用
obj_type=bitable 时,node.obj_token 就是后续 base 命令应使用的真实 token。/wiki/... 链接,不要把 wiki_token 直接塞给 --base-token。如果已经报了 token 错,再回退检查 wiki
param baseToken is invalid、base_token invalid、not found,并且用户最初给的是 /wiki/... 链接或 wiki_token,优先怀疑“把 wiki token 当成了 base token”。bitable/v1 API;应立即重新执行 lark-cli wiki spaces get_node,确认 obj_type=bitable 后,改用 node.obj_token 重新执行 lark-cli base +...。# 查询 wiki 节点
lark-cli wiki spaces get_node --params '{"token":"Pgrr***************UnRb"}'
返回结果示例:
{
"node": {
"obj_type": "docx",
"obj_token": "UAJ***************E9nic",
"title": "ai friendly 测试 - 1 副本",
"node_type": "origin",
"space_id": "6946843325487906839"
}
}
| 链接类型 | 格式 | 处理方式 |
|---|---|---|
| 直接 Base 链接 | /base/{token} |
直接提取作为 --base-token |
| Wiki 知识库链接 | /wiki/{token} |
先调用 wiki.spaces.get_node,取 node.obj_token |
https://{domain}/base/{base-token}?table={table-id}&view={view-id}
/base/{token} → --base-token
?table={id} → --table-id
?view={id} → --view-id
--base-token 参数传入--base-token
| 错误码 | 含义 | 解决方案 |
|---|---|---|
| 1254064 | 日期格式错误 | 用毫秒时间戳,非字符串 / 秒级 |
| 1254068 | 超链接格式错误 | 用 {text, link} 对象 |
| 1254066 | 人员字段错误 | 用 [{id:"ou_xxx"}],并确认 user_id_type |
| 1254045 | 字段名不存在 | 检查字段名(含空格、大小写) |
| 1254015 | 字段值类型不匹配 | 先 +field-list,再按类型构造 |
param baseToken is invalid / base_token invalid |
把 wiki token、workspace token 或其他 token 当成了 base_token |
如果输入来自 /wiki/...,先用 lark-cli wiki spaces get_node 取真实 obj_token;当 obj_type=bitable 时,用 node.obj_token 作为 --base-token 重试,不要改走 bitable/v1 |
| formula / lookup 创建失败 | 指南未读或结构不合法 | 先读 formula-field-guide.md / lookup-field-guide.md,再按 guide 重建请求 |
| 系统字段 / 公式字段写入失败 | 只读字段被当成可写字段 | 改为写存储字段,计算结果交给 formula / lookup / 系统字段自动产出 |
| 1254104 | 批量超 500 条 | 分批调用 |
| 1254291 | 并发写冲突 | 串行写入 + 批次间延迟 |
+field-create/+field-update JSON 规范(推荐)+record-upsert 值格式规范(推荐)+advperm-enable 启用高级权限+advperm-disable 停用高级权限+role-list 列出角色+role-get 获取角色详情+role-create 创建角色+role-update 更新角色+role-delete 删除角色+workflow-create/+workflow-update JSON body 数据结构详解,包含触发器及各类节点的配置规则(强烈推荐)+data-query 聚合分析(DSL 结构、支持字段类型、聚合函数)执行前必做: 从下表定位到命令后,务必先阅读对应命令的 reference 文档,再调用命令。
| 命令分组 | 说明 |
|---|---|
table commands |
+table-list / +table-get / +table-create / +table-update / +table-delete |
field commands |
+field-list / +field-get / +field-create / +field-update / +field-delete / +field-search-options |
record commands |
+record-list / +record-get / +record-upsert / +record-upload-attachment / +record-delete |
view commands |
+view-list / +view-get / +view-create / +view-delete / +view-get-* / +view-set-* / +view-rename |
data-query commands |
+data-query |
history commands |
+record-history-list |
base / workspace commands |
+base-create / +base-get / +base-copy |
advperm commands |
+advperm-enable / +advperm-disable |
role commands |
+role-list / +role-get / +role-create / +role-update / +role-delete |
form commands |
+form-list / +form-get / +form-create / +form-update / +form-delete |
form questions commands |
+form-questions-list / +form-questions-create / +form-questions-update / +form-questions-delete |
workflow commands |
+workflow-list / +workflow-get / +workflow-create / +workflow-update / +workflow-enable / +workflow-disable |
dashboard / dashboard-block commands |
+dashboard-list / +dashboard-get / +dashboard-create / +dashboard-update / +dashboard-delete / +dashboard-block-list / +dashboard-block-get / +dashboard-block-create / +dashboard-block-update / +dashboard-block-delete |