@doubao-dev/cli 0.0.26 → 0.0.28
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/dist/2168.js +14 -14
- package/dist/{2861.js → 2611.js} +2 -2
- package/dist/4931.js +1 -1
- package/dist/@byted-doubao-apps/template-empty/package.json +3 -3
- package/dist/@byted-doubao-apps/template-starter/package.json +3 -3
- package/dist/app.js +1 -1
- package/dist/assets/web-sdk-debugger/index.html +1 -1
- package/dist/assets/web-sdk-debugger/static/js/index.1448a806d8.js +26 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-api.template.js +0 -0
- package/dist/assets/web-sdk-debugger/wsd/doubao-apps-framework.template.js +0 -0
- package/dist/check.js +1 -0
- package/dist/dbx.js +2 -2
- package/dist/demo-server.js +3 -3
- package/dist/demo.js +2 -0
- package/dist/dev-shell.js +1 -1
- package/dist/dev.js +5 -5
- package/dist/init.js +4 -4
- package/dist/ink.js +1 -1
- package/dist/login.js +1 -1
- package/dist/prompt.js +1 -1
- package/dist/run.js +2 -2
- package/dist/sdk.js +15 -15
- package/dist/sdk~1.js +5 -5
- package/dist/skill.js +1 -1
- package/dist/skills.js +1 -1
- package/dist/skills~2.js +2 -2
- package/dist/templates/README.md +1 -1
- package/dist/upload.js +6 -6
- package/dist/workspace.js +1 -1
- package/dist/yaml.js +1 -1
- package/package.json +2 -2
- package/skills/dbx-eval/SKILL.md +2 -2
- package/skills/doubao-agentic-service-development/SKILL.md +8 -8
- package/skills/doubao-agentic-service-development/references/auth.md +2 -2
- package/skills/doubao-agentic-service-development/references/business-template-debug.md +3 -3
- package/skills/doubao-agentic-service-development/references/dev-debug.md +2 -2
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/01-/345/237/272/347/241/200.md +175 -15
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/02-/347/263/273/347/273/237.md +3 -3
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/03-/350/207/252/345/256/232/344/271/211/351/200/232/344/277/241.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/04-/345/256/232/344/275/215.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/08-/344/272/244/344/272/222.md +221 -7
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/10-/347/275/221/347/273/234.md +20 -20
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/11-/345/252/222/344/275/223.md +2 -2
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/12-/344/270/232/345/212/241/350/203/275/345/212/233.md +3 -4
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/16-/350/223/235/347/211/231.md +3 -3
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/25-/346/227/240/351/232/234/347/242/215.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/26-/345/237/272/347/241/200/344/277/241/346/201/257.md +3 -3
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/28-/345/211/252/350/264/264/346/235/277.md +2 -2
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/32-/346/211/253/347/240/201.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/33-/345/261/217/345/271/225.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/34-/351/234/207/345/212/250.md +2 -2
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/common-errors.md +1 -1
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/groups.md +3 -3
- package/skills/doubao-agentic-service-development/references/frontend/doubao-agentic-service-api/quick-reference.md +7 -3
- package/skills/doubao-agentic-service-development/references/frontend-dev.md +3 -3
- package/skills/doubao-agentic-service-development/references/generate-skill.md +1 -1
- package/skills/doubao-agentic-service-development/references/local-debug/simulator-eval.md +26 -22
- package/skills/doubao-agentic-service-development/references/manifest-guide.md +3 -3
- package/skills/doubao-agentic-service-development/references/mcp-protocol.md +1 -1
- package/skills/doubao-agentic-service-development/references/overview.md +4 -3
- package/skills/doubao-agentic-service-development/references/service-notice.md +1 -3
- package/skills/doubao-agentic-service-development/references/task-management.md +1 -3
- package/dist/assets/web-sdk-debugger/static/js/index.b85cbec3be.js +0 -26
- package/dist/dbx-demo.js +0 -2
- package/dist/eval.js +0 -1
- package/dist/validate.js +0 -1
- /package/dist/{2861.js.LICENSE.txt → 2611.js.LICENSE.txt} +0 -0
- /package/dist/{6780.js → 4594.js} +0 -0
|
@@ -82,7 +82,7 @@ request(params: RequestParams): Promise<RequestResponse>
|
|
|
82
82
|
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
83
83
|
</thead>
|
|
84
84
|
<tbody>
|
|
85
|
-
<tr><td><code>data</code></td><td><code>string | Record<string, any>
|
|
85
|
+
<tr><td><code>data</code></td><td><code>string | ArrayBuffer | Record<string, any></code></td><td>否</td><td><code>-</code></td><td>-</td><td>请求体数据。<br><br>传给服务器的数据最终会是 `String` 或 `ArrayBuffer`:<br>- 若 `data` 是 `string` 或 `ArrayBuffer`,直接使用;<br>- 若 `header['content-type']` 是 `application/x-www-form-urlencoded`,会被编码为 query string,例如:`encodeURIComponent(k)=encodeURIComponent(v)`;<br>- 若 `header['content-type']` 是 `application/json`,会执行 JSON 序列化;<br>- 若 `data` 是普通对象且未命中上述类型,也会执行 JSON 序列化;<br>- 其他类型会调用 `toString()`</td></tr>
|
|
86
86
|
<tr><td><code>dataType</code></td><td><code>"string" | "json" | "arraybuffer"</code></td><td>否</td><td><code>"json"</code></td><td>-</td><td>期望返回的数据格式。<br>- `json`:尝试按 JSON 解析;<br>- `string`:按字符串返回。<br>- `arraybuffer`:按二进制数据返回。</td></tr>
|
|
87
87
|
<tr><td><code>header</code></td><td><code>Record<string, string></code></td><td>否</td><td><code>{"content-type": "application/json"}</code></td><td>-</td><td>请求 Header。</td></tr>
|
|
88
88
|
<tr><td><code>method</code></td><td><code>RequestMethod</code></td><td>否</td><td><code>"GET"</code></td><td>-</td><td>请求方法。Android、iOS:Android 仅支持 GET/POST/PUT/DELETE,其余方法返回 "Illegal method";iOS 仅支持 GET/POST,其余方法返回 "method type not supported"。</td></tr>
|
|
@@ -113,7 +113,7 @@ console.log(result.statusCode, result.data);
|
|
|
113
113
|
<tr><th>名称</th><th>类型</th><th>必返</th><th>说明</th></tr>
|
|
114
114
|
</thead>
|
|
115
115
|
<tbody>
|
|
116
|
-
<tr><td><code>data</code></td><td><code>string | Record<string, any>
|
|
116
|
+
<tr><td><code>data</code></td><td><code>string | ArrayBuffer | Record<string, any></code></td><td>否</td><td>响应数据,类型由 `dataType` 决定。</td></tr>
|
|
117
117
|
<tr><td><code>header</code></td><td><code>Record<string, string></code></td><td>是</td><td>HTTP 响应头。</td></tr>
|
|
118
118
|
<tr><td><code>statusCode</code></td><td><code>number</code></td><td>是</td><td>HTTP 状态码。</td></tr>
|
|
119
119
|
</tbody>
|
|
@@ -292,8 +292,8 @@ socketTask.onError((event) => {
|
|
|
292
292
|
<tr><td><code>CLOSED</code></td><td><code>3</code></td><td>是</td><td>表示 Socket 连接已关闭。<br><br>进入该状态后,该任务不会再收到新的消息,也不应继续调用 `send`。</td></tr>
|
|
293
293
|
<tr><td><code>CLOSING</code></td><td><code>2</code></td><td>是</td><td>表示 Socket 连接关闭中。<br><br>调用 SocketTask.close 后,等待豆包客户端完成关闭流程时通常处于该状态。</td></tr>
|
|
294
294
|
<tr><td><code>CONNECTING</code></td><td><code>0</code></td><td>是</td><td>表示 Socket 正在连接。<br><br>`connectSocket` 刚返回且豆包客户端尚未完成握手时通常处于该状态。</td></tr>
|
|
295
|
-
<tr><td><code>onClose</code></td><td><code>(callback: (event: SocketTaskCloseEvent) => void) => void</code></td><td>是</td><td>监听 WebSocket 与服务器连接断开的事件。<br><br>主动关闭、服务端关闭、连接被回收都可能触发该回调。<br
|
|
296
|
-
<tr><td><code>onError</code></td><td><code>(callback: (event: SocketTaskErrorEvent) => void) => void</code></td><td>是</td><td>监听 WebSocket 发生错误的事件。<br><br
|
|
295
|
+
<tr><td><code>onClose</code></td><td><code>(callback: (event: SocketTaskCloseEvent) => void) => void</code></td><td>是</td><td>监听 WebSocket 与服务器连接断开的事件。<br><br>主动关闭、服务端关闭、连接被回收都可能触发该回调。<br>回调触发后当前任务已经结束,不应继续使用。</td></tr>
|
|
296
|
+
<tr><td><code>onError</code></td><td><code>(callback: (event: SocketTaskErrorEvent) => void) => void</code></td><td>是</td><td>监听 WebSocket 发生错误的事件。<br><br>连接创建、发送、关闭或 WebSocket 通道出现异常时触发。<br>该回调只表示发生错误,不等同于连接一定已经关闭;是否关闭应结合 `readyState`<br>或后续 `onClose` 事件判断。</td></tr>
|
|
297
297
|
<tr><td><code>onMessage</code></td><td><code>(callback: (event: SocketTaskMessageEvent) => void) => void</code></td><td>是</td><td>监听 WebSocket 接收到服务器发送信息的事件。<br><br>服务端每下发一条消息都会触发一次回调。消息内容通过 `event.data` 返回,<br>类型可能是 `string` 或 `ArrayBuffer`。</td></tr>
|
|
298
298
|
<tr><td><code>onOpen</code></td><td><code>(callback: (event: SocketTaskOpenEvent) => void) => void</code></td><td>是</td><td>监听 WebSocket 连接服务器成功的事件。<br><br>可以注册多个回调。连接成功后触发回调,并携带握手响应 Header、协议类型等信息。<br>通常应在该回调中或之后调用 `send`。</td></tr>
|
|
299
299
|
<tr><td><code>OPEN</code></td><td><code>1</code></td><td>是</td><td>表示 Socket 连接已经打开。<br><br>进入该状态后可以调用 SocketTask.send 发送数据。</td></tr>
|
|
@@ -347,7 +347,7 @@ socketTask.onError((event) => {
|
|
|
347
347
|
</thead>
|
|
348
348
|
<tbody>
|
|
349
349
|
<tr><td><code>102</code></td><td><code>internal error</code></td><td>内部错误</td><td>Android</td></tr>
|
|
350
|
-
<tr><td><code>113</code></td><td><code>bridge unavailable</code></td><td>
|
|
350
|
+
<tr><td><code>113</code></td><td><code>bridge unavailable</code></td><td>JS API 暂不可用</td><td>Android、iOS</td></tr>
|
|
351
351
|
</tbody>
|
|
352
352
|
</table>
|
|
353
353
|
|
|
@@ -428,7 +428,7 @@ uploadFile(params: UploadFileParams): UploadTask
|
|
|
428
428
|
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
429
429
|
</thead>
|
|
430
430
|
<tbody>
|
|
431
|
-
<tr><td><code>enableProfile</code></td><td><code>false</code></td><td>否</td><td><code>false</code></td><td>-</td><td>是否返回网络 profile
|
|
431
|
+
<tr><td><code>enableProfile</code></td><td><code>false</code></td><td>否</td><td><code>false</code></td><td>-</td><td>是否返回网络 profile。豆包当前仅支持 false。</td></tr>
|
|
432
432
|
<tr><td><code>filePath</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>要上传文件资源的本地路径。</td></tr>
|
|
433
433
|
<tr><td><code>formData</code></td><td><code>Record<string, unknown></code></td><td>否</td><td><code>-</code></td><td>-</td><td>额外的 form-data 字段。对象或数组值会按 JSON 字符串传递。</td></tr>
|
|
434
434
|
<tr><td><code>header</code></td><td><code>Record<string, string></code></td><td>否</td><td><code>-</code></td><td>-</td><td>HTTP 请求 Header。`referer`、`user-agent`、`content-type` 等由豆包客户端管理的字段不会被业务覆盖。</td></tr>
|
|
@@ -710,11 +710,11 @@ downloadTask.onHeadersReceived((event) => {
|
|
|
710
710
|
<a id="sockettasksendparams"></a>
|
|
711
711
|
### SocketTaskSendParams
|
|
712
712
|
|
|
713
|
-
SocketTask.send 的参数。 send 只负责向已打开的 WebSocket 连接写入一条消息,不返回 Promise。
|
|
713
|
+
SocketTask.send 的参数。 send 只负责向已打开的 WebSocket 连接写入一条消息,不返回 Promise。 发送失败、连接未就绪或 WebSocket 通道异常时,会通过同一个 SocketTask 的 onError 回调通知。
|
|
714
714
|
|
|
715
715
|
#### Properties
|
|
716
716
|
|
|
717
|
-
• **data**: `string | ArrayBuffer` - 需要发送给服务端的数据。 - 传入 string 时按文本消息发送; - 传入 ArrayBuffer
|
|
717
|
+
• **data**: `string | ArrayBuffer` - 需要发送给服务端的数据。 - 传入 string 时按文本消息发送; - 传入 ArrayBuffer 时按二进制消息发送。 建议只在 onOpen 回调触发后调用 send,此时 readyState 通常为 SocketTask.OPEN
|
|
718
718
|
|
|
719
719
|
<a id="sockettaskcloseparams"></a>
|
|
720
720
|
### SocketTaskCloseParams
|
|
@@ -734,8 +734,8 @@ WebSocket 连接成功事件。 当豆包客户端完成 WebSocket 握手并进
|
|
|
734
734
|
#### Properties
|
|
735
735
|
|
|
736
736
|
• **header**: `Record<string, string>` - WebSocket 握手响应中的 Response Header。 豆包 Android、iOS 当前不会透出真实握手响应头,该字段固定返回空对象 {}, 请不要依赖它读取服务端返回的握手 Header
|
|
737
|
-
• **protocolType?**: `string` - 当前连接使用的网络传输层协议。
|
|
738
|
-
• **socketType?**: `string` -
|
|
737
|
+
• **protocolType?**: `string` - 当前连接使用的网络传输层协议。 豆包无法获取时不返回该字段
|
|
738
|
+
• **socketType?**: `string` - 当前连接使用的 WebSocket 组件类型。 具体值因客户端平台而异;豆包无法获取时不返回该字段
|
|
739
739
|
|
|
740
740
|
<a id="sockettaskmessageevent"></a>
|
|
741
741
|
### SocketTaskMessageEvent
|
|
@@ -744,9 +744,9 @@ WebSocket 收到服务端消息事件。 服务端通过当前连接下发消息
|
|
|
744
744
|
|
|
745
745
|
#### Properties
|
|
746
746
|
|
|
747
|
-
• **data**: `string | ArrayBuffer` - 收到的服务端消息。 - 文本消息返回 string; - 二进制消息返回 ArrayBuffer。
|
|
748
|
-
• **protocolType?**: `string` - 当前消息所属连接使用的协议。
|
|
749
|
-
• **socketType?**: `string` -
|
|
747
|
+
• **data**: `string | ArrayBuffer` - 收到的服务端消息。 - 文本消息返回 string; - 二进制消息返回 ArrayBuffer。 豆包无法将二进制消息转换为 ArrayBuffer 时,内容会保持字符串形式
|
|
748
|
+
• **protocolType?**: `string` - 当前消息所属连接使用的协议。 豆包无法获取时不返回该字段
|
|
749
|
+
• **socketType?**: `string` - 当前连接使用的 WebSocket 组件类型。 具体值因客户端平台而异;豆包无法获取时不返回该字段
|
|
750
750
|
|
|
751
751
|
<a id="sockettaskcloseevent"></a>
|
|
752
752
|
### SocketTaskCloseEvent
|
|
@@ -758,17 +758,17 @@ WebSocket 关闭事件。 当前连接被主动关闭、服务端关闭或豆包
|
|
|
758
758
|
• **code?**: `number` - 关闭状态码。 可能来自调用 SocketTask.close 时传入的 code,也可能来自服务端或豆包客户端
|
|
759
759
|
• **reason?**: `string` - 关闭原因。 可能来自调用 SocketTask.close 时传入的 reason,也可能来自服务端或豆包客户端
|
|
760
760
|
• **errMsg?**: `string` - 错误信息。 非正常关闭时豆包客户端可能通过该字段补充失败原因;正常关闭时通常为空
|
|
761
|
-
• **protocolType?**: `string` - 当前连接使用的网络传输层协议。
|
|
762
|
-
• **socketType?**: `string` -
|
|
761
|
+
• **protocolType?**: `string` - 当前连接使用的网络传输层协议。 豆包无法获取时不返回该字段
|
|
762
|
+
• **socketType?**: `string` - 当前连接使用的 WebSocket 组件类型。 具体值因客户端平台而异;豆包无法获取时不返回该字段
|
|
763
763
|
|
|
764
764
|
<a id="sockettaskerrorevent"></a>
|
|
765
765
|
### SocketTaskErrorEvent
|
|
766
766
|
|
|
767
|
-
WebSocket 错误事件。
|
|
767
|
+
WebSocket 错误事件。 连接创建失败、发送失败、主动关闭失败、WebSocket 通道异常等错误都会通过该事件通知。 如果错误发生在连接创建阶段,readyState 会变为 undefined 或 SocketTask.CLOSED。
|
|
768
768
|
|
|
769
769
|
#### Properties
|
|
770
770
|
|
|
771
|
-
• **errMsg**: `string` - 错误信息。
|
|
771
|
+
• **errMsg**: `string` - 错误信息。 描述参数校验、数据编码或 WebSocket 操作的失败原因,可直接用于日志上报
|
|
772
772
|
|
|
773
773
|
<a id="sockettask"></a>
|
|
774
774
|
### SocketTask
|
|
@@ -785,9 +785,9 @@ WebSocket 错误事件。 连接创建失败、发送失败、主动关闭失败
|
|
|
785
785
|
• **send**: `(params: SocketTaskSendParams) => void` - 通过 WebSocket 连接发送数据。 该方法只发起发送动作,不返回发送结果。建议在 readyState === SocketTask.OPEN 或收到 onOpen 事件后调用;如果连接未就绪、数据编码失败或发送失败, 会触发 onError
|
|
786
786
|
• **close**: `(params?: SocketTaskCloseParams) => void` - 关闭 WebSocket 连接。 调用后会发起关闭动作,并把 readyState 置为 SocketTask.CLOSING。 最终关闭完成时触发 onClose;关闭动作失败时触发 onError
|
|
787
787
|
• **onOpen**: `(callback: (event: SocketTaskOpenEvent) => void) => void` - 监听 WebSocket 连接服务器成功的事件。 可以注册多个回调。连接成功后触发回调,并携带握手响应 Header、协议类型等信息。 通常应在该回调中或之后调用 send
|
|
788
|
-
• **onClose**: `(callback: (event: SocketTaskCloseEvent) => void) => void` - 监听 WebSocket 与服务器连接断开的事件。 主动关闭、服务端关闭、连接被回收都可能触发该回调。
|
|
788
|
+
• **onClose**: `(callback: (event: SocketTaskCloseEvent) => void) => void` - 监听 WebSocket 与服务器连接断开的事件。 主动关闭、服务端关闭、连接被回收都可能触发该回调。 回调触发后当前任务已经结束,不应继续使用
|
|
789
789
|
• **onMessage**: `(callback: (event: SocketTaskMessageEvent) => void) => void` - 监听 WebSocket 接收到服务器发送信息的事件。 服务端每下发一条消息都会触发一次回调。消息内容通过 event.data 返回, 类型可能是 string 或 ArrayBuffer
|
|
790
|
-
• **onError**: `(callback: (event: SocketTaskErrorEvent) => void) => void` - 监听 WebSocket 发生错误的事件。
|
|
790
|
+
• **onError**: `(callback: (event: SocketTaskErrorEvent) => void) => void` - 监听 WebSocket 发生错误的事件。 连接创建、发送、关闭或 WebSocket 通道出现异常时触发。 该回调只表示发生错误,不等同于连接一定已经关闭;是否关闭应结合 readyState 或后续 onClose 事件判断
|
|
791
791
|
|
|
792
792
|
<a id="uploadfileresult"></a>
|
|
793
793
|
### UploadFileResult
|
|
@@ -813,7 +813,7 @@ WebSocket 错误事件。 连接创建失败、发送失败、主动关闭失败
|
|
|
813
813
|
• **header?**: `Record<string, string>` - HTTP 请求 Header。referer、user-agent、content-type 等由豆包客户端管理的字段不会被业务覆盖
|
|
814
814
|
• **formData?**: `Record<string, unknown>` - 额外的 form-data 字段。对象或数组值会按 JSON 字符串传递
|
|
815
815
|
• **timeout?**: `number` - 超时时间,单位 ms;不传时使用豆包客户端的默认超时配置
|
|
816
|
-
• **enableProfile?**: `false` - 是否返回网络 profile
|
|
816
|
+
• **enableProfile?**: `false` - 是否返回网络 profile。豆包当前仅支持 false
|
|
817
817
|
|
|
818
818
|
<a id="uploadtask"></a>
|
|
819
819
|
### UploadTask
|
|
@@ -180,7 +180,7 @@ audio.play();
|
|
|
180
180
|
</thead>
|
|
181
181
|
<tbody>
|
|
182
182
|
<tr><td><code>event.errCode</code></td><td><code>-1001</code></td><td><code>background audio src is empty</code></td><td>Android、iOS</td><td>未设置 src 就调用 play</td><td>设置有效 src 后重试。</td></tr>
|
|
183
|
-
<tr><td><code>event.errCode</code></td><td><code>-1002</code></td><td><code>background audio play failed</code></td><td>Android</td><td
|
|
183
|
+
<tr><td><code>event.errCode</code></td><td><code>-1002</code></td><td><code>background audio play failed</code></td><td>Android</td><td>播放器启动失败</td><td>检查资源地址和网络状态后重试。</td></tr>
|
|
184
184
|
<tr><td><code>event.errCode</code></td><td><code>-1003</code></td><td><code>background audio seek failed</code></td><td>Android、iOS</td><td>播放位置跳转失败</td><td>等待 canplay 后在音频时长范围内重试。</td></tr>
|
|
185
185
|
<tr><td><code>event.errCode</code></td><td><code>-1004</code></td><td><code>background audio player unavailable</code></td><td>Android、iOS</td><td>播放器无法创建或已经不可用</td><td>重新设置 src 后重试。</td></tr>
|
|
186
186
|
<tr><td><code>event.errCode</code></td><td><code>-1005</code></td><td><code>background audio is occupied by another applet</code></td><td>Android、iOS</td><td>另一智能服务正在占用背景音频</td><td>提示用户结束其他背景音频后重试。</td></tr>
|
|
@@ -963,7 +963,7 @@ audio.play();
|
|
|
963
963
|
<tr><td><code>event.errCode</code></td><td><code>-2006</code></td><td><code>inner audio seek failed</code></td><td>Android、iOS</td><td>播放位置跳转失败</td><td>等待 canplay 后在音频时长范围内重试。</td></tr>
|
|
964
964
|
<tr><td><code>event.errCode</code></td><td><code>-2007</code></td><td><code>inner audio play failed</code></td><td>Android、iOS</td><td>音频播放失败</td><td>检查资源地址和网络状态后重试。</td></tr>
|
|
965
965
|
<tr><td><code>event.errCode</code></td><td><code>-2009</code></td><td><code>inner audio playback is interrupted</code></td><td>Android、iOS</td><td>播放被其他音频任务中断</td><td>根据业务需要在中断结束后重新调用 play。</td></tr>
|
|
966
|
-
<tr><td><code>event.errCode</code></td><td><code>-2010</code></td><td><code>inner audio runtime is unavailable</code></td><td>Android、iOS</td><td
|
|
966
|
+
<tr><td><code>event.errCode</code></td><td><code>-2010</code></td><td><code>inner audio runtime is unavailable</code></td><td>Android、iOS</td><td>当前页面无法创建音频实例</td><td>确保页面仍处于有效状态后重新创建实例。</td></tr>
|
|
967
967
|
<tr><td><code>event.errCode</code></td><td><code>-2012</code></td><td><code>invalid seek position</code></td><td>Android、iOS</td><td>seek 位置不是有限非负数</td><td>传入大于或等于 0 的秒数。</td></tr>
|
|
968
968
|
</tbody>
|
|
969
969
|
</table>
|
|
@@ -240,7 +240,6 @@ if (result.toolError) {
|
|
|
240
240
|
## 使用说明
|
|
241
241
|
|
|
242
242
|
用于将状态已经过期的 Widget 实例转换为固定卡片,用户点击后可跳转到指定页面。
|
|
243
|
-
底层通过 updateWidget 实现。
|
|
244
243
|
|
|
245
244
|
`getWidgetInstanceId` 仅在卡片环境中有效,在智能服务页面中会返回 `undefined`。如果需要在页面中调用,
|
|
246
245
|
请在 `navigateTo` 时通过参数传递卡片实例 ID。
|
|
@@ -600,7 +599,7 @@ createTask(params: CreateTaskParams): Promise<CreateTaskResult>
|
|
|
600
599
|
</thead>
|
|
601
600
|
<tbody>
|
|
602
601
|
<tr><td><code>outTaskId</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>开发者侧任务唯一标识,用于幂等和关联</td></tr>
|
|
603
|
-
<tr><td><code>taskDetail</code></td><td><code>TaskDetail</code></td><td>是</td><td>-</td><td>-</td><td
|
|
602
|
+
<tr><td><code>taskDetail</code></td><td><code>TaskDetail</code></td><td>是</td><td>-</td><td>-</td><td>模板对应的数据,传入对象时会自动序列化为 JSON 字符串</td></tr>
|
|
604
603
|
<tr><td><code>taskDetail.display_data</code></td><td><code>TaskDisplayData</code></td><td>是</td><td>-</td><td>-</td><td>任务展示数据。</td></tr>
|
|
605
604
|
<tr><td><code>taskDetail.display_data.sub_title</code></td><td><code>string</code></td><td>否</td><td><code>-</code></td><td>-</td><td>任务副标题。</td></tr>
|
|
606
605
|
<tr><td><code>taskDetail.display_data.title</code></td><td><code>string</code></td><td>是</td><td>-</td><td>-</td><td>任务标题。</td></tr>
|
|
@@ -1169,7 +1168,7 @@ Widget 更新阶段的错误。
|
|
|
1169
1168
|
<a id="taskdetail"></a>
|
|
1170
1169
|
### TaskDetail
|
|
1171
1170
|
|
|
1172
|
-
|
|
1171
|
+
任务详情。传入对象时会自动序列化为 JSON 字符串。
|
|
1173
1172
|
|
|
1174
1173
|
#### Type
|
|
1175
1174
|
|
|
@@ -1184,7 +1183,7 @@ Widget 更新阶段的错误。
|
|
|
1184
1183
|
|
|
1185
1184
|
• **outTaskId**: `string` - 开发者侧任务唯一标识,用于幂等和关联
|
|
1186
1185
|
• **taskTemplate**: `TaskTemplate` - 任务样式模板,当前仅支持 remote_normal_v1
|
|
1187
|
-
• **taskDetail**: `TaskDetail` -
|
|
1186
|
+
• **taskDetail**: `TaskDetail` - 模板对应的数据,传入对象时会自动序列化为 JSON 字符串
|
|
1188
1187
|
• **taskType**: `TaskType` - 任务类型,当前支持 local 和 remote
|
|
1189
1188
|
|
|
1190
1189
|
<a id="createtaskresult"></a>
|
|
@@ -580,7 +580,7 @@ console.log(available, discovering);
|
|
|
580
580
|
|
|
581
581
|
通常先调用 startBluetoothDevicesDiscovery。
|
|
582
582
|
|
|
583
|
-
- advertisData 与 serviceData
|
|
583
|
+
- `advertisData` 与 `serviceData` 以 ArrayBuffer 返回
|
|
584
584
|
|
|
585
585
|
## 调用方式
|
|
586
586
|
|
|
@@ -2695,7 +2695,7 @@ off();
|
|
|
2695
2695
|
|
|
2696
2696
|
## 使用说明
|
|
2697
2697
|
|
|
2698
|
-
- advertisData 与 serviceData
|
|
2698
|
+
- `advertisData` 与 `serviceData` 以 ArrayBuffer 返回
|
|
2699
2699
|
|
|
2700
2700
|
## 调用方式
|
|
2701
2701
|
|
|
@@ -2932,7 +2932,7 @@ off();
|
|
|
2932
2932
|
|
|
2933
2933
|
`readBLECharacteristicValue` 读到的数据和 `notifyBLECharacteristicValueChange` 开启后的通知都会从此事件回传。
|
|
2934
2934
|
|
|
2935
|
-
-
|
|
2935
|
+
- 读取结果与订阅通知都会从此事件回传,`value` 以 ArrayBuffer 返回
|
|
2936
2936
|
|
|
2937
2937
|
## 调用方式
|
|
2938
2938
|
|
|
@@ -112,7 +112,7 @@ console.log(open);
|
|
|
112
112
|
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
113
113
|
</thead>
|
|
114
114
|
<tbody>
|
|
115
|
-
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android</td><td
|
|
115
|
+
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android</td><td>当前设备不支持获取系统无障碍服务状态</td><td>在支持系统无障碍服务的设备上调用。</td></tr>
|
|
116
116
|
</tbody>
|
|
117
117
|
</table>
|
|
118
118
|
|
|
@@ -155,7 +155,7 @@ console.log(result.platform, result.benchmarkLevel);
|
|
|
155
155
|
|
|
156
156
|
## 使用说明
|
|
157
157
|
|
|
158
|
-
- `platform`
|
|
158
|
+
- `platform` 返回小写的客户端平台标识;`benchmarkLevel` 无法获取时返回 -1
|
|
159
159
|
|
|
160
160
|
## 调用方式
|
|
161
161
|
|
|
@@ -214,8 +214,8 @@ console.log(result.platform, result.benchmarkLevel);
|
|
|
214
214
|
|
|
215
215
|
## 平台差异
|
|
216
216
|
|
|
217
|
-
- **Android**:`abi`、`deviceAbi`、`cpuType`
|
|
218
|
-
- **iOS
|
|
217
|
+
- **Android**:`abi`、`deviceAbi`、`cpuType` 为可选字段,豆包无法获取时不返回
|
|
218
|
+
- **iOS**:不返回 `abi`、`deviceAbi`、`cpuType`
|
|
219
219
|
|
|
220
220
|
## 相关类型
|
|
221
221
|
|
|
@@ -135,7 +135,7 @@ console.log(data);
|
|
|
135
135
|
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
136
136
|
</thead>
|
|
137
137
|
<tbody>
|
|
138
|
-
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td
|
|
138
|
+
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td>当前豆包版本不支持读取剪贴板</td><td>升级至支持剪贴板能力的豆包版本后重试。</td></tr>
|
|
139
139
|
</tbody>
|
|
140
140
|
</table>
|
|
141
141
|
|
|
@@ -268,7 +268,7 @@ await setClipboardData({ data: '复制内容' });
|
|
|
268
268
|
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
269
269
|
</thead>
|
|
270
270
|
<tbody>
|
|
271
|
-
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td
|
|
271
|
+
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td>当前豆包版本不支持写入剪贴板</td><td>升级至支持剪贴板能力的豆包版本后重试。</td></tr>
|
|
272
272
|
<tr><td><code>106</code></td><td><code>system permission denied</code></td><td>Android</td><td>写入后系统未授予剪贴板访问权限,写入未生效</td><td>引导用户在系统设置中开启剪贴板相关权限后重试。</td></tr>
|
|
273
273
|
</tbody>
|
|
274
274
|
</table>
|
|
@@ -158,7 +158,7 @@ console.log(result, scanType);
|
|
|
158
158
|
<tr><th>errNo</th><th>errMsg</th><th>平台</th><th>触发条件</th><th>处理建议</th></tr>
|
|
159
159
|
</thead>
|
|
160
160
|
<tbody>
|
|
161
|
-
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td
|
|
161
|
+
<tr><td><code>103</code></td><td><code>feature not support</code></td><td>Android、iOS</td><td>当前豆包版本不支持扫码</td><td>升级至支持扫码能力的豆包版本后重试。</td></tr>
|
|
162
162
|
<tr><td><code>112</code></td><td><code>invalid result</code></td><td>iOS</td><td>扫码成功但未返回可用的扫码结果数据</td><td>稍后重试;持续失败时反馈扫码结果异常。</td></tr>
|
|
163
163
|
</tbody>
|
|
164
164
|
</table>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
## 使用限制
|
|
27
27
|
|
|
28
28
|
> [!WARNING]
|
|
29
|
-
> **Android**:Android
|
|
29
|
+
> **Android**:Android 要求必传 type,省略可能导致调用不生效;未显式传 type 的调用在 Android 上行为不确定。
|
|
30
30
|
|
|
31
31
|
## 支持版本
|
|
32
32
|
|
|
@@ -77,7 +77,7 @@ vibrateShort(params?: VibrateShortParams): Promise<object>
|
|
|
77
77
|
<tr><th>名称</th><th>类型</th><th>必填</th><th>默认值</th><th>约束</th><th>说明</th></tr>
|
|
78
78
|
</thead>
|
|
79
79
|
<tbody>
|
|
80
|
-
<tr><td><code>type</code></td><td><code>VibrateShortType</code></td><td>否</td><td><code>medium</code></td><td>heavy 为强震动,medium 为中等震动,light 为轻微震动</td><td>震动强度类型。Android:Android
|
|
80
|
+
<tr><td><code>type</code></td><td><code>VibrateShortType</code></td><td>否</td><td><code>medium</code></td><td>heavy 为强震动,medium 为中等震动,light 为轻微震动</td><td>震动强度类型。Android:Android 要求必传 type,省略可能导致调用不生效。</td></tr>
|
|
81
81
|
</tbody>
|
|
82
82
|
</table>
|
|
83
83
|
|
|
@@ -39,7 +39,7 @@ JS API 调用失败时,异步 API 会 reject、同步 API 会 throw 一个错
|
|
|
39
39
|
<tr><td><code>107</code></td><td><code>user permission denied</code></td><td>用户未授权</td></tr>
|
|
40
40
|
<tr><td><code>110</code></td><td><code>API call prohibited</code></td><td>API 调用被禁止</td></tr>
|
|
41
41
|
<tr><td><code>112</code></td><td><code>invalid result</code></td><td>返回结果无效</td></tr>
|
|
42
|
-
<tr><td><code>113</code></td><td><code>bridge unavailable</code></td><td>
|
|
42
|
+
<tr><td><code>113</code></td><td><code>bridge unavailable</code></td><td>JS API 暂不可用</td></tr>
|
|
43
43
|
<tr><td><code>114</code></td><td><code>operation cancelled</code></td><td>操作已取消</td></tr>
|
|
44
44
|
<tr><td><code>115</code></td><td><code>operation timeout</code></td><td>操作超时</td></tr>
|
|
45
45
|
<tr><td><code>116</code></td><td><code>resource not found</code></td><td>资源不存在</td></tr>
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
|
|
7
7
|
| 分组 | 说明 | API 数量 | 详细文档 |
|
|
8
8
|
| --- | --- | ---: | --- |
|
|
9
|
-
| 基础 | 账号、授权、豆包客户端信息、窗口信息和能力可用性。 |
|
|
9
|
+
| 基础 | 账号、授权、豆包客户端信息、窗口信息和能力可用性。 | 8 | [查看](./01-基础.md) |
|
|
10
10
|
| 系统 | 豆包客户端信息、窗口信息和系统设置。 | 9 | [查看](./02-系统.md) |
|
|
11
|
-
| 自定义通信 |
|
|
11
|
+
| 自定义通信 | 在智能服务的页面或卡片实例之间发送和接收自定义事件。 | 1 | [查看](./03-自定义通信.md) |
|
|
12
12
|
| 定位 | 获取设备当前的地理位置信息。 | 5 | [查看](./04-定位.md) |
|
|
13
13
|
| 存储 | 本地缓存;带 Sync 后缀的是同步 API。 | 10 | [查看](./05-存储.md) |
|
|
14
14
|
| 路由 | 应用内页面跳转、返回、退出和关闭。 | 6 | [查看](./06-路由.md) |
|
|
15
15
|
| 界面 | 对话框状态、Toast、Loading、Modal、ActionSheet、BottomSheet、返回前提醒、键盘和输入框能力。 | 2 | [查看](./07-界面.md) |
|
|
16
|
-
| 交互 | Toast、Loading、Modal、ActionSheet、BottomSheet 和返回前提醒。 |
|
|
16
|
+
| 交互 | Toast、Loading、Modal、ActionSheet、BottomSheet 和返回前提醒。 | 10 | [查看](./08-交互.md) |
|
|
17
17
|
| 输入 | 键盘和输入框选区能力。 | 2 | [查看](./09-输入.md) |
|
|
18
18
|
| 网络 | 网络请求与 WebSocket。 | 4 | [查看](./10-网络.md) |
|
|
19
19
|
| 媒体 | 图片选择、预览、保存、压缩和信息读取;录音管理;背景音频和内部音频播放。 | 8 | [查看](./11-媒体.md) |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> 这是豆包智能服务运行时 API,也称 Open API。默认从 `@doubao-dev/framework/api` 导入;本文件根据 `packages/open-api/src` 的导出结构自动生成,按模块列出 API 名称和说明。
|
|
4
4
|
|
|
5
|
-
覆盖
|
|
5
|
+
覆盖 150 个函数。详细参数、返回值、示例和相关类型请查看 [豆包智能服务的端能力 API 分组目录](groups.md),精确字段也可按参数/结果类型名查看 IDE 类型提示或 `@doubao-dev/framework/api` 类型定义。
|
|
6
6
|
|
|
7
7
|
## 使用方式
|
|
8
8
|
|
|
@@ -41,6 +41,8 @@ import { showToast, request, getStorage } from '@doubao-dev/framework/api';
|
|
|
41
41
|
| [getAccountInfo](01-基础.md#getaccountinfo) | 异步获取账号信息。 |
|
|
42
42
|
| [getAccountInfoSync](01-基础.md#getaccountinfosync) | 同步获取账号信息。<br><br>同步 API。 |
|
|
43
43
|
| [authorize](01-基础.md#authorize) | 提前向用户发起指定 scope 的授权;scope.healthData 仅用于选择 iOS HealthKit 系统授权路径。 |
|
|
44
|
+
| [arrayBufferToBase64](01-基础.md#arraybuffertobase64) | 将 ArrayBuffer 转换为 Base64 字符串。 |
|
|
45
|
+
| [base64ToArrayBuffer](01-基础.md#base64toarraybuffer) | 将 Base64 字符串转换为 ArrayBuffer。 |
|
|
44
46
|
| [getPerformance](01-基础.md#getperformance) | 获取当前智能服务应用的性能数据。 Entry 由客户端保存;getEntries*() 同步查询当前快照,observer 只接收新完成的 Entry。 |
|
|
45
47
|
| [getSetting](01-基础.md#getsetting) | 获取用户当前的应用授权设置。 |
|
|
46
48
|
| [openSetting](01-基础.md#opensetting) | 打开智能服务授权设置页面。 |
|
|
@@ -63,7 +65,7 @@ import { showToast, request, getStorage } from '@doubao-dev/framework/api';
|
|
|
63
65
|
|
|
64
66
|
## 自定义通信
|
|
65
67
|
|
|
66
|
-
|
|
68
|
+
在智能服务的页面或卡片实例之间发送和接收自定义事件。
|
|
67
69
|
|
|
68
70
|
| API | 说明 |
|
|
69
71
|
| --- | --- |
|
|
@@ -126,12 +128,14 @@ Toast、Loading、Modal、ActionSheet、BottomSheet 和返回前提醒。
|
|
|
126
128
|
|
|
127
129
|
| API | 说明 |
|
|
128
130
|
| --- | --- |
|
|
131
|
+
| [enableAlertBeforeUnload](08-交互.md#enablealertbeforeunload) | 开启页面返回前提醒。 当用户在智能服务的非最底层页面点击左上角返回按钮、左上角首页按钮或客户端返回键时,弹起询问弹窗 返回询问对话框只会对调用的当前页面生效,通过手势滑动返回时不会弹起询问对话框。 |
|
|
132
|
+
| [disableAlertBeforeUnload](08-交互.md#disablealertbeforeunload) | 关闭页面返回前提醒。 |
|
|
129
133
|
| [showModal](08-交互.md#showmodal) | 显示模态对话框。 |
|
|
130
134
|
| [showLoading](08-交互.md#showloading) | 显示 loading 提示框。 |
|
|
131
135
|
| [hideToast](08-交互.md#hidetoast) | 隐藏当前 Toast。 |
|
|
132
136
|
| [hideLoading](08-交互.md#hideloading) | 隐藏当前 loading。 |
|
|
133
137
|
| [showActionSheet](08-交互.md#showactionsheet) | 显示操作菜单。 |
|
|
134
|
-
| [showBottomSheet](08-交互.md#showbottomsheet) |
|
|
138
|
+
| [showBottomSheet](08-交互.md#showbottomsheet) | 显示豆包底部弹窗。 |
|
|
135
139
|
| [getMenuButtonBoundingClientRect](08-交互.md#getmenubuttonboundingclientrect) | 取菜单按钮(右上角胶囊按钮)的布局位置信息。 |
|
|
136
140
|
| [showToast](08-交互.md#showtoast) | 显示 Toast 提示。 |
|
|
137
141
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|------|----------|
|
|
9
9
|
| 找不到前端目录 | 读取 `.dbx/config.json` 的 `frontend.directory`;缺失时再按项目结构判断,常见目录是 `doubao-agentic-service` |
|
|
10
10
|
| 需要新建智能服务前端工程 | 使用公开版智能服务框架创建命令;不要在已有 dbx 项目里另起一套平行前端 |
|
|
11
|
-
| 卡片没出现、模型没调 tool、Manifest 绑定不确定 | 先读 [
|
|
11
|
+
| 卡片没出现、模型没调 tool、Manifest 绑定不确定 | 先读 [`dbx check` 指南](local-debug/simulator-eval.md),用 `dbx check --query "<当前轮用户问题>"` 验证 Skill、MCP、Manifest、tool result 和 `card_delta` |
|
|
12
12
|
| 需要看页面、卡片样式、点击或路由 | 先读 [本地调试总流程](local-debug/overview.md),用 `dbx dev` 打开 Web 模拟器 |
|
|
13
13
|
| 开发对话卡片 Widget | 先读 [frontend/widget-templates/overview.md](frontend/widget-templates/overview.md) 选模板,再读 [frontend/guides/component-development.md](frontend/guides/component-development.md) |
|
|
14
14
|
| 使用内置组件 props 或事件 | 读 [frontend/components/overview.md](frontend/components/overview.md),不要猜 props |
|
|
@@ -41,10 +41,10 @@ pnpm install
|
|
|
41
41
|
|
|
42
42
|
## dbx 调试顺序
|
|
43
43
|
|
|
44
|
-
`dbx
|
|
44
|
+
`dbx check` 验证后端出卡数据链路,不验证前端视觉效果:
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
|
-
dbx
|
|
47
|
+
dbx check --query "<当前轮用户问题>" --verbose
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
`dbx dev` 用于看真实 Page / Widget 渲染、交互和路由:
|
|
@@ -10,7 +10,7 @@ python3 <skill_dir>/scripts/workspace.py skill path --create --json
|
|
|
10
10
|
|
|
11
11
|
先读取返回 JSON 的 `layout` 和 `entries`。`missing` 时创建默认 `skill/SKILL.md`;已有 entries 时改写与能力域对应的文件,也可以新增任意层级的 `SKILL.md`。返回的 `path` 是运行态 Skill 目录,供上传等命令使用。
|
|
12
12
|
|
|
13
|
-
只要本轮新增或修改 MCP tool、tool schema、工具返回、Manifest `entities/tools.output/tool_card_binding`、登录身份、卡片输出,或准备执行 `dbx
|
|
13
|
+
只要本轮新增或修改 MCP tool、tool schema、工具返回、Manifest `entities/tools.output/tool_card_binding`、登录身份、卡片输出,或准备执行 `dbx check`,都应检查并更新运行态 Skill。
|
|
14
14
|
|
|
15
15
|
## 工作流
|
|
16
16
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `dbx check` 后端链路检查指南
|
|
2
2
|
|
|
3
|
-
`dbx
|
|
3
|
+
`dbx check` 用于在本机验证智能服务模拟器后端数据链路。它不验证前端视觉效果,而是确认 **query / history / skill / MCP / manifest / tool result / trace / card_delta** 是否已经跑通。`dbx dev` 不强制以前置 eval 为门禁;只有在需要判断问题是否出在后端出卡链路时,才优先跑 eval。
|
|
4
4
|
|
|
5
5
|
## 默认评测
|
|
6
6
|
|
|
7
7
|
在项目目录下直接运行:
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
dbx
|
|
10
|
+
dbx check --query "<当前轮用户问题>" --verbose
|
|
11
11
|
```
|
|
12
12
|
|
|
13
13
|
默认约定:
|
|
@@ -21,7 +21,7 @@ dbx simulator eval --query "<当前轮用户问题>" --verbose
|
|
|
21
21
|
只有默认路径有问题时才加参数:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
dbx
|
|
24
|
+
dbx check \
|
|
25
25
|
--project-path <project_dir> \
|
|
26
26
|
--query "<当前轮用户问题>" \
|
|
27
27
|
--history ./history.json \
|
|
@@ -46,10 +46,10 @@ eval 是由本机 CLI 发起的一次完整链路测试:
|
|
|
46
46
|
|
|
47
47
|
`manifest.mcp_server.end_point` 不强求是公网 URL。只要 CLI 所在机器能访问即可,例如本机开发时可以是 `http://localhost:8000/mcp` 或 `http://127.0.0.1:<port>/mcp`。反过来,如果 CLI 在远端机器或 CI 里运行,`localhost` 指的是那台机器。
|
|
48
48
|
|
|
49
|
-
当前 `dbx
|
|
49
|
+
当前 `dbx check` 能力边界:
|
|
50
50
|
|
|
51
|
-
- 输入方式:`--demo <name
|
|
52
|
-
- MCP
|
|
51
|
+
- 输入方式:`--file <path>` 单独校验 YAML;`--demo <name>` 跑内置 demo;`--query <query>` 检查业务项目。`--demo` 和 `--query` 可以组合,此时 query 会覆盖 demo 默认问题。
|
|
52
|
+
- MCP:业务检查读取 Manifest 中的 Streamable HTTP `/mcp` 或 SSE `/sse`;内置 demo 会自动启动临时 Demo MCP Server。CLI 会执行 `initialize`、`notifications/initialized`、`tools/list`,并在模型下发工具调用后执行 `tools/call`。
|
|
53
53
|
- Simulator 网关:默认使用 CLI build config 的 `apiBaseUrl`;需要切环境时传 `--gateway-origin <origin>`。
|
|
54
54
|
- 调试控制:`--max-step` 调整 Agent 最大循环步数;`--verbose` 展示更多 trace 和工具结果摘要;`--force` 可在 preflight 有 error 时仍继续请求 Simulator。
|
|
55
55
|
- 路径解析:`--project-path` 是 dbx 项目目录;相对路径参数按该目录解析。
|
|
@@ -64,9 +64,9 @@ eval 是由本机 CLI 发起的一次完整链路测试:
|
|
|
64
64
|
|
|
65
65
|
标准动作顺序:
|
|
66
66
|
|
|
67
|
-
1. 如果当前线程没有明确的 demo PASS 证据,先跑内置 demo:`dbx
|
|
67
|
+
1. 如果当前线程没有明确的 demo PASS 证据,先跑内置 demo:`dbx check --demo milk-tea --verbose`。CLI 会自动启动并在结束时关闭临时 Demo MCP Server。
|
|
68
68
|
2. demo PASS 后,确认业务项目根目录已有 `manifest.yaml`,且 `skill/` 中至少有一个 `SKILL.md`。
|
|
69
|
-
3. 跑业务 eval:`dbx
|
|
69
|
+
3. 跑业务 eval:`dbx check --query "<当前轮用户问题>" --verbose`。
|
|
70
70
|
4. 业务 eval PASS 后,再进入 `dbx dev` / Web 模拟器 / Widget UI 调试看真实渲染;如果用户只是要求打开 Web 模拟器,直接执行 `dbx dev --mcp-endpoint <mcp_endpoint>`。
|
|
71
71
|
|
|
72
72
|
不要跳过 demo。demo 的作用是确认 CLI、网关、标准 MCP 客户端、trace 和 card_delta 基准链路正常;没有这个基准时,业务 eval 失败很容易被误判成模型或前端问题。
|
|
@@ -75,26 +75,30 @@ eval 是由本机 CLI 发起的一次完整链路测试:
|
|
|
75
75
|
|
|
76
76
|
如果你完全不知道 eval 怎么用,先跑内置 demo,建立一条正确链路的参照。
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
直接运行:
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
dbx
|
|
81
|
+
dbx check --demo milk-tea --verbose
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
CLI 会自动选择空闲端口启动临时 Demo MCP Server,检查结束后自动关闭,不需要手动复制端口或打开第二个终端。
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
如果只想独立调试 Demo MCP Server,运行:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
dbx mcp demo
|
|
90
|
+
# 非交互或 AI 调用:
|
|
91
|
+
dbx mcp demo --milk-tea --json
|
|
89
92
|
```
|
|
90
93
|
|
|
91
|
-
|
|
94
|
+
无参数的交互模式会提示选择 demo;显式传 demo 时会直接前台启动,并输出类似:
|
|
92
95
|
|
|
93
|
-
```
|
|
94
|
-
|
|
96
|
+
```text
|
|
97
|
+
streamable_http: http://127.0.0.1:53886/mcp
|
|
98
|
+
sse: http://127.0.0.1:53886/sse
|
|
95
99
|
```
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
按 `Ctrl+C` 停止独立 Server。它不会写入项目目录。
|
|
98
102
|
|
|
99
103
|
当前内置 demo:
|
|
100
104
|
|
|
@@ -139,7 +143,7 @@ Cards
|
|
|
139
143
|
demo 跑通后,在业务项目根目录直接跑 eval:
|
|
140
144
|
|
|
141
145
|
```bash
|
|
142
|
-
dbx
|
|
146
|
+
dbx check --query "我想点一杯适合下午提神的少糖奶茶" --verbose
|
|
143
147
|
```
|
|
144
148
|
|
|
145
149
|
迁移顺序建议:
|
|
@@ -153,7 +157,7 @@ dbx simulator eval --query "我想点一杯适合下午提神的少糖奶茶" --
|
|
|
153
157
|
|
|
154
158
|
## MCP 要求
|
|
155
159
|
|
|
156
|
-
`dbx
|
|
160
|
+
`dbx check` 只支持标准 MCP 协议。地址只需要 CLI 当前运行环境可访问,不要求公网 URL。
|
|
157
161
|
|
|
158
162
|
CLI 会完成:
|
|
159
163
|
|
|
@@ -212,7 +216,7 @@ MCP server unreachable
|
|
|
212
216
|
- 确认 MCP server 进程还在运行。
|
|
213
217
|
- 确认 `manifest.mcp_server.end_point` 是 CLI 所在机器可访问的 `/mcp` 或 `/sse` 地址。
|
|
214
218
|
- 确认服务支持标准 MCP 的 `initialize`、`notifications/initialized`、`tools/list`、`tools/call`。
|
|
215
|
-
- 如果是内置 demo
|
|
219
|
+
- 如果是内置 demo,直接运行 `dbx check --demo milk-tea --verbose`;CLI 会自动管理临时 Demo MCP Server。
|
|
216
220
|
|
|
217
221
|
### MCP server 内部异常
|
|
218
222
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
本 Skill 用于编写一个应用版本对应的一份 Manifest。Manifest 是版本完整配置的声明式文件,描述这个版本的基础信息、业务实体 schema、工具运行配置、MCP Server 连接配置和权限配置。
|
|
6
6
|
|
|
7
|
-
涉及出卡协议正确性时,Manifest 写完后先用 `dbx
|
|
7
|
+
涉及出卡协议正确性时,Manifest 写完后先用 `dbx check --query "<当前轮用户问题>"` 验证 MCP tools、entity schema、`tool_card_binding` 和 `card_delta`;如果只是验证本地 Manifest 是否能被 Web 模拟器加载,可以直接执行 `dbx dev`。
|
|
8
8
|
|
|
9
9
|
### 使用方式
|
|
10
10
|
|
|
@@ -507,12 +507,12 @@ tools:
|
|
|
507
507
|
|
|
508
508
|
## Manifest 校验
|
|
509
509
|
|
|
510
|
-
写完或修改 Manifest 后,**必须使用 `dbx
|
|
510
|
+
写完或修改 Manifest 后,**必须使用 `dbx check --file` 进行校验**。
|
|
511
511
|
|
|
512
512
|
### 校验入口
|
|
513
513
|
|
|
514
514
|
```bash
|
|
515
|
-
dbx
|
|
515
|
+
dbx check --file <manifest.yaml> --json
|
|
516
516
|
```
|
|
517
517
|
|
|
518
518
|
必须显式传入 Manifest 路径。若在本 lifecycle 流程中,先用 `workspace.py manifest path --create --json` 获取路径,再把返回的 `path` 传给本命令。
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
- Manifest 中 `entities`、`tool_card_binding`、`tools.output` 如何配置。
|
|
9
9
|
- 哪些业务字段给模型看,哪些字段只给卡片代码或后续业务动作使用。
|
|
10
10
|
|
|
11
|
-
协议写完后,如果要确认出卡数据链路,先使用 `dbx
|
|
11
|
+
协议写完后,如果要确认出卡数据链路,先使用 `dbx check --demo milk-tea` 跑通内置 demo,再在业务项目中用 `dbx check --query "<当前轮用户问题>"` 验证 MCP result、Manifest、tool_card_binding 和 `card_delta` 都正确;如果只是打开 Web 模拟器验证前端渲染或交互,直接执行 `dbx dev`。
|
|
12
12
|
|
|
13
13
|
需要从业务对象出发决定 entity 拆分、模板选型、模型可见字段或动作结果形态时,先读 [业务建模方法](#业务建模方法),产出 `entities_designed`。需要设计列表卡、列表 item 是否给模型筛选、`llm_modifiable` 或 item 回填时,再读 [列表卡协议字段](#列表卡协议字段)。
|
|
14
14
|
|