dingtalk-workspace-cli

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2026 License: Apache-2.0

README

DingTalk Workspace CLI (dws)

一个 CLI 搞定钉钉工作台所有功能 — 为人类和 AI Agent 而生。
覆盖通讯录、日历、待办、考勤、智能表格等核心能力,无需样板代码即可调用,所有响应均为结构化 JSON 输出,并内置 Agent Skills 让 AI 开箱即用。

DWS Product Overview

[!IMPORTANT] 共创阶段:本项目涉及钉钉企业数据访问,需企业管理员授权后方可使用。当前为灰度共创阶段,请加入钉钉 DWS 共创群,提供以下材料给官方人员完成白名单配置:① 钉钉应用的 Client ID;② 企业主管理员确认开通的凭证。后续将支持企业管理员自助审批开通。

DingTalk Group QR Code

License Apache-2.0 v1.0.0

目录

为什么选择 dws?

为人类而设计 — 告别手写 API 调用。dws 为每个资源提供 --help,用 --dry-run 预览请求,支持表格/JSON/原始格式的结构化输出。

为 AI Agent 而设计 — 每个响应都是结构化 JSON。配合内置的 agent skills,您的 LLM 无需自定义工具即可管理钉钉工作台。

# 搜索联系人
dws contact user search --keyword "悟空"

# 创建待办事项
dws todo task create --title "准备季度汇报材料" --executors "<userId>"

# 预览操作但不执行
dws todo task list --dry-run

# JSON 输出供 agent 使用
dws contact user search --keyword "悟空" -f json

核心服务

dws 通过统一的命令界面覆盖钉钉产品:

服务 命令 描述
通讯录 contact 通讯录 / 用户 / 部门
群聊 chat 机器人消息 / Webhook / 机器人管理
智能表格 aitable AI 表格操作
日历 calendar 日历日程 / 会议室 / 闲忙
待办 todo 待办任务管理
审批 approval 审批流程 / 表单 / 实例
考勤 attendance 考勤打卡 / 排班 / 统计
DING ding DING 消息 / 发送 / 撤回
日志 report 日志 / 模版 / 统计
工作台 workbench 工作台应用查询
开发者文档 devdoc 开放平台文档搜索
文档 doc 文档操作(即将推出)
邮箱 mail 邮件管理(即将推出)
AI 听记 minutes AI 听记 / 会议纪要(即将推出)
钉盘 drive 云盘 / 文件存储(即将推出)
视频会议 conference 视频会议(即将推出)
Teambition tb 项目管理(即将推出)
AI 应用 aiapp AI 应用管理(即将推出)
直播 live 直播管理(即将推出)
技能市场 skill 技能搜索与下载(即将推出)

运行 dws --help 查看完整列表,或 dws <service> --help 查看特定服务的命令。

安装

一键安装(推荐)

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/DingTalk-Real-AI/dingtalk-workspace-cli/main/scripts/install.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/DingTalk-Real-AI/dingtalk-workspace-cli/main/scripts/install.ps1 | iex

自动检测操作系统和架构,从 GitHub Releases 下载预编译二进制文件,并安装 Agent Skills 到 ~/.agents/skills/dws — 无需 Go、Node.js 或其他依赖。大多数 AI Agent(Claude Code、Cursor、Windsurf 等)可自动发现 .agents/skills/ 目录下的技能。

[!TIP] 二进制文件默认安装到 ~/.local/bin。如果安装后找不到 dws 命令,请将其添加到 PATH:

export PATH="$HOME/.local/bin:$PATH"

将此行添加到 ~/.bashrc~/.zshrc 以永久生效。

预编译二进制文件(手动)

GitHub Releases 下载适合您平台的最新二进制文件。

从源码构建

git clone https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli.git
cd dingtalk-workspace-cli
make build
./dws version

这只会构建二进制文件。如需同时将 agent skills 安装到主目录:

sh scripts/install.sh

这会检测本地源码目录,无需从 GitHub 下载即可安装二进制文件和 skills。

开始使用

步骤 1:创建钉钉应用

进入 开放平台应用开发后台,在「企业内部应用 - 钉钉应用」点击右上角的创建应用,新建一个应用。

创建应用

步骤 2:配置重定向 URL

创建应用后,进入应用内,点击安全设置。在「重定向 URL(回调设置)」里,输入 http://127.0.0.1 并保存。

配置重定向URL

步骤 3:发布应用

点击「应用发布 - 版本管理与发布」,发布版本,使应用变成上线状态。

发布应用

步骤 4:申请白名单

参照页面顶部的 共创阶段说明,加入钉钉 DWS 共创群完成白名单配置。

步骤 5:使用凭证登录

获取 Client ID(AppKey)和 Client Secret(AppSecret)后,可通过 CLI 参数指定:

dws auth login --client-id <your-app-key> --client-secret <your-app-secret>

或者通过环境变量设置:

export DWS_CLIENT_ID=<your-app-key>
export DWS_CLIENT_SECRET=<your-app-secret>
dws auth login

[!NOTE] CLI 参数优先级高于环境变量。这些凭证用于钉钉的 OAuth 设备流认证。

Token 加密

Token 使用 PBKDF2(600,000 次迭代)+ AES-256-GCM 加密存储,密钥由您的设备 MAC 地址生成。

快速开始

dws auth login                                    # 钉钉身份认证
dws contact user search --keyword "悟空"           # 搜索联系人
dws calendar event list                            # 列出日历事件
dws todo task create --title "准备季度汇报材料" --executors "<userId>"   # 创建待办

AI Agent Skills

仓库为每个支持的钉钉产品提供 agent skills(SKILL.md 文件)。

Skills 由安装脚本自动安装。如需单独将 skills 安装到现有项目:

# macOS / Linux — 仅将 skills 安装到当前项目
curl -fsSL https://raw.githubusercontent.com/DingTalk-Real-AI/dingtalk-workspace-cli/main/scripts/install-skills.sh | sh

一键安装器(install.sh)将 skills 安装到 ~/.agents/skills/dws(主目录)。 当您想要为特定项目仓库添加 skills 时,请使用 install-skills.sh,它会安装到 ./.agents/skills/dws(当前工作目录)。

[!NOTE] 主目录 vs. 项目 skillsinstall.sh 将 skills 放在 $HOME/.agents/skills/dwsinstall-skills.sh 安装到当前工作目录./.agents/skills/dws),适用于为特定项目仓库添加 skills。

高级用法

输出格式

所有命令支持多种输出格式:

# 表格(默认,适合人类阅读)
dws contact user search --keyword "悟空" -f table

# JSON(适合 agent 和管道处理)
dws contact user search --keyword "悟空" -f json

# 原始 API 响应
dws contact user search --keyword "悟空" -f raw

试运行

预览 MCP 工具调用但不执行:

dws todo task list --dry-run

输出到文件

dws contact user search --keyword "李明" -o result.json

Shell 自动补全

# Bash
dws completion bash > /etc/bash_completion.d/dws

# Zsh
dws completion zsh > "${fpath[1]}/_dws"

# Fish
dws completion fish > ~/.config/fish/completions/dws.fish

环境变量

常用的运行时和开发覆盖项:

变量 用途
DWS_CONFIG_DIR 覆盖默认配置目录
DWS_SERVERS_URL 将服务发现指向自定义服务器注册端点
DWS_CLIENT_ID OAuth client ID(钉钉 AppKey)
DWS_CLIENT_SECRET OAuth client secret(钉钉 AppSecret)
DWS_TRUSTED_DOMAINS Bearer token 允许发送的域名列表,逗号分隔(默认 *.dingtalk.com)。仅开发环境可设为 *
DWS_ALLOW_HTTP_ENDPOINTS 设为 1 允许对回环地址使用 HTTP(非 TLS),仅用于开发调试

退出码

退出码 类别 描述
0 成功 命令执行成功
1 API MCP 工具调用或上游 API 失败
2 认证 身份认证或授权失败
3 校验 输入参数、命令行标志或参数 schema 不匹配
4 发现 服务发现、缓存或协议协商失败
5 内部 未预期的内部错误

使用 -f json 时,错误响应包含结构化信息(categoryreasonhintactions 字段),便于机器消费。

架构设计

dws 使用 发现驱动的管道 — 不硬编码任何产品命令:

Market Registry ──► Discovery ──► IR (规范化目录) ──► CLI (Cobra) ──► Transport (MCP JSON-RPC)
      │                 │
      ▼                 ▼
  mcp.dingtalk.com   缓存(TTL + 过期降级)
  1. Market — 从 mcp.dingtalk.com 获取 MCP 服务注册表
  2. Discovery — 解析服务运行时能力,支持磁盘缓存和过期降级保证离线可用
  3. IR — 将服务规范化为统一的产品/工具目录
  4. CLI — 将目录挂载到 Cobra 命令树,映射 flag 到 MCP 输入参数
  5. Transport — 执行 MCP JSON-RPC 调用,支持重试、认证注入和响应大小限制

使用 -f json 时,所有输出 — 成功、错误和元数据 — 都是结构化 JSON。

开发指南

make build                        # 开发构建
make test                         # 单元测试
make lint                         # 格式化 + lint 检查
make package                      # 本地构建所有发布产物(goreleaser snapshot)
make release                      # 通过 goreleaser 构建和发布
make publish-homebrew-formula     # 将 dist/homebrew/dingtalk-workspace-cli.rb 推送到 tap 仓库

包管理器产物

构建并验证本地包管理器产物:

make package                                       # 生成所有平台归档、npm 资源、Homebrew formula
./scripts/release/verify-package-managers.sh        # 验证 dws 二进制文件和 skills 包含在内

测试

CLI 测试

运行完整的 CLI 测试套件(单元测试、golden 测试和集成测试):

bash test/scripts/run_all_tests.sh --jobs 8

打包测试

运行打包契约测试和本地包管理器验证:

go test ./test/scripts/... -count=1
make package
./scripts/release/verify-package-managers.sh

Skills 测试

安装 skills 后,使用 test/skill_tests.md 进行验证。将该文件中的测试提示输入您的 AI agent 并确认预期输出。

更新日志

参见 CHANGELOG.md 了解版本历史和迁移说明。

安全策略

报告安全漏洞请参见 SECURITY.md

贡献指南

参见 CONTRIBUTING.md 了解开发工作流和本地验证步骤。

许可证

Apache-2.0

Directories

Path Synopsis
internal
app
auth
identity.go manages agent instance identification for tracking.
identity.go manages agent instance identification for tracking.
cli
cobracmd
Package cobracmd provides shared Cobra command utilities used across multiple internal packages (app, cli, compat, helpers).
Package cobracmd provides shared Cobra command utilities used across multiple internal packages (app, cli, compat, helpers).
config
Package config provides shared constants used across multiple internal packages.
Package config provides shared constants used across multiple internal packages.
convert
Package convert provides shared type conversion helpers used across multiple internal packages (cli, compat).
Package convert provides shared type conversion helpers used across multiple internal packages (cli, compat).
i18n
Package i18n provides lightweight internationalization for the DWS CLI.
Package i18n provides lightweight internationalization for the DWS CLI.
ir
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL