docs: present shortcut catalog without hidden release wording

Replace release-hidden terminology with a generated public shortcut catalog, remove include-hidden discovery, and keep real-test followups as an internal CR artifact.
This commit is contained in:
Dennis committed 2026-07-15 17:02:42 +08:00
1 parent 00f1379874
commit 6de77f4c34
34 files changed
+1854 -337

No files matched your search

File diff suppressed because it is too large. Load diff
@@ -1,5 +1,5 @@
{
"generated_at": "2026-07-15T16:44:43.822237",
"generated_at": "2026-07-15T16:58:39.143193",
"count": 156,
"results": [
{
@@ -1,14 +1,14 @@
# 本期隐藏、下期修复的 shortcut 清单
# Shortcut 真实测试跟进清单
生成时间:`2026-07-15T16:44:43`
生成时间:`2026-07-15T16:58:39`
来源:`docs/shortcut-real-read-results.json` 与 `docs/shortcut-real-write-results.json`。
口径:最新真实后端测试结果不是 `real-ok` 的 shortcut,本期不对外 release;代码保留,并通过 `internal/shortcut/release_hidden_generated.go` 标记为 Hidden,后续补 fixture / 修后端 / 修 CLI 后再放开。
口径:记录真实后端测试中需要继续定位的 case,用于 CR 和问题分派;Agent 使用入口以公开 shortcut catalog 和产品 skill 为准。
总计:156 条。
| # | suite | shortcut | risk | status | category | fixability | 下期处理依据 |
| # | suite | shortcut | risk | status | category | fixability | 处理依据 |
|---:|---|---|---|---|---|---|---|
| 1 | read | `aitable +base-get-primary-doc-id` | read | real-error | backend-or-mcp-error | not-cli-fixable-first | 后端/MCP 服务返回内部错误;CLI 无法直接修复,但报告保留 trace/stdout 供服务端排查。 |
| 2 | read | `aitable +chart-share-get` | read | real-error | auth-or-permission | not-cli-fixable | 真实账号、应用 scope 或资源权限不足;CLI 只能如实暴露,不能在本仓库内修复权限。 |
+25
View File
@@ -0,0 +1,25 @@
// Copyright 2026 Alibaba Group
// Licensed under the Apache License, Version 2.0
package shortcut
func publicCatalogKey(service, command string) string {
return service + "\x00" + command
}
func applyPublicCatalog(s Shortcut) Shortcut {
if len(publicShortcutCatalog) == 0 {
return s
}
if _, ok := publicShortcutCatalog[publicCatalogKey(s.Service, s.Command)]; !ok {
s.Hidden = true
}
return s
}
// InPublicCatalog reports whether a shortcut belongs to the generated public
// shortcut surface used by help, listing, and skill generation.
func InPublicCatalog(service, command string) bool {
_, ok := publicShortcutCatalog[publicCatalogKey(service, command)]
return ok
}
@@ -0,0 +1,218 @@
// Code generated by scripts/gen_shortcut_public_catalog.py; DO NOT EDIT.
package shortcut
// publicShortcutCatalog contains the generated shortcut surface used by
// command discovery and skill generation.
var publicShortcutCatalog = map[string]struct{}{
"aitable\u0000+base-get": {},
"aitable\u0000+base-list": {},
"aitable\u0000+base-search": {},
"aitable\u0000+chart-get": {},
"aitable\u0000+chart-widgets-example": {},
"aitable\u0000+dashboard-config-example": {},
"aitable\u0000+dashboard-get": {},
"aitable\u0000+field-get": {},
"aitable\u0000+find-record": {},
"aitable\u0000+form-field-list": {},
"aitable\u0000+form-list": {},
"aitable\u0000+form-share-get": {},
"aitable\u0000+list-tables": {},
"aitable\u0000+record-history-list": {},
"aitable\u0000+record-query": {},
"aitable\u0000+record-query-empty": {},
"aitable\u0000+record-share-links": {},
"aitable\u0000+record-share-url": {},
"aitable\u0000+resolve-base": {},
"aitable\u0000+resolve-table": {},
"aitable\u0000+role-list": {},
"aitable\u0000+section-list-empty": {},
"aitable\u0000+section-list-nodes": {},
"aitable\u0000+table-get": {},
"aitable\u0000+template-search": {},
"aitable\u0000+view-get": {},
"aitable\u0000+view-get-frozen-cols": {},
"aitable\u0000+view-get-lock": {},
"aitable\u0000+view-get-row-height": {},
"attendance\u0000+check-record": {},
"attendance\u0000+check-result": {},
"attendance\u0000+get-adjustment-rule": {},
"attendance\u0000+get-approve-template": {},
"attendance\u0000+get-checkin-record": {},
"attendance\u0000+get-leave-records": {},
"attendance\u0000+get-overtime-rule": {},
"attendance\u0000+get-schedule": {},
"attendance\u0000+get-self-setting": {},
"attendance\u0000+get-summary": {},
"attendance\u0000+list-approve": {},
"attendance\u0000+list-leave-types": {},
"attendance\u0000+my-attendance": {},
"attendance\u0000+query-report-data": {},
"attendance\u0000+search-adjustment-rule": {},
"attendance\u0000+search-class": {},
"attendance\u0000+search-group": {},
"attendance\u0000+search-overtime-rule": {},
"attendance\u0000+this-month": {},
"calendar\u0000+agenda": {},
"calendar\u0000+attendee-list": {},
"calendar\u0000+book": {},
"calendar\u0000+book-list": {},
"calendar\u0000+book-search": {},
"calendar\u0000+cancel-event": {},
"calendar\u0000+conflicts": {},
"calendar\u0000+free": {},
"calendar\u0000+free-slots": {},
"calendar\u0000+freebusy": {},
"calendar\u0000+invite": {},
"calendar\u0000+my-free": {},
"calendar\u0000+next-event": {},
"calendar\u0000+reschedule": {},
"calendar\u0000+room-groups": {},
"calendar\u0000+room-search": {},
"calendar\u0000+suggest-time": {},
"calendar\u0000+today": {},
"calendar\u0000+tomorrow": {},
"calendar\u0000+week": {},
"chat\u0000+at-me": {},
"chat\u0000+bot-find": {},
"chat\u0000+bot-search": {},
"chat\u0000+broadcast": {},
"chat\u0000+category-create": {},
"chat\u0000+category-delete": {},
"chat\u0000+category-list": {},
"chat\u0000+category-rename": {},
"chat\u0000+chat-bots": {},
"chat\u0000+chat-dismiss": {},
"chat\u0000+chat-invite-url": {},
"chat\u0000+chat-list-all": {},
"chat\u0000+chat-list-join-requests": {},
"chat\u0000+chat-list-mine": {},
"chat\u0000+chat-mute": {},
"chat\u0000+chat-role-add": {},
"chat\u0000+chat-role-list": {},
"chat\u0000+chat-role-query-user": {},
"chat\u0000+chat-role-set-user": {},
"chat\u0000+chat-role-update": {},
"chat\u0000+chat-search": {},
"chat\u0000+chat-set-admin": {},
"chat\u0000+chat-set-history": {},
"chat\u0000+chat-update-alias": {},
"chat\u0000+chat-update-nick": {},
"chat\u0000+conversation-clear-all-red-point": {},
"chat\u0000+conversation-info": {},
"chat\u0000+conversation-list": {},
"chat\u0000+conversation-list-top": {},
"chat\u0000+dm": {},
"chat\u0000+group-members": {},
"chat\u0000+messages-list-direct": {},
"chat\u0000+messages-list-pin": {},
"chat\u0000+messages-list-unread-conversations": {},
"chat\u0000+messages-mget": {},
"chat\u0000+messages-query-send-status": {},
"chat\u0000+messages-read-status": {},
"chat\u0000+messages-send-by-webhook": {},
"chat\u0000+messages-update-card": {},
"chat\u0000+my-groups": {},
"chat\u0000+send-to-group": {},
"chat\u0000+unread-chats": {},
"contact\u0000+by-mobile": {},
"contact\u0000+dept-members": {},
"contact\u0000+list-dept-members": {},
"contact\u0000+list-followings": {},
"contact\u0000+list-role-members": {},
"contact\u0000+list-roles": {},
"contact\u0000+list-sub-depts": {},
"contact\u0000+lookup": {},
"contact\u0000+me": {},
"contact\u0000+org": {},
"contact\u0000+resolve-dept": {},
"contact\u0000+search-mobile": {},
"contact\u0000+search-user": {},
"contact\u0000+team": {},
"devapp\u0000+create": {},
"devapp\u0000+delete": {},
"devapp\u0000+disable": {},
"devapp\u0000+enable": {},
"devapp\u0000+event-list": {},
"devapp\u0000+get": {},
"devapp\u0000+list": {},
"devapp\u0000+member-add": {},
"devapp\u0000+member-list": {},
"devapp\u0000+member-remove": {},
"devapp\u0000+permission-list": {},
"devapp\u0000+robot-get": {},
"devapp\u0000+update": {},
"devapp\u0000+version-check-approval": {},
"devapp\u0000+version-get": {},
"devapp\u0000+version-list": {},
"devapp\u0000+version-status": {},
"devapp\u0000+webapp-config": {},
"devapp\u0000+webapp-get": {},
"ding\u0000+list": {},
"ding\u0000+recall-personal": {},
"ding\u0000+receiver-status": {},
"ding\u0000+send-personal": {},
"doc\u0000+comment-create": {},
"doc\u0000+comment-list": {},
"doc\u0000+comment-reply": {},
"doc\u0000+copy": {},
"doc\u0000+doc-append": {},
"doc\u0000+export-get": {},
"doc\u0000+export-submit": {},
"doc\u0000+find-doc": {},
"doc\u0000+list": {},
"doc\u0000+move": {},
"doc\u0000+search": {},
"doc\u0000+share-doc": {},
"doc\u0000+template-list": {},
"doc\u0000+template-search": {},
"doc\u0000+version-list": {},
"doc\u0000+version-revert": {},
"doc\u0000+version-save": {},
"drive\u0000+copy": {},
"drive\u0000+find-file": {},
"drive\u0000+info": {},
"drive\u0000+move": {},
"drive\u0000+recent": {},
"drive\u0000+search": {},
"drive\u0000+search-docs": {},
"mail\u0000+contact-list": {},
"mail\u0000+find-mail-user": {},
"mail\u0000+folder-list": {},
"mail\u0000+recent-mail": {},
"mail\u0000+search-mail": {},
"mail\u0000+tag-list": {},
"mail\u0000+template-list": {},
"mail\u0000+thread-list": {},
"mail\u0000+unread-mail": {},
"mail\u0000+user-search": {},
"minutes\u0000+detail": {},
"minutes\u0000+list-all": {},
"minutes\u0000+list-mine": {},
"minutes\u0000+list-shared": {},
"minutes\u0000+record-start": {},
"minutes\u0000+replace-batch": {},
"oa\u0000+list-cc": {},
"oa\u0000+list-executed": {},
"oa\u0000+list-forms": {},
"oa\u0000+list-pending": {},
"oa\u0000+list-submitted": {},
"oa\u0000+my-initiated": {},
"oa\u0000+search-forms": {},
"report\u0000+inbox-list": {},
"report\u0000+outbox-list": {},
"sheet\u0000+list-sheets": {},
"sheet\u0000+read": {},
"todo\u0000+assign": {},
"todo\u0000+assign-multi": {},
"todo\u0000+created-todos": {},
"todo\u0000+get": {},
"todo\u0000+get-my-tasks": {},
"todo\u0000+list-attachment": {},
"todo\u0000+list-comment": {},
"todo\u0000+list-sub": {},
"todo\u0000+overdue": {},
"todo\u0000+remind": {},
"todo\u0000+todo-done": {},
"wiki\u0000+space-search": {},
}
+1 -1
View File
@@ -29,7 +29,7 @@ var allShortcuts []Shortcut
// service package's init().
func Register(shortcuts ...Shortcut) {
for i := range shortcuts {
shortcuts[i] = applyReleaseGate(shortcuts[i])
shortcuts[i] = applyPublicCatalog(shortcuts[i])
}
allShortcuts = append(allShortcuts, shortcuts...)
}
-23
View File
@@ -1,23 +0,0 @@
// Copyright 2026 Alibaba Group
// Licensed under the Apache License, Version 2.0
package shortcut
func releaseHiddenKey(service, command string) string {
return service + "\x00" + command
}
func applyReleaseGate(s Shortcut) Shortcut {
if _, ok := ReleaseHiddenReason(s.Service, s.Command); ok {
s.Hidden = true
}
return s
}
// ReleaseHiddenReason reports why a shortcut is hidden from public discovery in
// this release. Hidden shortcuts remain invocable by exact command path so the
// implementation can be kept and repaired in the next iteration.
func ReleaseHiddenReason(service, command string) (string, bool) {
reason, ok := releaseHiddenShortcuts[releaseHiddenKey(service, command)]
return reason, ok
}
@@ -1,166 +0,0 @@
// Code generated by scripts/gen_shortcut_release_hidden.py; DO NOT EDIT.
package shortcut
// releaseHiddenShortcuts contains shortcuts intentionally hidden from
// public discovery in this release because their latest real-backend
// test did not pass. The command implementations remain registered and
// invocable by exact path for internal follow-up testing.
var releaseHiddenShortcuts = map[string]string{
"aitable\u0000+base-get-primary-doc-id": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+chart-share-get": "read real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"aitable\u0000+dashboard-share-get": "read real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+export-data": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+record-primary-doc-get": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+role-get": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+workflow-get": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+workflow-list": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"attendance\u0000+get-class": "read real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"attendance\u0000+get-global-setting": "read real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"attendance\u0000+get-group": "read real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"attendance\u0000+get-group-filtered": "read real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"attendance\u0000+get-leave-balance": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+list-report-columns": "read real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"attendance\u0000+query-report-leave": "read real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"calendar\u0000+find-room": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"calendar\u0000+room-find": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+category-list-conversations": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+chat-get-by-id": "read real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+chat-members-get": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+chat-messages": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+messages-list": "read real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+messages-resource-url": "read real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+search-msg": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+thread-replies": "read real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"contact\u0000+get-roster": "read real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"contact\u0000+list-roster-fields": "read real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+credentials-get": "read real test not passed; status=held; category=held; fixability=manual-approval",
"drive\u0000+download": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"drive\u0000+list": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"minutes\u0000+action-items": "read real test not passed; status=real-error; category=missing-real-minutes-fixture; fixability=not-cli-fixable-without-fixture",
"minutes\u0000+latest-minutes": "read real test not passed; status=real-error; category=missing-real-minutes-fixture; fixability=not-cli-fixable-without-fixture",
"minutes\u0000+minutes-search": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"minutes\u0000+transcript": "read real test not passed; status=real-error; category=missing-real-minutes-fixture; fixability=not-cli-fixable-without-fixture",
"oa\u0000+done-approvals": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"oa\u0000+pending": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"report\u0000+report-latest": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"todo\u0000+due-today": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"todo\u0000+related-tasks": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"wiki\u0000+node-list": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"wiki\u0000+resolve-space": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"wiki\u0000+space-list": "read real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"aitable\u0000+advperm-disable": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"aitable\u0000+advperm-enable": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"aitable\u0000+attachment-upload": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+base-copy": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+base-delete": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+base-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+chart-delete": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+chart-share-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+chart-update": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+dashboard-arrange": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+dashboard-delete": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+dashboard-share-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+dashboard-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+field-delete": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+field-update": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+form-delete": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+form-field-hide": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+form-field-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+form-share-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+form-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+import-data": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+import-upload": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+record-delete": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+record-primary-doc-create": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+record-update": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+record-upsert": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+role-create": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+role-delete": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+role-update": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+section-create": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+section-delete": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+section-move-node": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+section-rename": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+section-reorder": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+table-delete": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+table-update": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+view-delete": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+view-duplicate": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+view-lock": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+view-set-fill-color-rule": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"aitable\u0000+view-set-frozen-cols": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+view-set-row-height": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+view-update": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+workflow-disable": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"aitable\u0000+workflow-enable": "write real test not passed; status=real-error; category=missing-real-aitable-fixture; fixability=not-cli-fixable-without-fixture",
"attendance\u0000+boss-check": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+create-class": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+create-group": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+import-schedule": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+save-leave-balance": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"attendance\u0000+update-class": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+update-group": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+update-group-members": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"attendance\u0000+update-leave-type": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"calendar\u0000+respond-event": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+category-add-conversation": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"chat\u0000+category-remove-conversation": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"chat\u0000+chat-add-bot": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"chat\u0000+chat-audit-join": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+chat-mute-member": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+chat-quit": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+chat-remove-bot": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+chat-role-remove": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+chat-role-remove-user": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+chat-transfer-owner": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+chat-update-icon": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+chat-update-settings": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+conversation-clear-messages": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+conversation-clear-red-point": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+conversation-hide": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+conversation-mark-read": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+conversation-mark-unread": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+conversation-mute": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+conversation-mute-at-all": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+conversation-mute-red-envelope": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+conversation-set-top": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+messages-add-emoji": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-add-text-emotion": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-batch-recall-by-bot": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-batch-send-by-bot": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-combine-forward": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-create-text-emotion": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+messages-forward": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-forward-topic": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-recall": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-recall-by-bot": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"chat\u0000+messages-remove-emoji": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-remove-text-emotion": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-send-by-bot": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-send-card": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+messages-set-pin": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+messages-set-top": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"chat\u0000+messages-unset-pin": "write real test not passed; status=real-error; category=backend-or-mcp-error; fixability=not-cli-fixable-first",
"chat\u0000+messages-unset-top": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"devapp\u0000+event-subscribe": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+event-unsubscribe": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+permission-add": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+permission-remove": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+robot-config": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+robot-disable": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+robot-enable": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+security-config": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"devapp\u0000+version-create": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"devapp\u0000+version-publish": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"ding\u0000+send-by-message": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"doc\u0000+comment-create-inline": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"doc\u0000+template-apply": "write real test not passed; status=real-error; category=auth-or-permission; fixability=not-cli-fixable",
"minutes\u0000+record-pause": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"minutes\u0000+record-resume": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"minutes\u0000+record-stop": "write real test not passed; status=real-error; category=input-or-business-validation; fixability=test-input-or-backend-rule",
"oa\u0000+approve-by": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"wiki\u0000+node-copy": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"wiki\u0000+node-move": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
"wiki\u0000+wiki-new-doc": "write real test not passed; status=real-error; category=missing-real-resource; fixability=not-cli-fixable-without-fixture",
}
+7 -16
View File
@@ -48,24 +48,20 @@ func newListCommand() *cobra.Command {
Short: "列出内建 shortcut",
RunE: func(cmd *cobra.Command, _ []string) error {
svc, _ := cmd.Flags().GetString("service")
includeHidden, _ := cmd.Flags().GetBool("include-hidden")
type row struct {
Service string `json:"service"`
Command string `json:"command"`
Product string `json:"product"`
Risk string `json:"risk"`
Description string `json:"description"`
Intent string `json:"intent,omitempty"`
Hidden bool `json:"hidden,omitempty"`
HiddenReason string `json:"hiddenReason,omitempty"`
Service string `json:"service"`
Command string `json:"command"`
Product string `json:"product"`
Risk string `json:"risk"`
Description string `json:"description"`
Intent string `json:"intent,omitempty"`
}
var rows []row
for _, s := range shortcut.All() {
if svc != "" && s.Service != svc {
continue
}
hiddenReason, hiddenByRelease := shortcut.ReleaseHiddenReason(s.Service, s.Command)
if s.Hidden && !includeHidden {
if s.Hidden {
continue
}
product := s.Product
@@ -83,10 +79,6 @@ func newListCommand() *cobra.Command {
Risk: risk,
Description: s.Description,
Intent: s.Intent,
Hidden: s.Hidden,
}
if hiddenByRelease {
item.HiddenReason = hiddenReason
}
rows = append(rows, item)
}
@@ -97,7 +89,6 @@ func newListCommand() *cobra.Command {
},
}
cmd.Flags().String("service", "", "只列出指定服务的 shortcut")
cmd.Flags().Bool("include-hidden", false, "包含本期隐藏、仅内部复测用的 shortcut")
return cmd
}
@@ -1,11 +1,5 @@
#!/usr/bin/env python3
"""Generate the release-hidden shortcut list from real test results.
Shortcuts whose latest real-backend result is not `real-ok` are kept in source
code but hidden from public discovery for this release. The generated Go file
is a release gate; the Markdown/JSON files are the handoff list for the next
iteration.
"""
"""Generate the public shortcut catalog from real test results."""
from __future__ import annotations
@@ -19,9 +13,10 @@ from typing import Any
ROOT = Path(__file__).resolve().parents[1]
READ_PATH = ROOT / "docs" / "shortcut-real-read-results.json"
WRITE_PATH = ROOT / "docs" / "shortcut-real-write-results.json"
GO_PATH = ROOT / "internal" / "shortcut" / "release_hidden_generated.go"
MD_PATH = ROOT / "docs" / "shortcut-next-release-hidden.md"
JSON_PATH = ROOT / "docs" / "shortcut-next-release-hidden.json"
GO_PATH = ROOT / "internal" / "shortcut" / "public_catalog_generated.go"
CATALOG_PATH = ROOT / "docs" / "shortcut-public-catalog.json"
FOLLOWUP_MD_PATH = ROOT / "docs" / "shortcut-real-test-followups.md"
FOLLOWUP_JSON_PATH = ROOT / "docs" / "shortcut-real-test-followups.json"
def load(path: Path) -> dict[str, Any]:
@@ -64,26 +59,32 @@ def evidence(row: dict[str, Any]) -> str:
return squish(error_text(row), 220)
def collect() -> list[dict[str, Any]]:
out: list[dict[str, Any]] = []
def collect() -> tuple[list[dict[str, Any]], list[dict[str, Any]]]:
public: list[dict[str, Any]] = []
followups: list[dict[str, Any]] = []
for suite, path in (("read", READ_PATH), ("write", WRITE_PATH)):
data = load(path)
for row in data.get("results", []):
if row.get("status") == "real-ok":
continue
out.append({
item = {
"suite": suite,
"service": row.get("service") or "",
"command": row.get("command") or "",
"risk": row.get("risk") or "",
"status": row.get("status") or "",
}
if row.get("status") == "real-ok":
public.append(item)
continue
followups.append({
**item,
"failure_category": row.get("failure_category") or "unclassified",
"fixability": row.get("fixability") or "",
"diagnosis": row.get("diagnosis") or "",
"evidence": evidence(row),
})
out.sort(key=lambda r: (r["suite"], r["service"], r["command"]))
return out
public.sort(key=lambda r: (r["service"], r["command"]))
followups.sort(key=lambda r: (r["suite"], r["service"], r["command"]))
return public, followups
def go_quote(s: str) -> str:
@@ -92,24 +93,17 @@ def go_quote(s: str) -> str:
def write_go(rows: list[dict[str, Any]]) -> None:
lines = [
"// Code generated by scripts/gen_shortcut_release_hidden.py; DO NOT EDIT.",
"// Code generated by scripts/gen_shortcut_public_catalog.py; DO NOT EDIT.",
"",
"package shortcut",
"",
"// releaseHiddenShortcuts contains shortcuts intentionally hidden from",
"// public discovery in this release because their latest real-backend",
"// test did not pass. The command implementations remain registered and",
"// invocable by exact path for internal follow-up testing.",
"var releaseHiddenShortcuts = map[string]string{",
"// publicShortcutCatalog contains the generated shortcut surface used by",
"// command discovery and skill generation.",
"var publicShortcutCatalog = map[string]struct{}{",
]
for row in rows:
key = f"{row['service']}\x00{row['command']}"
reason = (
f"{row['suite']} real test not passed; "
f"status={row['status']}; category={row['failure_category']}; "
f"fixability={row['fixability'] or '-'}"
)
lines.append(f"\t{go_quote(key)}: {go_quote(reason)},")
lines.append(f"\t{go_quote(key)}: {{}},")
lines.extend(["}", ""])
GO_PATH.write_text("\n".join(lines), encoding="utf-8")
@@ -118,20 +112,20 @@ def md_escape(s: str) -> str:
return str(s).replace("|", "\\|").replace("\n", "<br>")
def write_md(rows: list[dict[str, Any]]) -> None:
def write_followup_md(rows: list[dict[str, Any]]) -> None:
generated = dt.datetime.now().isoformat(timespec="seconds")
lines = [
"# 本期隐藏、下期修复的 shortcut 清单",
"# Shortcut 真实测试跟进清单",
"",
f"生成时间:`{generated}`",
"",
"来源:`docs/shortcut-real-read-results.json` 与 `docs/shortcut-real-write-results.json`。",
"",
"口径:最新真实后端测试结果不是 `real-ok` 的 shortcut,本期不对外 release;代码保留,并通过 `internal/shortcut/release_hidden_generated.go` 标记为 Hidden,后续补 fixture / 修后端 / 修 CLI 后再放开。",
"口径:记录真实后端测试中需要继续定位的 case,用于 CR 和问题分派;Agent 使用入口以公开 shortcut catalog 和产品 skill 为准。",
"",
f"总计:{len(rows)} 条。",
"",
"| # | suite | shortcut | risk | status | category | fixability | 下期处理依据 |",
"| # | suite | shortcut | risk | status | category | fixability | 处理依据 |",
"|---:|---|---|---|---|---|---|---|",
]
for idx, row in enumerate(rows, 1):
@@ -144,27 +138,33 @@ def write_md(rows: list[dict[str, Any]]) -> None:
f"{md_escape(squish(basis, 160))} |"
)
lines.append("")
MD_PATH.write_text("\n".join(lines), encoding="utf-8")
FOLLOWUP_MD_PATH.write_text("\n".join(lines), encoding="utf-8")
def write_json(rows: list[dict[str, Any]]) -> None:
payload = {
"generated_at": dt.datetime.now().isoformat(),
"count": len(rows),
"results": rows,
}
JSON_PATH.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8")
def write_json(public: list[dict[str, Any]], followups: list[dict[str, Any]]) -> None:
generated = dt.datetime.now().isoformat()
CATALOG_PATH.write_text(json.dumps({
"generated_at": generated,
"count": len(public),
"results": public,
}, ensure_ascii=False, indent=2), encoding="utf-8")
FOLLOWUP_JSON_PATH.write_text(json.dumps({
"generated_at": generated,
"count": len(followups),
"results": followups,
}, ensure_ascii=False, indent=2), encoding="utf-8")
def main() -> int:
rows = collect()
write_go(rows)
write_md(rows)
write_json(rows)
print(f"hidden={len(rows)}")
public, followups = collect()
write_go(public)
write_followup_md(followups)
write_json(public, followups)
print(f"public={len(public)} followups={len(followups)}")
print(f"written: {GO_PATH}")
print(f"written: {MD_PATH}")
print(f"written: {JSON_PATH}")
print(f"written: {CATALOG_PATH}")
print(f"written: {FOLLOWUP_MD_PATH}")
print(f"written: {FOLLOWUP_JSON_PATH}")
return 0
+14 -16
View File
@@ -1,11 +1,9 @@
#!/usr/bin/env python3
"""Generate visible shortcut sections for DWS skills.
"""Generate shortcut sections for DWS skills.
The skill should teach agents which high-level shortcut entries are available
for the current release, while `dws <service> --help` remains the source of
truth for flags. Hidden shortcuts are intentionally omitted from product skill
tables and remain documented in docs/shortcut-next-release-hidden.md for CR /
next-release repair.
in the public catalog, while `dws <service> --help` remains the source of truth
for flags.
"""
from __future__ import annotations
@@ -22,7 +20,7 @@ sys.path.insert(0, str(ROOT / "scripts"))
import gen_shortcut_comparison as shortcut_source # noqa: E402
HIDDEN_PATH = ROOT / "docs" / "shortcut-next-release-hidden.json"
CATALOG_PATH = ROOT / "docs" / "shortcut-public-catalog.json"
MONO_SKILL = ROOT / "skills" / "mono" / "SKILL.md"
SERVICE_TO_SKILL = {
@@ -55,10 +53,10 @@ def md_escape(value: Any) -> str:
return text.replace("\\", "\\\\").replace("|", "\\|").replace("\n", " ")
def load_hidden() -> set[tuple[str, str]]:
if not HIDDEN_PATH.exists():
def load_public_catalog() -> set[tuple[str, str]]:
if not CATALOG_PATH.exists():
return set()
data = json.loads(HIDDEN_PATH.read_text(encoding="utf-8"))
data = json.loads(CATALOG_PATH.read_text(encoding="utf-8"))
return {
(str(row["service"]), str(row["command"]))
for row in data.get("results", [])
@@ -66,11 +64,11 @@ def load_hidden() -> set[tuple[str, str]]:
def collect_visible() -> list[dict[str, Any]]:
hidden = load_hidden()
public_catalog = load_public_catalog()
items = [
item
for item in shortcut_source.collect()
if (item["service"], item["command"]) not in hidden
if (item["service"], item["command"]) in public_catalog
]
return sorted(items, key=lambda item: (item["service"], item["command"]))
@@ -94,11 +92,11 @@ def mono_overview(items: list[dict[str, Any]]) -> str:
rows.append(f"| `{md_escape(service)}` | {count} | `{md_escape(skill)}` | `dws {md_escape(service)} --help` / `dws shortcut list --service {md_escape(service)} --format json` |")
body = "\n".join(rows)
return f"""{MONO_START}
## 本期可见 Shortcut 总览
## Shortcut 总览
下面只统计本期真实测试通过、默认 `--help` / `dws shortcut list` 可见的 shortcut。mono 模式不展开 200+ 行明细,避免 skill 过重;需要执行时先按产品路由,再用 `dws <service> --help` 查看 flags。multi 模式的各产品 skill 会展开该产品的可见 shortcut 表。
下面统计当前公开 catalog 中的 shortcut。mono 模式不展开 200+ 行明细,避免 skill 过重;需要执行时先按产品路由,再用 `dws <service> --help` 查看 flags。multi 模式的各产品 skill 会展开该产品的 shortcut 表。
| 服务 | 可见 shortcut 数 | multi skill | 发现命令 |
| 服务 | shortcut 数 | multi skill | 发现命令 |
|---|---:|---|---|
{body}
{MONO_END}"""
@@ -112,9 +110,9 @@ def product_section(service: str, rows: list[dict[str, Any]]) -> str:
f"{md_escape(item['risk'])} | {md_escape(item['desc'])} |"
)
return f"""{PRODUCT_START}
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws {service} --help` / `dws shortcut list --service {service}` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws {service} <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws {service} --help` / `dws shortcut list --service {service}` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws {service} <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+6 -7
View File
@@ -9,7 +9,7 @@ cli_version: ">=1.0.15"
通过 `dws` 命令管理钉钉产品能力。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
## 严格禁止 (NEVER DO)
- 不要使用 dws 命令以外的方式操作(禁止 curl、HTTP API、浏览器)
@@ -30,17 +30,16 @@ cli_version: ">=1.0.15"
- 用户意图可由可见 shortcut 满足时,优先使用 `dws <service> +<verb> ... --format json`。
- 调用前用 `dws <service> --help` 或 `dws shortcut list --service <service> --format json` 确认可见命令;不要凭文档或记忆猜测 shortcut。
- 如果 shortcut 没出现在默认 help / list 中,视为本期未对外 release:不要主动推荐或调用隐藏 shortcut,改用已验证的原子命令、脚本、参考流程,或说明该能力本期未开放。
- 只有在内部 CR、真实测试复盘、下期修复时,才使用 `dws shortcut list --include-hidden --format json` 查看隐藏项及 `hiddenReason`。
- shortcut 失败时按“错误处理”流程先加 `--verbose` 复查;若仍失败,不要自行换成隐藏 shortcut 兜底,应记录具体输入、输出、trace / endpoint / tool 信息。
- 如果 shortcut 不在 help / list 中,改用产品参考里的原子命令、脚本或标准流程;不要猜测未展示的 `+` 命令。
- shortcut 失败时按“错误处理”流程先加 `--verbose` 复查;若仍失败,应记录具体输入、输出、trace / endpoint / tool 信息。
<!-- VISIBLE_SHORTCUTS_OVERVIEW_START -->
## 本期可见 Shortcut 总览
## Shortcut 总览
下面只统计本期真实测试通过、默认 `--help` / `dws shortcut list` 可见的 shortcut。mono 模式不展开 200+ 行明细,避免 skill 过重;需要执行时先按产品路由,再用 `dws <service> --help` 查看 flags。multi 模式的各产品 skill 会展开该产品的可见 shortcut 表。
下面统计当前公开 catalog 中的 shortcut。mono 模式不展开 200+ 行明细,避免 skill 过重;需要执行时先按产品路由,再用 `dws <service> --help` 查看 flags。multi 模式的各产品 skill 会展开该产品的 shortcut 表。
| 服务 | 可见 shortcut 数 | multi skill | 发现命令 |
| 服务 | shortcut 数 | multi skill | 发现命令 |
|---|---:|---|---|
| `aitable` | 29 | `dingtalk-aitable` | `dws aitable --help` / `dws shortcut list --service aitable --format json` |
| `attendance` | 19 | `dingtalk-attendance` | `dws attendance --help` / `dws shortcut list --service attendance --format json` |
+1 -1
View File
@@ -18,7 +18,7 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[agoal.md](references/agoal.md)。
+1 -1
View File
@@ -18,7 +18,7 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[aisearch.md](references/aisearch.md)。
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[aitable.md](references/aitable.md);复杂命令按需加载 `references/aitable/*.md`;剧本:[06-data-analytics.md](references/06-data-analytics.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws aitable --help` / `dws shortcut list --service aitable` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws aitable <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws aitable --help` / `dws shortcut list --service aitable` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws aitable <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[attendance.md](references/attendance.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws attendance --help` / `dws shortcut list --service attendance` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws attendance <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws attendance --help` / `dws shortcut list --service attendance` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws attendance <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[calendar.md](references/calendar.md);剧本:[03-meeting.md](references/03-meeting.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws calendar --help` / `dws shortcut list --service calendar` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws calendar <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws calendar --help` / `dws shortcut list --service calendar` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws calendar <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[chat.md](references/chat.md);表情:[chat-emoji-list.md](references/chat-emoji-list.md);剧本:[01-messaging.md](references/01-messaging.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws chat --help` / `dws shortcut list --service chat` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws chat <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws chat --help` / `dws shortcut list --service chat` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws chat <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[contact.md](references/contact.md);剧本:[08-directory.md](references/08-directory.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws contact --help` / `dws shortcut list --service contact` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws contact <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws contact --help` / `dws shortcut list --service contact` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws contact <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+2 -2
View File
@@ -27,9 +27,9 @@ metadata:
10. `robot result` 若缺 `unifiedAppId` 或返回 `completionState=BLOCKED_BY_MISSING_UNIFIED_APP_ID`,必须停下要求明确的 `unifiedAppId`;禁止用 `clientId/appKey` 自动反查后继续执行版本写操作
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws devapp --help` / `dws shortcut list --service devapp` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws devapp <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws devapp --help` / `dws shortcut list --service devapp` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws devapp <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+1 -1
View File
@@ -18,7 +18,7 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[devdoc.md](references/devdoc.md)。
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[ding.md](references/ding.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws ding --help` / `dws shortcut list --service ding` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws ding <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws ding --help` / `dws shortcut list --service ding` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws ding <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,7 +18,7 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[doc.md](references/doc.md);剧本:[04-document.md](references/04-document.md);URL 识别与类型探测:[url-patterns.md](references/url-patterns.md)。
@@ -37,9 +37,9 @@ metadata:
- 每次 `create` / `update` / `block insert` / `media insert` 后必须 `dws doc read` 或 `dws doc block list` 回读关键内容。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws doc --help` / `dws shortcut list --service doc` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws doc <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws doc --help` / `dws shortcut list --service doc` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws doc <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[drive.md](references/drive.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws drive --help` / `dws shortcut list --service drive` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws drive <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws drive --help` / `dws shortcut list --service drive` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws drive <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+1 -1
View File
@@ -18,7 +18,7 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[live.md](references/live.md)。
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[mail.md](references/mail.md)。复杂搜索、附件、批量处理、草稿等多步邮件场景参考:[09-mail.md](references/09-mail.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws mail --help` / `dws shortcut list --service mail` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws mail <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws mail --help` / `dws shortcut list --service mail` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws mail <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[minutes.md](references/minutes.md);剧本:[07-minutes.md](references/07-minutes.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws minutes --help` / `dws shortcut list --service minutes` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws minutes <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws minutes --help` / `dws shortcut list --service minutes` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws minutes <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[oa.md](references/oa.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws oa --help` / `dws shortcut list --service oa` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws oa <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws oa --help` / `dws shortcut list --service oa` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws oa <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[report.md](references/report.md);剧本:[05-reporting.md](references/05-reporting.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws report --help` / `dws shortcut list --service report` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws report <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws report --help` / `dws shortcut list --service report` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws report <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,7 +18,7 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[sheet.md](references/sheet.md);URL 识别与类型探测:[url-patterns.md](references/url-patterns.md)。
@@ -28,9 +28,9 @@ metadata:
输入含 `alidocs.dingtalk.com` URL 时,该域名下存在多种路径格式:`/i/p/...`(分享短链)、`/i/nodes/...`(节点链接,类型需探测)、`/spreadsheetv2/...`(电子表格直链,直接路由到 `sheet`)、`/document/edit|preview?dentryKey=...`(文档链接,路由到 `dingtalk-doc`)等。**必须先读 [url-patterns.md](references/url-patterns.md) 中的「alidocs URL 分流决策」**,按规则识别 URL 类型;仅当确认是在线电子表格(`/spreadsheetv2/...` 或 `i/nodes/` 且 probe 出 `contentType=ALIDOC` + `extension=axls`)时,才继续走本 skill 的命令。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws sheet --help` / `dws shortcut list --service sheet` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws sheet <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws sheet --help` / `dws shortcut list --service sheet` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws sheet <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+1 -1
View File
@@ -18,7 +18,7 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[skill.md](references/skill.md)。
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[todo.md](references/todo.md);剧本:[02-task.md](references/02-task.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws todo --help` / `dws shortcut list --service todo` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws todo <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws todo --help` / `dws shortcut list --service todo` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws todo <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+3 -3
View File
@@ -18,15 +18,15 @@ metadata:
<!-- SAFETY_PREAMBLE_INJECT -->
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。本期真实测试未通过的 shortcut 会从 `--help` 和 `dws shortcut list` 默认视图隐藏;Agent 不应主动推荐隐藏命令,内部排查 / 下期修复才使用 `dws shortcut list --include-hidden`。
> ⚠️ **命令可用性以当前 dws 二进制为准**。服务发现已下线,本文档随内置 skill 发布;如果 `dws <cmd> --help` 不存在,说明当前版本未暴露该命令。若命令存在但调用失败,请按错误中的 endpoint 或 tool 提示确认静态端点目录和后端工具注册。实际调用前可用 `dws <cmd> --help` 或 `--dry-run` 验证。
> 命令参考:[wiki.md](references/wiki.md)。
<!-- VISIBLE_SHORTCUTS_START -->
## Shortcuts(本期可见,优先使用)
## Shortcuts(优先使用)
以下 shortcut 已通过本期真实测试并在默认 `dws wiki --help` / `dws shortcut list --service wiki` 中可见。用户意图命中时优先使用 shortcut;具体 flags 以 `dws wiki <shortcut> --help` 为准。未列出的同产品 shortcut 属于本期隐藏项,不在业务执行时主动推荐。
以下 shortcut 来自当前公开 catalog,并可通过 `dws wiki --help` / `dws shortcut list --service wiki` 发现。用户意图命中时优先使用 shortcut;具体 flags 以 `dws wiki <shortcut> --help` 为准。
| Shortcut | 风险 | 适用场景 |
|---|---|---|
+2 -3
View File
@@ -25,12 +25,11 @@ metadata:
- 全局 `--profile <名称|corpId>`:单次指定本命令用哪个组织,一次性、不改默认组织
- 危险 / 写 / 删操作执行前先向用户确认
## Shortcut 可用性与隐藏规则
## Shortcut 可用性
- `shortcut` 是对常用操作的高层封装,子 skill 负责意图、风险、跨产品流程和复杂参数;当前 `dws` 二进制的 `--help` / `dws shortcut list` 才是可用命令事实源。
- 用户意图可由默认可见 shortcut 满足时,优先使用 `dws <service> +<verb> ... --format json`。
- 调用前用 `dws <service> --help` 或 `dws shortcut list --service <service> --format json` 确认可见命令;不要凭 skill 文档或记忆猜测 shortcut。
- 本期真实测试未通过的 shortcut 会从默认 help / list 隐藏。缺失的 shortcut 视为未对外 release,改用已验证原子命令、脚本或参考流程;不要主动推荐隐藏命令。
- 只有内部 CR、真实测试复盘、下期修复时,才用 `dws shortcut list --include-hidden --format json` 查看隐藏项和 `hiddenReason`。
- 如果 shortcut 不在 help / list 中,改用产品参考里的原子命令、脚本或标准流程;不要猜测未展示的 `+` 命令。
## 多组织 / --profile(关键规则)
dws 可同时登录多个钉钉组织,一个 profile = 一个已登录组织(corp)。当前 profile 决定本次命令用哪个组织的身份(corpId / userId 自动注入)。