Skip to main content

dingtalk-unified

钉钉 CLI 全能套件,基于官方 DingTalk Workspace CLI(dws)操作钉钉消息、群聊、通讯录、日历、待办、审批、考勤、日志、DING、AI 表格、钉钉文档、钉盘、AI 听记、邮箱和开放平台文档。用户需要在钉钉内查找联系人、发消息、建群、管理日程、创建待办、处理审批、查看考勤、读写文档、操作 AI 表格、搜索会议听记或调用钉钉开放平台能力时使用。

Source facts

Repository
crimsonblazezero/Zero-Tools
Last source activity
August 3, 2026 at 15:27
Detected SKILL.md language
Chinese
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
41 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
dingtalk-unified
description
钉钉 CLI 全能套件,基于官方 DingTalk Workspace CLI(dws)操作钉钉消息、群聊、通讯录、日历、待办、审批、考勤、日志、DING、AI 表格、钉钉文档、钉盘、AI 听记、邮箱和开放平台文档。用户需要在钉钉内查找联系人、发消息、建群、管理日程、创建待办、处理审批、查看考勤、读写文档、操作 AI 表格、搜索会议听记或调用钉钉开放平台能力时使用。
description_zh
钉钉 CLI 套件,覆盖消息、日历、待办、审批、考勤、日志、文档、AI 表格、钉盘、AI 听记、邮箱等 14 个产品能力
description_en
DingTalk CLI suite powered by dws, covering messages, calendar, todo, approvals, attendance, reports, docs, AI tables, drive, meeting minutes, mail and more
version
1.0.0
dws_cli_version
>=1.0.24
display_name
钉钉套件
display_name_en
Dingtalk Unified
visibility
public
icon
https://codebuddy-platform-1258344699.cos.accelerate.myqcloud.com/public/45edac6b-2078-4678-89f3-6f9800cf5e5f/avatar/skill/au_e2fcac84-856.svg
# 钉钉套件(DingTalk Unified) 通过官方 `dws`(DingTalk Workspace CLI)调用钉钉产品能力。`dws` 的产品域和命令数随版本动态更新,本 Skill 不把静态命令表当作唯一真相;执行时以 `dws --help`、`dws <domain> --help` 和 `dws schema` 为准,并提供意图路由、安全策略、授权策略、命令发现策略和错误恢复策略。 ## 使用前置流程 ### Step 1:确认 dws 可用 优先使用系统 PATH 中的 `dws`: ```bash dws version --format json ``` 如果命令不存在,先安装官方 npm 包: ```bash npm install -g dingtalk-workspace-cli ``` 安装后再次执行: ```bash dws version --format json ``` 要求版本满足 `>=1.0.24`。低版本可能缺少 Mail、Raw API、host-owned PAT、schema 或部分修复。 ### Step 2:检查登录状态 ```bash dws auth status --format json ``` - 已登录:继续执行用户请求。 - 未登录 / token 失效:进入授权流程。 权限三层模型: 1. OAuth 登录:解决“当前用户是谁”。 2. 组织 CLI 访问:解决“企业/组织是否允许 CLI 访问数据”。 3. 业务 PAT scope:解决“某个具体动作是否被允许”,例如读取钉钉文档需要 `doc:read`。 不要把“已登录”误判为“所有业务权限都已授权”。 授权触发规则: - 用户只是问“登录状态 / 是否已登录”时,只汇报状态,不主动发起登录。 - 用户明确说“登录 / 授权 / 发起授权流程 / 继续登录 / 帮我授权 / 开始授权”时,**不要停在状态汇报,也不要再问是否继续**;授权不是危险操作,必须在同一轮直接执行 Step 3。 - 业务命令因为 `not_authenticated`、`AUTH_TOKEN_EXPIRED`、`USER_TOKEN_ILLEGAL` 等认证错误失败时,必须直接进入 Step 3,而不是反复重试业务命令。 ### Step 3:完成授权(Skill 自闭环方案) 本 Skill 不依赖 WorkBuddy Runtime 改造即可完成授权。按以下顺序执行: #### A. 默认方案:浏览器跳转登录 优先执行官方 loopback 登录,让 `dws` 自动打开浏览器完成钉钉 OAuth: ```bash dws auth login ``` 执行要求: 1. 保持命令运行,等待用户在浏览器/钉钉页面完成授权。 2. 授权完成后执行 `dws auth status --format json` 验证状态。 3. 登录状态有效后,进入“初始化基础权限授权”说明:告知用户读取钉钉文档还需要第二段 `doc:read` 业务授权,并按用户选择发起一次性或长期授权。 4. 如果浏览器未自动打开、loopback 失败、远程环境不可用或命令长时间无结果,立即切到 B 方案,不要反复重试。 #### B. 兜底方案:设备流授权链接 + 授权码 执行: ```bash dws auth login --device ``` 从输出中提取并清晰展示给用户: - 授权页:`https://login.dingtalk.com/oauth2/device/verify.htm` - 授权码:例如 `ABCD-EFGH` - 带授权码的完整链接:`https://login.dingtalk.com/oauth2/device/verify.htm?user_code=ABCD-EFGH` 推荐操作方式: 1. 如果输出了完整链接,直接告诉用户点击该链接完成授权;在 macOS 本地环境也可以执行 `open "<complete_url>"` 自动打开浏览器。 2. 如果完整链接不可用,则让用户打开授权页并输入授权码。 3. 保持 `dws auth login --device` 命令轮询,直到授权成功、失败或过期。 4. 授权完成后执行: ```bash dws auth status --format json ``` 5. 登录状态有效后,进入“初始化基础权限授权”说明:告知用户读取钉钉文档还需要第二段 `doc:read` 业务授权,并按用户选择发起一次性或长期授权。 #### C. 初始化基础权限授权 首次 OAuth 登录成功后,读取钉钉文档通常还需要第二段业务授权 `doc:read`。初始化流程必须把这个预期说清楚: ```text 钉钉初始化需要完成两步: 1. 登录钉钉账号 2. 授予 WorkBuddy 读取钉钉文档权限 doc:read ``` 初始化阶段可请求长期授权,避免每次读文档都被中断;但必须明确告诉用户这可能是第二次授权确认,不是并入同一次 OAuth: ```bash export DINGTALK_DWS_AGENTCODE="workbuddy" export DWS_CHANNEL="workbuddy" dws pat chmod doc:read --agentCode workbuddy --grant-type permanent --format json ``` 如果用户明确只想临时授权,改用一次性授权: ```bash dws pat chmod doc:read --agentCode workbuddy --grant-type once --format json ``` 执行规则: 1. 不要把 `doc:read` 说成并入同一次 OAuth;它可能触发第二次授权确认。 2. `doc:read` 属于低风险只读 PAT,初始化时可以请求 permanent,但要先说明用途:用于后续读取钉钉文档正文,减少重复授权打断。 3. 如果组织策略不允许授权或命令返回权限错误,记录失败原因,不阻断非文档类任务;但在执行 `doc read`、`doc search`、读取文档内容等文档读取任务前必须再次补授权。 4. `doc:read` 只覆盖读取钉钉文档;写文档、删除块、移动/重命名等写操作仍按需单独授权,并遵守危险操作确认规则。 #### D. 可选方案:二维码 若用户明确要求二维码,或链接无法点击,可把 B 方案的完整链接转换成二维码图片/终端二维码。仅在本机已有二维码工具时执行,例如 `qrencode`;不要为了生成二维码额外安装依赖。没有二维码工具时,直接使用 B 方案的完整链接和授权码。 #### E. 已登录后的权限授权:host-owned PAT `host-owned PAT` 不是首次登录方案,只用于已登录后遇到业务权限/行为授权拦截时处理。执行业务命令前可注入: ```bash export DINGTALK_DWS_AGENTCODE="workbuddy" export DWS_CHANNEL="workbuddy" ``` 如果业务命令返回 exit code `4`,或 stderr/stdout 中出现 `PAT_MEDIUM_RISK_NO_PERMISSION`、`requiredScopes`、`grantOptions` 等字段: 1. 同时检查 stdout 和 stderr,优先解析 JSON key,不要依赖可能乱码的中文 message。 2. 提取 `requiredScopes[].scope` 和 `grantOptions`。 3. 向用户说明缺少哪些权限、一次性授权和长期授权的区别。 4. 低风险只读 scope 可建议 `once`;中高风险或写权限必须先解释数据范围和风险。 5. 用户确认后执行: ```bash dws pat chmod <scope>... --agentCode workbuddy --grant-type once --format json ``` 6. 只有用户明确要求长期授权时,才改用 `--grant-type permanent`。 7. 授权完成后 replay 原始业务命令。 ## 严格禁止 - 不要绕过 `dws` 直接用 `curl`、HTTP API 或浏览器自动化操作钉钉业务数据。 - 不要把 AppKey、AppSecret、access token、refresh token 写入 `SKILL.md`、references 或日志。 - 不要编造 userId、openConversationId、baseId、tableId、processInstanceId、taskId、fileId 等标识符;必须从 `dws` 命令返回中提取。 - 不要猜测字段名、枚举值或参数格式;不确定时先运行 `dws <command> --help` 或 `dws schema <path>`。 - 不要在未获得用户确认时执行删除、撤回、拒绝、移除成员、批量修改等高影响操作。 ## 严格要求 - 所有业务命令默认加 `--format json`,以便解析结构化输出。 - 写操作优先使用 `--dry-run` 预览;需要真正执行时再加 `--yes`。 - 危险操作必须先展示操作摘要(操作类型、目标对象、影响范围),用户明确确认后才执行。 - 单次批量写入/删除/修改不超过 30 条记录;超过时拆批并逐批确认。 - 参考文档与实际 CLI 输出冲突时,以 `dws <command> --help` 和 `dws schema <path>` 为准。 - 认证或权限错误出现后,停止反复尝试业务 API,先完成授权诊断。 ## 执行策略 - 简单状态类命令可直接执行,例如 `dws auth status --format json`、`dws version --format json`。 - 复杂命令、写操作、上传/下载、审批、日历、群聊、文档块级编辑、AI 表格字段/记录操作,执行前先查 `dws <domain> --help` 或 `dws <domain> <group> --help`;必要时再查 `dws schema <path>`。 - 写操作采用 `--dry-run`(如命令支持)→ 操作摘要 → 用户确认 → `--yes` 执行。 - 基于 help/schema 修正参数最多 1 次;加 `--verbose` 诊断最多 1 次;仍失败则汇报错误和下一步,不绕过 `dws`。 - 输出解析同时检查 stdout 和 stderr。`auth login`、`doctor`、`pat` 类命令可能不是纯 JSON;遇到非 JSON 输出时提取 URL、user code、error code、requiredScopes 等结构化线索。 - 默认分页、字段裁剪和摘要化;不要大段回显邮件、聊天、文档正文等敏感内容,除非用户明确要求。 ## 产品总览 `dws` 的产品域会随版本动态变化。下表是核心路由参考,不是完整命令契约;实际可用产品和参数以 `dws --help`、`dws <domain> --help`、`dws schema` 为准。 | 产品 | 命令 | 用途 | 参考文件 | |---|---|---|---| | AI 表格 / 多维表 | `aitable` | Base、数据表、字段、记录、视图、附件、图表、仪表盘、导入导出、模板搜索 | [aitable.md](./references/products/aitable.md) | | 普通表格 / 在线表格 | `sheet` | 普通电子表格、工作表、单元格区域读写;若当前 dws 版本未暴露该域,以 `dws schema` 为准 | 动态域,先查 `dws sheet --help` | | 考勤 | `attendance` | 打卡记录、排班查询、考勤规则、汇总统计 | [attendance.md](./references/products/attendance.md) | | 日历 | `calendar` | 日程、参与者、会议室、闲忙查询、时间建议 | [calendar.md](./references/products/calendar.md) | | 群聊与机器人 | `chat` / `im` / `bot` | 搜索群、建群、群成员管理、改群名、机器人群发、单聊、撤回、Webhook;若当前 dws 暴露独立 `bot` 域,先查 `dws bot --help` | [chat.md](./references/products/chat.md) | | 通讯录 | `contact` | 当前用户、搜索用户、用户详情、手机号、部门、部门成员 | [contact.md](./references/products/contact.md) | | 开放平台文档 | `devdoc` | 搜索钉钉开放平台开发文档 | [devdoc.md](./references/products/devdoc.md) | | DING | `ding` | 发送/撤回 DING 消息 | [ding.md](./references/products/ding.md) | | 钉钉文档 | `doc` | 搜索、浏览、读写、块级编辑、文件创建、复制、移动、重命名 | [doc.md](./references/products/doc.md) | | 文档评论 | `doc-comment` / `doc comment` | 文档评论、回复、评论列表;具体命令路径随版本变化,先查 `dws doc --help` 和 `dws doc-comment --help` | 动态域,先查 help/schema | | Wiki / 知识库 | `wiki` | 知识库、空间、页面管理;若当前版本未暴露该域,说明 CLI 暂不可用 | 动态域,先查 `dws wiki --help` | | 钉盘 | `drive` | 文件列表、元数据、文件夹、上传、下载 | [drive.md](./references/products/drive.md) | | AI 听记 | `minutes` | 听记列表、摘要、关键词、转写、待办、思维导图、发言人、热词、上传 | [minutes.md](./references/products/minutes.md) | | OA 审批 | `oa` | 待审批、我发起的、表单模板、详情、审批流水、同意、拒绝、撤销 | [oa.md](./references/products/oa.md) | | 日志 | `report` | 按模板创建、收件箱、已发送、模板查看、详情、已读统计 | [report.md](./references/products/report.md) | | 邮箱 | `mail` | 邮箱地址、KQL 邮件搜索、邮件详情、发送邮件 | [mail.md](./references/products/mail.md) | | 待办 | `todo` | 创建、查询、修改、标记完成、删除,含优先级、截止时间、循环 | [todo.md](./references/products/todo.md) | | Raw API | `api` | 通过 `dws api` 调用钉钉 OpenAPI,需自建应用凭证 | [global-reference.md](./references/global-reference.md) | ## 意图路由 - 用户提到“普通表格 / 在线表格 / Sheet / 单元格 / 工作表”且没有 Base、记录、字段等多维表语义 → `sheet` - 用户提到“AI 表格 / 多维表 / Base / 记录 / 字段 / 视图 / 图表 / 仪表盘” → `aitable` - 用户只说“创建一个表格”时,默认先按普通表格 `sheet` 判断;如果用户提到字段、记录、视图、Base,再切到 `aitable`。 - 用户提到“考勤 / 打卡 / 排班” → `attendance` - 用户提到“日程 / 日历 / 会议室 / 约会 / 时间建议 / 闲忙” → `calendar` - 用户提到“群聊 / 建群 / 群成员 / 群管理 / 机器人发消息 / Webhook / 通知” → `chat`;若当前版本暴露独立 `bot` 域且用户明确说机器人管理,先查 `dws bot --help` - 用户提到“通讯录 / 同事 / 部门 / 组织架构 / 手机号查人” → `contact` - 用户提到“开放平台 / API / 调用错误 / 接入文档” → `devdoc` - 用户提到“DING / 紧急消息 / 电话提醒” → `ding` - 用户提到“钉钉文档 / 云文档 / 读写文档 / 块级编辑” → `doc` - 用户提到“文档评论 / 评论 / 回复评论” → 优先查 `doc-comment` 或 `doc comment` - 用户提到“知识库 / Wiki / 空间 / 页面树” → `wiki` - 用户提到“钉盘 / 云盘 / 文件上传下载 / 文件夹” → `drive` - 用户提到“听记 / AI 听记 / 会议纪要 / 转写 / 摘要 / 思维导图 / 发言人 / 热词” → `minutes` - 用户提到“邮箱 / 邮件 / 发邮件 / 收邮件 / 搜邮件” → `mail` - 用户提到“审批 / 请假 / 报销 / 出差 / 加班 / 同意 / 拒绝 / 撤销审批” → `oa` - 用户提到“日志 / 日报 / 周报 / 汇报 / 日志统计” → `report` - 用户提到“待办 / TODO / 任务提醒 / 循环待办” → `todo` 易混淆场景先读 [intent-guide.md](./references/intent-guide.md)。 ## 权限探针流程 探针是可选诊断流程,不是每个任务的前置步骤: - 用户有明确业务指令时,直接按业务指令执行;不要先跑一轮全量探针拖慢流程。 - 用户问“哪些权限已经授权 / 哪些能力能用 / 为什么登录后还不能读文档”时,可以执行安全只读探针。 - 用户需求模糊、可能涉及多个高权限域,或连续遇到权限错误时,先询问:“要不要先做一轮只读权限探针,看看哪些钉钉能力可用?” 用户同意后再探针。 探针流程: 1. 先执行 `dws auth status --format json`。 2. 选择只读安全探针,按域汇总“可访问 / 缺 PAT / 需要资源 ID / 不应探测”。 3. 如果返回 PAT 拦截,提取 `requiredScopes` 并解释缺少的 scope。 4. 明确说明:这是安全探针覆盖范围,不是官方完整授权列表;当前 dws 缺少直接枚举所有已授权 scope 的命令。 已知探针基线:当前仅确认 `doc:read` 可通过 `dws pat chmod doc:read --agentCode workbuddy --grant-type once|permanent --format json` 请求;其他域的已授权/未授权状态不要写死,待后续实测后更新。 推荐只读探针: | 域 | 探针 | |---|---| | `contact` | `dws contact user get-self --format json` | | `calendar` | `dws calendar event list --format json` | | `todo` | `dws todo task list --format json` | | `mail` | `dws mail mailbox list --format json` | | `drive` | `dws drive list --format json` | | `doc` | `dws doc list --format json` / `dws doc search --format json`;读正文前确认 `doc:read` | | `oa` | `dws oa approval list-forms --format json` | | `minutes` | `dws minutes list all --format json` | | `chat` | `dws chat list-top-conversations --format json` | 不要用真实写动作做探针,例如发消息、发邮件、发 DING、审批同意/拒绝、删除/移动/撤回、改群成员。 ## 命令发现 产品参考文档用于快速理解,但实际参数以 CLI 为准: ```bash # 人读视图:Usage / Examples / Flags dws <command-path> --help # 机读视图:JSON Schema、flag alias、必填字段、敏感操作标记 dws schema dws schema <product>.<canonical_name> dws schema "<product> <group> <cli_name>" dws schema <path> --jq '.tool.required' dws schema <path> --jq '.tool.flag_overlay' ``` 当 `dws schema` 中 `sensitive: true`,执行前必须进入用户确认流程。 ## 危险操作确认清单 以下操作为不可逆或高影响操作,执行前必须获得明确确认: | 产品 | 命令 | 风险 | |---|---|---| | `aitable` | `base delete` / `table delete` / `field delete` / `record delete` / `view delete` / `chart delete` / `dashboard delete` | 删除结构或数据 | | `calendar` | `event delete` / `participant delete` / `room delete` | 取消日程、移除参与者或会议室 | | `chat` | `group members remove` / `message recall-by-bot` | 移除群成员或撤回消息 | | `doc` | `block delete` | 删除文档内容块 | | `ding` | `message recall` | 撤回 DING 消息 | | `oa` | `approval reject` / `approval revoke` | 拒绝或撤销审批 | | `todo` | `task delete` | 删除待办 | | `minutes` | `replace-text` | 全文批量替换听记内容 | 确认流程: 1. 展示操作摘要。 2. 等待用户明确回复“确认 / 同意 / 执行”。 3. 加 `--yes` 执行。 4. 返回结构化结果和必要的后续动作。 ## 错误处理 1. 认证失败:读 [global-reference.md](./references/global-reference.md) 的认证章节,优先完成授权,不要重试业务 API。 2. 权限拦截:同时检查 stdout/stderr;如果出现 `requiredScopes`,提取 scope、解释用途并按授权策略处理。 3. 命令不存在或参数不匹配:先查 `dws <domain> --help` / `dws <domain> <group> --help` 修正一次;不要无限猜命令。 4. 命令失败:加 `--verbose` 诊断一次。 5. 出现 `RECOVERY_EVENT_ID=<event_id>`:按 [recovery-guide.md](./references/recovery-guide.md) 执行 recovery 闭环。 6. 中文 help、stderr 或 title 乱码时,不直接复制给用户;优先解析 `code`、`success`、`requiredScopes`、`nodeId`、`docUrl`、`error.category` 等字段,并用中文重述。 7. 仍失败:报告完整错误、已尝试步骤和建议下一步,不要自行绕过 `dws`。 ## 已知限制 - Raw API 通常需要自建应用凭证;默认 OAuth/MCP 登录不等于 Raw API 可用。 - 文档读取可能需要 `doc:read`,出现“能搜索/创建但不能读正文”时,优先解释为业务 PAT scope 缺失。 - 考勤汇总、文档正文等中风险数据可能触发额外 PAT 授权。 - `doc upload` / 上传 pipeline、`calendar respond`、部分 `chat message list-all` 能力可能受当前 dws/平台版本限制;执行前必须先验证命令存在。 - token 和加密凭证绑定设备/Keychain,跨设备或远程环境可能需要重新登录。 ## 详细参考 - [references/workbuddy-auth.md](./references/workbuddy-auth.md):Skill 自闭环授权方案、浏览器跳转、设备流链接/授权码、可选二维码和 host-owned PAT 补充 - [references/global-reference.md](./references/global-reference.md):认证、输出格式、全局 flags、环境变量、Raw API - [references/intent-guide.md](./references/intent-guide.md):意图路由和易混淆场景 - [references/field-rules.md](./references/field-rules.md):AI 表格字段类型规则 - [references/error-codes.md](./references/error-codes.md):错误码和排查流程 - [references/recovery-guide.md](./references/recovery-guide.md):recovery 闭环 - [references/products/](./references/products/):各产品命令参考 - [scripts/](./scripts/):官方批量工作流脚本和 WorkBuddy setup 脚本
View on GitHub