DingTalk Workspace CLI is a cross-platform command-line tool that brings DingTalk’s product capabilities into one interface. It serves human users and AI agents working with DingTalk enterprise data, with administrator authorization required. Its catalogue add-ons provide agent skills for using the CLI’s product areas.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add DingTalk-Real-AI/dingtalk-workspace-cli --skill dingtalk-taggit clone --depth 1 https://github.com/DingTalk-Real-AI/dingtalk-workspace-cliWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-tag)<a href="https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-tag"><img src="https://agentmods.dev/badge/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-tag/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-tag"><img src="https://agentmods.dev/badge/skills/dingtalk-real-ai/dingtalk-workspace-cli/dingtalk-tag.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00112 | $0.02069 |
| Opus 5.5 | $0.00045 | $0.00828 |
| Sonnet 5.5 | $0.00022 | $0.00414 |
| Haiku 4.5 | $0.00011 | $0.00207 |
Grade A, and why
dingtalk-tag scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 58 lines — stays where its author put it; the contents beside it link to each section on GitHub.
数字员工 Skill
执行任何 dws 操作前,先完整读取 dingtalk-shared。先用 dingtalk-tag-index.md 路由;生命周期读取 manage.md,自然语言创建/恢复/DSH 接入再读 manage-and-connect.md;能力资源读取 capability.md;执行排障读取 run.md。
自行管理任务执行与回复的接入方,可按 回复占位与流式 实现启动钩子和卡片更新。使用该流程需已安装 dingtalk-chat;按需安装时请同时选择该 Skill。DWS 直接托管本地 Agent 时,对已适配公开进度的 Agent,新连接默认发送 A2UI 占位并更新同一卡片,由运行时负责投递,模型不重复发卡;连接时指定 --reply-mode text 可只发最终文本。适配范围和首卡策略见 接入说明。
路由
| 用户意图 | 命令 |
|---|---|
| 创建草稿 / 创建并发布 / 查询 / 修改 / 上线 / 删除 | dws dingtalk-tag manage ... |
| 下线 | 当前版本无独立下线命令;明确说明限制,不得用 delete 冒充下线 |
| A2A 或其他仅登录场景 | dws dingtalk-tag manage login --agent-uuid ... |
| 只登录数字员工并保存本地 Profile | dws dingtalk-tag manage login --agent-uuid ... |
| 把已有、已发布的本地数字员工接入 DSH | dws dingtalk-tag connect --agent-uuid ... --channel dsh |
| 把数字员工接入当前本地 Agent | dws dingtalk-tag connect --agent-uuid ... --channel auto --daemon --alwayson |
| 查询、停止或重启数字员工本地连接 | dws dingtalk-tag connect list/status/stop/restart |
| 在新机器接管(先在旧机器完成解绑) | 旧机器 connect unbind 成功后,新机器 dws dingtalk-tag connect --agent-uuid ... --channel ... |
| 解除本机连接,但保留员工和 Profile | dws dingtalk-tag connect unbind --agent-uuid ... |
| 将已有连接换为其他本地 Agent 或 DSH | 先 connect unbind --agent-uuid ...,再 connect --agent-uuid ... --channel ... |
| 创建、更新、删除或查询 Skill / MCP 资源 | `dws dingtalk-tag capability skill |
| 查一次执行的状态或完整 trace | dws dingtalk-tag run ... |
自然语言编排硬约束
- 创建/更新的 MCP 主程序类型字段为
digitalTagEmployeeProfile.type,列表过滤使用顶层type,仅支持open_code、local_agent,a2a暂不支持。CLI 参数为--type;创建时必须显式传--type open_code|local_agent,缺失或空值由 DWS 本地拦截;应告知调用方选择主程序类型,不能省略或发送空值。更新时未传则保持原值;明确接入本地 Agent/DSH 时传--type local_agent。注意create/list/save-draft的--type是主程序类型,而detail使用--snapshot draft|published选择配置来源,不要混淆。 - 创建时未提供
--response-mode或值为空,CLI 默认发送mention_only,包括local_agent。更新时不传就不更新该字段,显式值保持不变;最终有效配置由服务端按当前草稿校验。 - 创建要求名称、描述和主程序类型;部门可不传,由服务端补操作人的主任职部门。不要向用户索要部门名称、岗位、工号或内部 uid。
save-draft只更新用户明确修改的基础草稿字段,不接受 Skill/MCP 完整数组。Skill/MCP 生命周期统一使用capability skill|mcp create|update|delete|list|query;不设计 attach/detach,check_mcp只在 create 和带配置的 update 内部调用。- 创建或替换 MCP 配置时,须告知并显式填写
configString.mcpServers.<名称>.type(streamable-http或sse)以及对应url;不能只填 URL,configType=JSON也不能代替传输类型。仅更新 enabled 不重新提交配置。 - 发布所需配置由服务端校验;创建时默认响应模式为
mention_only。历史草稿缺少响应模式时先通过save-draft补齐,不以发布命令隐式改写草稿。 - 同一自然语言请求里的连续写操作只做一次汇总确认;确认后才加
--yes。先用--dry-run --format json展示计划。 - 创建成功后若保存或发布失败,必须返回已创建的
agentUuid和恢复命令;重试禁止再次执行 create。 - “创建并落盘 Profile”可顺序执行创建/发布与
manage login;“创建并接入 DSH”则使用connect --channel dsh。创建/发布与 connect 是独立事务,connect 绝不创建、修改或发布数字员工。 - 用户可以只创建/管理数字员工、只把已有员工转换为本地 Profile,或继续接入 DSH;三种操作互不强绑定。
- 数字员工 ID 统一使用
agentUuid/--agent-uuid;人员标识统一使用userId,不得要求或展示 uid、robotUid、staffId。 - 普通本地 Agent 接入使用 Event Consume,默认仅主管可触发;白名单中的用户必须先在员工身份下精确解析。支持 Codex、Qoder/QoderWork、Claude Code、CodeBuddy/WorkBuddy、Gemini、OpenCode 和 custom。OpenClaw/Hermes 暂未适配,不要回退到机器人创建流程。
- 自然语言“创建发布并接入本机”在发布后显式使用
--daemon --alwayson;命令行默认前台。DSH 不加这两个参数,由运行中的宿主员工级启动;宿主不可用时按 restartRequired 提示启动宿主。connect 不提供开机自启,也不能在电脑休眠期间处理消息。 - connect 失败后保留员工 ID 和已落盘 Profile,检查
connect status再恢复;不要重复 create、不要清除事件重试预算、不要隐式覆盖另一个 Adapter 的绑定。 - 服务端 identity 由主管登录态注入,禁止传入 userId/orgId;deviceId 是稳定设备标识,runtimeBindingId 是服务端绑定 ID,与本地 bindingRevision/runtimeInstanceId 不同。绑定回执不代表在线;响应未知的 bind 不得自动重试或通过删配置绕过。只保存 Profile 使用
manage login。 - “暂停”使用 stop(保留绑定);“解绑”使用 unbind(保留 Profile);“换成本地另一个 Agent”先 unbind,成功后再 connect;两步先 dry-run 并汇总确认。换绑先确认旧实例释放,unknown 或超时不得手动删绑定来绕过。新绑定已提交但启动失败使用 restart;旧绑定仍在 unbinding 时重试原 unbind。
What ships with it
5 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago Changed · +2 lines 3ad29123e7c7
- 9d ago Changed 903689e186c1
- 1mo ago First seen · 56 lines · 112 tokens per session scan A 4aff148ff653
dingtalk-tag is a skill published in the GitHub repository DingTalk-Real-AI/dingtalk-workspace-cli (3,788 stars, last pushed 2d ago), licensed Apache-2.0. It adds 112 tokens to every session and 2,069 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-23.
Other skills, from other repositories
orbit-notion
Open Orbit briefing skill — selected by the Orbit pipeline when Notion is the user's only connected connector, or when the user explicitly scopes their daily digest to Notion. Pulls the past 24 hours of document edits, comments, mentions, and database row changes from the user's authenticated Notion connection and…
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by your inbox assignment.
rowboat-spaces
How to work as a member of Rowboat Spaces, the team chat where people and agents work together. Load it once per session, before acting on any request that reaches you from Rowboat; it covers your setup, mentions and hand-offs, the tools, and files.
feishu
Work with Feishu or Lark bots, docs, sheets, bitables, approval flows, and OpenAPI/MCP setup without hardcoding credentials.
pinchtab-mcp
Use this skill when a task requires browser automation through PinchTab's MCP server connected to a remote browser instance. Covers navigation, element interaction, data extraction, form filling, multi-step flows, and session management via MCP tools.
mochi-remind
Handle due reminders — notify the user with natural language and mark them done.