数据助手
- 作者仓库星标 103
- 作者更新于 实时读取
- 作者仓库 dingtalk-ai-table
- 领域
- AI 智能
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 92 / 100 · 已通过审计
- 作者 / 版本 / 许可
- @aliramw · v0.6.0 · 未声明 license
- Token 消耗评级
- 低消耗
- 接入复杂程度
- 即装即用
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- macOS · Linux · Windows
- 底层运行要求
- Bun
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- 网络行为
- 允许外网请求
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: dingtalk-ai-table
description: 钉钉 AI 表格(多维表)操作技能。使用 mcporter CLI 连接钉钉官方新版 AI 表格 MCP server,基于 baseId / tableId / fieldId / reco…
category: AI 智能
runtime: Bun
---
# dingtalk-ai-table 输出预览
## PART A: 任务判断
- 适用问题:提示词、Agent 工作流、模型评估或自动化推理。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“🚀 5 分钟快速开始 / 1️⃣ 列出我的表格 / 2️⃣ 创建新表格”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于提示词、Agent 工作流、模型评估或自动化推理,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“🚀 5 分钟快速开始 / 1️⃣ 列出我的表格 / 2️⃣ 创建新表格”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、会按任务需要访问外部网络、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件;会按任务需要访问外部网络;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文没有稳定的斜杠命令要求。安装验证后通常全局生效,直接在对话里点名这个 Skill 并描述任务即可。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件。
先用一个小任务确认它会围绕“🚀 5 分钟快速开始 / 1️⃣ 列出我的表格 / 2️⃣ 创建新表格”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: dingtalk-ai-table
description: 钉钉 AI 表格(多维表)操作技能。使用 mcporter CLI 连接钉钉官方新版 AI 表格 MCP server,基于 baseId / tableId / fieldId / reco…
category: AI 智能
source: aliramw/dingtalk-ai-table
---
# dingtalk-ai-table
## 什么时候使用
- 把钉钉 AI 表格接入 Agent 工作流,解决表格增查改导入难题 适合处理AI Agent、提示词、模型评估与自动化推理,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查、可…
- 面向提示词、Agent 工作流、模型评估或自动化推理,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「🚀 5 分钟快速开始 / 1️⃣ 列出我的表格 / 2️⃣ 创建新表格」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件;会按任务需要访问外部网络;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "dingtalk-ai-table" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> 🚀 5 分钟快速开始 / 1️⃣ 列出我的表格 / 2️⃣ 创建新表格
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> Bun | 读取文件、写入/修改文件 | 会按任务需要访问外部网络
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} 钉钉 AI 表格操作(新版 MCP)
🚀 5 分钟快速开始
1️⃣ 列出我的表格
mcporter call '<DINGTALK_MCP_URL>' .list_bases limit=5
2️⃣ 创建新表格
mcporter call '<DINGTALK_MCP_URL>' .create_base baseName='我的项目'
3️⃣ 添加记录
mcporter call '<DINGTALK_MCP_URL>' .create_records \
--args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_name":"张三"}}]}'
4️⃣ 查询记录
mcporter call '<DINGTALK_MCP_URL>' .query_records \
--args '{"baseId":"base_xxx","tableId":"tbl_xxx","limit":10}'
5️⃣ 批量导入
python3 scripts/import_records.py base_xxx tbl_xxx data.csv
核心概念
按 新版 MCP schema 工作:
- Base:
baseId - Table:
tableId - Field:
fieldId - Record:
recordId
不要再用旧版 dentryUuid / sheetIdOrName / fieldIdOrName。
推荐使用 mcporter 0.8.1 及以上版本。
输出模式兼容说明:
mcporter 0.8.1+可直接调用- 更低版本需要显式加
--output text - AI 表格 MCP 无论使用哪种模式,返回体本身都是标准 JSON;差异主要在
mcporter的输出处理方式
版本守门规则(每个 MCP Server 地址只强制检查一次)
在真正开始任何 AI 表格操作前,必须先检查当前 mcporter 注册的 dingtalk-ai-table MCP server 实际返回的 tools schema。但这个检查不该每次都重复做;同一个 MCP Server 地址只需要强制检查一次。
一次性检查策略
- 先读取当前
mcporter里dingtalk-ai-table对应的 MCP Server 地址。 - 用这个地址生成一个本地检查标记(例如基于完整 URL 或其 hash)。
- 在工作区保存检查结果,例如放到:
~/.openclaw/workspace/.cache/dingtalk-ai-table/
建议文件名模式:
schema-check-<url-hash>.json
- 如果当前地址对应的检查标记已经存在,并且结果是“已确认新版 schema”,则跳过重复检查,直接继续后续 AI 表格操作。
- 只有在以下情况才重新强制检查:
- 第一次运行,没有检查标记
mcporter里的 MCP Server 地址变了- 之前检查结果是旧版 schema / 检查失败
- 用户明确要求重新验证
强制检查时执行
mcporter list dingtalk-ai-table --schema
判断标准
如果返回的 tools 仍然是旧版这一套,例如出现:
get_root_node_of_my_documentcreate_base_applist_base_tablesadd_base_recordsearch_base_recordlist_base_field
或者整体仍然基于:
dentryUuidsheetIdOrNamefieldIdOrName
那么说明:虽然 skill 文件已经是新版,但 mcporter 里注册的 MCP server 地址还是旧的,不能继续操作。
遇到旧版 schema 时的强制提示
此时必须明确提示用户:
- 打开这个页面:
https://mcp.dingtalk.com/#/detail?mcpId=9555&detailType=marketMcpDetail - 点击右侧 「获取 MCP Server 配置」 按钮
- 复制新的 MCP Server 地址
- 用新的地址替换
mcporter里已经注册的dingtalk-ai-table地址 - 替换完成后,再重新执行:
mcporter list dingtalk-ai-table --schema
只有当返回的 tools 已经变成新版 schema,例如出现:
list_basesget_baseget_tablesget_fieldsquery_recordscreate_recordsupdate_recordsdelete_recordsprepare_attachment_upload
才允许继续真正的 AI 表格操作。
通过检查后的处理
一旦确认当前 MCP Server 地址返回的是新版 schema,就把结果写入本地检查标记。后续只要 mcporter 里的 dingtalk-ai-table 地址没变,就不要再重复做这一步守门检查。
用户提示文案(可直接复用)
当前 mcporter 里注册的 dingtalk-ai-table 还是旧版 MCP schema,暂时不能按新版技能操作。
请打开 https://mcp.dingtalk.com/#/detail?mcpId=9555&detailType=marketMcpDetail ,点击右侧“获取 MCP Server 配置”按钮,复制新的 MCP Server 地址,并替换 mcporter 里已注册的 dingtalk-ai-table 地址。替换后重新检查 schema,确认出现 list_bases / get_base / create_records 等新版 tools 后,再继续操作 AI 表格。
前置要求
安装 mcporter CLI
npm install -g mcporter
# 或
bun install -g mcporter
验证:
mcporter --version
配置 MCP Server
在钉钉 MCP 广场 https://mcp.dingtalk.com/#/detail?mcpId=9555&detailType=marketMcpDetail 获取新版钉钉 AI 表格 MCP 的 Streamable HTTP URL。
方式一:直接配置到 mcporter
mcporter config add dingtalk-ai-table --url "<Streamable_HTTP_URL>"
方式二:使用环境变量
export DINGTALK_MCP_URL="<Streamable_HTTP_URL>"
这个 URL 带访问令牌,等同密码,不要泄露。
工作区沙箱
脚本读取本地文件时,会优先使用 OPENCLAW_WORKSPACE 作为允许根目录:
export OPENCLAW_WORKSPACE="$HOME/.openclaw/workspace"
未设置时默认使用当前工作目录。
核心工具集
Base 层
list_basessearch_basesget_basecreate_baseupdate_basedelete_basesearch_templates
Table 层
get_tablescreate_tableupdate_tabledelete_table
Field 层
get_fieldscreate_fieldsupdate_fielddelete_field
Record 层
query_recordscreate_recordsupdate_recordsdelete_records
附件层
prepare_attachment_upload
推荐工作流
1. 先找 Base
mcporter call dingtalk-ai-table list_bases limit=10
mcporter call dingtalk-ai-table search_bases query="销售"
2. 再拿 Table 目录
mcporter call dingtalk-ai-table get_base baseId="base_xxx"
3. 再展开表结构
mcporter call dingtalk-ai-table get_tables \
--args '{"baseId":"base_xxx","tableIds":["tbl_xxx"]}'
4. 字段复杂时读完整配置
mcporter call dingtalk-ai-table get_fields \
--args '{"baseId":"base_xxx","tableId":"tbl_xxx","fieldIds":["fld_xxx"]}'
5. 再查 / 写记录
mcporter call dingtalk-ai-table query_records \
--args '{"baseId":"base_xxx","tableId":"tbl_xxx","limit":20}'
mcporter call dingtalk-ai-table create_records \
--args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_name":"张三"}}]}'
6. 写入附件字段
attachment 字段支持三种写法:
方式一:先上传,再写 fileToken(推荐,可靠)
# Step 1:申请上传地址(返回 uploadUrl 和 fileToken)
mcporter call dingtalk-ai-table prepare_attachment_upload \
--args '{"baseId":"base_xxx","fileName":"report.pdf","size":102400,"mimeType":"application/pdf"}'
# Step 2:把文件 PUT 到 uploadUrl(必须带 Content-Type,值必须与 mimeType 完全一致)
curl -X PUT "<uploadUrl>" \
-H "Content-Type: application/pdf" \
--data-binary @report.pdf
# Step 3:把 fileToken 写入记录
mcporter call dingtalk-ai-table create_records \
--args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_attach":[{"fileToken":"ft_xxx"}]}}]}'
方式二:直接传外链 URL(异步转存,best-effort)
mcporter call dingtalk-ai-table create_records \
--args '{"baseId":"base_xxx","tableId":"tbl_xxx","records":[{"cells":{"fld_attach":[{"url":"https://example.com/file.pdf"}]}}]}'
URL 转存是 best-effort 异步链路,返回成功仅表示已受理,不保证立即可读。可靠写入请用 fileToken 方式。
方式三:原样回传已有附件数据(保留 / 追加已有附件时使用)
从 query_records 读出的 attachment 单元格数据是完整对象数组,字段形状如下:
[
{
"filename": "a.xlsx",
"size": 92250,
"type": "xls",
"resourceId": "<id>",
"resourceUrl": "<resourceUrl>"
}
]
其中 type 是文件类别枚举,常见值为 "xls"、"image" 等;resourceUrl 通常为有时效的下载链接。
如需保留已有附件,把读出的值原样塞回即可。如需追加新附件,把新的 {"fileToken":"ft_xxx"} 与已有对象合并成一个数组一起传入。
update_records 的 attachment 字段格式相同,传入后会整体覆盖该字段。
脚本
批量新增字段
python3 scripts/bulk_add_fields.py <baseId> <tableId> fields.json
fields.json 示例:
[
{"fieldName":"任务名","type":"text"},
{"fieldName":"优先级","type":"singleSelect","config":{"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}}
]
兼容项:
name会自动映射为fieldNamephone会自动映射为telephone
批量导入记录
python3 scripts/import_records.py <baseId> <tableId> data.csv
python3 scripts/import_records.py <baseId> <tableId> data.json 50
说明:
- CSV 表头默认按
fieldId解释 - JSON 支持:
[{"cells": {...}}][{"fld_xxx": "value"}]
安全规则
- 文件路径受
OPENCLAW_WORKSPACE沙箱限制 - 仅允许读取工作区内
.json/.csv文件 - Base / Table / Field / Record ID 都做格式校验
- 批量上限按 MCP server 实际限制控制:
create_fields:最多 15get_tables / get_fields:最多 10create_records / update_records / delete_records:最多 100
调试原则
- 先
get_base,再get_tables,必要时get_fields - 不要猜
fieldId - 复杂参数一律用
--argsJSON singleSelect / multipleSelect过滤时必须传 option ID,不是 option name
参考
- API 参考:
references/api-reference.md - 错误排查:
references/error-codes.md
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核