From 75bb01bb64826b30464ce05811c950bbf46b13f6 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 29 Jul 2026 14:45:28 +0800 Subject: [PATCH] docs(skill): align IM shortcut routing --- internal/cli/schema_agent_metadata/chat.json | 40 +- internal/cli/schema_agent_metadata/index.json | 2 +- internal/cli/schema_agent_metadata_audit.json | 1228 +++++++++-------- internal/cli/schema_catalog/catalog.json | 4 +- internal/cli/schema_catalog/tools/chat.json | 40 +- skills/mono/SKILL.md | 2 +- skills/mono/references/intent-guide.md | 45 +- skills/mono/references/products/chat.md | 21 + skills/multi/dingtalk-chat/SKILL.md | 89 +- skills/multi/dingtalk-chat/references/chat.md | 21 + 10 files changed, 834 insertions(+), 658 deletions(-) diff --git a/internal/cli/schema_agent_metadata/chat.json b/internal/cli/schema_agent_metadata/chat.json index 4dae7162..5ae01cbf 100644 --- a/internal/cli/schema_agent_metadata/chat.json +++ b/internal/cli/schema_agent_metadata/chat.json @@ -256,7 +256,8 @@ "cobra-help:dws chat +at-me", "internal/cli/schema_command_registry.json#chat.shortcut_at_me", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "use_when": [ "当你想快速看回最近谁在群里或单聊里 @了你、但不想手动把起止时间换算成毫秒、也不想记 list-mentions 的一堆参数时使用;内部按本地时区算出「最近 N 天」(默认 7 天,可用 --days 调整回溯天数)的时间窗,搜索这段时间内 @我 的消息,再在本地把每条消息投影成发送人、时间、内容、所在会话四个关键字段。默认只读且不会发送、撤回或标记任何消息;传 --download-resources 时会在工作目录写文件,因此命令按本地写入操作确认。" @@ -3871,7 +3872,8 @@ "cobra-help:dws chat +chat-messages", "internal/cli/schema_command_registry.json#chat.shortcut_chat_messages", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "use_when": [ "当你想快速看某个会话里的消息(谁在什么时间说了什么),而不想拿到一大坨原始消息字段时使用;群聊传 --group(群会话 ID,openConversationId),单聊传 --user(对方 userId),两者互斥且必须二选一。省略 --time 时默认从当前时间向前读取最近消息;也可指定时间边界并用 --direction newer/older 控制方向。内部据此调用群聊或单聊的消息列表接口,再在本地投影出每条消息的发言人、文本和时间。默认只读且不会发送或修改任何消息;传 --download-resources 时会在工作目录写文件,因此命令按本地写入操作确认。" @@ -9894,6 +9896,12 @@ "precedence": "reviewed_explicit", "selected": true, "review_reason": "Reviewed against every executable identity/content/target validation branch and the real lower tool mappings; bot and webhook media are intentionally rejected because no equivalent lower capability exists." + }, + { + "value": "not_required", + "source": "risk-default", + "precedence": "inference_or_default", + "selected": false } ] }, @@ -9910,6 +9918,12 @@ "precedence": "reviewed_explicit", "selected": true, "review_reason": "Reviewed against every executable identity/content/target validation branch and the real lower tool mappings; bot and webhook media are intentionally rejected because no equivalent lower capability exists." + }, + { + "value": "write", + "source": "command-verb", + "precedence": "inference_or_default", + "selected": false } ] }, @@ -9948,6 +9962,12 @@ "precedence": "reviewed_explicit", "selected": true, "review_reason": "Reviewed against every executable identity/content/target validation branch and the real lower tool mappings; bot and webhook media are intentionally rejected because no equivalent lower capability exists." + }, + { + "value": "unknown", + "source": "effect-default", + "precedence": "inference_or_default", + "selected": false } ] }, @@ -10035,6 +10055,12 @@ "precedence": "reviewed_explicit", "selected": true, "review_reason": "Reviewed against every executable identity/content/target validation branch and the real lower tool mappings; bot and webhook media are intentionally rejected because no equivalent lower capability exists." + }, + { + "value": "medium", + "source": "effect-default", + "precedence": "inference_or_default", + "selected": false } ] }, @@ -10069,7 +10095,8 @@ "cobra-help:dws chat +messages-send", "internal/cli/schema_command_registry.json#chat.shortcut_messages_send", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "use_when": [ "当你希望用同一个入口选择 current-user、bot 或 webhook 身份发送消息时使用;命令会按身份校验目标、内容和凭据并路由到真实下层。current-user 支持文本/Markdown、已有 mediaId 图片、安全相对路径文件上传和幂等键;bot 支持群聊或批量单聊文本/Markdown;webhook 的目标由 token 所在群决定。不会把 user 文件能力伪装成 bot/webhook 等价能力。" @@ -11368,7 +11395,8 @@ "cobra-help:dws chat +search-msg", "internal/cli/schema_command_registry.json#chat.shortcut_search_msg", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "use_when": [ "当你要按关键词、发送者、@对象、会话、消息类型或机器人来源组合搜索 IM 消息时使用;默认查询近 7 天,也可指定精确起止时间。--page-all 会连续拉取游标页,默认再按消息 ID 分批富化详情;任何续页或富化失败都会保留已取得结果并返回逐项失败 ledger,绝不把截断结果标成完整。默认只读;传 --download-resources 时会在工作目录写文件,因此命令按本地写入操作确认。" @@ -11887,7 +11915,8 @@ "cobra-help:dws chat +thread-replies", "internal/cli/schema_command_registry.json#chat.shortcut_thread_replies", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "use_when": [ "当你已经拿到某个群里一条「话题消息」的 threadId/topicId、想快速看这条话题下的全部回复(谁在什么时间回复了什么),而不想拿到一大坨原始消息字段时使用;内部按 --group(群会话 ID)和 --thread-id(兼容 --topic-id)拉取该话题的回复列表,可选 --time 指定起始时间、--limit 指定每页条数,再在本地投影出每条回复的发言人、文本和回复时间。默认只读且不会发送或修改任何消息;传 --download-resources 时会在工作目录写文件,因此命令按本地写入操作确认。" @@ -26619,6 +26648,7 @@ "internal/cli/schema_hints/selection/chat.json", "internal/cli/schema_mcp_metadata.json#tools.chat.list_topic_replies", "skills/mono/SKILL.md", + "skills/mono/references/intent-guide.md", "skills/mono/references/products/chat.md" ], "use_when": [ diff --git a/internal/cli/schema_agent_metadata/index.json b/internal/cli/schema_agent_metadata/index.json index 2cfdcd84..4cf3c9d5 100644 --- a/internal/cli/schema_agent_metadata/index.json +++ b/internal/cli/schema_agent_metadata/index.json @@ -1,6 +1,6 @@ { "version": 1, - "source_hash": "sha256:179a67a3fd47e2ef1786aaec197d52429a6522bf61a883df70f83febf334387b", + "source_hash": "sha256:f8489e3583b99d851ccd2a133a0c565aaa658168d0c1ba8cf71034f2930c51e9", "surface_hash": "sha256:698ccdc961c0b745e6524e33ae13d87ef4fcac012a2e833c7a727a79d35004db", "coverage": { "surface_products": 26, diff --git a/internal/cli/schema_agent_metadata_audit.json b/internal/cli/schema_agent_metadata_audit.json index 320fdf9c..dbe979b6 100644 --- a/internal/cli/schema_agent_metadata_audit.json +++ b/internal/cli/schema_agent_metadata_audit.json @@ -1,6 +1,6 @@ { "version": 1, - "source_hash": "sha256:179a67a3fd47e2ef1786aaec197d52429a6522bf61a883df70f83febf334387b", + "source_hash": "sha256:f8489e3583b99d851ccd2a133a0c565aaa658168d0c1ba8cf71034f2930c51e9", "surface_hash": "sha256:698ccdc961c0b745e6524e33ae13d87ef4fcac012a2e833c7a727a79d35004db", "source_files": 160, "hint_files": 54, @@ -69,6 +69,7 @@ "oa", "pat", "report", + "resourceRefs.shortcut", "sheet", "template-based-generation", "todo", @@ -82,6 +83,7 @@ "extension", "generate-topic-report", "meeting-followup", + "resourceRefs.shortcut", "template-based-generation", "write-doc" ], @@ -202,7 +204,7 @@ { "tool_path": "chat category create", "source": "skills/mono/references/intent-guide.md", - "line": 52, + "line": 54, "candidates": [ "chat group create", "chat category batch-info", @@ -216,7 +218,7 @@ { "tool_path": "chat category delete", "source": "skills/mono/references/intent-guide.md", - "line": 53, + "line": 55, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -230,7 +232,7 @@ { "tool_path": "chat category rename", "source": "skills/mono/references/intent-guide.md", - "line": 54, + "line": 56, "candidates": [ "chat group rename", "chat category batch-info", @@ -244,7 +246,7 @@ { "tool_path": "chat category add-conv", "source": "skills/mono/references/intent-guide.md", - "line": 55, + "line": 57, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -258,7 +260,7 @@ { "tool_path": "chat category remove-conv", "source": "skills/mono/references/intent-guide.md", - "line": 55, + "line": 57, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -272,7 +274,7 @@ { "tool_path": "chat category add-conv", "source": "skills/mono/references/intent-guide.md", - "line": 56, + "line": 58, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -286,7 +288,7 @@ { "tool_path": "chat category remove-conv", "source": "skills/mono/references/intent-guide.md", - "line": 56, + "line": 58, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -300,7 +302,7 @@ { "tool_path": "chat group update-alias", "source": "skills/mono/references/intent-guide.md", - "line": 69, + "line": 71, "candidates": [ "chat group bots", "chat group create", @@ -314,7 +316,7 @@ { "tool_path": "chat hide", "source": "skills/mono/references/intent-guide.md", - "line": 70, + "line": 72, "candidates": [ "chat +at-me", "chat +bot-find", @@ -328,7 +330,7 @@ { "tool_path": "chat mute-at-all", "source": "skills/mono/references/intent-guide.md", - "line": 71, + "line": 73, "candidates": [ "chat +at-me", "chat +bot-find", @@ -342,7 +344,7 @@ { "tool_path": "chat mute-red-envelope", "source": "skills/mono/references/intent-guide.md", - "line": 72, + "line": 74, "candidates": [ "chat +at-me", "chat +bot-find", @@ -356,7 +358,7 @@ { "tool_path": "chat group members", "source": "skills/mono/references/intent-guide.md", - "line": 75, + "line": 77, "candidates": [ "chat group members add", "chat group members add-bot", @@ -370,7 +372,7 @@ { "tool_path": "chat group members", "source": "skills/mono/references/intent-guide.md", - "line": 77, + "line": 79, "candidates": [ "chat group members add", "chat group members add-bot", @@ -384,7 +386,7 @@ { "tool_path": "chat group members list-by-ids", "source": "skills/mono/references/intent-guide.md", - "line": 77, + "line": 79, "candidates": [ "chat message list-by-ids", "chat group members add", @@ -398,7 +400,7 @@ { "tool_path": "chat clear-red-point", "source": "skills/mono/references/intent-guide.md", - "line": 78, + "line": 80, "candidates": [ "chat +at-me", "chat +bot-find", @@ -412,48 +414,6 @@ { "tool_path": "chat mark-unread", "source": "skills/mono/references/intent-guide.md", - "line": 78, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat clear-red-point", - "source": "skills/mono/references/intent-guide.md", - "line": 79, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mark-unread", - "source": "skills/mono/references/intent-guide.md", - "line": 79, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat clear-all-red-point", - "source": "skills/mono/references/intent-guide.md", "line": 80, "candidates": [ "chat +at-me", @@ -468,20 +428,6 @@ { "tool_path": "chat clear-red-point", "source": "skills/mono/references/intent-guide.md", - "line": 80, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat list-all-conversations", - "source": "skills/mono/references/intent-guide.md", "line": 81, "candidates": [ "chat +at-me", @@ -494,7 +440,21 @@ } }, { - "tool_path": "chat clear-messages", + "tool_path": "chat mark-unread", + "source": "skills/mono/references/intent-guide.md", + "line": 81, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-all-red-point", "source": "skills/mono/references/intent-guide.md", "line": 82, "candidates": [ @@ -522,7 +482,7 @@ } }, { - "tool_path": "chat clear-red-point", + "tool_path": "chat list-all-conversations", "source": "skills/mono/references/intent-guide.md", "line": 83, "candidates": [ @@ -535,10 +495,52 @@ "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" } }, + { + "tool_path": "chat clear-messages", + "source": "skills/mono/references/intent-guide.md", + "line": 84, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-red-point", + "source": "skills/mono/references/intent-guide.md", + "line": 84, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-red-point", + "source": "skills/mono/references/intent-guide.md", + "line": 85, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, { "tool_path": "chat mark-read", "source": "skills/mono/references/intent-guide.md", - "line": 83, + "line": 85, "candidates": [ "chat +at-me", "chat +bot-find", @@ -552,7 +554,7 @@ { "tool_path": "chat group list-join-validations", "source": "skills/mono/references/intent-guide.md", - "line": 85, + "line": 87, "candidates": [ "chat group bots", "chat group create", @@ -566,7 +568,7 @@ { "tool_path": "chat group audit-join-validation", "source": "skills/mono/references/intent-guide.md", - "line": 86, + "line": 88, "candidates": [ "chat group bots", "chat group create", @@ -580,7 +582,7 @@ { "tool_path": "chat group list-join-validations", "source": "skills/mono/references/intent-guide.md", - "line": 86, + "line": 88, "candidates": [ "chat group bots", "chat group create", @@ -594,7 +596,7 @@ { "tool_path": "ding message list", "source": "skills/mono/references/intent-guide.md", - "line": 99, + "line": 101, "candidates": [ "chat message list", "mail message list", @@ -608,7 +610,7 @@ { "tool_path": "ding message receiver-status", "source": "skills/mono/references/intent-guide.md", - "line": 100, + "line": 102, "candidates": [ "ding message recall", "ding message send", @@ -622,7 +624,7 @@ { "tool_path": "mail search", "source": "skills/mono/references/intent-guide.md", - "line": 115, + "line": 117, "candidates": [ "mail message search", "mail user search", @@ -636,7 +638,7 @@ { "tool_path": "attendance approve", "source": "skills/mono/references/intent-guide.md", - "line": 117, + "line": 119, "candidates": [ "attendance approve list", "attendance approve templates", @@ -1254,7 +1256,7 @@ { "tool_path": "chat group members", "source": "skills/mono/references/products/chat.md", - "line": 23, + "line": 44, "candidates": [ "chat group members add", "chat group members add-bot", @@ -1268,7 +1270,7 @@ { "tool_path": "chat group members list-by-ids", "source": "skills/mono/references/products/chat.md", - "line": 81, + "line": 102, "candidates": [ "chat message list-by-ids", "chat group members add", @@ -1282,7 +1284,7 @@ { "tool_path": "chat group share-invite", "source": "skills/mono/references/products/chat.md", - "line": 167, + "line": 188, "candidates": [ "chat group bots", "chat group create", @@ -1296,7 +1298,7 @@ { "tool_path": "chat group share-invite", "source": "skills/mono/references/products/chat.md", - "line": 168, + "line": 189, "candidates": [ "chat group bots", "chat group create", @@ -1310,7 +1312,7 @@ { "tool_path": "chat group share-invite", "source": "skills/mono/references/products/chat.md", - "line": 169, + "line": 190, "candidates": [ "chat group bots", "chat group create", @@ -1324,7 +1326,7 @@ { "tool_path": "chat group update-alias", "source": "skills/mono/references/products/chat.md", - "line": 233, + "line": 254, "candidates": [ "chat group bots", "chat group create", @@ -1338,7 +1340,7 @@ { "tool_path": "chat group notice create", "source": "skills/mono/references/products/chat.md", - "line": 321, + "line": 342, "candidates": [ "chat group create", "chat group bots", @@ -1352,7 +1354,7 @@ { "tool_path": "chat group notice create", "source": "skills/mono/references/products/chat.md", - "line": 322, + "line": 343, "candidates": [ "chat group create", "chat group bots", @@ -1366,7 +1368,7 @@ { "tool_path": "chat group notice create", "source": "skills/mono/references/products/chat.md", - "line": 323, + "line": 344, "candidates": [ "chat group create", "chat group bots", @@ -1380,7 +1382,7 @@ { "tool_path": "chat group notice edit", "source": "skills/mono/references/products/chat.md", - "line": 337, + "line": 358, "candidates": [ "chat message edit", "chat group bots", @@ -1394,7 +1396,7 @@ { "tool_path": "chat group notice get", "source": "skills/mono/references/products/chat.md", - "line": 351, + "line": 372, "candidates": [ "chat group bots", "chat group create", @@ -1408,7 +1410,7 @@ { "tool_path": "chat group notice list", "source": "skills/mono/references/products/chat.md", - "line": 362, + "line": 383, "candidates": [ "chat category list", "chat group-role list", @@ -1422,7 +1424,7 @@ { "tool_path": "chat group notice list", "source": "skills/mono/references/products/chat.md", - "line": 363, + "line": 384, "candidates": [ "chat category list", "chat group-role list", @@ -1436,7 +1438,7 @@ { "tool_path": "chat group notice list", "source": "skills/mono/references/products/chat.md", - "line": 364, + "line": 385, "candidates": [ "chat category list", "chat group-role list", @@ -1450,7 +1452,7 @@ { "tool_path": "chat data-auth cross-org", "source": "skills/mono/references/products/chat.md", - "line": 491, + "line": 512, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1464,7 +1466,7 @@ { "tool_path": "chat data-auth cross-org", "source": "skills/mono/references/products/chat.md", - "line": 492, + "line": 513, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1478,7 +1480,7 @@ { "tool_path": "chat data-auth cross-org", "source": "skills/mono/references/products/chat.md", - "line": 493, + "line": 514, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1492,7 +1494,7 @@ { "tool_path": "chat message list-emotion-replies", "source": "skills/mono/references/products/chat.md", - "line": 1103, + "line": 1124, "candidates": [ "chat message add-emoji", "chat message add-favorite", @@ -1506,7 +1508,7 @@ { "tool_path": "chat category create", "source": "skills/mono/references/products/chat.md", - "line": 1480, + "line": 1501, "candidates": [ "chat group create", "chat category batch-info", @@ -1520,7 +1522,7 @@ { "tool_path": "chat category delete", "source": "skills/mono/references/products/chat.md", - "line": 1505, + "line": 1526, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -1534,7 +1536,7 @@ { "tool_path": "chat category rename", "source": "skills/mono/references/products/chat.md", - "line": 1516, + "line": 1537, "candidates": [ "chat group rename", "chat category batch-info", @@ -1548,7 +1550,7 @@ { "tool_path": "chat category add-conv", "source": "skills/mono/references/products/chat.md", - "line": 1528, + "line": 1549, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -1562,7 +1564,7 @@ { "tool_path": "chat category remove-conv", "source": "skills/mono/references/products/chat.md", - "line": 1541, + "line": 1562, "candidates": [ "chat category batch-info", "chat category create-smart", @@ -1576,7 +1578,7 @@ { "tool_path": "chat text translate", "source": "skills/mono/references/products/chat.md", - "line": 1556, + "line": 1577, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1590,7 +1592,7 @@ { "tool_path": "chat text translate", "source": "skills/mono/references/products/chat.md", - "line": 1557, + "line": 1578, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1604,7 +1606,7 @@ { "tool_path": "chat text translate", "source": "skills/mono/references/products/chat.md", - "line": 1558, + "line": 1579, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1618,7 +1620,7 @@ { "tool_path": "chat hide", "source": "skills/mono/references/products/chat.md", - "line": 1595, + "line": 1616, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1632,7 +1634,7 @@ { "tool_path": "chat hide", "source": "skills/mono/references/products/chat.md", - "line": 1596, + "line": 1617, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1646,7 +1648,7 @@ { "tool_path": "chat mute-at-all", "source": "skills/mono/references/products/chat.md", - "line": 1618, + "line": 1639, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1660,7 +1662,7 @@ { "tool_path": "chat mute-at-all", "source": "skills/mono/references/products/chat.md", - "line": 1619, + "line": 1640, "candidates": [ "chat +at-me", "chat +bot-find", @@ -1674,34 +1676,6 @@ { "tool_path": "chat mute-red-envelope", "source": "skills/mono/references/products/chat.md", - "line": 1641, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mute-red-envelope", - "source": "skills/mono/references/products/chat.md", - "line": 1642, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mark-unread", - "source": "skills/mono/references/products/chat.md", "line": 1662, "candidates": [ "chat +at-me", @@ -1714,7 +1688,7 @@ } }, { - "tool_path": "chat mark-unread", + "tool_path": "chat mute-red-envelope", "source": "skills/mono/references/products/chat.md", "line": 1663, "candidates": [ @@ -1728,457 +1702,9 @@ } }, { - "tool_path": "chat clear-red-point", + "tool_path": "chat mark-unread", "source": "skills/mono/references/products/chat.md", - "line": 1681, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat clear-red-point", - "source": "skills/mono/references/products/chat.md", - "line": 1682, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat clear-all-red-point", - "source": "skills/mono/references/products/chat.md", - "line": 1698, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat clear-all-red-point", - "source": "skills/mono/references/products/chat.md", - "line": 1700, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat list-all-conversations", - "source": "skills/mono/references/products/chat.md", - "line": 1714, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat list-all-conversations", - "source": "skills/mono/references/products/chat.md", - "line": 1715, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat list-all-conversations", - "source": "skills/mono/references/products/chat.md", - "line": 1716, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat list-all-conversations", - "source": "skills/mono/references/products/chat.md", - "line": 1717, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat clear-messages", - "source": "skills/mono/references/products/chat.md", - "line": 1737, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat clear-messages", - "source": "skills/mono/references/products/chat.md", - "line": 1738, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mark-read", - "source": "skills/mono/references/products/chat.md", - "line": 1756, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mark-read", - "source": "skills/mono/references/products/chat.md", - "line": 1757, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group list-join-validations", - "source": "skills/mono/references/products/chat.md", - "line": 1800, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group list-join-validations", - "source": "skills/mono/references/products/chat.md", - "line": 1801, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group list-join-validations", - "source": "skills/mono/references/products/chat.md", - "line": 1802, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group audit-join-validation", - "source": "skills/mono/references/products/chat.md", - "line": 1822, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group audit-join-validation", - "source": "skills/mono/references/products/chat.md", - "line": 1823, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group members", - "source": "skills/mono/references/products/chat.md", - "line": 1855, - "candidates": [ - "chat group members add", - "chat group members add-bot", - "chat group members remove" - ], - "review": { - "status": "group", - "reason": "Skill 中的命令分组引用,不是可执行 leaf,禁止模糊绑定到任一子命令" - } - }, - { - "tool_path": "chat group update-alias", - "source": "skills/mono/references/products/chat.md", - "line": 1860, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group members list-by-ids", - "source": "skills/mono/references/products/chat.md", - "line": 1864, - "candidates": [ - "chat message list-by-ids", - "chat group members add", - "chat group members add-bot" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat category create", - "source": "skills/mono/references/products/chat.md", - "line": 1891, - "candidates": [ - "chat group create", - "chat category batch-info", - "chat category create-smart" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat category delete", - "source": "skills/mono/references/products/chat.md", - "line": 1893, - "candidates": [ - "chat category batch-info", - "chat category create-smart", - "chat category list" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat category rename", - "source": "skills/mono/references/products/chat.md", - "line": 1894, - "candidates": [ - "chat group rename", - "chat category batch-info", - "chat category create-smart" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat category add-conv", - "source": "skills/mono/references/products/chat.md", - "line": 1895, - "candidates": [ - "chat category batch-info", - "chat category create-smart", - "chat category list" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat category remove-conv", - "source": "skills/mono/references/products/chat.md", - "line": 1896, - "candidates": [ - "chat category batch-info", - "chat category create-smart", - "chat category list" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group share-invite", - "source": "skills/mono/references/products/chat.md", - "line": 1907, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat group notice create/edit/get/list", - "source": "skills/mono/references/products/chat.md", - "line": 1908, - "candidates": [ - "chat group bots", - "chat group create", - "chat group dismiss" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat message list-emotion-replies", - "source": "skills/mono/references/products/chat.md", - "line": 1910, - "candidates": [ - "chat message add-emoji", - "chat message add-favorite", - "chat message add-text-emotion" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat hide", - "source": "skills/mono/references/products/chat.md", - "line": 1917, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mute-at-all", - "source": "skills/mono/references/products/chat.md", - "line": 1918, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mute-at-all", - "source": "skills/mono/references/products/chat.md", - "line": 1919, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mute-red-envelope", - "source": "skills/mono/references/products/chat.md", - "line": 1920, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mute-red-envelope", - "source": "skills/mono/references/products/chat.md", - "line": 1921, + "line": 1683, "candidates": [ "chat +at-me", "chat +bot-find", @@ -2192,21 +1718,7 @@ { "tool_path": "chat mark-unread", "source": "skills/mono/references/products/chat.md", - "line": 1922, - "candidates": [ - "chat +at-me", - "chat +bot-find", - "chat +bot-search" - ], - "review": { - "status": "stale", - "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" - } - }, - { - "tool_path": "chat mark-read", - "source": "skills/mono/references/products/chat.md", - "line": 1923, + "line": 1684, "candidates": [ "chat +at-me", "chat +bot-find", @@ -2220,7 +1732,21 @@ { "tool_path": "chat clear-red-point", "source": "skills/mono/references/products/chat.md", - "line": 1924, + "line": 1702, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-red-point", + "source": "skills/mono/references/products/chat.md", + "line": 1703, "candidates": [ "chat +at-me", "chat +bot-find", @@ -2234,7 +1760,21 @@ { "tool_path": "chat clear-all-red-point", "source": "skills/mono/references/products/chat.md", - "line": 1925, + "line": 1719, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-all-red-point", + "source": "skills/mono/references/products/chat.md", + "line": 1721, "candidates": [ "chat +at-me", "chat +bot-find", @@ -2248,7 +1788,49 @@ { "tool_path": "chat list-all-conversations", "source": "skills/mono/references/products/chat.md", - "line": 1926, + "line": 1735, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat list-all-conversations", + "source": "skills/mono/references/products/chat.md", + "line": 1736, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat list-all-conversations", + "source": "skills/mono/references/products/chat.md", + "line": 1737, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat list-all-conversations", + "source": "skills/mono/references/products/chat.md", + "line": 1738, "candidates": [ "chat +at-me", "chat +bot-find", @@ -2262,7 +1844,49 @@ { "tool_path": "chat clear-messages", "source": "skills/mono/references/products/chat.md", - "line": 1927, + "line": 1758, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-messages", + "source": "skills/mono/references/products/chat.md", + "line": 1759, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mark-read", + "source": "skills/mono/references/products/chat.md", + "line": 1777, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mark-read", + "source": "skills/mono/references/products/chat.md", + "line": 1778, "candidates": [ "chat +at-me", "chat +bot-find", @@ -2276,7 +1900,35 @@ { "tool_path": "chat group list-join-validations", "source": "skills/mono/references/products/chat.md", - "line": 1929, + "line": 1821, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group list-join-validations", + "source": "skills/mono/references/products/chat.md", + "line": 1822, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group list-join-validations", + "source": "skills/mono/references/products/chat.md", + "line": 1823, "candidates": [ "chat group bots", "chat group create", @@ -2290,7 +1942,357 @@ { "tool_path": "chat group audit-join-validation", "source": "skills/mono/references/products/chat.md", - "line": 1930, + "line": 1843, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group audit-join-validation", + "source": "skills/mono/references/products/chat.md", + "line": 1844, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group members", + "source": "skills/mono/references/products/chat.md", + "line": 1876, + "candidates": [ + "chat group members add", + "chat group members add-bot", + "chat group members remove" + ], + "review": { + "status": "group", + "reason": "Skill 中的命令分组引用,不是可执行 leaf,禁止模糊绑定到任一子命令" + } + }, + { + "tool_path": "chat group update-alias", + "source": "skills/mono/references/products/chat.md", + "line": 1881, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group members list-by-ids", + "source": "skills/mono/references/products/chat.md", + "line": 1885, + "candidates": [ + "chat message list-by-ids", + "chat group members add", + "chat group members add-bot" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat category create", + "source": "skills/mono/references/products/chat.md", + "line": 1912, + "candidates": [ + "chat group create", + "chat category batch-info", + "chat category create-smart" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat category delete", + "source": "skills/mono/references/products/chat.md", + "line": 1914, + "candidates": [ + "chat category batch-info", + "chat category create-smart", + "chat category list" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat category rename", + "source": "skills/mono/references/products/chat.md", + "line": 1915, + "candidates": [ + "chat group rename", + "chat category batch-info", + "chat category create-smart" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat category add-conv", + "source": "skills/mono/references/products/chat.md", + "line": 1916, + "candidates": [ + "chat category batch-info", + "chat category create-smart", + "chat category list" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat category remove-conv", + "source": "skills/mono/references/products/chat.md", + "line": 1917, + "candidates": [ + "chat category batch-info", + "chat category create-smart", + "chat category list" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group share-invite", + "source": "skills/mono/references/products/chat.md", + "line": 1928, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group notice create/edit/get/list", + "source": "skills/mono/references/products/chat.md", + "line": 1929, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat message list-emotion-replies", + "source": "skills/mono/references/products/chat.md", + "line": 1931, + "candidates": [ + "chat message add-emoji", + "chat message add-favorite", + "chat message add-text-emotion" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat hide", + "source": "skills/mono/references/products/chat.md", + "line": 1938, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mute-at-all", + "source": "skills/mono/references/products/chat.md", + "line": 1939, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mute-at-all", + "source": "skills/mono/references/products/chat.md", + "line": 1940, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mute-red-envelope", + "source": "skills/mono/references/products/chat.md", + "line": 1941, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mute-red-envelope", + "source": "skills/mono/references/products/chat.md", + "line": 1942, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mark-unread", + "source": "skills/mono/references/products/chat.md", + "line": 1943, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat mark-read", + "source": "skills/mono/references/products/chat.md", + "line": 1944, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-red-point", + "source": "skills/mono/references/products/chat.md", + "line": 1945, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-all-red-point", + "source": "skills/mono/references/products/chat.md", + "line": 1946, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat list-all-conversations", + "source": "skills/mono/references/products/chat.md", + "line": 1947, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat clear-messages", + "source": "skills/mono/references/products/chat.md", + "line": 1948, + "candidates": [ + "chat +at-me", + "chat +bot-find", + "chat +bot-search" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group list-join-validations", + "source": "skills/mono/references/products/chat.md", + "line": 1950, + "candidates": [ + "chat group bots", + "chat group create", + "chat group dismiss" + ], + "review": { + "status": "stale", + "reason": "旧版 Skill 或说明性引用,当前公开命令面无等价 leaf,禁止词法模糊映射" + } + }, + { + "tool_path": "chat group audit-join-validation", + "source": "skills/mono/references/products/chat.md", + "line": 1951, "candidates": [ "chat group bots", "chat group create", @@ -2304,7 +2306,7 @@ { "tool_path": "chat text translate", "source": "skills/mono/references/products/chat.md", - "line": 1950, + "line": 1971, "candidates": [ "chat +at-me", "chat +bot-find", diff --git a/internal/cli/schema_catalog/catalog.json b/internal/cli/schema_catalog/catalog.json index b3f2d70a..78005888 100644 --- a/internal/cli/schema_catalog/catalog.json +++ b/internal/cli/schema_catalog/catalog.json @@ -1,12 +1,12 @@ { "version": 1, "surface_hash": "sha256:698ccdc961c0b745e6524e33ae13d87ef4fcac012a2e833c7a727a79d35004db", - "source_hash": "sha256:2336db101f882586f78322e88d8351ed8b80c9c66c6cb6268cfb7605c04077ed", + "source_hash": "sha256:7a75c819e9a71d0166bffc60204e513074f9f300ade7a2e4b4e8529b273145df", "catalog": { "agent_metadata": { "products_with_metadata": 26, "source": "embedded-skill-metadata", - "source_hash": "sha256:179a67a3fd47e2ef1786aaec197d52429a6522bf61a883df70f83febf334387b", + "source_hash": "sha256:f8489e3583b99d851ccd2a133a0c565aaa658168d0c1ba8cf71034f2930c51e9", "surface_hash": "sha256:698ccdc961c0b745e6524e33ae13d87ef4fcac012a2e833c7a727a79d35004db", "surface_products": 26, "surface_tools": 818, diff --git a/internal/cli/schema_catalog/tools/chat.json b/internal/cli/schema_catalog/tools/chat.json index 971c7634..1e950089 100644 --- a/internal/cli/schema_catalog/tools/chat.json +++ b/internal/cli/schema_catalog/tools/chat.json @@ -22683,6 +22683,7 @@ "internal/cli/schema_hints/selection/chat.json", "internal/cli/schema_mcp_metadata.json#tools.chat.list_topic_replies", "skills/mono/SKILL.md", + "skills/mono/references/intent-guide.md", "skills/mono/references/products/chat.md" ], "agent_summary": "分页读取指定话题的回复", @@ -50902,7 +50903,8 @@ "cobra-help:dws chat +at-me", "internal/cli/schema_command_registry.json#chat.shortcut_at_me", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "agent_summary": "查最近 @我 的消息(自动算时间窗,投影发送人/时间/内容/会话)", "agent_summary_source": "dws-agent-selection/chat", @@ -58193,7 +58195,8 @@ "cobra-help:dws chat +chat-messages", "internal/cli/schema_command_registry.json#chat.shortcut_chat_messages", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "agent_summary": "拉取某个会话(群聊或单聊)的消息列表并投影出发言人/文本/时间", "agent_summary_source": "dws-agent-selection/chat", @@ -72214,7 +72217,8 @@ "cobra-help:dws chat +messages-send", "internal/cli/schema_command_registry.json#chat.shortcut_messages_send", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "agent_summary": "统一发送文本、Markdown、当前用户文件或已有 mediaId 图片", "agent_summary_source": "dws-agent-selection/chat", @@ -72347,6 +72351,12 @@ "selected": true, "source": "internal/cli/schema_hints/metadata/chat.json", "value": "user_required" + }, + { + "precedence": "inference_or_default", + "selected": false, + "source": "risk-default", + "value": "not_required" } ], "precedence": "reviewed_explicit", @@ -72377,6 +72387,12 @@ "selected": true, "source": "internal/cli/schema_hints/metadata/chat.json", "value": "write" + }, + { + "precedence": "inference_or_default", + "selected": false, + "source": "command-verb", + "value": "write" } ], "precedence": "reviewed_explicit", @@ -72415,6 +72431,12 @@ "selected": true, "source": "internal/cli/schema_hints/metadata/chat.json", "value": "unknown" + }, + { + "precedence": "inference_or_default", + "selected": false, + "source": "effect-default", + "value": "unknown" } ], "precedence": "reviewed_explicit", @@ -72502,6 +72524,12 @@ "selected": true, "source": "internal/cli/schema_hints/metadata/chat.json", "value": "medium" + }, + { + "precedence": "inference_or_default", + "selected": false, + "source": "effect-default", + "value": "medium" } ], "precedence": "reviewed_explicit", @@ -77478,7 +77506,8 @@ "cobra-help:dws chat +search-msg", "internal/cli/schema_command_registry.json#chat.shortcut_search_msg", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "agent_summary": "多维搜索消息,可全量翻页并批量富化详情", "agent_summary_source": "dws-agent-selection/chat", @@ -80882,7 +80911,8 @@ "cobra-help:dws chat +thread-replies", "internal/cli/schema_command_registry.json#chat.shortcut_thread_replies", "internal/cli/schema_hints/metadata/chat.json", - "internal/cli/schema_hints/selection/chat.json" + "internal/cli/schema_hints/selection/chat.json", + "skills/mono/references/intent-guide.md" ], "agent_summary": "拉取某条话题消息的全部回复并投影出发言人/文本/时间", "agent_summary_source": "dws-agent-selection/chat", diff --git a/skills/mono/SKILL.md b/skills/mono/SKILL.md index 2724e805..9c6aaf76 100644 --- a/skills/mono/SKILL.md +++ b/skills/mono/SKILL.md @@ -46,7 +46,7 @@ cli_version: ">=1.0.15" | `aitable` | 29 | `dingtalk-aitable` | `dws shortcut list --service aitable --format json` | | `attendance` | 19 | `dingtalk-attendance` | `dws shortcut list --service attendance --format json` | | `calendar` | 20 | `dingtalk-calendar` | `dws shortcut list --service calendar --format json` | -| `chat` | 42 | `dingtalk-chat` | `dws shortcut list --service chat --format json` | +| `chat` | 97 | `dingtalk-chat` | `dws shortcut list --service chat --format json` | | `contact` | 14 | `dingtalk-contact` | `dws shortcut list --service contact --format json` | | `devapp` | 19 | `dingtalk-dev` | `dws shortcut list --service devapp --format json` | | `ding` | 4 | `dingtalk-ding` | `dws shortcut list --service ding --format json` | diff --git a/skills/mono/references/intent-guide.md b/skills/mono/references/intent-guide.md index 42e158c3..ff6966d6 100644 --- a/skills/mono/references/intent-guide.md +++ b/skills/mono/references/intent-guide.md @@ -29,19 +29,21 @@ | "明早 9 点提醒我提交周报" | 创建个人待办后添加提醒 | `todo task create` + `todo task add-reminder` | `calendar` | `+remind --at` 只写截止时间;提醒可写入,但上游不支持规则读回 | | "帮我建一个项目群" | 创建群聊 | `chat group create` | — | 群聊管理,不是日历日程 | | "把张三拉进群" | 添加群成员 | `chat group members add` | — | 先查 userId,再添加 | -| "通知群里的人都来开会" | 个人身份群发 | `chat message send` | `chat message send-by-bot` | 以个人身份向群发消息 | -| "让机器人每天推送日报" | 机器人定时推送 | `chat message send-by-bot` | `chat message send` | 需要机器人身份定期发送 | -| "给张三发一条机器人单聊消息" | 机器人单聊 | `chat message send-by-bot --users` | — | 机器人批量单聊,先查 userId | -| "CPU 超过 90% 自动告警" | Webhook 告警 | `chat message send-by-webhook` | `chat message send-by-bot` | 系统告警场景,需自定义 Webhook | +| "通知群里的人都来开会" | 个人身份群发 | `chat +messages-send --as user` | `chat message send` | 统一入口校验身份、目标、内容和幂等键 | +| "让机器人每天推送日报" | 机器人定时推送 | `chat +messages-send --as bot` | `chat message send-by-bot` | 需要 robotCode;定时调度由外层工作流负责 | +| "给张三发一条机器人单聊消息" | 机器人单聊 | `chat +messages-send --as bot --users` | `chat message send-by-bot --users` | 机器人批量单聊,先查 userId | +| "CPU 超过 90% 自动告警" | Webhook 告警 | `chat +messages-send --as webhook` | `chat message send-by-webhook` | 系统告警场景,需自定义 Webhook token | | "帮我看看收到的日报" | 收到的日志 | `report` | `doc` | 钉钉日志系统(日报/周报),不是文档 | | "帮我创建一个待办提醒" | 个人待办 | `todo` | `report` | 个人任务提醒,不是日志汇报 | -| "拉取一下上周项目群的聊天记录" | 拉取会话消息 | `chat message list` | — | 拉取指定群聊的消息列表 | +| "拉取一下上周项目群的聊天记录" | 拉取会话消息 | `chat +chat-messages` | `chat message list` | Shortcut 投影发言人/文本/时间并可处理资源 | | "看看张三发给我的消息" | 按发送者查询消息 | `chat message list-by-sender` | `chat message list --user` | 用户未明确说"单聊"时优先用 list-by-sender(跨单聊/群聊) | | "拉取和张三的单聊记录" | 拉取单聊消息 | `chat message list --user` | `chat message list-by-sender` | 用户明确说"单聊"时用 list --user | -| "谁@了我/查看提及我的消息" | 查询@我的消息 | `chat message list-mentions` | `chat message list-all` | 都是跨会话时间范围查询,但 list-mentions 只返回@我的消息 | +| "谁@了我/查看提及我的消息" | 查询@我的消息 | `chat +at-me` | `chat message list-mentions` | Shortcut 自动时间窗、投影和资源处理 | | "查看我今天的所有消息" | 全量会话消息 | `chat message list-all` | `chat message list` | 用户未指定具体会话时用 list-all(跨所有会话),指定了具体群或人时用 list | -| "搜一下消息里的changefree链接" | 消息搜索 | `chat message search-advanced`(首选) | `chat search` | 推荐首选 search-advanced,它是 search 的严格超集(keyword 可选、支持多群、可叠加发送者/at 维度) | -| "按发送者搜索/指定多个群搜索/多维度搜消息" | 多维度搜索消息 | `chat message search-advanced`(首选) | `chat message search` | 推荐首选,支持关键词、发送者、@我、多个会话等维度组合 | +| "搜一下消息里的changefree链接" | 消息搜索 | `chat +search-msg` | `chat message search-advanced` | Shortcut 支持关键词、发送者、会话、消息类型、时间窗、全量翻页和批量富化 | +| "按发送者搜索/指定多个群搜索/多维度搜消息" | 多维度搜索消息 | `chat +search-msg` | `chat message search-advanced` | 需要原子响应结构时才降级 | +| "查看这条话题的所有回复" | 话题回复 | `chat +thread-replies` | `chat message list-topic-replies` | 已知 threadId/topicId 时自动投影回复人、正文和时间 | +| "把这些消息里的附件下载下来" | 消息资源下载 | 查询 Shortcut 的 `--download-resources` | `resourceRefs.shortcut` 返回的下载命令 | 先用查询结果的 resourceRefs;单资源再执行返回的可运行参数 | | "消息发没发成功/查询消息发送状态" | 查询消息发送状态 | `chat message query-send-status` | — | 需要 send 返回的 openTaskId | | "撤回我发的消息/撤回消息" | 撤回个人消息 | `chat message recall` | `chat message recall-by-bot` | recall 撤回个人消息,recall-by-bot 撤回机器人消息 | | "未读消息会话/未读会话列表/我的未读会话" | 未读会话列表 | `chat message list-unread-conversations` | `chat message read-status` | list-unread-conversations 查哪些会话有未读;read-status 查具体消息的已读状态 | @@ -267,7 +269,7 @@ alidocs 链接表面长得一样(`https://alidocs.dingtalk.com/i/nodes/{id}` ### 5. chat 内部 — 消息发送与撤回 -**用 `chat message send` 的场景**: +**优先用 `chat +messages-send` 的场景**: - "帮我在群里发个消息提醒大家" — **个人身份**发群消息 - "发个单聊消息给某人" — 个人身份发单聊: - 已有 userId 时直接使用 `--user`;已有 openDingTalkId 时使用 `--open-dingtalk-id` @@ -278,18 +280,20 @@ alidocs 链接表面长得一样(`https://alidocs.dingtalk.com/i/nodes/{id}` - "发图片+文字说明" — 不要硬塞进一条命令;先发图片/文件消息再补一条 `--text "..."` 即可 ```bash -dws chat message send --group --msg-type file --file-path ./screenshot.png --format json -dws chat message send --open-dingtalk-id --msg-type file --file-path ./report.pdf --format json +dws chat +messages-send --as user --chat-id --msg-type file --file ./screenshot.png --idempotency-key --format json +dws chat +messages-send --as user --open-dingtalk-id --msg-type file --file ./report.pdf --idempotency-key --format json ``` -> ❌ 反模式:先把本地文件转换成 mediaId,或先经钉盘上传再拼装聊天消息。本地图片/文件一律用 `--msg-type file --file-path` 直发;`--msg-type image --media-id` 只接受上游已经提供的有效 mediaId。 +> ❌ 反模式:先把本地文件转换成 mediaId,或先经钉盘上传再拼装聊天消息。本地图片/文件一律用 `--msg-type file --file` 直发;`--msg-type image --media-id` 只接受上游已经提供的有效 mediaId。 > 富媒体消息单聊优先使用 `--open-dingtalk-id`;传 `--user` 时 CLI 会尝试解析为 openDingTalkId 后发送。 -**用 `chat message send-by-bot` 的场景**: +`+messages-send` 的 @ 占位符按身份自动规范化并补齐:user 使用 `<@id>` / `<@all>`;bot/webhook 使用 `@id` / `@手机号` / `@all`。声明 `--at-*` / `--at-all` 即可,不要再手工拼 `@10`。 + +**用 `chat +messages-send --as bot` 的场景**: - "让机器人在群里发一条通知" — **机器人身份**发消息 - "给张三发一条机器人单聊消息" — 机器人单聊 -**用 `chat message send-by-webhook` 的场景**: +**用 `chat +messages-send --as webhook` 的场景**: - "通过 Webhook 发告警到群里" — 自定义机器人 Webhook - 用户有 Webhook Token @@ -302,16 +306,21 @@ dws chat message send --open-dingtalk-id --msg-type file --file 用 `chat message query-send-status` 的场景: - "消息发没发成功/查询消息发送状态" — 查询个人发送消息的状态,需要 send 返回的 openTaskId -用 `chat message search-advanced` 的场景(推荐首选): +用 `chat +search-msg` 的场景(推荐首选): - "按发送者搜索消息/指定多个群搜索/@我的消息多维度搜" — 支持关键词、发送者、@我、@指定人、多个会话等维度组合搜索 -- 替代关系:完全替代 `chat message search`(严格超集:keyword 可选 vs 必填,支持多群 vs 单群);大部分替代 `chat message list-by-sender`(--user/--users 覆盖按 userId 搜索发送者,--sender-ids 覆盖按 openDingTalkId 搜索)和 `chat message list-mentions`(--at-me 覆盖核心功能) +- `--page-all` 连续拉取游标页,默认按消息 ID 批量富化;续页或富化失败保留已取得结果并返回逐项失败 ledger +- 替代关系:覆盖 `chat message search-advanced` 的常见组合过滤;需要原子接口返回结构或 Shortcut 尚未暴露的字段时再降级 - 不能替代:`chat message list-focused`(「特别关注人」是独立维度) -- 默认使用 search-advanced,仅在上述不适用场景才降级到具体命令 +- 默认使用 `+search-msg`,仅在上述不适用场景才降级到具体命令 + +资源读取优先在 `+at-me`、`+chat-messages`、`+messages-mget`、`+search-msg`、`+thread-replies` 上加 `--download-resources`。引用、回复或合并转发里的资源使用结果 `resourceRefs` 自带的子消息 `messageId`;子消息没有会话 ID 时才继承父消息会话。单独下载一个资源时用 `+messages-resource-download`,输出必须是工作目录内的相对路径,默认拒绝覆盖。 + +上述查询 Shortcut 因可选本地下载能力按命令级 Schema 发布为 `write/user_required`;执行前读取 leaf Schema,确认输出目录和覆盖策略,获得用户确认后才加 `--yes`。 **不支持的场景**: - "撤回我刚发的消息"(但不知道消息 ID) — 需先通过消息拉取或搜索接口(如 `chat message list`、`chat message search-advanced` 等)获取 openMessageId,再调用 `chat message recall` -判断关键:个人发→ `send`;机器人发→ `send-by-bot`;有 Webhook Token→ `send-by-webhook`;个人撤回→ `recall`;机器人撤回→ `recall-by-bot`;查发送状态→ `query-send-status`;消息搜索类意图优先路由到 `search-advanced`(推荐首选),仅在不适用时降级到具体命令 +判断关键:普通发送统一走 `+messages-send` 并显式选择 `--as`;个人撤回→ `recall`;机器人撤回→ `recall-by-bot`;查发送状态→ `query-send-status`;消息搜索类意图优先路由到 `+search-msg`,仅在不适用时降级到原子命令。 --- diff --git a/skills/mono/references/products/chat.md b/skills/mono/references/products/chat.md index f42e6226..69556541 100644 --- a/skills/mono/references/products/chat.md +++ b/skills/mono/references/products/chat.md @@ -2,6 +2,27 @@ ## 命令总览 +## Shortcut 优先路由 + +常见 Agent 意图优先使用公开 `+` Shortcut;下面的原子命令章节保留给需要特定原始返回结构、兼容参数或 Shortcut 未覆盖字段的场景。执行前用 `dws schema --cli-path "chat +" --format json` 读取最终参数、约束和确认语义。 + +| 意图 | 首选 | +|---|---| +| 以 current-user / bot / webhook 身份发消息 | `dws chat +messages-send --as ...` | +| 拉取单个群聊或单聊的消息 | `dws chat +chat-messages ...` | +| 按关键词、发送者、@对象、会话、类型或时间组合搜索 | `dws chat +search-msg ...` | +| 查询 @我的消息 | `dws chat +at-me ...` | +| 根据消息 ID 批量取详情与 reaction | `dws chat +messages-mget ...` | +| 读取已知 thread/topic 的全部回复 | `dws chat +thread-replies ...` | +| 下载单个 mediaId/fileId | `dws chat +messages-resource-download ...` | + +- `+messages-send` 只暴露下层真实支持的身份能力:user 支持文本/Markdown、已有 mediaId 图片、本地文件和幂等键;bot 支持群聊或批量单聊文本/Markdown;webhook 的目标由 token 所在群决定。 +- `+messages-send` 会自动规范化并补齐 @ 占位符。user 使用 `<@id>` / `<@all>`;bot/webhook 使用 `@id` / `@手机号` / `@all`。声明 `--at-*` / `--at-all` 即可,不要为统一 Shortcut 手工拼 `@10`。 +- `+search-msg --page-all` 连续翻页并默认按消息 ID 批量富化;任何续页或富化失败都会保留已取得结果并返回逐项失败 ledger。 +- `+at-me`、`+chat-messages`、`+messages-mget`、`+search-msg`、`+thread-replies` 可用 `--download-resources` 下载资源。引用、回复、合并转发中的资源使用结果 `resourceRefs` 自带的子消息 `messageId`;仅当子消息缺会话 ID 时继承父消息 `openConversationId`。 +- 上述查询 Shortcut 因可选本地下载能力按命令级 Schema 发布为 `write/user_required`;`+messages-resource-download` 始终写本地。确认相对输出目录和覆盖策略后才加 `--yes`,默认拒绝覆盖已有文件。 +- 下载器仅接受经审查的钉钉与公网 OSS HTTPS 地址并逐跳校验重定向;跨主机时不会转发下层提供的请求头。新官方域名被拒绝时记录错误中的 host 供审查,不要放宽为任意 HTTPS。 + ### group (群组管理) #### 创建群 — 当前登录用户自动成为群主 diff --git a/skills/multi/dingtalk-chat/SKILL.md b/skills/multi/dingtalk-chat/SKILL.md index 946fd0b1..709cc7ee 100644 --- a/skills/multi/dingtalk-chat/SKILL.md +++ b/skills/multi/dingtalk-chat/SKILL.md @@ -1,6 +1,6 @@ --- name: dingtalk-chat -description: 钉钉群聊与消息。Use when 用户提到 发消息/编辑或撤回已发送消息/单聊/群聊/建群/普通群升级外部群/群昵称/会话分组/群成员管理/@消息/收藏消息/机器人群发/Webhook通知/发图片或文件到群。Distinct from dingtalk-ding(紧急DING消息/短信/电话)、dingtalk-mail(邮件)、dingtalk-edu-group(班级群)。命令前缀:dws chat。 +description: 钉钉群聊与消息。Use when 用户提到 发消息/编辑或撤回已发送消息/单聊/群聊/建群/普通群升级外部群/群昵称/会话分组/群成员管理/@消息/搜索聊天记录/话题回复/收藏消息/机器人群发/Webhook通知/发送或下载消息图片与文件。Distinct from dingtalk-ding(紧急DING消息/短信/电话)、dingtalk-mail(邮件)、dingtalk-edu-group(班级群)。命令前缀:dws chat。 cli_version: ">=0.2.14" metadata: category: product @@ -30,64 +30,127 @@ metadata: | Shortcut | 风险 | 适用场景 | |---|---|---| -| `dws chat +at-me` | read | 查最近 @我 的消息(自动算时间窗,投影发送人/时间/内容/会话) | +| `dws chat +at-me` | write | 查最近 @我 的消息(自动算时间窗,投影发送人/时间/内容/会话) | | `dws chat +bot-find` | read | 搜索全部可用机器人(含他人/官方,返回 openDingTalkId 可发单聊) | | `dws chat +bot-search` | read | 搜索当前用户自己创建的机器人 | | `dws chat +broadcast` | write | 按姓名逐一给多个人群发同一条单聊消息(自动解析 userId、逐个发送) | +| `dws chat +category-add-conversation` | write | 将会话移动到指定的自定义分组中 | | `dws chat +category-create` | write | 创建用户自定义会话分组 | | `dws chat +category-delete` | high-risk-write | 删除用户自定义会话分组 | | `dws chat +category-list` | read | 获取用户自定义会话分组 | +| `dws chat +category-list-conversations` | read | 拉取指定自定义会话分组下的会话 | +| `dws chat +category-remove-conversation` | write | 将会话从指定的自定义分组中移出 | | `dws chat +category-rename` | write | 更新用户自定义会话分组的名称 | +| `dws chat +chat-add-bot` | write | 将机器人添加到群中 | +| `dws chat +chat-audit-join` | write | 审批入群验证(通过/拒绝/删除/忽略/拉黑) | | `dws chat +chat-bots` | read | 查看群内所有机器人 | +| `dws chat +chat-create` | write | 以当前用户身份创建钉钉群聊 | | `dws chat +chat-dismiss` | high-risk-write | 解散群聊(不可逆,需群主权限) | +| `dws chat +chat-get-by-id` | read | 根据群号获取群聊信息 | | `dws chat +chat-invite-url` | read | 获取群邀请链接 | | `dws chat +chat-list-all` | read | 分页拉取我加入的所有群列表 | | `dws chat +chat-list-join-requests` | read | 分页拉取入群验证记录 | | `dws chat +chat-list-mine` | read | 拉取我创建/管理的群 | +| `dws chat +chat-members-get` | read | 根据成员 openDingTalkId 批量查询群成员详情 | +| `dws chat +chat-members-list` | read | 列出群成员并把用户与机器人分桶(支持群名语义解析) | +| `dws chat +chat-messages` | write | 拉取某个会话(群聊或单聊)的消息列表并投影出发言人/文本/时间 | | `dws chat +chat-mute` | write | 全员禁言 / 取消全员禁言 | +| `dws chat +chat-mute-member` | write | 指定群成员禁言 / 取消禁言 | +| `dws chat +chat-quit` | write | 退出群聊 | +| `dws chat +chat-remove-bot` | high-risk-write | 从群内移除机器人 | | `dws chat +chat-role-add` | write | 添加群身份 | | `dws chat +chat-role-list` | read | 拉取会话的群身份列表 | | `dws chat +chat-role-query-user` | read | 查询群成员的群身份 | +| `dws chat +chat-role-remove` | high-risk-write | 删除群身份 | +| `dws chat +chat-role-remove-user` | write | 移除用户的指定群身份 | | `dws chat +chat-role-set-user` | write | 设置用户的群身份(覆盖该用户的全部群身份) | | `dws chat +chat-role-update` | write | 更新群身份名称 | | `dws chat +chat-search` | read | 按关键词搜索群聊 | | `dws chat +chat-set-admin` | write | 设置 / 取消群管理员 | | `dws chat +chat-set-history` | write | 设置新成员入群可查看历史消息范围 | +| `dws chat +chat-transfer-owner` | write | 转让群主 | +| `dws chat +chat-update` | write | 更新群名称(仅名称,不支持 description) | | `dws chat +chat-update-alias` | write | 设置群备注(仅自己可见) | +| `dws chat +chat-update-icon` | write | 更新群头像 | | `dws chat +chat-update-nick` | write | 设置当前用户在群内的群昵称 | +| `dws chat +chat-update-settings` | write | 更新群设置(settingKey + status) | | `dws chat +conversation-clear-all-red-point` | write | 清除所有会话红点(全部已读) | +| `dws chat +conversation-clear-messages` | high-risk-write | 清空当前用户指定会话的聊天记录(仅本人视角,不可逆) | +| `dws chat +conversation-clear-red-point` | write | 清除会话红点 | +| `dws chat +conversation-hide` | write | 会话列表中隐藏会话(收到新消息会重新出现) | | `dws chat +conversation-info` | read | 获取会话信息(群聊传 --group,单聊传 --open-dingtalk-id) | | `dws chat +conversation-list` | read | 分页获取当前用户的全部会话列表(单聊+群聊) | -| `dws chat +conversation-list-top` | read | 拉取置顶会话列表 | +| `dws chat +conversation-list-top` | read | 拉取置顶会话列表,可只看群聊或单聊 | +| `dws chat +conversation-mark-read` | write | 标记消息已读(该消息及之前的消息都标记为已读) | +| `dws chat +conversation-mark-unread` | write | 标记会话为未读 | +| `dws chat +conversation-mute` | write | 会话消息免打扰(支持单聊/群聊) | +| `dws chat +conversation-set-top` | write | 批量会话置顶 / 取消置顶(最多 10 个) | | `dws chat +dm` | write | 按姓名直接给某人发单聊消息(自动解析 userId) | +| `dws chat +feed-group-query-item` | read | 在会话分组结果中按会话 ID 精确查询多项 | +| `dws chat +flag-cancel` | write | 取消收藏一条或多条消息(最多 10 条) | +| `dws chat +flag-create` | write | 收藏一条或多条消息(最多 10 条) | +| `dws chat +flag-list` | read | 分页查询当前用户收藏的消息 | | `dws chat +group-members` | read | 按群名列出群成员(自动搜群解析 openConversationId) | +| `dws chat +messages-add-emoji` | write | 对消息添加 emoji 表情回应 | +| `dws chat +messages-add-text-emotion` | write | 对消息添加文字表情回应 | +| `dws chat +messages-batch-recall-by-bot` | write | 机器人撤回单聊消息 | +| `dws chat +messages-batch-send-by-bot` | write | 机器人批量向用户发送单聊 Markdown 消息 | +| `dws chat +messages-combine-forward` | write | 合并转发多条消息 | +| `dws chat +messages-create-text-emotion` | write | 创建文字表情(获取 emotionId) | +| `dws chat +messages-forward` | write | 转发单条消息 | +| `dws chat +messages-forward-topic` | write | 转发话题消息到目标会话 | +| `dws chat +messages-list` | read | 拉取群聊会话消息 | | `dws chat +messages-list-direct` | read | 拉取单聊会话消息 | | `dws chat +messages-list-pin` | read | 拉取会话中钉住的消息列表 | | `dws chat +messages-list-unread-conversations` | read | 获取有未读消息的会话列表 | -| `dws chat +messages-mget` | read | 根据消息 ID 批量查询消息(最多 50 条) | +| `dws chat +messages-mget` | write | 根据消息 ID 批量查询消息(最多 50 条) | | `dws chat +messages-query-send-status` | read | 查询消息发送状态 | | `dws chat +messages-read-status` | read | 查询消息的已读/未读状态 | +| `dws chat +messages-recall` | write | 撤回当前用户发送的消息 | +| `dws chat +messages-recall-by-bot` | write | 机器人撤回群消息 | +| `dws chat +messages-remove-emoji` | write | 移除消息的 emoji 表情回应 | +| `dws chat +messages-remove-text-emotion` | write | 移除消息的文字表情回应 | +| `dws chat +messages-reply` | write | 以当前用户身份引用回复消息(自动补全原发送者) | +| `dws chat +messages-resource-download` | write | 安全下载消息资源(图片/视频/语音/文件)到本地 | +| `dws chat +messages-resource-url` | read | 获取消息资源(图片/视频/语音)下载链接 | +| `dws chat +messages-send` | write | 统一发送文本、Markdown、当前用户文件或已有 mediaId 图片 | +| `dws chat +messages-send-by-bot` | write | 机器人向群聊发送 Markdown 消息 | | `dws chat +messages-send-by-webhook` | write | 自定义机器人 Webhook 发送群消息 | +| `dws chat +messages-send-card` | write | 创建流式卡片,可在同一次调用中写入内容并结束 | +| `dws chat +messages-set-pin` | write | 钉住消息(Pin) | +| `dws chat +messages-set-top` | write | 置顶消息 | +| `dws chat +messages-unset-pin` | write | 取消钉住消息(Unpin) | +| `dws chat +messages-unset-top` | write | 取消置顶消息 | | `dws chat +messages-update-card` | write | 流式更新卡片内容(最后一次 --flow-status 应为 3) | | `dws chat +my-groups` | read | 列出我加入的群,可按类型过滤并投影关键字段 | +| `dws chat +search-msg` | write | 多维搜索消息,可全量翻页并批量富化详情 | | `dws chat +send-to-group` | write | 按群名直接给群发消息(自动搜群解析 openConversationId) | +| `dws chat +thread-replies` | write | 拉取某条话题消息的全部回复并投影出发言人/文本/时间 | | `dws chat +unread-chats` | read | 列出我有未读消息的会话(投影会话名/未读数/会话ID) | +## IM Shortcut 优先路由 + +- 统一发送优先用 `chat +messages-send`:通过 `--as user|bot|webhook` 选择身份,并只传该身份真实支持的目标、内容和凭据。仅在需要原子命令的特定返回结构或兼容参数时,才降级到 `chat message send` / `send-by-bot` / `send-by-webhook`。 +- 消息查询按意图选择:指定会话用 `+chat-messages`,跨维度过滤/全量翻页用 `+search-msg`,@我用 `+at-me`,已知消息 ID 批量富化用 `+messages-mget`,已知 thread/topic ID 读取回复用 `+thread-replies`。 +- 查询结果中的 `resourceRefs` 是可继续执行的资源上下文。引用、回复或合并转发中的子消息必须使用该子消息返回的 `messageId`;子消息缺会话 ID 时才继承父消息的 `openConversationId`,不要把所有资源重新绑定到父消息。 +- `+at-me`、`+chat-messages`、`+messages-mget`、`+search-msg`、`+thread-replies` 的 `--download-resources` 会写本地文件;`+messages-resource-download` 始终写本地文件。它们按 leaf Schema 发布为 `write/user_required`,先确认目标目录和覆盖策略,获得用户确认后才加 `--yes`。 +- `+messages-send` 会按身份规范化 @ 占位符:user 使用 `<@id>` / `<@all>`,bot/webhook 使用 `@id` / `@手机号` / `@all`;只需声明 `--at-*` / `--at-all`,缺失占位符会自动补齐。 + ## 意图表 | 用户说 | 命令 | |--------|------| -| "发消息给张三" | `dws chat message send --open-dingtalk-id --title "<标题>" --text "<内容>"` | -| "发到XX群" | `dws chat search --query "<群名>"` → `dws chat message send --group --title "<标题>" --text "<内容>"` | -| "建群" / "拉人进群" | `dws chat group create` / `dws chat group members add` | +| "发消息给张三" | `dws chat +messages-send --as user --open-dingtalk-id --text "<内容>"` | +| "发到XX群" | `dws chat +chat-search --query "<群名>"` → `dws chat +messages-send --as user --chat-id --text "<内容>"` | +| "建群" / "拉人进群" | `dws chat +chat-create` / `dws chat group members add` | | "改群名" / "踢人" | `dws chat group rename` / `dws chat group members remove --yes`(踢人不可逆,确认目标后加 --yes;踢群主会被 CLI 拦截,需先 `transfer-owner`)| -| "@我消息" | `dws chat message list-mentions` | -| "查群聊记录" | `dws chat message list` | -| "收藏/取消收藏这条消息" | `dws chat message add-favorite` / `dws chat message remove-favorite`(均需 `openMessageId` 和 `openConversationId`)| -| "查看我收藏的消息" | `dws chat message list-favorites`(默认 `--cursor 0 --size 20`)| -| "用机器人发消息" | `dws chat message send-by-bot --robot-code --group --title "<标题>" --text "<内容>"` | -| "Webhook 推一条" | `dws chat message send-by-webhook --token --title "<标题>" --text "<内容>"` | +| "@我消息" | `dws chat +at-me` | +| "查群聊记录" | `dws chat +chat-messages --group ` | +| "收藏/取消收藏这条消息" | `dws chat +flag-create` / `dws chat +flag-cancel` | +| "查看我收藏的消息" | `dws chat +flag-list` | +| "用机器人发消息" | `dws chat +messages-send --as bot --robot-code --chat-id --text "<内容>"` | +| "Webhook 推一条" | `dws chat +messages-send --as webhook --webhook-token --text "<内容>"` | | "编辑 / 修改已发送消息" | `dws chat message edit --conversation-id --msg-id --text "<新内容>"` | | "撤回我发的消息" | `dws chat message recall`(撤回当前用户发送的消息)| | "撤回机器人消息" | `dws chat message recall-by-bot --robot-code --group --keys `(撤回机器人发的)| diff --git a/skills/multi/dingtalk-chat/references/chat.md b/skills/multi/dingtalk-chat/references/chat.md index f1963872..19768008 100644 --- a/skills/multi/dingtalk-chat/references/chat.md +++ b/skills/multi/dingtalk-chat/references/chat.md @@ -2,6 +2,27 @@ ## 命令总览 +## Shortcut 优先路由 + +常见 Agent 意图优先使用公开 `+` Shortcut;下面的原子命令章节保留给需要特定原始返回结构、兼容参数或 Shortcut 未覆盖字段的场景。执行前用 `dws schema --cli-path "chat +" --format json` 读取最终参数、约束和确认语义。 + +| 意图 | 首选 | +|---|---| +| 以 current-user / bot / webhook 身份发消息 | `dws chat +messages-send --as ...` | +| 拉取单个群聊或单聊的消息 | `dws chat +chat-messages ...` | +| 按关键词、发送者、@对象、会话、类型或时间组合搜索 | `dws chat +search-msg ...` | +| 查询 @我的消息 | `dws chat +at-me ...` | +| 根据消息 ID 批量取详情与 reaction | `dws chat +messages-mget ...` | +| 读取已知 thread/topic 的全部回复 | `dws chat +thread-replies ...` | +| 下载单个 mediaId/fileId | `dws chat +messages-resource-download ...` | + +- `+messages-send` 只暴露下层真实支持的身份能力:user 支持文本/Markdown、已有 mediaId 图片、本地文件和幂等键;bot 支持群聊或批量单聊文本/Markdown;webhook 的目标由 token 所在群决定。 +- `+messages-send` 会自动规范化并补齐 @ 占位符。user 使用 `<@id>` / `<@all>`;bot/webhook 使用 `@id` / `@手机号` / `@all`。声明 `--at-*` / `--at-all` 即可,不要为统一 Shortcut 手工拼 `@10`。 +- `+search-msg --page-all` 连续翻页并默认按消息 ID 批量富化;任何续页或富化失败都会保留已取得结果并返回逐项失败 ledger。 +- `+at-me`、`+chat-messages`、`+messages-mget`、`+search-msg`、`+thread-replies` 可用 `--download-resources` 下载资源。引用、回复、合并转发中的资源使用结果 `resourceRefs` 自带的子消息 `messageId`;仅当子消息缺会话 ID 时继承父消息 `openConversationId`。 +- 上述查询 Shortcut 因可选本地下载能力按命令级 Schema 发布为 `write/user_required`;`+messages-resource-download` 始终写本地。确认相对输出目录和覆盖策略后才加 `--yes`,默认拒绝覆盖已有文件。 +- 下载器仅接受经审查的钉钉与公网 OSS HTTPS 地址并逐跳校验重定向;跨主机时不会转发下层提供的请求头。新官方域名被拒绝时记录错误中的 host 供审查,不要放宽为任意 HTTPS。 + ### group (群组管理) #### 创建群 — 当前登录用户自动成为群主