@tencentcloudadp/cli 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -2
- package/bin/adp.js +4 -0
- package/config-schema.json +319 -0
- package/dist/cli.js +28513 -0
- package/dist/cli.js.map +1 -0
- package/package.json +70 -4
- package/skills/adp/SKILL.md +116 -0
- package/skills/adp/configuration/SKILL.md +51 -0
- package/skills/adp/create/SKILL.md +189 -0
- package/skills/adp/evals/evals.json +60 -0
- package/skills/adp/gotchas/SKILL.md +92 -0
- package/skills/adp/references/app-keys.md +41 -0
- package/skills/adp/references/app-modes.md +36 -0
- package/skills/adp/references/auth.md +45 -0
- package/skills/adp/references/canvas/branch.json +159 -0
- package/skills/adp/references/canvas/deep-research.json +267 -0
- package/skills/adp/references/canvas/dynamic-option.json +410 -0
- package/skills/adp/references/canvas/extract.json +109 -0
- package/skills/adp/references/canvas/intent.json +340 -0
- package/skills/adp/references/canvas/llm.json +161 -0
- package/skills/adp/references/canvas/main.json +155 -0
- package/skills/adp/references/canvas/option.json +97 -0
- package/skills/adp/references/canvas/single.json +155 -0
- package/skills/adp/references/canvas/sub.json +125 -0
- package/skills/adp/references/credentials.md +40 -0
- package/skills/adp/references/inventory.md +39 -0
- package/skills/adp/references/memory.md +54 -0
- package/skills/adp/references/operations.md +56 -0
- package/skills/adp/references/pitfalls.md +125 -0
- package/skills/adp/references/platform-skills.md +31 -0
- package/skills/adp/references/timers.md +42 -0
- package/skills/adp/references/tuning.md +79 -0
- package/skills/adp/references/volumes.md +18 -0
- package/skills/adp/references/workflows.md +241 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ProtoVersion": "V2_6",
|
|
3
|
+
"WorkflowID": "",
|
|
4
|
+
"WorkflowName": "zz-demo-option",
|
|
5
|
+
"WorkflowDesc": "Ask the user to pick a plan with an option card, then branch on the choice",
|
|
6
|
+
"Nodes": [
|
|
7
|
+
{
|
|
8
|
+
"NodeID": "start",
|
|
9
|
+
"NodeName": "Start",
|
|
10
|
+
"NodeDesc": "",
|
|
11
|
+
"NodeType": "START",
|
|
12
|
+
"StartNodeData": {},
|
|
13
|
+
"Inputs": [],
|
|
14
|
+
"Outputs": [],
|
|
15
|
+
"NextNodeIDs": [
|
|
16
|
+
"opt"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"NodeID": "opt",
|
|
21
|
+
"NodeName": "选择套餐",
|
|
22
|
+
"NodeDesc": "",
|
|
23
|
+
"NodeType": "OPTION_CARD",
|
|
24
|
+
"OptionCardNodeData": {
|
|
25
|
+
"Question": "请选择套餐:",
|
|
26
|
+
"Options": [
|
|
27
|
+
{
|
|
28
|
+
"Content": "基础版",
|
|
29
|
+
"NextNodeIDs": [
|
|
30
|
+
"ans_basic"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"Content": "专业版",
|
|
35
|
+
"NextNodeIDs": [
|
|
36
|
+
"ans_pro"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"CardFrom": "INPUT"
|
|
41
|
+
},
|
|
42
|
+
"Inputs": [],
|
|
43
|
+
"Outputs": [],
|
|
44
|
+
"NextNodeIDs": []
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"NodeID": "ans_basic",
|
|
48
|
+
"NodeName": "ans_basic",
|
|
49
|
+
"NodeDesc": "",
|
|
50
|
+
"NodeType": "ANSWER",
|
|
51
|
+
"AnswerNodeData": {
|
|
52
|
+
"Answer": "PLAN=BASIC"
|
|
53
|
+
},
|
|
54
|
+
"Inputs": [],
|
|
55
|
+
"Outputs": [],
|
|
56
|
+
"NextNodeIDs": [
|
|
57
|
+
"end"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"NodeID": "ans_pro",
|
|
62
|
+
"NodeName": "ans_pro",
|
|
63
|
+
"NodeDesc": "",
|
|
64
|
+
"NodeType": "ANSWER",
|
|
65
|
+
"AnswerNodeData": {
|
|
66
|
+
"Answer": "PLAN=PRO"
|
|
67
|
+
},
|
|
68
|
+
"Inputs": [],
|
|
69
|
+
"Outputs": [],
|
|
70
|
+
"NextNodeIDs": [
|
|
71
|
+
"end"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"NodeID": "end",
|
|
76
|
+
"NodeName": "End",
|
|
77
|
+
"NodeDesc": "",
|
|
78
|
+
"NodeType": "END",
|
|
79
|
+
"Inputs": [],
|
|
80
|
+
"Outputs": [
|
|
81
|
+
{
|
|
82
|
+
"Title": "Output",
|
|
83
|
+
"Type": "OBJECT",
|
|
84
|
+
"Required": [],
|
|
85
|
+
"Properties": [],
|
|
86
|
+
"Desc": "Output content",
|
|
87
|
+
"Value": {
|
|
88
|
+
"InputType": "USER_INPUT"
|
|
89
|
+
},
|
|
90
|
+
"AnalysisMethod": "COVER"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"NextNodeIDs": []
|
|
94
|
+
}
|
|
95
|
+
],
|
|
96
|
+
"Mode": "NORMAL"
|
|
97
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ProtoVersion": "V2_6",
|
|
3
|
+
"WorkflowID": "",
|
|
4
|
+
"WorkflowName": "zz-demo-single",
|
|
5
|
+
"WorkflowDesc": "Echo the user query as WF-OK:{query}",
|
|
6
|
+
"Nodes": [
|
|
7
|
+
{
|
|
8
|
+
"NodeID": "start",
|
|
9
|
+
"NodeName": "Start",
|
|
10
|
+
"NodeDesc": "",
|
|
11
|
+
"NodeType": "START",
|
|
12
|
+
"StartNodeData": {},
|
|
13
|
+
"Inputs": [],
|
|
14
|
+
"Outputs": [],
|
|
15
|
+
"NextNodeIDs": [
|
|
16
|
+
"code1"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"NodeID": "code1",
|
|
21
|
+
"NodeName": "拼接",
|
|
22
|
+
"NodeDesc": "",
|
|
23
|
+
"NodeType": "CODE_EXECUTOR",
|
|
24
|
+
"CodeExecutorNodeData": {
|
|
25
|
+
"Code": "def main(params: dict) -> dict:\n return {\"result\": \"WF-OK:\" + str(params.get(\"q\", \"\"))}\n",
|
|
26
|
+
"Language": "PYTHON3"
|
|
27
|
+
},
|
|
28
|
+
"Inputs": [
|
|
29
|
+
{
|
|
30
|
+
"Name": "q",
|
|
31
|
+
"Type": "STRING",
|
|
32
|
+
"Input": {
|
|
33
|
+
"InputType": "SYSTEM_VARIABLE",
|
|
34
|
+
"SystemVariable": {
|
|
35
|
+
"Name": "SYS.UserQuery"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"Desc": "",
|
|
39
|
+
"IsRequired": false,
|
|
40
|
+
"SubInputs": [],
|
|
41
|
+
"DefaultValue": "",
|
|
42
|
+
"DefaultFileName": ""
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"Outputs": [
|
|
46
|
+
{
|
|
47
|
+
"Title": "Output",
|
|
48
|
+
"Type": "OBJECT",
|
|
49
|
+
"Required": [],
|
|
50
|
+
"Properties": [
|
|
51
|
+
{
|
|
52
|
+
"Title": "result",
|
|
53
|
+
"Type": "STRING"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"Desc": "",
|
|
57
|
+
"AnalysisMethod": "COVER"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"NextNodeIDs": [
|
|
61
|
+
"answer1"
|
|
62
|
+
],
|
|
63
|
+
"ExceptionHandling": {
|
|
64
|
+
"Switch": "OFF",
|
|
65
|
+
"MaxRetries": "3",
|
|
66
|
+
"RetryInterval": "1",
|
|
67
|
+
"AbnormalOutputResult": "",
|
|
68
|
+
"HandleMethod": "EXCEPTION_OUTPUT",
|
|
69
|
+
"NextNodeIDs": [],
|
|
70
|
+
"AbnormalRetrySwitch": "ABNORMAL_RETRY_ON",
|
|
71
|
+
"Timeout": "60"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"NodeID": "answer1",
|
|
76
|
+
"NodeName": "回答",
|
|
77
|
+
"NodeDesc": "",
|
|
78
|
+
"NodeType": "ANSWER",
|
|
79
|
+
"AnswerNodeData": {
|
|
80
|
+
"Answer": "{{content}}"
|
|
81
|
+
},
|
|
82
|
+
"Inputs": [
|
|
83
|
+
{
|
|
84
|
+
"Name": "content",
|
|
85
|
+
"Type": "STRING",
|
|
86
|
+
"Input": {
|
|
87
|
+
"InputType": "REFERENCE_OUTPUT",
|
|
88
|
+
"Reference": {
|
|
89
|
+
"NodeID": "code1",
|
|
90
|
+
"JsonPath": "Output.result"
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"Desc": "",
|
|
94
|
+
"IsRequired": false,
|
|
95
|
+
"SubInputs": [],
|
|
96
|
+
"DefaultValue": "",
|
|
97
|
+
"DefaultFileName": ""
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"Outputs": [
|
|
101
|
+
{
|
|
102
|
+
"Title": "Output",
|
|
103
|
+
"Type": "OBJECT",
|
|
104
|
+
"Required": [],
|
|
105
|
+
"Properties": [
|
|
106
|
+
{
|
|
107
|
+
"Title": "Answer",
|
|
108
|
+
"Type": "STRING",
|
|
109
|
+
"Required": [],
|
|
110
|
+
"Properties": [],
|
|
111
|
+
"Desc": "Reply to User Message",
|
|
112
|
+
"Value": {
|
|
113
|
+
"InputType": "USER_INPUT",
|
|
114
|
+
"UserInputValue": {
|
|
115
|
+
"Values": [
|
|
116
|
+
""
|
|
117
|
+
],
|
|
118
|
+
"FileNames": []
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"AnalysisMethod": "COVER"
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"Desc": "Output content",
|
|
125
|
+
"AnalysisMethod": "COVER"
|
|
126
|
+
}
|
|
127
|
+
],
|
|
128
|
+
"NextNodeIDs": [
|
|
129
|
+
"end"
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"NodeID": "end",
|
|
134
|
+
"NodeName": "End",
|
|
135
|
+
"NodeDesc": "",
|
|
136
|
+
"NodeType": "END",
|
|
137
|
+
"Inputs": [],
|
|
138
|
+
"Outputs": [
|
|
139
|
+
{
|
|
140
|
+
"Title": "Output",
|
|
141
|
+
"Type": "OBJECT",
|
|
142
|
+
"Required": [],
|
|
143
|
+
"Properties": [],
|
|
144
|
+
"Desc": "Output content",
|
|
145
|
+
"Value": {
|
|
146
|
+
"InputType": "USER_INPUT"
|
|
147
|
+
},
|
|
148
|
+
"AnalysisMethod": "COVER"
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
"NextNodeIDs": []
|
|
152
|
+
}
|
|
153
|
+
],
|
|
154
|
+
"Mode": "NORMAL"
|
|
155
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ProtoVersion": "V2_6",
|
|
3
|
+
"WorkflowID": "",
|
|
4
|
+
"WorkflowName": "research-step",
|
|
5
|
+
"WorkflowDesc": "Sub-workflow: takes topic, returns SUB:{topic}",
|
|
6
|
+
"Nodes": [
|
|
7
|
+
{
|
|
8
|
+
"NodeID": "start",
|
|
9
|
+
"NodeName": "Start",
|
|
10
|
+
"NodeDesc": "",
|
|
11
|
+
"NodeType": "START",
|
|
12
|
+
"StartNodeData": {},
|
|
13
|
+
"Inputs": [
|
|
14
|
+
{
|
|
15
|
+
"Name": "topic",
|
|
16
|
+
"Type": "STRING",
|
|
17
|
+
"Desc": "topic",
|
|
18
|
+
"IsRequired": true,
|
|
19
|
+
"SubInputs": [],
|
|
20
|
+
"DefaultValue": "",
|
|
21
|
+
"DefaultFileName": ""
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"Outputs": [],
|
|
25
|
+
"NextNodeIDs": [
|
|
26
|
+
"code1"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"NodeID": "code1",
|
|
31
|
+
"NodeName": "子处理",
|
|
32
|
+
"NodeDesc": "",
|
|
33
|
+
"NodeType": "CODE_EXECUTOR",
|
|
34
|
+
"CodeExecutorNodeData": {
|
|
35
|
+
"Code": "def main(params: dict) -> dict:\n return {\"result\": \"SUB:\" + str(params.get(\"topic\", \"\"))}\n",
|
|
36
|
+
"Language": "PYTHON3"
|
|
37
|
+
},
|
|
38
|
+
"Inputs": [
|
|
39
|
+
{
|
|
40
|
+
"Name": "topic",
|
|
41
|
+
"Type": "STRING",
|
|
42
|
+
"Input": {
|
|
43
|
+
"InputType": "REFERENCE_OUTPUT",
|
|
44
|
+
"Reference": {
|
|
45
|
+
"NodeID": "start",
|
|
46
|
+
"JsonPath": "topic"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"Desc": "",
|
|
50
|
+
"IsRequired": false,
|
|
51
|
+
"SubInputs": [],
|
|
52
|
+
"DefaultValue": "",
|
|
53
|
+
"DefaultFileName": ""
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"Outputs": [
|
|
57
|
+
{
|
|
58
|
+
"Title": "Output",
|
|
59
|
+
"Type": "OBJECT",
|
|
60
|
+
"Required": [],
|
|
61
|
+
"Properties": [
|
|
62
|
+
{
|
|
63
|
+
"Title": "result",
|
|
64
|
+
"Type": "STRING"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"Desc": "",
|
|
68
|
+
"AnalysisMethod": "COVER"
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
"NextNodeIDs": [
|
|
72
|
+
"end"
|
|
73
|
+
],
|
|
74
|
+
"ExceptionHandling": {
|
|
75
|
+
"Switch": "OFF",
|
|
76
|
+
"MaxRetries": "3",
|
|
77
|
+
"RetryInterval": "1",
|
|
78
|
+
"AbnormalOutputResult": "",
|
|
79
|
+
"HandleMethod": "EXCEPTION_OUTPUT",
|
|
80
|
+
"NextNodeIDs": [],
|
|
81
|
+
"AbnormalRetrySwitch": "ABNORMAL_RETRY_ON",
|
|
82
|
+
"Timeout": "60"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"NodeID": "end",
|
|
87
|
+
"NodeName": "End",
|
|
88
|
+
"NodeDesc": "",
|
|
89
|
+
"NodeType": "END",
|
|
90
|
+
"Inputs": [],
|
|
91
|
+
"Outputs": [
|
|
92
|
+
{
|
|
93
|
+
"Title": "Output",
|
|
94
|
+
"Type": "OBJECT",
|
|
95
|
+
"Required": [],
|
|
96
|
+
"Properties": [
|
|
97
|
+
{
|
|
98
|
+
"Title": "result",
|
|
99
|
+
"Name": "result",
|
|
100
|
+
"Type": "STRING",
|
|
101
|
+
"Required": [],
|
|
102
|
+
"Properties": [],
|
|
103
|
+
"Desc": "",
|
|
104
|
+
"AnalysisMethod": "COVER",
|
|
105
|
+
"Value": {
|
|
106
|
+
"InputType": "REFERENCE_OUTPUT",
|
|
107
|
+
"Reference": {
|
|
108
|
+
"NodeID": "code1",
|
|
109
|
+
"JsonPath": "Output.result"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
],
|
|
114
|
+
"Desc": "Output content",
|
|
115
|
+
"Value": {
|
|
116
|
+
"InputType": "USER_INPUT"
|
|
117
|
+
},
|
|
118
|
+
"AnalysisMethod": "COVER"
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"NextNodeIDs": []
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"Mode": "NORMAL"
|
|
125
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 凭证
|
|
2
|
+
|
|
3
|
+
凭证按空间可见(`--space-id` 或项目里的 `adp.jsonc`),供连接器/工具(插件)调用第三方服务时使用。
|
|
4
|
+
|
|
5
|
+
## 安全规则
|
|
6
|
+
|
|
7
|
+
- 秘密值只写不读:`list`/`get` 不返回 token;不要尝试从 CLI 输出里取回密钥。
|
|
8
|
+
- API Key 只通过 `--token-env <变量名>` 或交互式隐藏输入传入。不要把密钥写进命令参数、文件、日志或回复里;没有现成环境变量时,让用户自己在终端里设置。
|
|
9
|
+
- 只有创建者能 `get` 详情;别人的凭证报 `CredentialNotFound` 不代表不存在,不要据此删除或重建。
|
|
10
|
+
|
|
11
|
+
## 常用
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
adp credential list --space-id <id> --fields credentialId,name,typeLabel,consumer --format json
|
|
15
|
+
adp credential consumers --space-id <id> --format json # 已配凭证的连接器/工具
|
|
16
|
+
adp credential referable --space-id <id> --consumer-id <plugin_id> --format json
|
|
17
|
+
adp credential create --space-id <id> --consumer-id <plugin_id> --name <name> --token-env MY_KEY --format json
|
|
18
|
+
adp credential update --space-id <id> --credential-id <id> --token-env NEW_KEY --format json
|
|
19
|
+
adp credential references --space-id <id> --credential-id <id> --format json
|
|
20
|
+
adp credential access --space-id <id> --credential-id <id> --referrer-type app_agent --referrer-id <agent_id> --format json # 该引用方能否用此凭证
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- `typeLabel`:`api_key`、`cam`、`oauth`、`aksk`。CLI 只能新建 API Key 凭证;腾讯云 CAM 凭证请用户在控制台创建。
|
|
24
|
+
- OAuth:`adp credential authorize --consumer-id <plugin_id>`(新建)或 `--credential-id <id>`(重新授权)返回 `authorizationUrl`,必须由用户本人在浏览器打开并同意;之后用 `adp credential authorization --authorization-id <auth_…>` 查结果(1 授权中、2 成功、4 失败)。平台对过期和不存在的授权号都回 3,CLI 统一报 `CredentialAuthorizationNotFound`(退出码 3),这时让用户重新 `adp credential authorize`。不要替用户打开或提交授权页。
|
|
25
|
+
- `credential access` 返回 `accessible` 和 `inaccessibleReason`,用于排查「智能体/工作流调用插件报凭证不可用」。引用方没引用该凭证时报 `CredentialNotReferenced`。
|
|
26
|
+
- `delete` 前 CLI 会查引用,被引用时报 `CredentialInUse` 且不删除。先用 `references` 告诉用户哪些应用/工作台在用,由用户决定替换方案;删除需要用户明确同意才加 `--yes`。
|
|
27
|
+
- `adp plugin oauth-url --plugin-id <id> --credential-id <id>` 为已有 OAuth 凭证生成授权链接,同样交给用户本人打开;`adp plugin auth check --plugin-id <id> --credential-id <id>` 查是否已授权(部分账号报 450002 无权限)。非 OAuth 2.0 插件报 `PluginNotOAuth`。
|
|
28
|
+
|
|
29
|
+
## 插件工具与跨空间共享
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
adp plugin tool get --plugin-id <id> --tool-id <id> --format json # 工具入参/出参,tool-id 见 adp plugin get
|
|
33
|
+
adp plugin share get --plugin-id <id> [--pending] --format json # scope: none | all | spaces;--pending 没有待审批配置时返回 hasPending:false
|
|
34
|
+
adp plugin share set --plugin-id <id> --scope spaces --space <sp> --yes --format json
|
|
35
|
+
adp plugin share set --plugin-id <id> --credential <cid>=all --yes # 只改某个凭证的共享范围
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- 共享是对外可见的变更,先问用户;可能进入审批(`status: "pending_approval"`),不要替用户催审或绕过。
|
|
39
|
+
- `PluginShareBlocked`:还有应用/智能体在用被收回的范围。把引用方列给用户,由用户决定先解绑;`--force --confirm-name <插件名>` 只给空间管理员用,且必须用户明确要求。
|
|
40
|
+
- `PluginShareRevisionConflict`:别人刚改过,直接重跑即可。
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# 应用盘点
|
|
2
|
+
|
|
3
|
+
默认范围来自 `adp.jsonc` 的 `space_id`,也可显式 `--space-id`。
|
|
4
|
+
只有用户要求跨空间盘点时才用 `--all-spaces`;无配置不等于授权扫描所有空间。
|
|
5
|
+
|
|
6
|
+
没有 `adp.jsonc` 时,先列一个空间,再列该空间的应用,然后对单个应用列会话。失败信封里的 `adp init` 会写项目文件,不要执行。
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
adp schema --command "app list" --format json
|
|
10
|
+
adp space list --format json
|
|
11
|
+
adp app list --space-id <id> --fields appId,name,status,updateTime,spaceId --limit 50 --format json
|
|
12
|
+
adp conversation list --app-id <appId> --format json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
读取 `truncated/total`;截断时提高 `--limit`,保留原来的空间、profile、env 和 fields。
|
|
16
|
+
未知 total 时逐步提高 limit 并设置调用次数上限;仍截断就明确报告不完整,不无限重试。
|
|
17
|
+
CLI 内部跟随 API 的 PageNumber/PageSize,不手签 Cloud API 分页。
|
|
18
|
+
`--page` 对每个列表命令都是 0 起始(首页是 `--page 0`),CLI 会换算成各 API 自己的起始页;
|
|
19
|
+
带 `--page` 时结果含 `page/pageSize`,截断时用 `--page <n+1>` 续取。
|
|
20
|
+
空列表表示当前范围无可见结果,不是权限完整性证明。
|
|
21
|
+
|
|
22
|
+
应用 `status`:1 未发布、2 运行中、3 已停用。`status` 与 `updateTime` 只能作为活跃代理指标。
|
|
23
|
+
`conversation list` 返回的会话属于当前凭据可见范围。结果字段 `scope` 的值是 `owner`,没有 `--scope` 参数。这不是应用所有 C 端请求量。
|
|
24
|
+
先 list,再用返回的 `conversationId` 和该行的 `type` 读消息:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
adp conversation messages --conversation-id <id> --type <type-from-list> --format json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`messages` 同样是当前 CAM 可见范围。结果没有 `total`,也不走 `PageNumber`。`truncated=true` 且 `hasMoreBefore=true` 时,用返回的 `firstRecordId` 向更早翻页,并保留原来的 `--type`:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
adp conversation messages --conversation-id <id> --type <type-from-list> --record-id <firstRecordId> --direction backward --format json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`truncated=true` 且 `hasMoreAfter=true`、方向是 forward 或 both 时,用 `lastRecordId` 和 `--direction forward`,同样保留 `--type`。
|
|
37
|
+
|
|
38
|
+
字段到正文、引用、角标、任务状态、MCP `toolResult`、token 摘要,以及消息上的 `type`(含 `tool_call`)、`trace.toolName` 和 `trace.traceId`。工具调用的入参在 `title`,结果在对应 content 的 `text`。`reasoningTokens` 只是计数,没有单独的思考正文。消息接口不接受 `--type 0`,把 list 行上的 `type` 传进去;省略时默认 1。
|
|
39
|
+
`adp usage` 返回该应用近 7 天的模型用量 KPI(`total_calls`、`total_tokens` 等),需要 `--app-id` 或 `adp.jsonc`。返回 450002 时是权限失败;不要把失败、空值或 owner 会话数当真实调用量。
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# 记忆库
|
|
2
|
+
|
|
3
|
+
记忆库按空间可见:传 `--space-id`,或在有 `adp.jsonc` 的项目里运行。
|
|
4
|
+
它和 `adp.jsonc` 的 `memory`(应用自带的长期记忆开关)是两回事;用户说“记忆库”“记忆条目”“绑定记忆库”时用 `adp memory`。
|
|
5
|
+
|
|
6
|
+
ID 前缀决定类型,CLI 自动推断,不用传类型:
|
|
7
|
+
|
|
8
|
+
- `rms_…` 结构化记忆库(rich):条目有名称、类型、front matter、版本,每个终端用户可有一份 L2 摘要。
|
|
9
|
+
- `fms_…` 扁平记忆库(flat):只有类型和正文,可设保留天数(`ttl_days`,0 为永久)。类型创建后不能改。
|
|
10
|
+
|
|
11
|
+
## 查看
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
adp memory list --space-id <id> --fields storeId,name,typeName,referencedApps --format json
|
|
15
|
+
adp memory users --space-id <id> --store-id <store> --format json
|
|
16
|
+
adp memory entry list --space-id <id> --store-id <store> --user-id <user> --format json
|
|
17
|
+
adp memory summary get --space-id <id> --store-id <rms_id> --user-id <user> --format json
|
|
18
|
+
adp memory binding get --space-id <id> --app-id <app> --format json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`referencedApps` 不总是准确,判断某个应用用哪个库要看 `memory binding get`。
|
|
22
|
+
|
|
23
|
+
## 写入
|
|
24
|
+
|
|
25
|
+
先 `--dry-run` 预览,再执行。
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
adp memory create --space-id <id> --name 客服长期记忆 --format json # 默认 rich、开摘要
|
|
29
|
+
adp memory create --space-id <id> --name 会话缓存 --type flat --ttl-days 30 --format json
|
|
30
|
+
adp memory entry add --space-id <id> --store-id <store> --user-id <user> --text "<≤4000 字>" --format json
|
|
31
|
+
adp memory entry update --space-id <id> --store-id <store> --user-id <user> --entry-key <key> --content "<新内容>" --format json
|
|
32
|
+
adp memory bind --space-id <id> --app-id <app> --store-id <store> --format json
|
|
33
|
+
adp memory binding update --space-id <id> --app-id <app> --disable --format json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- rich 库 `entry add` 会用模型从文本生成条目名称(就是 entry key)和 front matter;写完用 `entry list` 取真实 key,不要自己猜。
|
|
37
|
+
- `entry update`/`entry delete` 会自动读取当前版本;flat 条目只能改 `--content`/`--type`。
|
|
38
|
+
- 一个应用每种类型最多一个绑定。`bind` 已有绑定时会切换到新库;不传 `--store-id` 时平台自动建默认库。没有解绑接口,停用用 `binding update --disable`。
|
|
39
|
+
- `memory summary set --user-id <user> --text "<完整摘要>"` 是整份覆盖,不是追加;`--text` 必填,先 `memory summary get` 取现有内容再改。
|
|
40
|
+
|
|
41
|
+
## 删除
|
|
42
|
+
|
|
43
|
+
`memory delete`、`entry delete`、`summary delete` 都需要用户明确同意后才加 `--yes`。
|
|
44
|
+
删除库会连同所有条目一起删除,不可恢复;应用仍启用绑定时报 `MemoryStoreInUse`,要先切换或停用绑定,不要擅自去改用户应用的绑定。
|
|
45
|
+
|
|
46
|
+
## 导入导出
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
adp memory export --space-id <id> --store-id <store> --output ./memory.csv --format json
|
|
50
|
+
adp memory import --space-id <id> --store-id <store> --file ./memory.csv --format json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
CSV 列与导出一致:rich 为 `UserId,Name,Type,Frontmatter,Content`,`Type` 写标签(如 `user`),不是数字;flat 为 `VisitorId,Type,Content`。
|
|
54
|
+
导入失败报 `MemoryImportFailed`,平台不给逐行原因,先对照一份导出的 CSV 检查列名和类型。导入的 rich 条目名称可能被模型改写。
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 运营数据、用量、审计与模型目录
|
|
2
|
+
|
|
3
|
+
都是只读命令,唯一的例外是 `corp assistant set`。时间窗口用 `--from` / `--to`,可以写 `YYYY-MM-DD`(按北京时间)、ISO 时间或 Unix 秒;不传就是最近 7 天。
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
adp metrics overview --space-id <id> --format json # 工作台活跃人数、会话数、运行时长,以及环比
|
|
7
|
+
adp metrics trend --space-id <id> --from 2026-10-01 # 每天的运行时长
|
|
8
|
+
adp metrics top-users --space-id <id> --limit 10 # 按任务数排行的用户;超过 --limit 时 truncated=true
|
|
9
|
+
adp metrics detail --space-id <id> [--pu] # 每个用户的统计;加 --pu 看每次运行的 PU 和 token
|
|
10
|
+
adp metrics app --app-id <id> --space-id <id> # 单个应用的调用量、成功率、耗时、回复类型分布
|
|
11
|
+
adp metrics export --space-id <id> --yes # 只提交导出;文件发到控制台通知,没有可轮询的任务
|
|
12
|
+
|
|
13
|
+
adp billing resources --space-id <id> # 套餐和增值包的总量与已用量
|
|
14
|
+
adp billing summary|detail|consumption|concurrency --space-id <id> [--app-id <id>]
|
|
15
|
+
|
|
16
|
+
adp audit meta # --action / --biz 可取的值
|
|
17
|
+
adp audit list --space-id <id> --action delete --limit 20 # 最新的在前;游标分页:truncated=true 时按 next_actions 带 --cursor 续翻,传 --page 报 UsageError
|
|
18
|
+
adp account list --space-id <id>
|
|
19
|
+
|
|
20
|
+
adp corp assistant get --space-id <id> # 工作台设置:长期记忆、自定义指令、默认模型
|
|
21
|
+
adp portal get # 企业门户的状态和子域名
|
|
22
|
+
|
|
23
|
+
adp models --space-id <id> [--scene 18] --fields modelId,name # 空间可用模型列表;--scene 18 只列 Claw 模式可用的
|
|
24
|
+
adp models get --model-id TCADP/glm-5.1 # 完整模型卡片
|
|
25
|
+
adp models developers --space-id <id> [--limit 10 --page 0] # 列表 envelope:items / truncated / total;--page 从 0 开始
|
|
26
|
+
adp models mappings --model TCADP/glm-5.1 # 已下线的模型名现在会路由到哪个模型
|
|
27
|
+
|
|
28
|
+
adp workspace credential --workspace-id <id> [--reveal] # 会话沙箱的存储凭证,默认打码
|
|
29
|
+
adp workspace download-url --workspace-id <id> --path /workdir/x.md [--reveal]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- `billing summary|detail|consumption|concurrency` 和 `account list` 需要企业管理员授予报表权限,否则返回 `PermissionDenied`。这时告诉用户去找管理员,不要换账号重试。
|
|
33
|
+
- PU 消耗有两个来源:工作台按次运行的 PU 用 `metrics detail --pu`;整个空间或单个应用的资源消耗(含 PU)用 `billing consumption`(需要报表权限)。`metrics overview`、`trend`、`top-users` 只统计工作台的任务和会话,不含 PU。
|
|
34
|
+
- `--action` / `--biz` 必须是 `adp audit meta` 里的 key(如 `modify`、`app`),写中文名或拼错会直接报参数错误。
|
|
35
|
+
- `usage` 和 `billing … --app-id` 遇到 450002 时,CLI 会先查应用:应用不存在报 `AppNotFound`,存在才是 `PermissionDenied`。
|
|
36
|
+
- 不存在的资源统一报 not_found(退出码 3)并带专门的 code:应用 450011「应用不存在」→ `AppNotFound`,插件 460010「插件不存在」→ `PluginNotFound`,技能 450002「技能不存在」→ `SkillNotFound`;next_actions 指向对应的 list 命令。460010 也用于「会话不存在或没有操作权限」,报 `ConversationNotFound` / not_found。其他映射:450403「ErrAppNotFound」、460004「机器人不存在」→ `AppNotFound`;450151「标签标准词不存在」→ `KbLabelNotFound`;450013「QA不存在」→ `KbQaNotFound`;471044「ErrConflictQuestionNotFound」→ `KbQaConflictNotFound`;440014「生成任务不存在」→ `GuidelineTaskNotFound`;450160「QA无法编辑」→ `KbQaNotEditable`(conflict,可重试,问答还在审核/学习中)。CLI 改写过的错误(如 `TimerTaskNotFound`、`CredentialNotFound`)在 message 末尾括号里保留平台原始码。
|
|
37
|
+
- 删除不存在的 ID 时,平台的删除接口常常照样返回成功,所以 CLI 先只读地查一遍:`kb doc/file/qa/label delete`、`channel delete`、`synonym delete`、`agent delete` 有任何一个 ID 不存在(`--dry-run` 也先查)就报对应的 `KbDocNotFound` / `KbQaNotFound` / `KbLabelNotFound` / `ChannelNotFound` / `SynonymNotFound` / `AgentNotFound`(退出码 3),一条都不删。`plugin delete` 对不存在的插件平台报 460001 FailedOperation,带 `--space-id`(或 adp.jsonc 有空间)时 CLI 用 DescribePlugin 确认后报 `PluginNotFound`。`guideline delete` 同样先逐个查:任何一个 ID 不存在就报 `GuidelineNotFound`(退出码 3),一条都不删;ID 都存在但平台仍拒绝时才是 `GuidelineBatchFailed`。
|
|
38
|
+
- 数字 ID 在本地统一校验,所有命令(含 `--dry-run`)都一样:`--app-id`、`--kb-id`、`--channel-id`、`--release-id`,以及 `adp kb` 下的 `--qa-id`、`--doc-id`、`--label-id`。传名称或 `doc-1` 这类值报 `InvalidIdFormat`(退出码 2),不发请求,next_actions 指向能查到数字 ID 的列表命令。逗号分隔或重复传的每一项都要是数字。
|
|
39
|
+
- 只接受一个 ID 的参数(`--agent-id`、`--plugin-id`、`--app-id` 等)传了逗号或重复传,本地报 `UsageError`(退出码 2),不会拼成一个错误的 ID;要处理多个就逐个执行。`kb doc delete` / `kb file delete` 的 `--doc-id` 可以重复传或逗号分隔,删除是全有或全无。
|
|
40
|
+
- 删除后再读:`kb doc get` / `kb file get` 对已删除的文档平台仍返回成功但内容为空,CLI 报 `KbDocNotFound`(退出码 3);`kb doc retry` 遇到已删除文档(450202)同样报 `KbDocNotFound`,next_action 是 `adp kb doc list --kb-id <id>`。`agent get` 对已删除的智能体平台报 `550005 数据不存在`,CLI 报 `AgentNotFound`(退出码 3)。
|
|
41
|
+
- not_found 错误的 message 会去掉平台附带的「请重试」(例如「插件不存在,请重试」),重试找不回已删除的资源。
|
|
42
|
+
- 失败时的 next_actions:「without --yes」类用法错误给出加上 `--yes` 的原命令(会真的写入);`PermissionDenied`(450002)给出 `adp whoami --format json`,请空间管理员授权;可重试错误(如 450003)第一条一定是原命令(带上从 adp.jsonc 解析出的 `--app-id`),后面可能再附一条查 ID 的命令;只有参数/用法错误才回退到 `adp schema`。缺少 `--space-id` / `--app-id` 又没有 adp.jsonc 时,给出能查到这个 ID 的命令(`--all-spaces`、`adp space list`、`adp app list --all-spaces`)。
|
|
43
|
+
- 写命令 `--dry-run` 成功且没有别的建议时,next_action 是去掉 `--dry-run` 的同一条命令(需要确认的加 `--yes`)。
|
|
44
|
+
- `kb search` 结果带 `truncated`,没有 `total`(命中数等于 `--limit` / `--recall-count` 时 truncated=true;接口不能分页,不接受 `--page`,续查是加大 `--limit`);`skill refs` 带 `total` / `truncated`;`metrics top-users` 是 `items` + `total` / `truncated` / `page` / `pageSize`,续查保留 `--limit`、`--page` 加一(排名一次取回,本地切页)。`agent list` 每行都有 `name`。`agent changed --since 0` 表示从头算。`--variable-id` 只接受一个 ID。
|
|
45
|
+
- 缺 `--space-id` / `--app-id` 的用法错误,next_action 是 `adp space list` / `adp app list --all-spaces`,不是 schema。`conversation messages` 对 `adp chat` 的会话(type 5)报 `ConversationNotFound`,next_action 指向 `adp tail`。
|
|
46
|
+
- `app key list`、`agent changed`、`models developers` 返回标准列表 envelope,支持 `--limit` / `--page`;列表续取的 next_action 保留原命令的全部参数(含 `--fields`、`--env`、`--profile`、`--config`)。
|
|
47
|
+
- `channel get` 的报错按哪个 id 不对而不同(实测):应用 id 不存在时平台返回 450003「无坐席权限」,CLI 报 `PermissionDenied`,和真正缺席位同一个码,先用 `app get` 确认应用存在再找管理员;应用存在而渠道 id 不存在时是 4506001「渠道不存在」→ `ChannelNotFound`(next_actions 指向 `channel list`);`--channel-id 0` 是 450057「参数错误」;非数字 id 报 `InvalidIdFormat`。
|
|
48
|
+
- `next_actions[].command` 都可以原样执行:不含 `<占位符>` 和说明文字,会带上你传过或从 adp.jsonc 解析出的 `--space-id` / `--app-id` / `--agent-id` / `--kb-id`。需要你补的值写在 `reason` 里。
|
|
49
|
+
- `channel list|create` 偶尔返回 450003(无席位权限)后重试又成功:CLI 报 `PermissionDenied`,`retryable: true`,提示可能是瞬时的。重试一次;持续出现才找空间管理员分配席位。
|
|
50
|
+
- 只读命令加 `--dry-run` 无论成功还是失败都会带 `DryRunIgnored` warning(例如没有报表权限的 `billing summary`)。
|
|
51
|
+
- `docs list` 一次拿到整个目录,结果带 `total`,`truncated` 按 `items.length < total` 计算。
|
|
52
|
+
- `trigger get|list` 的 `status` 是数字;`agent limits` 的字段是 camelCase(如 `agentToolLimit`)。
|
|
53
|
+
- 列表的续页 next_actions(`--limit` / `--page`)会带上你传过的范围参数(`--space-id`、`--app-id`、`--kb-id`、`--query` 等),直接照抄执行即可。
|
|
54
|
+
- `corp assistant set` 会改动该空间所有成员的工作台。执行前先 `get` 一次,把要改的字段告诉用户,得到同意后再加 `--yes`。
|
|
55
|
+
- `workspaceId` 来自 `adp conversation get` 的返回结果,只有带沙箱的会话才有。`workspace credential` 对不存在的工作区、或 `--type` / `--app-id` 与会话不符时报 `WorkspaceNotFound`。凭证和下载链接默认打码;只有用户需要把它们交给别的工具时才加 `--reveal`,而且不要在对话里转述明文。
|
|
56
|
+
- 席位分配、资源包明细、已消耗模型这几项,目前平台后端还没开放,CLI 也没有对应命令。开通门户在控制台完成。
|