Files
SuBlog/content/posts/dws-dingtalk-cli/index.md
T
2026-06-01 00:50:43 +08:00

151 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: DWS — 钉钉官方出品的 AI 友好命令行工具
published: 2026-06-01
description: 介绍阿里巴巴官方的 DingTalk Workspace CLIdws),一个覆盖钉钉 19 个产品、213 个命令的 AI 友好命令行工具,支持自动升级和 Agent Skill 系统。
image: /posts/dws-dingtalk-cli/img/cover.svg
tags: ['钉钉', 'CLI', 'AI Agent', 'Go', '效率工具']
---
## dws 是什么
dwsDingTalk Workspace CLI)是阿里巴巴 2026 年开源的钉钉命令行工具,Apache-2.0 协议,Go 语言编写。
它的定位很明确:**把钉钉的所有产品能力暴露给 AI Agent 和命令行用户**。不用打开钉钉 App,不用写 API 调用代码,一条命令搞定。
```bash
# 查看今天有什么会
dws calendar event list --start 2026-06-01 --end 2026-06-01
# 给群里发条消息
dws chat send --group-id xxx --content "今天发布推迟到下午3点"
# 创建一个待办
dws todo task create --subject "Review PR #123" --due-date 2026-06-02
# 读取钉钉文档
dws doc read --url "https://alidocs.dingtalk.com/i/nodes/xxx"
```
## 安装
三种方式,选你喜欢的:
```bash
# npm(推荐,跨平台自动下载二进制)
npm install -g dingtalk-workspace-cli
# HomebrewmacOS/Linux
brew install dws
# 直接下载二进制
# https://github.com/open-dingtalk/dingtalk-workspace-cli/releases
```
安装后认证:
```bash
dws auth login
```
会打开浏览器走 OAuth 设备流认证,token 加密存储在系统钥匙串里(PBKDF2 + AES-256-GCM)。
## 覆盖的钉钉产品
这是最夸张的部分 — **19 个产品,213 个命令**,基本把钉钉全家桶都搬到了命令行:
| 产品 | 命令数 | 说明 |
|------|--------|------|
| 聊天 `chat` | 57 | 消息收发、群管理、机器人、已读状态、Webhook |
| AI 表格 `aitable` | 42 | Base/数据表/字段/记录/视图/图表/仪表盘,完整 CRUD |
| 电子表格 `sheet` | 34 | 工作表读写、行列操作、合并、筛选视图、导出 |
| 文档 `doc` | 21 | 搜索、读写、块级编辑、评论、复制移动 |
| 会议纪要 `minutes` | 19 | 列表、摘要、转写、思维导图、发言人、热词 |
| 日历 `calendar` | 14 | 事件 CRUD、会议室、忙闲查询、时间建议 |
| 审批 `oa` | 9 | 待办、发起、同意/拒绝/撤销 |
| 云盘 `drive` | 9 | 列表、下载、上传、创建目录 |
| 知识库 `wiki` | 7 | 空间管理、成员管理 |
| 汇报 `report` | 7 | 日志/日报/周报,按模板创建、统计 |
| 待办 `todo` | 6 | 创建、完成、删除,支持优先级和循环 |
| 邮件 `mail` | 4 | 邮箱查询、邮件搜索、发送 |
| 考勤 `attendance` | 4 | 打卡记录、排班、汇总 |
| 通讯录 `contact` | 3 | 用户搜索、部门查询 |
| DING 消息 `ding` | 2 | 发送/撤回(应用内、短信、电话) |
| 其他 | 若干 | AI 搜索、AI 应用、直播、开放平台文档 |
还有一个万能命令 `dws api`,可以直接调用任意钉钉 OpenAPI,不受这 213 个命令的限制。
## Agent Skill 系统
dws 内置了一套完整的 Agent Skill,可以直接被 AI 编程工具发现和使用:
- **Claude Code** — 通过 SKILL.md 自动加载
- **Cursor** — 支持 MCP 协议接入
- **Codex / OpenCode / Qoder** — 通过 skill 安装命令接入
安装 skill
```bash
dws skill setup
```
SKILL.md 里定义了:
- 16 个产品的意图判断决策树(用户说"表格"→ `aitable`,说"打卡"→ `attendance`
- 危险操作确认流程(删除、撤回等必须先确认)
- 错误处理规范(verbose 重试、recovery 事件 ID
- URL 分流规则(alidocs.dingtalk.com 的多种路径格式自动识别)
Agent 读到这份 SKILL.md 就知道什么时候该调什么命令,不需要额外的 prompt 工程。
## 自动升级
内置 `dws upgrade`,不需要重新下载安装包:
```bash
dws upgrade # 交互式升级到最新版
dws upgrade --check # 仅检查是否有新版本
dws upgrade --list # 列出最近版本
dws upgrade --version v1.0.5 # 升级到指定版本
dws upgrade --rollback # 回滚到上一版本
```
升级流程:下载 → SHA256 校验 → 备份当前版本 → 原子替换 → 更新 Skill。失败可一键回滚。
## 亮点
### 1. 为 AI Agent 专门优化
这可能是目前对 AI 最友好的 CLI 工具:
- **智能纠错** — AI 模型经常生成错误的参数格式(`--userId` 应该是 `--user-id``--limit100` 应该是 `--limit 100`),dws 的 5 阶段 Pipeline 会自动修正
- **Schema 发现** — `dws schema` 让 Agent 动态查询可用工具和参数,不需要硬编码
- **jq 过滤** — `--jq '.data[] | {name, id}'` 直接过滤输出,减少 Agent 消耗的 token
- **JSON 输出** — 所有命令支持 `--format json`,方便程序解析
### 2. 安全设计
- token 用 PBKDF2 + AES-256-GCM 加密,密钥绑定设备 MAC 地址
- 域名白名单,只能访问钉钉官方 API
- 强制 HTTPS
- 写操作必须显式 `--yes` 确认
- 完整审计链
### 3. 发现驱动架构
不是把所有命令硬编码在代码里,而是:
1. 从钉钉 MCP 服务器注册中心拉取元数据
2. 运行时发现服务端能力
3. 转换成统一的中间表示(IR
4. 动态挂载到命令树
这意味着钉钉新增产品能力时,dws 不需要发版就能支持。
### 4. 多平台分发
GoReleaser 交叉编译 + Homebrew formula + npm 包 + shell/PowerShell 安装脚本,覆盖 Windows、macOS、Linux。
## 总结
dws 把钉钉从一个"必须打开 App 才能用"的工具变成了一个"命令行 + AI Agent 随时调用"的平台。213 个命令覆盖日常办公的方方面面,Agent Skill 系统让 AI 编程工具可以直接理解和使用这些能力。
如果你是钉钉重度用户,或者在做企业内部的 AI Agent 集成,dws 值得一试。