@doubao-dev/plugin-cli 0.0.0-stage → 0.0.40-canary-dea0ddc73-20261026073950

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.

Potentially problematic release.


This version of @doubao-dev/plugin-cli might be problematic. Click here for more details.

@@ -0,0 +1,72 @@
1
+ ---
2
+ name: doubao-plugin-cli
3
+ description: 使用 @doubao-dev/plugin-cli 提供的 dbx 命令创建和配置应用插件项目、登录、开发调试、上传及处理审核,以及接入 MCP Apps、配置 MCP 鉴权和业务 CLI 连接器。适用于以 plugin.json 为入口的应用插件工程。
4
+ metadata:
5
+ display_name: 应用插件 CLI 开发
6
+ display_description: 使用 dbx 创建、配置、调试和上传应用插件,并处理审核流程。
7
+ ---
8
+
9
+ # Doubao Plugin CLI
10
+
11
+ ## 识别项目与命令
12
+
13
+ 使用 `@doubao-dev/plugin-cli` 提供的 `dbx`。需要安装时执行 `npm install -g @doubao-dev/plugin-cli`,具体参数以 `dbx <command> --help` 为准。
14
+
15
+ - 项目根目录包含 `plugin.json`,使用 `name` 定位插件;上传返回的 `id` 由 CLI 保存,已有 ID 不要改写。执行命令前确认目标项目。
16
+ - `dev`、`uninstall`、`upload`、`audit`、`cancel-audit` 和 `skills` 从当前目录向上查找最近的 `plugin.json`,也支持 `--cwd <项目内目录>`。可以在 `com.doubao/app/` 内直接执行。
17
+ - 参数不确定时读取对应的 `--help`。Agent 应提供完整参数,并使用非终端模式执行,读取普通日志;缺少必要参数时直接报错。
18
+
19
+ ## 按任务读取
20
+
21
+ | 任务 | 指引 |
22
+ | --- | --- |
23
+ | 创建项目,编写 `plugin.json`、`mcp.json` 和业务 Skill | [项目配置](references/project-config.md) |
24
+ | 上传、预览、准备物料与审核 | [上传与审核](references/upload.md) |
25
+ | MCP 工具提供 HTML 交互界面 | [MCP Apps 接入与验证](references/mcp-apps.md) |
26
+ | 豆包 App 的页面、卡片、Web 或真机调试 | 项目内 `.agents/skills/doubao-plugin-app/SKILL.md` |
27
+
28
+ MCP Apps 与豆包 App 是独立能力,可以分别使用,也可以在同一插件中共存。普通 MCP 不等于 MCP Apps。普通 Skill、MCP 和 MCP Apps 项目不创建 `manifest.yaml`;仅用户明确选择豆包 App 或项目已有 App 工程时读取 App 开发 Skill。页面或卡片需求本身不能作为选择 App 的依据。
29
+
30
+ ## MCP 与 CLI 扩展
31
+
32
+ 按任务读取对应参考:
33
+
34
+ - 配置 MCP 鉴权时,读取 [MCP 鉴权配置](references/mcp-auth.md),包含 OAuth、静态凭据和注入规则。
35
+ - 接入业务命令行工具时,读取 [业务 CLI 连接器配置](references/cli-connectors.md),包含安装、授权、状态检查和配套 Skill 要求。
36
+
37
+ ## 登录
38
+
39
+ 先执行 `dbx auth status` 检查登录状态。需要登录时执行 `dbx auth login`,由用户在浏览器完成授权。
40
+
41
+ 需要分步授权时:
42
+
43
+ 1. 执行 `dbx auth login --begin`,向用户展示返回的授权地址和用户验证码。
44
+ 2. 用户授权后,使用该次返回的设备码执行 `dbx auth login --complete <device-code>`。
45
+
46
+ ## 开发调试
47
+
48
+ `dbx dev` 在没有 App 时直接调试 Skill / MCP;含 App 时在交互终端选择目标。`dbx dev --plugin` 只调试 Skill / MCP,`dbx dev --app` 同时调试 App;两者互斥,指定后不再询问。同一会话中的平台同步服务监听 Skills、MCP 和插件配置,App 服务负责本地编译和 Web 模拟器,二者互不阻塞。平台同步会打包、上传并安装到当前登录用户,后续变更重新同步安装,不提审、不发布。个人开发包不包含 App 目录;完整 App 上传使用 `dbx upload`,上传不执行个人安装。非交互模式未传 `--app` 时只启动平台同步。
49
+
50
+ - 没有 App 时仅输出监听和同步日志,不加载 Kit 或交互面板。
51
+ - 有 App 时额外读取 `.agents/skills/doubao-plugin-app/SKILL.md` 中的本地调试流程。
52
+ - 配置与业务 Skill 变更会触发同步;App 的 MCP 连接配置变更会重启本地运行时。新增或移除 App 后按需重新运行 `dbx dev --app` 或 `dbx dev`。
53
+ - 用 Ctrl+C 结束调试,退出不会卸载已安装到当前用户的插件。同步失败时先根据报错修复,再触发同步。
54
+ - 不再需要开发包时,执行 `dbx uninstall` 从当前账号卸载;开发会话仍在运行时,后续修改会重新安装。
55
+ - 开发指引 `.agents/` 和根目录 `AGENTS.md` 不进入上传包;`.env` 及 `.env.*` 也被排除。
56
+
57
+ ## Agent 调用
58
+
59
+ ```sh
60
+ dbx init my-plugin
61
+ dbx init my-app --app
62
+ dbx auth status
63
+ dbx dev --no-tui
64
+ dbx dev --app --no-tui
65
+ dbx upload --version 0.0.1
66
+ ```
67
+
68
+ 按实际任务选择命令,不连续执行上述所有示例。Agent 启动 dev 时传 `--no-tui`,即使分配了 TTY 也不询问调试目标、不显示交互界面、不自动发起登录;未传 `--app` 时只调试 Skill / MCP;创建项目必须给出名称,上传必须指定版本。`dev` 是常驻进程,用 Agent 的后台进程工具以非终端模式启动,保留进程句柄,读取服务状态与地址,不等待命令结束。先检查是否已有实例,结束任务时按需发送退出信号清理服务。审核使用 `dbx categories` 查询类目,按 [上传与审核](references/upload.md) 准备材料后通过 `dbx audit --input <path>` 提交;仅在用户明确要求提审时执行。
69
+
70
+ ## Skill 维护方式
71
+
72
+ 本 Skill 随 CLI 更新。已有项目、换机器或链接缺失时,运行 `dbx skills`,也可用 `--cwd` 指定项目。命令补齐链接、Git 忽略规则和 `AGENTS.md` 引导,并自动替换 CLI 管理的链接路径。
@@ -0,0 +1,25 @@
1
+ # 业务 CLI 连接器配置
2
+
3
+ 在 `com.doubao/cli.json` 声明工具,无需在 `plugin.json` 登记;客户端通过受控 Shell 在 PC 本地执行:
4
+
5
+ ```json
6
+ {
7
+ "connectors": {
8
+ "route-helper": {
9
+ "install": { "default": ["npm install -g @example/route-helper"] },
10
+ "auth": { "default": ["route-helper auth login"] },
11
+ "status": { "default": ["route-helper auth status"] },
12
+ "statusMatchRegex": "^logged in as .+$"
13
+ }
14
+ }
15
+ }
16
+ ```
17
+
18
+ 将示例包名、命令和正则替换为实际工具配置。业务 CLI 自行管理登录态和凭据,文件中不保存真实凭据;其授权与 `dbx auth` 开发者登录独立。
19
+
20
+ - `connectors` 非空,每包最多 1 个 CLI;名称非空、无首尾空白,且不与 MCP 服务同名。
21
+ - `install` 必填,`auth`、`status` 可选;按 `darwin`、`linux`、`win32`、`default` 配置非空命令数组,每条命令非空,提供时须含 `linux` 或 `default`。优先当前系统项,缺少时回退到 `default`。
22
+ - Linux 选中的安装项只支持 npm 安装,推荐 `npm install -g <包名>`;多条命令分项顺序执行,任一失败即安装失败。不支持随包二进制文件或 Package 型连接器。
23
+ - 需要授权时配置 `auth`、`status` 和合法的 `statusMatchRegex`。正则匹配状态命令的标准输出判断已授权;命令失败用退出码和标准错误诊断。
24
+
25
+ 业务 Skill 须说明适用请求、命令参数与示例、输出和退出码含义,以及未安装、未授权、无网络和执行失败的处理方式。失败只停用对应 CLI;JSON 或根结构无效、无法定位错误项时停用 CLI 模块,其他能力不受影响。
@@ -0,0 +1,70 @@
1
+ # MCP Apps 接入与验证
2
+
3
+ 仅在选择 MCP Apps、需要接通 MCP 工具与 Web UI 时读取。MCP Apps 的 HTML 由 MCP 服务提供;豆包 App 的 Page / Widget 使用 Kit 和 Manifest,二者不是同一套界面协议。只使用 MCP Apps 时无需创建 `com.doubao/app/` 或安装 Kit。
4
+
5
+ ## 配置归属
6
+
7
+ | 内容 | 维护位置 |
8
+ | --- | --- |
9
+ | MCP 地址、传输与连接 | 插件根目录 `mcp.json`,沿用普通 MCP 规则 |
10
+ | 服务展示信息 | `plugin.json` 的 `extensions["com.doubao"].mcpServers` |
11
+ | 工具与 `_meta.ui.resourceUri` | MCP 服务端的 `tools/list` |
12
+ | `ui://` HTML、媒体类型和安全元数据 | MCP 服务端的资源返回 |
13
+ | 服务鉴权 | 沿用 MCP OAuth 或静态凭据方案,真实密钥不写入插件包 |
14
+
15
+ 不新增插件 UI 清单,不把工具 UI 字段写进 `plugin.json`、`mcp.json` 或 App Manifest。只将 HTML 放入插件包不能替代服务端的工具关联与资源声明。
16
+
17
+ 以下是配置示例,替换为实际可用地址后按键合并,保留已有服务;模板默认不启用此服务。
18
+
19
+ `mcp.json`:
20
+
21
+ ```json
22
+ {
23
+ "mcpServers": {
24
+ "routes": {
25
+ "type": "streamable-http",
26
+ "url": "https://example.com/mcp"
27
+ }
28
+ }
29
+ }
30
+ ```
31
+
32
+ `plugin.json` 的展示配置片段,服务名与 `mcp.json` 一致:
33
+
34
+ ```json
35
+ {
36
+ "extensions": {
37
+ "com.doubao": {
38
+ "mcpServers": {
39
+ "routes": {
40
+ "displayName": { "zh": "路线查询", "en": "Route search" },
41
+ "displayDescription": { "zh": "查询路线并展示交互结果", "en": "Search routes with an interactive view" }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+ ```
48
+
49
+ ## 接通工具与界面
50
+
51
+ 按工程实际 `@modelcontextprotocol/ext-apps` 版本读取 [官方 Quickstart](https://apps.extensions.modelcontextprotocol.io/api/documents/quickstart.html) 与 [server helpers](https://apps.extensions.modelcontextprotocol.io/api/modules/server-helpers.html),保留已有 MCP 和 Web 工程。
52
+
53
+ 1. 确认真正使用的工具、输入及结果 schema、样例数据和前端入口。工具须返回独立可读的文字或结构化结果,包含核心数据和状态,不能只返回“请看卡片”、空结果或 UI URI。
54
+ 2. 用 `registerAppTool` 注册工具,通过 `_meta.ui.resourceUri` 绑定 `ui://` 资源,不使用旧的 `_meta["ui/resourceUri"]` 写法。
55
+ 3. 用 `registerAppResource` 注册同一资源。`resources/read` 的 contents 返回匹配的 URI、实际 HTML 和 `text/html;profile=mcp-app`;安全策略放在 `contents[i]._meta.ui.csp`,只声明实际请求需要的域名。
56
+ 4. 前端创建 SDK `App`,先注册处理器再 `app.connect()`;用 `app.ontoolresult` 接收数据,交互通过 `app.callServerTool({ name, arguments })` 调用工具。服务端保留参数校验、授权和业务错误处理。
57
+ 5. 按工程实际命令构建,在目标宿主验证 `io.modelcontextprotocol/ui` 扩展协商、资源加载与交互。显示模式读取 `hostContext.availableDisplayModes`,按双方支持情况请求 `inline`、`fullscreen` 或 `pip`,以实际返回为准。
58
+
59
+ 服务鉴权参考 [MCP Authorization](https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization),不另设插件 UI 授权字段。完整样例见 [官方运行说明](https://apps.extensions.modelcontextprotocol.io/api/#running-the-examples)。
60
+
61
+ ## 调试与验收
62
+
63
+ `dbx dev` 的“插件调试(Skill / MCP)”负责配置与业务 Skill 同步,不负责启动 MCP Apps 服务或 Web 工程。按工程自己的命令启动服务;`dbx dev --app` 的 Web 模拟器用于豆包 App,不能据此认定 MCP Apps UI 已接通,也不从官方示例 scripts 推导新的 dbx 子命令。
64
+
65
+ - 工具:真实调用成功,文字或结构化结果独立可读;业务 Skill 中的参数与 tools/list schema 一致。
66
+ - 界面:读取到关联 URI 的 HTML,工具结果进入 UI;筛选、详情或修改操作调用真实工具并更新界面。
67
+ - 失败:资源不可用、未授权、无数据和业务错误有明确反馈,不伪造成功。
68
+ - 宿主不支持 UI:基础工具结果仍可读;记录未完成的交互能力,不能将普通 MCP 连接成功或平台同步成功当作 UI 验收通过。
69
+
70
+ 分别记录工具调用、目标宿主 UI 联调和平台同步的实际结果。字段依据 [MCP Apps 2026-01-26 规范](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx),进入工程时核对所用 SDK 与宿主版本。
@@ -0,0 +1,23 @@
1
+ # MCP 鉴权配置
2
+
3
+ 在 `mcp.json` 声明服务。无需鉴权或使用标准 MCP OAuth 时,不需要额外鉴权文件,也不重复声明 OAuth 地址或客户端凭据;远程服务按需进入 OAuth,`stdio` 默认无需鉴权。
4
+
5
+ 静态 API Key 或 Token 使用 `com.doubao/auth/<服务键>.json`,如 `mcpServers.routes` 对应 `com.doubao/auth/routes.json`。文件须直接位于该目录,服务键不得含 `/` 或 `\`。真实凭据由用户输入、客户端管理,包内只声明输入项和注入模板:
6
+
7
+ ```json
8
+ {
9
+ "credentials": [
10
+ { "id": "apiKey", "label": "API Key", "secret": true }
11
+ ],
12
+ "injections": [
13
+ { "target": "header", "name": "Authorization", "value": "Bearer ${apiKey}" }
14
+ ]
15
+ }
16
+ ```
17
+
18
+ - 两个数组均非空。凭据 `id` 唯一,以字母开头,仅含字母、数字和下划线;`label` 非空,`secret` 必填,密钥和 Token 设为 `true`。可选字段:`required` 默认 `true`,`description` 最多 1024 字符。
19
+ - 远程 MCP 只用 `header`;`stdio` 只用 `env`,如 `{ "target": "env", "name": "ROUTES_API_KEY", "value": "${apiKey}" }`。`name` 非空,同一目标内唯一,且不与 `mcp.json` 已有配置冲突;请求头名称忽略大小写。
20
+ - `value` 至少引用一个同文件声明的 `${id}`,仅做一次原文替换。可选凭据为空时省略引用它的注入项;无凭据的固定请求头写入 `mcp.json`。
21
+ - 凭据仅可注入请求头或环境变量;Header 凭据只发往配置的源站,跨源重定向不得携带。
22
+
23
+ 文件位置或服务关联错误会阻止提交;鉴权配置无效会停用对应 MCP 服务。按错误提示修复,其他有效服务独立加载。
@@ -0,0 +1,105 @@
1
+ # 项目配置
2
+
3
+ ## 创建与文件归属
4
+
5
+ ```sh
6
+ dbx init my-plugin
7
+ dbx init my-plugin-with-app --app
8
+ ```
9
+
10
+ 默认创建空插件骨架:`plugin.json`、空 `mcpServers` 配置、开发指引和说明文件,不含业务 Skill、购物服务或 App。指定 `--app` 或在无参数 `dbx init` 的交互中选择添加 App,才加入 App、共享购物 MCP 和匹配的业务 Skill、页面与卡片;不默认启用 MCP Apps。非交互环境必须传项目名,不再询问是否添加 App。目标目录须不存在或为空,初始化不要求登录。空骨架需要补齐实际业务能力才能用于平台调试和上传。
11
+
12
+ 只有 App 模式准备应用开发工具、Kit 并安装前端依赖;`--no-install-deps` 跳过前端依赖安装。安装失败会保留项目,进入 `com.doubao/app/` 重试 `pnpm install`。
13
+
14
+ | 文件 | 作用 |
15
+ | --- | --- |
16
+ | `plugin.json` | 插件身份、版本及平台展示信息 |
17
+ | `mcp.json` | MCP 服务地址、传输方式和连接配置 |
18
+ | `skills/<name>/SKILL.md` | 上传的业务能力与工具使用指引 |
19
+ | `.agents/skills/` | 给开发 Agent 的指引,不上传为业务能力 |
20
+
21
+ `extensions["com.doubao"]` 是平台命名空间,不是 App 专属配置。MCP 连接和展示信息始终放在插件根目录;App 与 MCP Apps 都遵循这一点。
22
+
23
+ ## plugin.json:身份与展示信息
24
+
25
+ 以下是购物 MCP 的配置示例,不是空骨架必须添加的内容;修改已有文件时合并字段,不覆盖已有 `id` 或其他能力配置。
26
+
27
+ ```json
28
+ {
29
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
30
+ "name": "my-plugin",
31
+ "version": "0.0.1",
32
+ "description": "根据关键词搜索商品",
33
+ "extensions": {
34
+ "com.doubao": {
35
+ "displayName": { "zh": "商品助手", "en": "Shopping assistant" },
36
+ "displayDescription": { "zh": "搜索商品并查看规格和价格", "en": "Search products and view their prices" },
37
+ "mcpServers": {
38
+ "shopping": {
39
+ "displayName": { "zh": "商品搜索", "en": "Product search" },
40
+ "displayDescription": { "zh": "按关键词搜索商品", "en": "Search products by keyword" }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ - `name` 是包名,不是展示名称。使用小写字母、数字、点或连字符,不使用连续的点或连字符;创建后不要为修改展示名称随意更改它。
49
+ - `id` 是平台返回的应用插件 ID,CLI 上传后自动写入,保持字符串,不自行生成。通用 schema 不包含这个平台字段,不要因此删除已有 ID。
50
+ - `version` 使用 `major.minor.patch`。上传命令会选择或接受 `--version`,将该版本写入上传包,不改本地清单;它不是 CLI 或 Kit 的版本。
51
+ - `mcpServers.shopping` 是服务展示信息,其键必须与 `mcp.json` 的服务名一致;它不是工具名 `search_products`。
52
+
53
+ ## mcp.json:连接服务
54
+
55
+ `init --app` 使用以下共享示例服务;空骨架的 `mcpServers` 为 `{}`,根据实际业务接入服务。换成业务服务时保留实际服务需要的鉴权,并同步展示信息和 Skill。
56
+
57
+ ```json
58
+ {
59
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
60
+ "mcpServers": {
61
+ "shopping": {
62
+ "type": "streamable-http",
63
+ "url": "https://s0piqd9123oupmbgufs9i.apigateway-cn-beijing.volceapi.com/mcp"
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ 当前 App 调试适配单个 `streamable-http` 服务,使用可访问的 HTTP(S) 地址,不启动本地 MCP 子进程。通用 MCP schema 中的 stdio、SSE 等配置不代表当前平台或 App 调试都支持;不要凭通用规范添加未验证的传输类型。
70
+
71
+ 不要把工具定义、输入 schema 或 HTML 写进连接配置。工具来自 MCP 的 `tools/list`,结果来自工具调用。鉴权按服务及平台支持的方式配置,真实密钥不提交、不打包;也不要假定 CLI 会展开 URL 或 headers 中的 `${ENV}`。共享示例服务只用于演示,不保证生产可用性。
72
+
73
+ ## 业务 Skill:用途、参数与结果
74
+
75
+ App 示例的业务 Skill 目录随项目名称生成;空骨架不生成业务 Skill。以下文件放在 `skills/my-plugin/SKILL.md`,目录名与 `name` 必须一致;使用实际项目名称,避免与平台已有 Skill 重名。
76
+
77
+ ```markdown
78
+ ---
79
+ name: my-plugin
80
+ description: 用户希望按关键词搜索商品、查看规格或价格时,调用 shopping 的 search_products 工具。
81
+ metadata:
82
+ display_name: 商品搜索
83
+ display_description: 根据关键词搜索商品,查看名称、规格和价格。
84
+ ---
85
+
86
+ # 商品搜索
87
+
88
+ 1. 从用户请求提取非空 query;关键词不明确时先询问。
89
+ 2. 调用 search_products,limit 默认 3,必须是 1–10 的整数。用户要求更多时说明单次上限,不传 100。
90
+ 3. 根据实际工具结果展示名称、规格和价格;无结果或调用失败时如实说明,不编造商品。
91
+ ```
92
+
93
+ `description` 告诉 Agent 何时使用;正文描述执行步骤;`metadata.display_name` 和 `metadata.display_description` 是平台展示字段,均须非空,不能用顶层 `description` 代替。示例参数必须与实际 `tools/list` 的 inputSchema 一致。
94
+
95
+ 普通业务 Skill 可按需附带 `references/`、`scripts/`、`assets/` 并在正文引用;归档包含这些文件,但不要据此假定 App 模拟器会自动将附件注入模型。App 调试须以实际读取的 SKILL.md 内容验证核心流程。开发助手文档放 `.agents/skills/`,不要混入业务 `skills/`。
96
+
97
+ ## 选择界面能力
98
+
99
+ - 只需工具结果:普通 MCP + 业务 Skill 即可。
100
+ - MCP Apps:工具关联 `ui://` HTML,需服务端和支持协议的宿主,见 [MCP Apps](mcp-apps.md)。不需要 App Manifest 或 Kit。
101
+ - 豆包 App:仅在用户明确选择该能力或已有 App 工程时,读取独立的 `doubao-plugin-app` 开发 Skill,按其要求维护前端和 Manifest。普通 Skill、MCP、MCP Apps 不创建 `manifest.yaml`。
102
+
103
+ `dbx upload` 上传插件配置和业务资料;它不会部署远端 MCP 服务或 MCP Apps HTML 服务。先验证服务真实可访问,再分别验证工具调用、界面和平台上传,不能用其中一项成功替代其他项。
104
+
105
+ 命令从当前目录向上查找最近的 `plugin.json`,在所属 `com.doubao/app/` 或其源码目录中也可运行。打包不会包含嵌套目录中另一个带独立 `plugin.json` 的项目;普通业务资源和所属 App 源码保留。
@@ -0,0 +1,53 @@
1
+ # 上传与审核
2
+
3
+ 按用户请求执行相应操作,不因完成本地修改就自动上传或提审。普通 MCP 与 MCP Apps 都上传根配置和业务 Skill;远端服务由开发者部署。只有包含豆包 App 时才触发 App 云构建和预览二维码,MCP Apps 不使用这条预览链路。
4
+
5
+ - `dbx upload`:上传项目包,校验物料并保存平台草稿及插件 ID。含 App 时自动保存版本、等待云构建并显示预览二维码,不安装到当前用户、不自动提审或发布;`--version x.y.z` 直接指定上传版本;不传时交互选择或输入,列表分页查询并按版本号降序展示。暂无历史版本时提示首次上传,可选择或输入 `0.0.1`。存在同名插件时停止上传,需在 `plugin.json.id` 填写目标插件 ID;其他查询异常允许手动输入版本继续,不自动选择版本。非交互环境必须指定 `--version`,例如 `dbx upload --version 0.0.1`。版本仅写入上传包。预览使用保存版本接口返回的实际版本号。上传成功后输出平台草稿链接,保存版本、构建或预览失败时可从该链接继续处理。修改项目内容后,需要重新上传才能让审核使用新内容。
6
+ - `dbx audit`:基于已上传的草稿填写审核材料、保存版本并提交审核,不会自动上传本地改动。交互终端按提示填写;非 TTY 环境复用草稿的有效材料,或通过 `--input <path>` 补充。显式传入 `--input` 时不弹出提示。
7
+ - `dbx cancel-audit`:查询当前应用插件有审核记录的最新版本,并撤回对应提审,无需手动填写审核 ID。
8
+
9
+ 审核材料包括一项意向分类、每个 MCP 连接器的测试账号或 Key,以及每个业务 Skill 的 HTTP 或 HTTPS 评测报告地址和 5–10 条示例提示词。已有材料会预填,脱敏凭据不修改则保留。
10
+
11
+ 上传包含 App 的项目时,先检查 `plugin.json` 的 `extensions["com.doubao"]` 图标配置:
12
+
13
+ | 字段 | 图片尺寸 | 路径示例 |
14
+ | --- | --- | --- |
15
+ | `icon` | 672×672 像素 | `./com.doubao/assets/plugin-icon.png` |
16
+ | `chatIcon` | 512×512 像素 | `./com.doubao/assets/plugin-chat-icon.png` |
17
+
18
+ 路径必须以 `./` 开头,相对 `plugin.json` 所在目录,指向根目录内已存在且会打包上传的图片文件。使用实际 PNG/JPG 图片,检查解码后的宽高;修改文件名或扩展名不能改变图片格式或尺寸。`icon` 的四个角不能完全透明;圆形图标应先铺不透明底色再导出。两个字段要求不同尺寸,分别准备文件,不填写网络 URL。模板不提供占位图标。
19
+
20
+ 上传校验失败时根据返回的文件路径、字段及原因修改后再上传。提审失败时保留返回的应用插件版本和错误信息,先确认失败阶段再重试,避免重复保存版本。
21
+
22
+ ### 非交互审核
23
+
24
+ 没有 TTY 时,`dbx audit` 会复用草稿中已有的分类和有效审核材料。需要补充或修改材料时,通过 JSON 文件传入:
25
+
26
+ ```sh
27
+ dbx audit --cwd ./my-plugin --input ../audit-input.json
28
+ ```
29
+
30
+ `--input` 的相对路径以项目根目录为基准。文件示例:
31
+
32
+ ```json
33
+ {
34
+ "category_id": "category-id",
35
+ "modules": [
36
+ {
37
+ "module_id": "mcp-module-id",
38
+ "mcp": { "test_credential": "test-account-or-key" }
39
+ },
40
+ {
41
+ "module_id": "skill-module-id",
42
+ "skill": {
43
+ "evaluation_report_url": "https://example.com/report",
44
+ "example_prompts": ["核心场景一", "核心场景二", "核心场景三", "核心场景四", "核心场景五"]
45
+ }
46
+ }
47
+ ]
48
+ }
49
+ ```
50
+
51
+ 分类 ID 通过 `dbx categories` 查询,模块 ID 使用平台草稿对应的值。缺少模块材料时,错误会标明模块 ID 和字段。
52
+ 未指定的分类和模块材料沿用草稿中的有效值;脱敏凭据不会作为新凭据上传。材料无效时会在保存和提审前退出。
53
+ 显式传入 `--input` 后,即使在 TTY 中也不会弹出审核提示。
@@ -0,0 +1,5 @@
1
+ # 应用插件开发
2
+
3
+ 先阅读 [CLI 开发 Skill](.agents/skills/doubao-plugin-cli/SKILL.md),按任务选择其中的配置、上传或 MCP Apps 指引。
4
+
5
+ 链接缺失时运行 `dbx skills`。业务 Skill 放在 `skills/`,开发指引不进入上传包。
@@ -0,0 +1,9 @@
1
+ # __PLUGIN_NAME__
2
+
3
+ 空应用插件骨架。按需配置 `mcp.json` 或在 `skills/` 中添加业务 Skill 后,再启动调试。
4
+
5
+ ```sh
6
+ dbx dev
7
+ ```
8
+
9
+ 开发与上传指引见 [开发 Skill](.agents/skills/doubao-plugin-cli/SKILL.md)。链接缺失时运行 `dbx skills`。
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
3
+ "mcpServers": {}
4
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
+ "name": "__PLUGIN_NAME__",
4
+ "version": "0.0.1",
5
+ "description": ""
6
+ }
@@ -0,0 +1,12 @@
1
+ import { withProgress, terminal_log, updateUserPlugin } from "./188.js";
2
+ import { ensureLogin } from "./command~1.js";
3
+ async function runUninstall(project) {
4
+ await ensureLogin(false);
5
+ const { name } = project.plugin;
6
+ await withProgress('从当前用户卸载插件开发包', ()=>updateUserPlugin({
7
+ name,
8
+ action: 'Uninstall'
9
+ }));
10
+ terminal_log.success(`插件开发包已卸载:${name}`);
11
+ }
12
+ export { runUninstall };
package/package.json CHANGED
@@ -1,6 +1,56 @@
1
1
  {
2
2
  "name": "@doubao-dev/plugin-cli",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.0.40-canary-dea0ddc73-20261026073950",
4
+ "description": "Doubao Plugins CLI",
5
+ "type": "module",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ },
12
+ "./package.json": "./package.json"
13
+ },
14
+ "bin": {
15
+ "dbx": "bin/run.js"
16
+ },
17
+ "files": [
18
+ "bin",
19
+ "dist",
20
+ "README.md",
21
+ "!dist/**/*.map"
22
+ ],
23
+ "dependencies": {
24
+ "@clack/core": "0.5.0",
25
+ "@clack/prompts": "0.11.0",
26
+ "archiver": "7.0.1",
27
+ "chalk": "5.6.2",
28
+ "chokidar": "5.0.0",
29
+ "commander": "15.0.0",
30
+ "fs-extra": "11.3.5",
31
+ "ofetch": "1.5.1",
32
+ "open": "10.1.0",
33
+ "ora": "8.1.0",
34
+ "zod": "4.2.0"
35
+ },
36
+ "devDependencies": {
37
+ "@rslib/core": "1.0.0-beta.1",
38
+ "@types/node": "22.20.4",
39
+ "rimraf": "3.0.2",
40
+ "typescript": "6.0.3",
41
+ "@byted-doubao-apps/plugin-cli": "0.0.40-canary-dea0ddc73-20261026073950",
42
+ "@doubao-dev/kit": "0.7.0",
43
+ "@doubao-dev/plugin-app-dev": "0.0.40-canary-dea0ddc73-20261026073950"
44
+ },
45
+ "engines": {
46
+ "node": ">=22.13.0"
47
+ },
48
+ "publishConfig": {
49
+ "access": "public",
50
+ "registry": "https://registry.npmjs.org"
51
+ },
52
+ "scripts": {
53
+ "build": "rimraf dist && rslib build",
54
+ "clean": "rimraf dist"
55
+ }
6
56
  }