dingtalk-minutes
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese钉钉 AI 听记 Skill
DingTalk AI Minutes Skill
<!-- DWS_RUNTIME_CONTRACT_START -->
<!-- DWS_RUNTIME_CONTRACT_START -->
最小 DWS 执行契约
Minimal DWS Execution Contract
- 只用 ;结构化读取加
dws,按真实返回判断。--format json - 已知命令直调;参数/约束/安全不明查 leaf 窄 Schema。Schema 不可用才读已知 leaf Help 一次;用同 leaf Help 修正一次。
unknown flag不查 Help:优先错误中的明确 suggestion,其次已加载 Skill/reference 中的明确兼容入口;均无则报漂移并停,禁全 Catalog。低频 reference 不默认 Help,禁 root/parent/product Help。发现后必须执行或说明阻塞。unknown command - 不猜命令/flag/字段/ID/账号/业务事实;ID 来自真实返回。目标零命中/多候选/类型不明先消歧;仅可选时间/展示范围用契约默认,缺必需信息即停。
- 解析/读/写同一 profile,ID 不跨组织。多账号只用唯一 ;否则用户指定,禁止选择第一项、最近登录或最近使用账号。
isOrgCurrent=true - 不输出/记录 token、refresh token、appSecret、webhook token;已注入认证时不索要。
- 写须符合明确意图;确认以最终 Runtime gate/Schema 为准,确认后才加 。
--yes - 写后验证结果,不凭退出码宣称成功。退出须最终答复,区分完成、部分、阻塞、待确认、失败;保留已有数据及 。
complete/hasMore/stopReason/failures - 时间戳按会话时区展示,必要时保留原值。
- 认证/权限/profile/confirmation/未知错误只读 对应 reference,禁连续猜替代命令。
dingtalk-shared
- Only use ; for structured reads add
dwsand judge based on actual returns.--format json - Directly call known commands; if parameters/constraints/safety are unclear, consult the leaf narrow Schema. Only if Schema is unavailable, read the known leaf Help once; for , correct once using the same leaf Help. For
unknown flag, do not check Help: prioritize explicit suggestions in the error, then clear entry points in loaded Skill/reference; if neither exists, report drift and stop; full Catalog is forbidden. Do not default to Help for infrequently used references; prohibit root/parent/product Help. Once discovered, must execute or explain the blockage.unknown command - Do not guess commands/flags/fields/IDs/accounts/business facts; IDs come from real returns. For zero hits/multiple candidates/unclear types, disambiguate first; only optional time/display scope use contract defaults; stop if required information is missing.
- Parse/read/write the same profile, do not cross organizations with IDs. For multiple accounts, only use the unique ; otherwise user specifies; it is forbidden to select the first item, most recent login, or most recently used account.
isOrgCurrent=true - Do not output/record token, refresh token, appSecret, webhook token; do not ask for injected authentication.
- Writes must conform to explicit intent; confirmation follows the final Runtime gate/Schema; add only after confirmation.
--yes - After writes, verify results; do not claim success based on exit code. Final reply must distinguish completed, partial, blocked, pending confirmation, failed; preserve existing data and .
complete/hasMore/stopReason/failures - Timestamps displayed in session timezone; preserve original if necessary.
- For authentication/permission/profile/confirmation/unknown errors, only read the corresponding reference in ; do not guess alternative commands consecutively.
dingtalk-shared
Shortcut 发现(按需)
Shortcut Discovery (on demand)
minutesresultdata_schemaunknown flagunknown command仅当现有路由和 reference 都无法定位低频能力时,才执行 做最后回退;不要为已知高频意图加载完整 Shortcut Catalog 或产品级 Schema。
<!-- VISIBLE_SHORTCUTS_END -->dws shortcut list --service minutes --format jsonminutesresultdata_schemaunknown flagunknown commandOnly when existing routes and references cannot locate low-frequency capabilities, execute as a final fallback; do not load the full Shortcut Catalog or product-level Schema for known high-frequency intents.
<!-- VISIBLE_SHORTCUTS_END -->dws shortcut list --service minutes --format jsonGolden Route
Golden Route
以下是当前 Minutes Case 支持的核心路径,用于减少 Agent 选路分叉;它不等同于生产使用频率统计。已有 taskUuid 必须原样传入,禁止解码或重新编码;完整听记 URL 先提取 taskUuid,再原样使用。只有标题或时间线索时先搜索,零命中停止,多候选或候选差异较大时让用户消歧,不默认取第一条。
| 用户意图 | 唯一推荐入口 | 关键边界 |
|---|---|---|
| 按标题或时间找听记 | | |
| 浏览我创建、共享给我或全部可访问听记 | | 默认是可续拉预览;要声称完整必须加 |
| 按真实标签找听记 | | 标签不等于关键词;空标签即结束。按标签查找的分页细节见局部意图 |
| 看我最新创建的一条 | | 只在用户明确说“最新”时用;不能用它替代具名目标搜索,也不能在录音 start 后拿 latest 猜新录音 ID |
| 读取基础信息、摘要或关键词 | | 已有 taskUuid 且只读取现有产物时直接使用,不要进入上传 workflow;任一产物失败都按 partial/非零处理,不把缺失项说成空内容 |
| 读取逐字稿 | | 已有 taskUuid 且只读取逐字稿时直接使用,不要借 |
| 读取行动项 | 单条 | 只在 |
| 把摘要、关键词、完整逐字稿和行动项归档到本地 | | 要带媒体时加 |
| 修改或预览标题 | | 真实修改按 Runtime confirmation 执行并读回;用户只要预览时先读 basic,再加 |
| 覆盖纪要正文 | | |
| 上传音视频生成听记 | | 真实执行会上传文件并创建远端听记,必须按 Runtime confirmation;用户明确要闪记卡片时改用 |
| 真实开始、暂停、继续或停止录音 | | 这组入口会真实执行。start 返回 |
| 只预览录音请求,不实际执行 | | 使用对应的原子 `minutes record start |
| 生成或继续思维导图 | | 创建后有界轮询;超时或未知状态保留恢复信息,用 |
| 生成或继续发言人洞察 | | 只有 |
| 当前用户申请查看/下载/编辑权限 | `dws minutes +apply-permission --id <taskUuid> --permission view | download |
| 所有者给成员授权或撤权 | | 先用通讯录把姓名解析为同组织稳定 UID;撤权是破坏性操作。批量结果必须保留逐成员 ledger 和失败项 |
The following are the core paths supported by the current Minutes Case, used to reduce agent routing forks; they do not equal production frequency statistics. Existing taskUuid must be passed unchanged; decoding or re-encoding is forbidden. For full minutes URLs, extract the taskUuid first, then use it as-is. When only title or time clues exist, search first; stop on zero hits; for multiple candidates or significant differences, let the user disambiguate; do not default to the first item.
| User intent | Unique recommended entry | Key boundaries |
|---|---|---|
| Find minutes by title or time | | |
| Browse minutes I created, shared with me, or all accessible | | Default is a continuable preview; to claim completeness, must add |
| Find minutes by real tags | | Tags are not keywords; empty tag ends. Pagination details for tag search see local intents |
| View my latest created item | | Use only when user explicitly says "latest"; cannot replace named target search, nor guess new recording ID after recording start |
| Read basic info, summary, or keywords | | If taskUuid exists and only reading existing artifacts, use directly; do not enter upload workflow; any artifact failure treated as partial/non-zero, do not report missing items as empty content |
| Read transcript | | If taskUuid exists and only reading transcript, use directly; do not use |
| Read action items | Single: | Only say "no todos" when |
| Archive summary, keywords, full transcript, and action items to local | | For media add |
| Modify or preview title | | Real modification follows Runtime confirmation and read-back; if user only wants preview, read basic first, then add |
| Override minutes body | | |
| Upload audio/video to generate minutes | | Real execution uploads file and creates remote minutes; must follow Runtime confirmation; if user explicitly wants flash note card, use |
| Actually start, pause, resume, or stop recording | | These entries execute for real. If start returns |
| Preview recording request only, no actual execution | | Use corresponding atomic `minutes record start |
| Generate or continue mind map | | Bounded polling after creation; on timeout or unknown state preserve recovery info and continue with |
| Generate or continue speaker insights | | Only |
| Current user applies for view/download/edit permission | `dws minutes +apply-permission --id <taskUuid> --permission view | download |
| Owner grants or revokes member permissions | | First resolve names to stable UIDs in same organization via contacts; revocation is destructive. Batch results must preserve per-member ledger and failures |
搜索与列表执行胶囊
Search and List Execution Capsule
用户要求“全部、所有、完整、汇总整个范围”时,首轮直接使用 :
--page-alltext
dws minutes +search --query "<关键词>" --scope all --page-all --format json
dws minutes +search --start "<RFC3339>" --end "<RFC3339>" --scope mine --page-all --format json
dws minutes +list-mine --page-all --format json
dws minutes +list-shared --page-all --format json
dws minutes +list-all --page-all --format json只有用户明确要第一页、预览、样本或限定页数时才省略 ,如实保留完整性与续页证据。每页 N 条须首轮及续页均传 ,不能取默认数量后只展示 N 条冒充;限定页数用同一 leaf 的 续拉,不扩大为全量。 的 与 互斥。有时间窗用 ,因为 不接受 。
--page-all--limit N--cursor <真实 next_token>+list-all--cursor--page-all+search+list-*--start/--endWhen the user requests "all, every, complete, summarize entire scope", use in the first round:
--page-alltext
dws minutes +search --query "<keyword>" --scope all --page-all --format json
dws minutes +search --start "<RFC3339>" --end "<RFC3339>" --scope mine --page-all --format json
dws minutes +list-mine --page-all --format json
dws minutes +list-shared --page-all --format json
dws minutes +list-all --page-all --format jsonOnly when the user explicitly asks for first page, preview, sample, or limited pages, omit and honestly preserve completeness and continuation evidence. For each page of N items, must pass in both first round and continuations; cannot take default count and show only N items as full. For limited pages, use same leaf's to continue, do not expand to full. For , and are mutually exclusive. If time window exists use , because does not accept .
--page-all--limit N--cursor <real next_token>+list-all--cursor--page-all+search+list-*--start/--end目标与完整性
Goals and Completeness
- 时间展示与筛选:日期、时区偏移、星期及“本周”等边界必须由日期工具计算,不能心算或从标题日期推断。时间戳使用本地脚本 format_timestamp.py:;示例单位/时区须替换为已确认值(优先用户指定时区,否则已知会话时区)。最终直接复用输出,不补算星期或二次换算;已有明确时区的可读返回可直接引用,单位/时区不明时保留原值。相对周边界另用日期库计算,该脚本只转换时间戳。
python3 <本Skill目录>/scripts/format_timestamp.py --unit ms --timezone Asia/Shanghai <时间戳1> [时间戳2 ...]等时长不传给该脚本;仅按已确认单位用本地计算换算,单位未知保留原值,不凭时长判断内容无效或录音状态。duration - 目标锁定优先级:用户给出的 /URL > 精确标题 > 标题包含或语义相关候选。相似候选可展示,但候选差异明显或多个候选都合理时必须停下来消歧;分页未完成本身不是目标歧义。
taskUuid - 用户说“先确认/核对目标”默认要求用真实基础信息字段完成证据核对,不自动变成等待用户回复的会话门禁。目标唯一、分页完整且后续均为只读时,展示标题、时间、归属等核对证据后在同一轮完成所需交付;只有用户明确要求“等我确认后再继续”或仍有多个合理候选时才暂停。
- 纯能力、规则或错误说明且没有唯一真实目标时直接解释,不猜对象;用户明确要求核对且目标唯一时必须真实读取,不能只展示命令。
- 仅表示我创建的,
mine仅表示共享给我的;shared表示 accessible 聚合目标。不得声称后端单个 noLimit 端点天然等于all。mine + shared - 列表或逐字稿只有 才能称为“全部/完整”。全量请求遇到
data.complete=true时继续;只有 token 缺失、cursor 停滞/循环、达到meta.pagination.next_token或后页失败时才停止,并保留失败信封或不完整证据。page-limit - 用户要求核对、汇总“这些/每条/全部”命中项时,必须覆盖完整命中集合;可用 批量核对,并逐项保留失败。只检查第一条不能代表全体;响应没有逐条归属或组织字段时如实说明不可得,不能用当前 profile 的组织名代替每条听记的归属。
dws minutes +detail --ids <uuid1,uuid2> --artifacts basic --format json - 多听记、多来源或跨产品汇总按每个 /来源 ID 保留
taskUuid;缺输入或必需产物时整体按 partial,仍交付成功内容支持的独立结果并列缺项;不缩减原请求或把子集说成全部,依赖缺失来源的结论暂不生成。requested/resolved/missing/artifacts/status - 内容归纳必须来自每条真实 ;只有
summary/transcript/keywords时只列元数据;其他未满足用户要求的内容依据也只列元数据,分类任务列“待分类/证据不足”,不凭标题或时长判无效。按 taskUuid 去重后的已分类数+待分类数须等于目标总数。title/basic - 、异步
partial_success、超时和未知写入结果不是成功。按结果中的恢复句柄继续,不能重放已成功步骤。pending
- Time display and filtering: dates, timezone offsets, weekday, and "this week" boundaries must be computed by date tools, not mental arithmetic or inferred from title dates. Timestamps use local script format_timestamp.py: ; example unit/timezone must be replaced with confirmed values (prefer user-specified timezone, otherwise known session timezone). Reuse output directly; do not recalculate weekday or convert again. Readable returns with explicit timezone can be referenced directly; preserve original if unit/timezone unclear. Relative week boundaries use date library; this script only converts timestamps. Durations such as
python3 <this Skill directory>/scripts/format_timestamp.py --unit ms --timezone Asia/Shanghai <timestamp1> [timestamp2 ...]are not passed to this script; convert locally according to confirmed units; preserve original if unit unknown; do not judge content invalid or recording state based on duration.duration - Target locking priority: user-provided /URL > exact title > title containing or semantically related candidates. Similar candidates can be shown, but must stop and disambiguate when differences are obvious or multiple candidates are reasonable; incomplete pagination is not goal ambiguity.
taskUuid - User saying "confirm/verify target first" by default requires evidence verification with real basic info fields, not automatically becoming a session gate waiting for user reply. When target is unique, pagination complete, and subsequent operations are read-only, show verification evidence such as title, time, ownership and complete delivery in same round; only pause when user explicitly asks "wait for my confirmation before continuing" or there are still multiple reasonable candidates.
- Pure capability, rules, or error explanations with no unique real target explain directly without guessing objects; if user explicitly requests verification and target is unique, must actually read, not just show command.
- means only I created,
minemeans only shared with me;sharedmeans accessible aggregate target. Do not claim a backend single noLimit endpoint equalsallnaturally.mine + shared - Lists or transcripts can only be called "all/complete" when . For full requests, continue when
data.complete=trueexists; stop only when token missing, cursor stalled/loops, reachingmeta.pagination.next_token, or subsequent page failure, preserving failure envelope or incompleteness evidence.page-limit - When user asks to verify/summarize "these/each/all" hits, must cover the complete hit set; can use for batch verification, preserving failures per item. Checking only first item does not represent all; if response lacks per-item ownership or organization fields, state honestly unavailable; do not use current profile's organization name to replace each minutes' ownership.
dws minutes +detail --ids <uuid1,uuid2> --artifacts basic --format json - Multi-minutes, multi-source, or cross-product summaries preserve per
requested/resolved/missing/artifacts/status/source ID; if inputs or required artifacts missing, overall is partial, still deliver independent results supported by successful content and list missing items; do not reduce original request or claim subset as all; conclusions relying on missing sources are not generated.taskUuid - Content summarization must come from each real ; only
summary/transcript/keywordsavailable means list metadata only; other content basis not satisfying user request also lists metadata only; classification tasks list "to classify/insufficient evidence"; do not judge invalid by title or duration. Deduplicated by taskUuid, classified count + to-be-classified count must equal target total.title/basic - , async
partial_success, timeout, and unknown write results are not success. Continue with recovery handles in result; cannot replay already successful steps.pending
安全边界
Safety Boundaries
- 会递归清理全部文本产物中的已识别签名链接/凭据,签名目标替换为
+export-pack;扫描失败不发布。交付时说明[signed-url-removed],不要把sanitized/redactionCount/sanitizationScope解释为摘要图片已离线保存;当前complete=true。二进制媒体内容不属于文本扫描范围。offlineImagesComplete=false - 是否确认以 leaf Schema 与 Runtime gate 为准,不根据“看起来像写操作”自行推断。推荐 Golden Route 中的 、
+update、+summary、+record-*、+share/+unshare/+apply-permission、+speaker-replace等当前要求确认。+replace-batch - 为兼容既有公开 Contract,对应的底层原子命令保留历史 ;它们只用于 Shortcut 无法表达的明确底层控制,不得为了绕过 Golden Route 的确认门禁而降级调用。
not_required - 与
+upload即使不发送消息,仍会上传本地媒体并创建远端听记,真实执行必须按 Runtime confirmation;+upload-and-analyze仍可在零远端调用下预览。上传并发送闪记卡片、精确同步并删除热词、撤权等副作用更大的入口继续单独处理。--dry-run - 、
+mindmap和+speaker-insights当前要求确认;+prepare-asr仍沿用所在 Shortcut 的命令级门禁。旧--resume与+upload --enable-message-card继续作为可执行兼容入口,并遵循各自 Shortcut 的确认门禁;新调用仍推荐+upload-and-analyze --enable-message-card。原子+upload-and-notify与旧minutes upload create --enable-message-card只保留为公开迁移提示,不得当作可执行 Golden Route。--sync - 必须返回明确的 dry-run/request 证据且不调用远端;录音预览按上方原子入口执行。任何入口若拒绝 dry-run,必须报告“不支持预览”,不得把拦截或普通执行称为预演成功。
--dry-run - 用户明确要求“仅预览/不实际写入”时,任务在真实现状读取、dry-run 计划和差异交付后结束;不得继续请求写入确认,也不得为了验证预览而执行真实写入后再还原。
- 分享/撤权使用稳定成员 UID,不能把姓名、手机号或跨组织 ID 直接当 UID;同一目标解析、读取、写入和验证必须使用同一 profile。
- recursively cleans identified signed links/credentials in all text artifacts, replacing signed targets with
+export-pack; do not publish if scan fails. On delivery, explain[signed-url-removed]; do not interpretsanitized/redactionCount/sanitizationScopeas summary images saved offline; currentcomplete=true. Binary media content is not in text scan scope.offlineImagesComplete=false - Confirmation is based on leaf Schema and Runtime gate, not inferred from "looks like a write operation". Recommended ,
+update,+summary,+record-*,+share/+unshare/+apply-permission,+speaker-replacein Golden Route currently require confirmation.+replace-batch - For compatibility with existing public Contract, corresponding atomic commands retain historical ; they are only for explicit low-level control that Shortcut cannot express, and cannot be degraded to bypass Golden Route confirmation gates.
not_required - and
+uploadstill upload local media and create remote minutes even without sending message; real execution must follow Runtime confirmation;+upload-and-analyzestill previews with zero remote calls. Entries with greater side effects such as upload and send flash note card, precise sync and delete hotwords, revoke permissions continue to be handled separately.--dry-run - ,
+mindmap, and+speaker-insightscurrently require confirmation;+prepare-asrstill follows the command-level gate of the Shortcut. Old--resumeand+upload --enable-message-cardcontinue as executable compatibility entries and follow their Shortcut confirmation gates; new calls still recommend+upload-and-analyze --enable-message-card. Atomic+upload-and-notifyand oldminutes upload create --enable-message-cardare only public migration hints, not executable Golden Route.--sync - must return clear dry-run/request evidence and not call remote; recording preview executes via atomic entries above. If any entry rejects dry-run, must report "preview not supported"; do not call interception or normal execution as successful rehearsal.
--dry-run - When user explicitly asks "preview only / no actual write", task ends after real-status read, dry-run plan, and difference delivery; do not continue to ask for write confirmation, nor execute real write then revert to verify preview.
- Share/revoke use stable member UIDs; cannot use name, phone number, or cross-organization ID directly as UID; same target resolution, reading, writing, and verification use same profile.
按需加载
On-Demand Loading
Golden Route 参数足够时直接执行,不预读 Reference。每个 Case 最多先读取一个最精确的文件;参数事实优先读取 compact leaf Schema,不读取产品级全量 Catalog。
| 触发条件 | Reference |
|---|---|
| ASR 热词、上传会话恢复、复杂异步轮询、批量权限 workflow | 复杂流程 |
| 发言人替换、批量文本替换、下载媒体、离线导出等低频意图 | 局部意图 |
| 必须落到原子命令,或需要 URL/参数/确认事实 | 原子命令 |
If Golden Route parameters are sufficient, execute directly without pre-reading Reference. Each Case reads at most one most precise file first; parameter facts prefer compact leaf Schema, not product-level full Catalog.
| Trigger | Reference |
|---|---|
| ASR hotwords, upload session recovery, complex async polling, batch permission workflow | Complex flows |
| Speaker replacement, batch text replacement, download media, offline export and other low-frequency intents | Local intents |
| Must fall back to atomic commands, or need URL/parameter/confirmation facts | Atomic commands |
错误最短路径
Error Shortest Path
- 零命中、多候选或 ID 类型不明:停止并返回候选证据。全量请求分页未完成但有有效 continuation 时继续;只有 token 缺失/停滞/循环、达到页数上限或后页失败时停止并返回 、
data.complete或失败信封等证据。meta.pagination - 认证、权限、profile 或 confirmation 错误:按 对应错误 Reference 处理;不更换 scope、账号或写命令碰运气。
dingtalk-shared - 异步超时或部分成功:保留 ,只恢复未完成阶段;未知写入先读回,不能自动重试。
taskUuid/taskId/sessionId/checkpoint
- Zero hits, multiple candidates, or unclear ID types: stop and return candidate evidence. For full request with incomplete pagination but valid continuation, continue; only stop when token missing/stalled/loops, page limit reached, or subsequent page failure, returning ,
data.complete, or failure envelope evidence.meta.pagination - Authentication, permission, profile, or confirmation errors: handle via corresponding error Reference in ; do not switch scope, account, or write commands to try luck.
dingtalk-shared - Async timeout or partial success: preserve , only recover unfinished stages; unknown write read back first, cannot auto-retry.
taskUuid/taskId/sessionId/checkpoint
跨产品边界
Cross-Product Boundaries
- 把听记摘要或逐字稿写成文档 → 读取真实内容后切 。
dingtalk-doc - 把听记行动项创建为任务 → 读取行动项后切 ,并按其身份解析规则处理执行人。
dingtalk-todo - 把摘要发给同事 → 切 ;
dingtalk-chat只管理听记权限,不发送摘要消息。+share - 创建或修改日程、会议室 → ;Minutes 只处理听记产物和录音控制。
dingtalk-calendar
- Write minutes summary or transcript into document → read real content then switch to .
dingtalk-doc - Create tasks from minutes action items → read action items then switch to , and resolve executant per its identity rules.
dingtalk-todo - Send summary to colleagues → switch to ;
dingtalk-chatonly manages minutes permissions, does not send summary messages.+share - Create or modify calendar/meeting room → ; Minutes only handles minutes artifacts and recording control.
dingtalk-calendar