New to Claude Skills? Learn how to install them →

Ddingtalk-real-ai on GitHub

Dingtalk Workspace CLI

Free

Manage Dingtalk products and capabilities efficiently.

Get this skill

Free · Opens the source repo

What Dingtalk Workspace CLI does

The Dingtalk Workspace CLI (dws) is a command-line interface designed to manage various capabilities within the Dingtalk ecosystem. It allows users to interact with features such as AI tables, calendars, group chats, task management, and document handling directly from the terminal. This skill is particularly useful for developers and IT professionals who are looking to automate workflows and streamline communication within their organizations using Dingtalk's extensive product offerings.

With dws, users can perform a variety of operations including managing schedules, sending messages, creating tasks, and accessing documents. The CLI emphasizes strict adherence to command formats and safety protocols, ensuring that operations are executed correctly and securely. Users must follow specific guidelines, such as using --format json for outputs and confirming dangerous operations before execution. This focus on safety and precision makes it suitable for environments where data integrity and security are paramount.

The skill is particularly beneficial for teams that rely heavily on Dingtalk for collaboration and project management. It helps reduce the friction of navigating through the Dingtalk interface by providing a more direct and scriptable way to access its features. Whether you need to automate daily tasks, manage team communications, or retrieve data from Dingtalk, this CLI skill offers a robust solution for enhancing productivity.

However, users should be aware that this tool is not suitable for those unfamiliar with command-line interfaces or for tasks that require a graphical user interface. Additionally, it is essential to follow the provided guidelines strictly, as deviation may lead to errors or unintended consequences.

When to use it

Use this skill when you need to automate tasks or manage Dingtalk features programmatically, especially in a team setting.

When not to use it

Avoid this skill if you prefer a graphical interface or are not comfortable using command-line tools.

What you can build with it

Automating Task Management

Use the Dingtalk Workspace CLI to automate the creation and management of tasks within your team, streamlining project workflows.

Managing Group Chats

Quickly send messages or manage group chat settings using command-line commands, reducing the time spent navigating the Dingtalk interface.

Scheduling Meetings

Utilize the CLI to manage calendar events and schedule meetings efficiently, ensuring all team members are informed.

How to install Dingtalk Workspace CLI

View source

1. Install with the skills CLI

npx skills add dingtalk-real-ai/dingtalk-workspace-cli/mono --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by dingtalk-real-ai

钉钉全产品 Skill

通过 dws 命令管理钉钉产品能力。

命令可用性以当前 dws 二进制为准。本文档随内置 skill 发布,可能滞后于二进制;如果 dws <cmd> --help 不存在,说明当前版本未暴露该命令。--help 决定 Cobra 实际接受的 flags;公开基础命令和内建 + shortcut 的 leaf Schema(常规用 --compact)决定 Agent 选择、参数/约束和安全确认语义。实际调用前可用 dws <cmd> --help--dry-run 验证。

严格禁止 (NEVER DO)

  • 不要使用 dws 命令以外的方式操作(禁止 curl、HTTP API、浏览器)
  • 不要编造 UUID、ID 等标识符,必须从命令返回中提取
  • 不要猜测字段名/参数值,操作前必须先查询确认

严格要求 (MUST DO)

  • 所有命令必须加 --format json 以获取可解析输出
  • 危险操作必须先向用户确认,用户同意后才加 --yes 执行
  • 单次批量操作不超过 30 条记录
  • 所有命令必须严格遵循对应产品参考文档里面规定的参数格式(如:如果有参数值,则参数和参数值之间至少用一个空格隔开)
  • 脚本只用于明确覆盖的复合任务scripts/ 下的脚本可封装 AI 表格批量导入导出、AI 应用创建轮询、文档创建后写内容、钉盘目录树等流程;当公开 + Shortcut 已提供目标唯一解析、分页/部分失败 ledger 和确认语义时,优先 Shortcut。Chat 历史导出与机器人广播已完全下沉 Runtime,不再发布兼容脚本
  • 实时个人消息事件例外:用户要监听消息、订阅事件、自动回复消息或事件驱动 Agent 时,默认走 dws event +listen-im ...;只有明确需要多个原始 EventKey、Filter DSL、subscribe_id 或原始 envelope 时才用 dws event consume ... --flatten,不要写脚本轮询消息历史

Shortcut 与原子命令的使用原则

shortcut 是对常用操作的高层封装,适合优先承担用户意图;产品参考文档和本 skill 负责判断意图、风险、跨产品流程和复杂参数,CLI 帮助负责声明当前版本真正可调用的命令。

  • 先按产品参考、意图表和 recipe 路由。用户意图可由可见 Shortcut 满足时,优先使用 dws <service> +<verb> ... --format json,不要手写等价的多步原子命令。只有脚本明确补足 Shortcut 未覆盖的复合交付物且其安全/完整性契约仍适用时才选择脚本。
  • 公开内建 shortcut 同时进入 Runtime Schema。用 dws schema --cli-path "<service> +<verb>" --compact --format json 读取 Agent 选择、参数、跨参数约束和 risk/confirmation;只有参数映射、接口绑定或 provenance 审计才通过 --jq 精确读取 full leaf;dws shortcut list --service <service> --format json 只作为轻量批量发现入口。
  • 真正组装参数前用叶子帮助 dws <service> +<verb> --help 核对当前 Cobra 接受的 flags。父级 dws <service> --help 只能发现子命令,不能替代叶子参数帮助。
  • shortcut catalog 中 confirmation=user_required 时,必须先获得用户确认,确认后才加 --yesnot_required 不额外确认。
  • 如果 shortcut 不在 help / list 中,改用产品参考里的原子命令、脚本或标准流程;不要猜测未展示的 + 命令。
  • shortcut 失败时按“错误处理”流程先加 --verbose 复查;若仍失败,应记录具体输入、输出、trace / endpoint / tool 信息。
<!-- VISIBLE_SHORTCUTS_OVERVIEW_START -->

Shortcut 总览

下面只统计当前公开 catalog 中的 shortcut,不展开完整明细。已知意图应先按产品 Skill、意图表或任务 reference 选择唯一命令;命令已选中时直接执行,只在参数或安全语义不确定时读取 leaf Schema,在当前 Cobra flags 不确定时读取 leaf Help。仅当现有路由和 reference 都无法定位低频能力时,才用 dws shortcut list --service <service> --format json 做最后回退;不要为已知高频意图加载完整产品 Catalog。

服务shortcut 数multi skill
aitable92dingtalk-aitable
attendance19dingtalk-misc
calendar20dingtalk-calendar
chat98dingtalk-chat
contact14dingtalk-contact
devapp19dingtalk-misc
ding4dingtalk-misc
doc45dingtalk-doc
drive7dingtalk-drive
mail10dingtalk-mail
minutes6dingtalk-minutes
oa7dingtalk-misc
report2dingtalk-misc
sheet2dingtalk-misc
todo11dingtalk-todo
wiki1dingtalk-wiki
<!-- VISIBLE_SHORTCUTS_OVERVIEW_END -->

多组织 / 多账号

  • dws profile list --format json 默认返回全部账号。自动化只使用每项稳定的 profile=corpId:userIdstatus/expiresAt/refreshExpAt 来自真实身份 Token,列表不触发刷新。
  • 输入支持 corpId:userIdcorpId:userNamecorpName:userIdcorpName:userName,也兼容单独的 corpId、唯一 corpName 和本地 profile 名。名称只用于输入;重名时必须按报错候选改用 corpId:userId
  • 只传组织时使用该组织明确记录的 isOrgCurrent=true 账号。多账号组织没有默认账号时必须让用户指定账号;禁止选择第一项、最近登录或最近使用账号。
  • 不传 --profile 使用全局 isCurrent=true 账号。primaryProfile/isPrimary 仅兼容输出,不参与选择;previousProfile 只用于 profile switch -
  • 跨组织读 / 搜:按 corpId 去重;每个组织使用唯一 isOrgCurrent=trueprofile。组织存在多个账号且没有默认账号时先询问用户。写 / 发 / 删 / 撤回及持久切换前先确认目标组织和账号。

产品总览

产品用途参考文件
aisearchAI搜问(通用找人首选):按姓名/部门/职位/职责/上级/下级/手机号/工号维度找人,"谁负责 XX/XX 的负责人/某事项/某项目的人"统一走本产品;不含人才池/绩效/职业历程等专项 HR 场景(那些去 hrbrainaisearch.md
aitableAI表格:Base/数据表/字段/记录/视图/附件/图表/仪表盘/导入导出/模板搜索aitable.md
attendance考勤:打卡结果/打卡流水/考勤组查询/考勤规则/汇总统计/假期类型/假期余额(P0 已落地,部分管理类命令仍属 P1)attendance.md
calendar日历:日历列表/日程/参与者/附件/响应/会议室/闲忙查询/时间建议calendar.md
chat群聊与机器人:搜索群/建群/群成员管理/改群名/消息发送(文本/Markdown/图片/文件)/拉取消息/消息收藏/@我/特别关注/机器人群发/单聊/撤回/转发/引用回复/Webhook/机器人搜索chat.md
contact通讯录:用户查询/部门/角色/花名册(学历/家庭/银行卡/紧急联系人/合同等基础字段)/离职员工/特别关注,以及创建企业、企业账号和邀请员工;不含职业历程/绩效/人才池(那些去 hrbraincontact.md
devdoc开放平台文档:搜索开发文档devdoc.md
dingDING消息:发送/撤回(应用内/短信/电话)ding.md
doc钉钉文档:搜索/浏览/读写/块级编辑/评论/文件创建/复制/移动/重命名/删除/导出 docx/权限管理/媒体上传下载doc.md
drive钉钉云盘:文件列表/元数据/文件夹/上传(两步)/下载drive.md
hrbrain组织大脑:人才池管理/员工档案专项模块查询(元数据/批量数据/标签/职业历程/绩效)/结构化高级人才搜索(原始条件表达式);区别于 contact 的基础通讯录档案与 aisearch 的通用语义找人hrbrain.md
markdown原生 Markdown 文件:读取/创建/全量覆盖/字面量或 RE2 局部替换markdown.md
minutesAI听记:听记列表/摘要/关键词/转写/待办/思维导图/发言人/发言人段落总结/热词/录音控制/成员权限/上传minutes.md
oaOA审批:待处理/详情/同意/拒绝/撤销/记录/已发起/任务/转交/评论/抄送oa.md
patPAT 行为授权:浏览器策略/scope 预览/一次性、会话或永久授权pat.md
report日志:按模版创建/收件箱/已发送/模版查看/详情/已读统计report.md
mail邮箱:邮箱地址查询/邮件搜索(KQL)/邮件详情/发送邮件mail.md
sheet在线电子表格(axls):工作表 CRUD/区域读写/CSV 批量写入/行列增删/合并/查找替换/筛选视图/全局筛选/排序/下拉列表/条件格式/浮动图片/浮动图表/模板/导出 xlsx(单命令一站式)sheet.md
todo待办:创建(含优先级/截止时间/循环)/查询/修改/标记完成/删除todo.md
wiki知识库:空间创建/详情/列表/搜索 + 成员管理 + 知识库动态查询wiki.md
whiteboard文档内嵌白板:读取 OpenNodes、追加节点、整页重建whiteboard.md
event个人 IM 事件:监听消息接收、指定发送人、已读、撤回、表情回应,NDJSON 输出(实时驱动 Agent)event.md

意图判断决策树

用户提到"AI应用/创建应用/生成系统/做工具/管理后台/低代码/宜搭" → 当前无稳定产品参考(勿猜 aiapp 命令);向用户说明能力未以产品文档发布,multi 布局见 dingtalk-miscunsupported-scripts.md 用户提到"目标管理/Agoal/战略解码/经营合约/计分卡/目标模板/周月报提交统计" → agoal 用户提到"找人/搜人/谁负责 XX/某事项的负责人/某项目的人/团队成员/上级/下级/按工号找人/按手机号找人" → aisearch(通用语义找人;若明确涉及人才池/绩效/职业历程/结构化高级条件,去 hrbrain) 用户提到"表格/多维表/AI表格/记录/数据/视图/图表/仪表盘" → aitable 用户提到"考勤/打卡/排班" → attendance 用户提到"日程/日历/会议室/约会/时间建议" → calendar 用户提到"群聊/建群/群成员/群管理/发消息/发图片消息/发文件消息/发 Markdown 消息/截图发钉钉/转发消息/引用回复/@我/特别关注消息/机器人发消息/Webhook/机器人群发/机器人单聊/通知" → chat 用户提到"通讯录/同事/部门/组织架构/子部门/部门多少人/离职员工/离职名单/离职花名册/花名册/基础员工档案(学历/家庭/银行卡/紧急联系人/合同)/角色/主管角色/管理员角色/财务/HR/特别关注/星标联系人/创建企业/企业账号/邀请员工/新员工入职" → contact(不含职业历程/绩效/人才池;那些去 hrbrain) 用户提到"开发/API/调用错误 文档" → devdoc 用户提到"DING/紧急消息/电话提醒" → ding 用户提到"钉钉文档/云文档/知识库/读写文档/块级编辑/文档评论/文档复制移动" → doc 用户提到"云盘/文件存储/文件上传下载/文件夹" → drive 用户提到"人才池/储备干部池/员工档案元数据或批量模块数据/职业历程/绩效记录/员工标签/组织大脑/结构化人才搜索(高级条件表达式)" → hrbrain(区别于 aisearch 的通用语义找人与 contact 的基础通讯录档案) 用户提到"原生 Markdown 文件/.md 文件/读取 Markdown 原文/覆盖 Markdown/局部替换 Markdown" → markdown 用户提到"听记/AI听记/会议纪要/转写/摘要/思维导图/发言人/热词" → minutes 用户提到"邮箱/邮件/发邮件/收邮件/搜邮件/查邮件/邮件草稿/转发邮件/回复邮件/邮件附件/抄送" → mail 用户提到"审批/请假/报销/出差/加班/同意/拒绝/撤销审批" → oa 用户提到"PAT 授权/行为权限/scope 授权/批量授权/一次性授权/会话授权/永久授权/授权浏览器策略" → pat 用户提到"日志/日报/周报/日志统计/写日报/提交周报/发日志/填日志" → report 用户提到"在线电子表格/钉钉表格/axls/工作表/单元格读写/合并单元格/筛选视图/导出 xlsx" → sheet 用户提到"待办/TODO/任务提醒/循环待办" → todo 用户提到"创建知识库/知识库列表/搜索知识库空间/wiki/团队空间/知识库成员管理/我的文档个人空间" → wiki 用户提到"文档内嵌白板/画布/OpenNodes/白板节点/连接线/整页重建白板" → whiteboard;创建空白板卡片先走 doc whiteboard insert 用户提到"监听有人@我/监听单聊或群消息/监听所有单聊或群消息/监听某人发送的消息/监听消息已读/监听消息撤回/监听消息贴表情或表情回应/订阅个人 IM 事件/实时接收钉钉事件/监听并自动回复消息/驱动 Agent 处理消息" → event +listen-im;群成员加入/退出、群改名/解散或明确原始 EventKey/Filter DSL → event consume

普通消息、reaction、已读、撤回监听优先由一个 dws event +listen-im 进程表达目标;不同用户、不同群或不同过滤条件拆成独立进程。只有高级事件控制才生成 dws event consume <event_key> [event_key...] --flatten

关键区分: aitable(数据表格) vs todo(待办任务) 关键区分: report(钉钉日志/日报周报) vs todo(待办任务) 关键区分: chat send-by-bot(机器人身份发消息) vs send-by-webhook(自定义机器人Webhook告警) 关键区分: doc(在线富文本文档/adoc) vs markdown(原生 .md 纯文本文件) vs drive(通用文件存储与传输) 关键区分: contact(基础通讯录档案:学历/家庭/银行卡/紧急联系人/合同/部门角色) vs aisearch person(通用语义找人:谁负责/上级/下级/多维度模糊搜索) vs hrbrain(人才池/员工档案专项模块数据/职业历程/绩效/结构化高级人才搜索) 关键区分: oa tasks(审批 taskId,审批/拒绝用) vs oa list-pending(收件箱 processInstanceId,查看用)

更多易混淆场景见 intent-guide.md

危险操作确认

以下操作为不可逆或高影响操作,执行前必须先向用户展示操作摘要并获得明确同意,同意后才加 --yes 执行。

产品命令说明
aitablebase delete删除整个 AI 表格,含全部数据表和记录
aitabletable delete删除数据表(含全部字段/视图/记录)
aitablefield delete删除字段(该列所有值同步清空)
aitableview delete删除视图
aitablerecord delete删除记录(支持批量)
aitablechart delete / dashboard delete删除图表/仪表盘
calendarevent delete删除日程,所有参与者同步取消
calendarparticipant delete移除日程参与者
calendarroom delete取消会议室预定
chatgroup members remove移除群成员
chatmessage recall-by-bot撤回机器人已发消息
docdelete删除整篇文档/文件到回收站(与 block delete 不同,本命令删除整个 node)
docblock delete删除文档单个块(不可恢复)
docpermission update修改协作者权限(降权可能影响他人访问)
dingmessage recall撤回已发 DING 消息
oaapproval revoke撤销自己发起的审批实例
oaapproval reject拒绝待审批(需加明确理由)
todotask delete删除待办
minutesreplace-text全文批量替换转写与摘要

确认流程

Step 1 → 展示操作摘要(操作类型 + 目标对象 + 影响范围)
Step 2 → 用户明确回复确认(如 "确认" / "好的")
Step 3 → 加 --yes 执行命令

确认门禁的识别与重试协议

非交互环境(Agent/CI,stdin 非 TTY)下,写命令不带 --yes 时 CLI 不打印交互提示语,直接失败并输出结构化错误。识别方式:

  • --format json 输出(或 stderr)中 error.reason == "confirmation_required",错误信息含「当前环境无法交互确认」

遇到 confirmation_required 时按以下协议处理:

  1. 不要当普通错误放弃:把命令、风险等级(write / high-risk-write)和关键参数展示给用户,明确告知这是写/高风险操作
  2. 用户显式同意 → 在原始命令末尾追加 --yes 重试(不改动任何业务参数)
  3. 用户拒绝 → 终止,不得改写参数绕过门禁
  4. 想先让用户 review 具体请求:加 --dry-run 重试——它不触发确认门禁,会输出完整调用预览(invocation.params),用户确认预览后再换 --yes 执行

禁止

  • 看到 confirmation_required 就未经用户同意自动追加 --yes 静默重试(等于禁用门禁)
  • confirmation_required 当网络/权限错误处理或重试
  • echo yes | dws ... 等管道方式喂答案代替 --yes(管道答案技术上会被接受,但违背了让用户显式知悉的设计意图)

核心流程

作为一个智能助手,你的首要任务是理解用户的真实、完整的意图,而不是简单地执行命令。在选择 dws 的产品命令前,必须严格遵循以下四步流程:

  1. URL 预检:输入含 alidocs.dingtalk.com URL 时,该域名下存在多种路径格式(/i/nodes/.../i/p/.../spreadsheetv2/.../document/edit|preview?dentryKey=... 等),每种的处理流程不同。必须先读取 url-patterns.md 中的「alidocs URL 分流决策」,按其中规则识别 URL 类型后再选择对应产品。含 shanji.dingtalk.com URL 时直接路由到 minutes。URL 已识别后直接进入对应产品流程,无需后续步骤。
  2. 意图分类:首先,判断用户指令的核心 动词/动作 属于哪一类。这比关注名词更重要。
  3. 歧义处理与信息追问:如果用户指令模糊或包含多个产品的关键字,严禁猜测。必须主动向用户追问以澄清意图。这是你作为智能助手而非命令执行器的核心价值。
  4. 精准产品映射:在完成前两步,意图已经清晰后,参考产品总览和意图判断决策树 来选择产品。
  5. 按任务最小化读取:已知高频意图直接使用本 Skill 或产品 reference 已给出的唯一命令,不预加载完整产品参考文件;只有路由、参数或异常恢复确实需要时,才读取对应产品或任务 reference。

命令发现(Schema 渐进查询 + --help 互为补充)

Schema 渐进查询(Agent 选命令首选)

dws schema 内嵌当前二进制公开命令面的结构化契约。Agent 选择命令、读取参数映射/约束和安全语义时必须优先渐进查询 leaf Schema;真正组装执行参数前,用 --help 确认当前 Cobra 接受的 flags:

本节同时适用于基础/原子命令与公开内建 + shortcut。用户自定义或未公开 shortcut 不进入发布 Schema;其是否可执行仍以当前 Cobra help 为准。

已知命令路径例外:当本 Skill、产品意图表或任务 reference 已经给出精确 CLI path 时,不要再查询产品级/分组级 Schema,也不要调用完整 Shortcut Catalog;可直接执行。只有参数、约束或安全语义不确定时才读取该命令的 leaf Schema,只有当前 Cobra flags 不确定时才补读 leaf Help。

稳定 command identity、主 CLI path 和 alias 由 leaf ContractFinal.Identity 与真实 Cobra tree 精确绑定。Agent 不应读取 Catalog 文件、native annotation 或其他生成 JSON 来重新推断命令;所有运行时查询都以当前二进制交付的 Schema 投影为准。

# 第 1 层:产品概览(~4.5KB,列出全部产品 + 工具数 + 用途摘要)
dws schema

# 第 2 层:产品级(列出该产品下全部工具的 cli_path + description + effect/risk)
dws schema calendar --compact

# 第 3 层:分组级(按命令分组列出工具摘要)
dws schema "calendar event" --compact

# 第 4 层:Agent leaf(参数契约:type/required/description/constraints/examples)
dws schema "calendar event create" --compact

# --all:导出所有工具的完整 leaf Schema,仅用于 CI / 审计 / 参数 baseline
dws schema --all --format json

--all 使用边界(强制)--all 会返回每个工具的完整参数、约束和安全语义,输出体积很大。仅在用户明确要求全量导出,或执行 CI、Catalog 审计、参数防丢 baseline 时使用。普通业务任务严禁使用 --all 做命令发现,也不要把全量结果直接注入 Agent 上下文;必须按“产品概览 → 产品/分组 → leaf”渐进查询。完整兼容性 baseline 必须使用未裁剪的 schema --allschema --all --compact 会移除 provenance 和接口映射字段,不得作为完整 baseline。

同一个工具省略 --compact 的 full leaf 与 --all 条目是同一份 ToolSpec 契约;compact leaf 只做展示投影,不重新解析语义。Alias 查询不得根据 alias 重写或补猜参数。若同一视图观察到内容差异,应作为契约漂移报告,而不是选择其中一份继续执行。

--compact Agent 模式采用正向字段白名单。保留 cli_pathcanonical_pathdescriptioneffectriskconfirmationinterface_modeavailabilityinterface_reasonparameters(含 type/required/description/default/enum)、constraintsexamplesuse_whenavoid_when;新增 full/audit 字段不会自动泄漏进 Agent 上下文。它有意不返回 interface_ref、参数 property/interface_type 和 provenance;检查这些映射事实时,用 full leaf 配合 --jq 精确投影。

--compact 是 Schema 展示能力。当前版本支持;若兼容旧二进制时收到 unknown_flag: --compact,仅去掉 --compact 重跑同一个 Schema 查询。不要因此判定 leaf 不存在,也不要改用 Schema 查询业务数据。

Schema 字段速查

// leaf 级输出(dws schema "calendar event create" --compact)
{
  "cli_path": "calendar event create",
  "canonical_path": "calendar.create_calendar_event",
  "description": "创建新的日程...",
  "effect": "write",           // read | write | destructive
  "risk": "medium",            // low | medium | high
  "confirmation": "not_required", // not_required | user_required
  "interface_mode": "mcp",     // mcp | local | composite
  "availability": "available", // available | unavailable
  "interface_reason": "",
  "parameters": {
    "title": { "type": "string", "required": true, "description": "..." },
    "start": { "type": "string", "required": true, "format": "date-time" }
    // ...
  },
  "constraints": { "require_together": [["recurrence-type", "recurrence-interval", "recurrence-range-type"]] },
  "examples": ["dws calendar event create --title ..."]
}
  • confirmation=user_required → 必须先向用户确认再加 --yes;不要根据 effectrisk 的值自行重写最终 confirmation winner
  • availability=unavailable → 不执行该工具;向用户说明 interface_reasoninterface_mode 只描述实现机制,不能覆盖 availability
  • parameters.<flag>.required=true → Agent 应提供该参数;Cobra 是否硬拒绝以 --help/实际命令契约为准
  • parameters.<flag>.cli_required=true → Cobra 将该 flag 标记为硬必填
  • constraints.require_together → 列出的 flag 必须同时提供

Schema、Help 与业务数据的边界

信息事实源
命令是否存在、当前 Cobra 接受哪些 flagsdws <cli_path> --help
Agent 选择、CLI 参数/required/组合约束、risk/confirmation(原子/基础命令)dws schema "<cli_path>" --compact
CLI↔RPC 参数映射、接口绑定或 provenance 审计full leaf 配合 --jq / --fields 精确投影;不要把整个 full leaf 注入 Agent 上下文
shortcut 的参数、组合约束、risk/confirmation、示例已知路径优先 dws schema --cli-path "<service> +<shortcut>" --compact --format json;完整 shortcut list 仅用于无法定位低频能力时的最后回退
人类可读用法dws <cli_path> --help
钉钉中的文档、文件、日程、消息等实际数据真正执行对应的 read / search / list 命令

Schema 与 Help 冲突是契约漂移,不得静默猜测或把两边字段随意拼接:

  • 执行参数只使用 Cobra/Help 接受的 flags,并把漂移报告出来。
  • 安全语义冲突时不能选择更宽松行为;先采用更保守的确认方式,无法确认安全执行方式时停止并报告。
  • leaf Schema 是已经按来源 precedence 解析后的契约;不要根据值的“严格程度”自行改写 winner。只有发现它与 Help/实际执行契约冲突时,才进入上述安全降级。

dws schema 只查询命令契约,不搜索钉钉文档或业务数据。完成命令发现后,必须继续执行真实命令,例如 dws doc readdws drive search;不要把 Schema 查询结果当成业务查询结果。

Helper-only 与本地 Cobra 命令

dev.* 包含 helper-only 执行面,其中远端 helper 未进入 pinned metadata 时标记为 composite,不能伪装成 localevent list / event schema 读取内置目录和 payload 定义,属于 localevent consume / event status / event stop 同时编排远端个人订阅控制面与本地 bus/consume,属于 composite。实现来源不同,不改变统一查询边界:进入全局 dws schema 的命令须由 leaf ContractFinal.Identity 声明收集,并由同一 ToolSpec 投影到 leaf、产品/分组、--all 与 Catalog。不得把 Cobra 临时合成结果作为第二条 Schema 数据路径。

事件需要区分两种 Schema:dws event schema <event_key> --flatten 查询 Agent 要消费的顶层业务字段;dws schema "event consume" --compact 查询 CLI 命令参数。前者是真实业务命令,后者只读取最终内嵌 SchemaRegistry;不能相互替代。

source 表示最终命令 identity 的来源,不表示运行时 backing;helper/local/MCP 实现机制读取 interface_modeavailability 和 provenance,不要假定 dev.* 必然是 source=mcp:<server>,也不要假定本地命令必然是 source=cobra

错误处理

  1. 先读取 JSON 错误的 retryableretry_after_secondsnext_retry_athintactions;只有明确 retryable=true 时才按服务端节奏做一次有界重试。缺少重试语义时加 --verbose 收集诊断后停止
  2. 仍然失败,报告完整错误信息给用户,禁止自行尝试替代方案
  3. 认证失败时,参考 global-reference.md 中的认证章节处理
  4. 各产品高频错误及排查流程见 error-codes.md
  5. 遇到 capability-limits.md 中列出的「已知不支持操作」时,直接告知用户不支持并建议在钉钉客户端操作,不要重试或变通

详细参考 (按需读取)

Frequently asked questions about Dingtalk Workspace CLI

Similar skills