Dws
Pinvou/pinvou-agent
【何时用:仅当用户明确指向钉钉/DingTalk(钉钉文档、钉钉日程等)时使用;泛指做文档/表格/待办/审批默认走本地工具,不要误用钉钉】用 dws CLI 管理钉钉:AI表格/AI搜问(找人首选)/目标管理(Agoal)/组织大脑/日历/通讯录/群聊与机器人消息/待办/审批/考勤/日志(日报周报)/DING消息/钉钉文档/云盘/Markdown文件/AI听记/邮箱/在线电子表格(axls)/知…
钉钉 CLI 全能套件,基于官方 DingTalk Workspace CLI(dws)操作钉钉消息、群聊、通讯录、日历、待办、审批、考勤、日志、DING、AI 表格、钉钉文档、钉盘、AI 听记、邮箱和开放平台文档。用户需要在钉钉内查找联系人、发消息、建群、管理日程、创建待办、处理审批、查看考勤、读写文档、操作 AI 表格、搜索会议听记或调用钉钉开放平台能力时使用。
$ npx skills add infometa/workbuddyskills --skill dingtalk-unified -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install infometa/workbuddyskills dingtalk-unified --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/infometa/workbuddyskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dingtalk-unified .claude/skills/dingtalk-unified && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dingtalk-unified" agent skill from https://github.com/infometa/workbuddyskills/tree/main/skills/dingtalk-unified into .claude/skills/dingtalk-unified/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dingtalk-unified", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/infometa/workbuddyskills/tree/main/skills/dingtalk-unifiedType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add infometa/workbuddyskills --skill dingtalk-unified -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install infometa/workbuddyskills dingtalk-unified --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/infometa/workbuddyskills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dingtalk-unified .agents/skills/dingtalk-unified && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dingtalk-unified" agent skill from https://github.com/infometa/workbuddyskills/tree/main/skills/dingtalk-unified into .agents/skills/dingtalk-unified/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dingtalk-unified", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add infometa/workbuddyskills --skill dingtalk-unified -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install infometa/workbuddyskills dingtalk-unified --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/infometa/workbuddyskills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dingtalk-unified .cursor/skills/dingtalk-unified && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dingtalk-unified" agent skill from https://github.com/infometa/workbuddyskills/tree/main/skills/dingtalk-unified into .cursor/skills/dingtalk-unified/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dingtalk-unified", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/infometa/workbuddyskills.git --path skills/dingtalk-unified--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add infometa/workbuddyskills --skill dingtalk-unified -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install infometa/workbuddyskills dingtalk-unified --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/infometa/workbuddyskills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dingtalk-unified .gemini/skills/dingtalk-unified && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dingtalk-unified" agent skill from https://github.com/infometa/workbuddyskills/tree/main/skills/dingtalk-unified into .gemini/skills/dingtalk-unified/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dingtalk-unified", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install infometa/workbuddyskills dingtalk-unifiedInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add infometa/workbuddyskills --skill dingtalk-unified -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/infometa/workbuddyskills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dingtalk-unified .github/skills/dingtalk-unified && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dingtalk-unified" agent skill from https://github.com/infometa/workbuddyskills/tree/main/skills/dingtalk-unified into .github/skills/dingtalk-unified/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dingtalk-unified", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add infometa/workbuddyskills --skill dingtalk-unified -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install infometa/workbuddyskills dingtalk-unified --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/infometa/workbuddyskills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dingtalk-unified .opencode/skills/dingtalk-unified && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dingtalk-unified" agent skill from https://github.com/infometa/workbuddyskills/tree/main/skills/dingtalk-unified into .opencode/skills/dingtalk-unified/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dingtalk-unified", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dingtalk-unified钉钉 CLI 全能套件,基于官方 DingTalk Workspace CLI(dws)操作钉钉消息、群聊、通讯录、日历、待办、审批、考勤、日志、DING、AI 表格、钉钉文档、钉盘、AI 听记、邮箱和开放平台文档。用户需要在钉钉内查找联系人、发消息、建群、管理日程、创建待办、处理审批、查看考勤、读写文档、操作 AI 表格、搜索会议听记或调用钉钉开放平台能力时使用。
Dingtalk Unified is an agent skill from infometa/workbuddyskills. 钉钉 CLI 全能套件,基于官方 DingTalk Workspace CLI(dws)操作钉钉消息、群聊、通讯录、日历、待办、审批、考勤、日志、DING、AI 表格、钉钉文档、钉盘、AI 听记、邮箱和开放平台文档。用户需要在钉钉内查找联系人、发消息、建群、管理日程、创建待办、处理审批、查看考勤、读写文档、操作 AI 表格、搜索会议听记或调用钉钉开放平台能力时使用。
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 43 other files, including scripts and reference files (for example `references/error-codes.md`, `references/field-rules.md` and `references/global-reference.md`).
The repository describes itself as: WorkBuddy skills / connectors / experts archive for offline study. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 692b3eb. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/, which the agent can run.
Shell commands in SKILL.md call:
npmpython3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
login.dingtalk.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dingtalk Unified loads about 3.9k tokens when it runs, and up to ~57k if it reads all its reference files. Until then it costs about 50 tokens; SKILL.md has 1,109 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from infometa/workbuddyskills at commit 692b3eb, republished under its Apache-2.0 licence (© infometa). 1,109 words, ~3,916 tokens.
.claude/skills/dingtalk-unified/SKILL.md (or your agent's skills folder). This skill also uses 41 other files; get the full folder from GitHub.通过官方 dws(DingTalk Workspace CLI)调用钉钉产品能力。dws 的产品域和命令数随版本动态更新,本 Skill 不把静态命令表当作唯一真相;执行时以 dws --help、dws <domain> --help 和 dws schema 为准,并提供意图路由、安全策略、授权策略、命令发现策略和错误恢复策略。
优先使用系统 PATH 中的 dws:
dws version --format json如果命令不存在,先安装官方 npm 包:
npm install -g dingtalk-workspace-cli安装后再次执行:
dws version --format json要求版本满足 >=1.0.26。低版本可能缺少 ndjson/csv 输出格式、--content/--content-file flag、群消息 --title 必填、auth 凭证按版本分区、schema sticky flag splitting 等能力和修复。
dws auth status --format json权限三层模型:
doc:read。不要把"已登录"误判为"所有业务权限都已授权"。
凭证存储说明(v1.0.29+):dws 按 CLI 版本分区存储 OAuth 凭证(app.json 按版本隔离),多版本共存时不会互相覆盖。升级后首次使用可能需要重新登录。
授权触发规则:
not_authenticated、AUTH_TOKEN_EXPIRED、USER_TOKEN_ILLEGAL 等认证错误失败时,必须直接进入 Step 3,而不是反复重试业务命令。当前 WorkBuddy shell 环境可能是 LC_CTYPE=C / LANG="",直接在 Bash 参数里传中文可能导致 dws 输出看起来乱码,甚至把错误编码写入用户可见字段(如待办标题、文件名、文档名、消息内容)。涉及中文 / CJK 内容时先检查:
locale如果不是 UTF-8 locale,避免直接写 dws ... --title "中文"。改用 Python 以 Unicode 字符串和 subprocess.run([...]) 参数列表调用 dws,并设置 UTF-8 环境:
PYTHONUTF8=1 /Library/Frameworks/Python.framework/Versions/3.12/bin/python3 -c 'import subprocess, os, sys; title="\u8bc4\u5ba1\u7ed3\u8bba"; r=subprocess.run(["dws","todo","task","update","--task-id","<taskId>","--title",title,"--format","json"], env={**os.environ,"LC_ALL":"en_US.UTF-8","LANG":"en_US.UTF-8"}, capture_output=True); sys.stdout.buffer.write(r.stdout); sys.stderr.buffer.write(r.stderr); raise SystemExit(r.returncode)'验证中文字段时,不要只看终端渲染;可读取 JSON 后用 unicode_escape 比对真实内容。
本 Skill 不依赖 WorkBuddy Runtime 改造即可完成授权。按以下顺序执行:
优先执行官方 loopback 登录,让 dws 自动打开浏览器完成钉钉 OAuth:
dws auth login执行要求:
dws auth status --format json 验证状态。doc:read 业务授权,并按用户选择发起一次性或长期授权。执行:
dws auth login --device从输出中提取并清晰展示给用户:
https://login.dingtalk.com/oauth2/device/verify.htmABCD-EFGHhttps://login.dingtalk.com/oauth2/device/verify.htm?user_code=ABCD-EFGH推荐操作方式:
open "<complete_url>" 自动打开浏览器。dws auth login --device 命令轮询,直到授权成功、失败或过期。dws auth status --format jsondoc:read 业务授权,并按用户选择发起一次性或长期授权。首次 OAuth 登录成功后,读取钉钉文档通常还需要第二段业务授权 doc:read。初始化流程必须把这个预期说清楚:
钉钉初始化需要完成两步:
1. 登录钉钉账号
2. 授予 WorkBuddy 读取钉钉文档权限 doc:read初始化阶段可请求长期授权,避免每次读文档都被中断;但必须明确告诉用户这可能是第二次授权确认,不是并入同一次 OAuth:
export DINGTALK_DWS_AGENTCODE="workbuddy"
export DWS_CHANNEL="workbuddy"
dws pat chmod doc:read --agentCode workbuddy --grant-type permanent --format json如果用户明确只想临时授权,改用一次性授权:
dws pat chmod doc:read --agentCode workbuddy --grant-type once --format json执行规则:
doc:read 说成并入同一次 OAuth;它可能触发第二次授权确认。doc:read 属于低风险只读 PAT,初始化时可以请求 permanent,但要先说明用途:用于后续读取钉钉文档正文,减少重复授权打断。doc read、doc search、读取文档内容等文档读取任务前必须再次补授权。doc:read 只覆盖读取钉钉文档;写文档、删除块、移动/重命名等写操作仍按需单独授权,并遵守危险操作确认规则。若用户明确要求二维码,或链接无法点击,可把 B 方案的完整链接转换成二维码图片/终端二维码。仅在本机已有二维码工具时执行,例如 qrencode;不要为了生成二维码额外安装依赖。没有二维码工具时,直接使用 B 方案的完整链接和授权码。
host-owned PAT 不是首次登录方案,只用于已登录后遇到业务权限/行为授权拦截时处理。执行业务命令前可注入:
export DINGTALK_DWS_AGENTCODE="workbuddy"
export DWS_CHANNEL="workbuddy"如果业务命令返回 exit code 4,或 stderr/stdout 中出现 PAT_MEDIUM_RISK_NO_PERMISSION、requiredScopes、grantOptions 等字段:
requiredScopes[].scope 和 grantOptions。once;中高风险或写权限必须先解释数据范围和风险。dws pat chmod <scope>... --agentCode workbuddy --grant-type once --format json--grant-type session 只有在已知 --session-id 时才能使用;不要执行缺少 --session-id 的旧命令。格式为:dws pat chmod <scope>... --agentCode workbuddy --grant-type session --session-id <id> --format jsondws pat chmod drive:upload-info drive:commit --agentCode workbuddy --grant-type once --format json--grant-type permanent。说明:dws schema 能给出命令结构和敏感操作标记,但不总是静态暴露 host-owned PAT scope。最可靠信号仍是运行时返回 PAT_MEDIUM_RISK_NO_PERMISSION.requiredScopes。对固定工作流,可提前合并申请已知 scope。
| 常用场景 | 探针结果 / 预判 | 建议授权方式 |
|---|---|---|
| 通讯录当前用户/搜人 | 本轮读探针未触发额外 PAT | 首次登录后直接可用 |
| 待办创建/读取/更新/完成 | 本轮写探针未触发额外 PAT | 首次登录后直接可用 |
| 待办删除 | 已实测需要 todo.task:delete | 删除类高影响操作,每次或按场景单独确认 |
| 日历列表/详情 | 本轮读探针未触发额外 PAT | 首次登录后直接可用 |
| 日历创建/更新/删除 | 已实测分别需要 calendar.event:create、calendar.event:update、calendar.event:delete | 可做“日历管理包”;删除仍需操作确认 |
| 钉盘列表/详情 | 本轮读探针未触发额外 PAT | 首次登录后直接可用 |
| 钉盘建文件夹/下载 | 已实测需要 drive:mkdir、drive:download | 按场景授权 |
| 钉盘上传文件 | 已实测需要 drive:upload-info + drive:commit;HTTP PUT 本身不走 PAT | 用户确认后一次性 pat chmod 两个 scope,再重放上传 |
| 钉钉文档创建/信息/搜索/列表/重命名 | 本轮探针未触发额外 PAT | 首次登录后直接可用或按需执行 |
| 钉钉文档读取/全文更新/块插入 | 已实测需要 doc:read、doc:update、doc.block:insert;当前 doc update CLI flag 与 schema 存在不一致,建议优先用 block API 写入 | 可做“文档读写包”,但写入前展示摘要 |
| 群聊搜索/未读会话 | 本轮读探针未触发额外 PAT | 首次登录后直接可用 |
| 发送单聊/群消息 | 已实测单聊和群聊发送均需要 chat.message:send;v1.0.28+ 群消息也必须传 --title | 消息发送属于外部可见写操作,必须操作前摘要 + 用户确认 |
| 邮箱列表 | 本轮读探针未触发额外 PAT | 首次登录后直接可用 |
| 邮件发送 | 已实测自发自收需要 mail.message:send | 邮件发送必须操作前摘要 + 用户确认 |
| OA 可见表单、日志模板、AI 听记列表 | 本轮读探针未触发额外 PAT | 首次登录后直接可用 |
| 考勤汇总/打卡记录 | 已实测需要 attendance:summary、attendance.record:get;考勤规则查询本轮未触发额外 PAT | 只在用户请求考勤时按需授权 |
| AI 表格 Base 列表/详情 | 本轮读探针未触发额外 PAT | 首次登录后直接可用 |
| AI 表格 Base 创建/更新/删除 | 已实测需要 aitable.base:create、aitable.base:update、aitable.base:delete | 创建/更新可做场景包;删除必须单独确认 |
| 其他删除/撤回/拒绝/移除成员/覆盖等高影响操作 | schema sensitive=true 或危险清单命中 | 必须单独确认;不应首次安装预授权 |
首次安装不建议“一次性申请所有常用权限”。推荐最小 OAuth 登录 + 按场景延迟授权;可为高频工作流做授权包(如“钉盘上传包:drive:upload-info、drive:commit”),由用户首次使用该场景时一键确认。
dws 直接用 curl、HTTP API 或浏览器自动化操作钉钉业务数据。SKILL.md、references 或日志。dws 命令返回中提取。dws <command> --help 或 dws schema <path>。--format json,以便解析结构化输出。--format 支持 json|table|raw|pretty|ndjson|csv(v1.0.26+);对大列表建议用 ndjson 流式输出。--dry-run 预览;需要真正执行时再加 --yes。dws <command> --help 和 dws schema <path> 为准。dws auth status --format json、dws version --format json。dws <domain> --help 或 dws <domain> <group> --help;必要时再查 dws schema <path>。--dry-run(如命令支持)→ 操作摘要 → 用户确认 → --yes 执行。--verbose 诊断最多 1 次;仍失败则汇报错误和下一步,不绕过 dws。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 |
| 普通表格 / 在线表格 | sheet | 普通电子表格、工作表、单元格区域读写;若当前 dws 版本未暴露该域,以 dws schema 为准 | 动态域,先查 dws sheet --help |
| 考勤 | attendance | 打卡记录、排班查询、考勤规则、汇总统计 | attendance.md |
| 日历 | calendar | 日程、参与者、会议室、闲忙查询、时间建议 | calendar.md |
| 群聊与机器人 | chat / im / bot | 搜索群、建群、群成员管理、改群名、机器人群发、单聊、撤回、Webhook;若当前 dws 暴露独立 bot 域,先查 dws bot --help | chat.md |
| 通讯录 | contact | 当前用户、搜索用户、用户详情、手机号、部门、部门成员 | contact.md |
| 开放平台文档 | devdoc | 搜索钉钉开放平台开发文档 | devdoc.md |
| DING | ding | 发送/撤回 DING 消息 | ding.md |
| 钉钉文档 | doc | 搜索、浏览、读写、块级编辑、文件创建、复制、移动、重命名 | doc.md |
| 文档评论 | doc-comment / doc comment | 文档评论、回复、评论列表;具体命令路径随版本变化,先查 dws doc --help 和 dws doc-comment --help | 动态域,先查 help/schema |
| Wiki / 知识库 | wiki | 知识库、空间、页面管理;若当前版本未暴露该域,说明 CLI 暂不可用 | 动态域,先查 dws wiki --help |
| 钉盘 | drive | 文件列表、元数据、文件夹、上传、下载 | drive.md |
| AI 听记 | minutes | 听记列表、摘要、关键词、转写、待办、思维导图、发言人、热词、上传 | minutes.md |
| OA 审批 | oa | 待审批、我发起的、表单模板、详情、审批流水、同意、拒绝、撤销 | oa.md |
| 日志 | report | 按模板创建、收件箱、已发送、模板查看、详情、已读统计 | report.md |
| 邮箱 | mail | 邮箱地址、KQL 邮件搜索、邮件详情、发送邮件 | mail.md |
| 待办 | todo | 创建、查询、修改、标记完成、删除,含优先级、截止时间、循环 | todo.md |
| Raw API | api | 通过 dws api 调用钉钉 OpenAPI,需自建应用凭证 | global-reference.md |
sheetaitablesheet 判断;如果用户提到字段、记录、视图、Base,再切到 aitable。attendancecalendarchat;若当前版本暴露独立 bot 域且用户明确说机器人管理,先查 dws bot --helpcontactdevdocdingdocdoc-comment 或 doc commentwikidriveminutesmailoareporttodo易混淆场景先读 intent-guide.md。
探针是可选诊断流程,不是每个任务的前置步骤:
探针流程:
dws auth status --format json。requiredScopes 并解释缺少的 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 为准:
# 人读视图: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 | 全文批量替换听记内容 |
确认流程:
--yes 执行。requiredScopes,提取 scope、解释用途并按授权策略处理。dws <domain> --help / dws <domain> <group> --help 修正一次;不要无限猜命令。--verbose 诊断一次。RECOVERY_EVENT_ID=<event_id>:按 recovery-guide.md 执行 recovery 闭环。code、success、requiredScopes、nodeId、docUrl、error.category 等字段,并用中文重述。dws。doc:read,出现"能搜索/创建但不能读正文"时,优先解释为业务 PAT scope 缺失。doc upload / 上传 pipeline:doc.commit_uploaded_file 在 schema 中定义但尚未暴露为 CLI 子命令(#301/#302),文件附件上传闭环仍不完整;普通文件上传可用,但不保证所有场景稳定。calendar respond:schema 中存在但 CLI 无对应子命令,响应邀请需在钉钉客户端操作。chat message list:普通文本消息可能被错误识别为富文本/卡片消息(#292);list-all 能力可能受平台版本限制。calendar event list:部分组织/场景可能返回 business-level error 300000(#303)。mail message send:当前不支持附件(#308)。chat message send:v1.0.28+ 群消息必须传 --title(#294),单聊同样需要 --title。doc update:CLI flag --content/--content-file 与后端 schema 必填字段 markdown 存在不一致(v1.0.27 新增 CLIFlagOverride.MapsTo),如全文更新失败优先用 doc block insert/update。© infometa, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 41 other files (scripts, references) in skills/dingtalk-unified of infometa/workbuddyskills.
Open the folder on GitHubat commit 692b3eb
Dingtalk Unified next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dingtalk Unified this skillinfometa/workbuddyskills | 346 | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| DwsPinvou/pinvou-agent | 2.4k | — | ~5.3k | Automated safety check: Pass | Apache-2.0 | |
| Unified Memoryaffaan-m/ECC | 276k | 1 repos | ~2k | Automated safety check: Pass | MIT | |
| DwsDingTalk-Real-AI/dingtalk-workspace-cli | 3.2k | 1 repos | ~6.2k | Automated safety check: Pass | Apache-2.0 | |
| Dingtalk TodoDingTalk-Real-AI/dingtalk-workspace-cli | 3.2k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Dingtalk MailDingTalk-Real-AI/dingtalk-workspace-cli | 3.2k | — | ~1.4k | Automated safety check: Pass | Apache-2.0 |
Pinvou/pinvou-agent
【何时用:仅当用户明确指向钉钉/DingTalk(钉钉文档、钉钉日程等)时使用;泛指做文档/表格/待办/审批默认走本地工具,不要误用钉钉】用 dws CLI 管理钉钉:AI表格/AI搜问(找人首选)/目标管理(Agoal)/组织大脑/日历/通讯录/群聊与机器人消息/待办/审批/考勤/日志(日报周报)/DING消息/钉钉文档/云盘/Markdown文件/AI听记/邮箱/在线电子表格(axls)/知…
affaan-m/ECC
Share durable, inspectable context and handoffs between Claude, Codex, Hermes, Cursor, OpenCode, and other agents through the local ECC Memory Vault.
DingTalk-Real-AI/dingtalk-workspace-cli
管理钉钉产品能力(Agoal目标管理/AI表格/AI搜问/日历/通讯录/群聊与机器人/待办/审批/法务智能合同/考勤/日志/DING消息/开放平台文档/钉钉文档/钉钉云盘/原生Markdown文件/AI听记/邮箱/在线电子表格/知识库等)。当用户需要查询战略解码、经营合约字段、目标规则周期、个人目标、目标模板或周月报规则的按时/迟交/未提交统计与跟催,操作表格数据、管理日程会议、模糊找人/查谁负…
DingTalk-Real-AI/dingtalk-workspace-cli
钉钉待办 / TODO。Use when 用户说 创建待办/TODO/任务提醒/指派任务/标记完成/查待办/紧急待办/循环待办/批量建待办/逾期待办。不做日报周报(走 dingtalk-misc)、审批(走 dingtalk-misc)、日程(走 dingtalk-calendar)。命令前缀:dws todo。
DingTalk-Real-AI/dingtalk-workspace-cli
钉钉邮箱读写、搜索、回复与转发。Use when 用户说发邮件/查邮件/回邮件/转发邮件/未读邮件/邮件搜索/邮箱附件。一句话发邮件时先用 dingtalk-contact 解析并确认收件人,再由本 skill 发送;不做钉钉消息(走 dingtalk-chat)、紧急通知(走 dingtalk-misc)。命令前缀:dws mail。
DingTalk-Real-AI/dingtalk-workspace-cli
钉钉 AI 听记。Use when 查询或修改听记摘要、完整逐字稿、关键词、标签、行动项、录音、上传、思维导图、发言人洞察、ASR 热词/识别词配置或分享权限。写文档走 dingtalk-doc;建待办走 dingtalk-todo;日程走 dingtalk-calendar。命令前缀:dws minutes。
infometa/workbuddyskills
This skill should be used when planning, coordinating, running, or reviewing student-led campus events, including club recruitment, freshman mixers, welcome activities, small talks, competitions…
infometa/workbuddyskills
K-12 interactive courseware creation. An agent skill from infometa/workbuddyskills.
infometa/workbuddyskills
A skill your agent uses when the adult weight-management MCP needs to be installed/set up in WorkBuddy (connector) or its result must be rendered as a standalone Chinese HTML plan.
infometa/workbuddyskills
A skill your agent uses when the user needs browser automation, including opening web pages, taking screenshots, extracting page content, clicking elements, filling forms, or testing web flows.
infometa/workbuddyskills
定时任务:每日研究简报。漏掉重要论文和行业报告?每天帮你盯着,关键信息一条不漏 This skill should be used when the user asks about 定时任务:每日研究简报.
infometa/workbuddyskills
Investment banking presentation quality checker. An agent skill from infometa/workbuddyskills.
钉钉 CLI 全能套件,基于官方 DingTalk Workspace CLI(dws)操作钉钉消息、群聊、通讯录、日历、待办、审批、考勤、日志、DING、AI 表格、钉钉文档、钉盘、AI 听记、邮箱和开放平台文档。用户需要在钉钉内查找联系人、发消息、建群、管理日程、创建待办、处理审批、查看考勤、读写文档、操作 AI 表格、搜索会议听记或调用钉钉开放平台能力时使用。. Dingtalk Unified is an agent skill from infometa/workbuddyskills.
Run `npx skills add infometa/workbuddyskills --skill dingtalk-unified -a claude-code`. Or copy the skill folder (skills/dingtalk-unified in infometa/workbuddyskills) into .claude/skills/dingtalk-unified in your project. Claude Code loads it when a task matches its description.
Run `npx skills add infometa/workbuddyskills --skill dingtalk-unified -a codex`. Or copy the skill folder (skills/dingtalk-unified in infometa/workbuddyskills) into .agents/skills/dingtalk-unified in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add infometa/workbuddyskills --skill dingtalk-unified -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dingtalk-unified, .gemini/skills/dingtalk-unified, .github/skills/dingtalk-unified and .opencode/skills/dingtalk-unified in your project.
Going by SKILL.md and its folder, Dingtalk Unified needs the command-line tools its instructions call (npm and python3). Our summary lists: Python 3; Node.js.
SKILL.md names 1 domain. In commands or code: login.dingtalk.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Dingtalk Unified is published under the Apache-2.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 53k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Dingtalk Unified: Dws (Pinvou/pinvou-agent, 2.4k stars), Unified Memory (affaan-m/ECC, 276k stars), Dws (DingTalk-Real-AI/dingtalk-workspace-cli, 3.2k stars) and Dingtalk Todo (DingTalk-Real-AI/dingtalk-workspace-cli, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
infometa (a GitHub user) maintains it in infometa/workbuddyskills, which has 346 GitHub stars. The repository holds 218 skills in this directory. The repository was last updated on October 8, 2026.
Source: infometa/workbuddyskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.