From cf22acbad08ab02ec06771b50b3d978ef042796d Mon Sep 17 00:00:00 2001 From: Kaxi <1042864399@qq.com> Date: Mon, 1 Jun 2026 00:50:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20DWS=20=E9=92=89?= =?UTF-8?q?=E9=92=89=20CLI=20=E4=BB=8B=E7=BB=8D=E6=96=87=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- content/posts/dws-dingtalk-cli/index.md | 150 ++++++++++++++++++++++++ content/posts/go-mcp-gin/img/cover.svg | 1 + content/posts/go-mcp-gin/index.md | 2 +- 3 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 content/posts/dws-dingtalk-cli/index.md create mode 100644 content/posts/go-mcp-gin/img/cover.svg diff --git a/content/posts/dws-dingtalk-cli/index.md b/content/posts/dws-dingtalk-cli/index.md new file mode 100644 index 0000000..d0691a8 --- /dev/null +++ b/content/posts/dws-dingtalk-cli/index.md @@ -0,0 +1,150 @@ +--- +title: DWS — 钉钉官方出品的 AI 友好命令行工具 +published: 2026-06-01 +description: 介绍阿里巴巴官方的 DingTalk Workspace CLI(dws),一个覆盖钉钉 19 个产品、213 个命令的 AI 友好命令行工具,支持自动升级和 Agent Skill 系统。 +image: /posts/dws-dingtalk-cli/img/cover.svg +tags: ['钉钉', 'CLI', 'AI Agent', 'Go', '效率工具'] +--- + +## dws 是什么 + +dws(DingTalk 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 + +# Homebrew(macOS/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 值得一试。 diff --git a/content/posts/go-mcp-gin/img/cover.svg b/content/posts/go-mcp-gin/img/cover.svg new file mode 100644 index 0000000..e8dcc8a --- /dev/null +++ b/content/posts/go-mcp-gin/img/cover.svg @@ -0,0 +1 @@ +
从零搭建 MCP 服务器
\ No newline at end of file diff --git a/content/posts/go-mcp-gin/index.md b/content/posts/go-mcp-gin/index.md index ee5d5ee..a51e93c 100644 --- a/content/posts/go-mcp-gin/index.md +++ b/content/posts/go-mcp-gin/index.md @@ -2,7 +2,7 @@ title: Go-MCP 接入 Gin:从零搭建 MCP 服务器 published: 2026-06-01 description: 介绍如何使用 mark3labs/mcp-go 与 Gin 框架集成,搭建一个带鉴权的 MCP(Model Context Protocol)服务器,让 AI Agent 能直接调用你的后端服务。 -image: /posts/go-mcp-gin/img/cover.png +image: /posts/go-mcp-gin/img/cover.svg tags: ['Go', 'MCP', 'Gin', 'AI Agent', '后端'] ---