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:
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 只能如实暴露,不能在本仓库内修复权限。 |
|
||||
@@ -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": {},
|
||||
}
|
||||
@@ -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...)
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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` |
|
||||
|
||||
@@ -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)。
|
||||
|
||||
|
||||
@@ -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)。
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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)。
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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)。
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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)。
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 | 风险 | 适用场景 |
|
||||
|---|---|---|
|
||||
|
||||
@@ -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 自动注入)。
|
||||
|
||||
Reference in new issue
Block a user