发布 SDK

把一个应用从本地开发、到 Developer 测试、再到 Nexus 上线。发布 SDK = aidc app 命令 + Developer API;UI(Console)以后也只调同一套 API。

应用清单 aidc.app.json

{
  "$schema": "https://www.ai-dc.ai/developer/schemas/aidc.app.schema.json",
  "manifestVersion": 1,
  "slug": "defect-inspection",
  "version": "1.0.0",
  "title": "瑕疵检测",
  "summary": "拍一张照片,判断制作工艺有没有污渍、破损",
  "category": "vision",
  "entry": "index.html",
  "sdk": ["vision", "model"],
  "permissions": { "camera": true, "microphone": false },
  "models": ["gpt-6-luna"],
  "datasets": [],
  "streams": [],
  "agents": false,
  "storage": { "type": "none" },
  "limits": { "dailyTokens": 1000000, "requestsPerMinute": 30, "realtimeSessionsPerDay": 100 },
  "cdn": []
}
字段 说明
slug 应用标识,出现在 URL 里(小写字母开头,字母 / 数字 / 连字符)
version 版本号(语义化:1.2.0,可带 -rc.1)。测试与发布都用它称呼这个版本;改了任何东西就要升——同一应用里一个版本号只对应一份内容
namespace 缺省 = 开发者 Key 所属公司(cell-…);public 是 AIDC 官方公开应用,只有 AIDC 平台账号能发
permissions 要不要摄像头 / 麦克风——平台据此下发 Permissions-Policy
models / datasets / streams 应用会调的模型、数据集与会订阅的实时数据流(同一命名空间);应用票据只放行这里列出的
agents 是否会调智能体(访客自带 Agent Key,见 连接 SDK)
storage 数据存储。Nexus 应用是无状态的,目前只有 none;需要存记录的应用走数据应用车道
limits 每日 token、每 IP 每分钟请求、每日实时转写场次
cdn 允许加载第三方脚本的 CDN(cdn.jsdelivr.net、cdnjs.cloudflare.com),写进 CSP

完整 JSON Schema:/developer/schemas/aidc.app.schema.json。

版本包

应用目录里除清单、隐藏文件与 node_modules 之外的所有文件。限制:≤ 200 个文件、解码后 ≤ 3 MB、只接受网页常用类型(html / css / js / json / svg / png / jpg / webp / gif / woff2 / md / txt …)。包里一律写相对路径——平台在入口页注入 <base>,同一个包挂在 Developer 和 Nexus 两个地址下都能用。

应用是单页应用:入口 HTML + 资源。多页请用 hash 路由。SDK 从 /developer/sdk/v1/aidc.js 引入(绝对路径)。

通道

aidc app deploy   →  上传版本 v1.2.0(内容寻址)→ test 通道   /developer/…/apps/<slug>
aidc app publish  →  test 上的 v1.2.0 → production 通道        /nexus/…/apps/<slug>
aidc app rollback →  production 切回更早的已测版本(--version 1.1.0)

版本号与更新状态

每个版本有两个编号:版本号(清单 version,如 1.2.0)和构建序号(#3,第几次上传)。Developer 预览页与 Nexus 正式页都显示版本号(app().version;预览页显示「Developer 预览 · v1.2.0」)。

每个版本都有一个更新状态,由通道指针和发布记录推出来:

状态 含义
已上线 live production 当前版本
测试中 testing test 当前版本(还没上线)
已测未发 tested 进过 test、比线上新,但被更新的测试版替换、没发布过
已被替换 superseded 比线上版本旧(被新版本替换下线)
已回滚 rolled_back 上过线、后来被回滚到更早的版本
未测试 untested 上传了还没进过 test(不对外暴露任何文件)

通道每变一次记一条发布记录:谁、何时、哪个通道、动作(进测试 / 发布 / 回滚)、从哪个版本到哪个版本、说明(--notes)。aidc app status 看版本与状态,aidc app history 看发布记录。

地址

test(Developer) production(Nexus)
AIDC 官方公开应用 /developer/apps/<slug> /nexus/apps/<slug>
客户应用 /developer/<cellId>/apps/<slug>(本公司 developer) /nexus/<cellId>/apps/<slug>(本公司成员)

官方公开应用任何人可以打开。客户应用要求登录且属于该公司;它们跑在 CSP 沙箱里(不透明源),凭平台注入的应用票据调 API。客户应用使用摄像头 / 麦克风需要独立的用户内容域名,正在规划中。

API

方法 路径 说明
GET /api/v1/developer/me 当前开发者 Key 的身份与可写命名空间
GET /api/v1/developer/apps 应用列表
GET /api/v1/developer/apps/{namespace}/{slug} 通道、版本(版本号、构建序号、更新状态)、发布记录、地址
POST /api/v1/developer/apps/{namespace}/{slug}/versions 上传版本包 {manifest, files:[{path, encoding, content}], notes?}
POST /api/v1/developer/apps/{namespace}/{slug}/channels/{test|production} 晋升 {version?, notes?}(version = 版本号 1.2.0 或构建序号 3),记一条发布记录
POST /api/v1/developer/apps/{namespace}/{slug}/tickets?channel= 应用票据续期(SDK 自动调用)

鉴权:Authorization: Bearer aidc-dk-…(开发者 Key)。完整契约见 OpenAPI。

命令

aidc app init <slug> --template camera|voice|data|blank
aidc app check [目录]
aidc app dev [目录] --port 5173
aidc app deploy [目录] --notes "修复框选偏移" [--dry-run]     # 版本号取清单 version
aidc app publish <slug|目录> [--version 1.2.0] [--notes "…"] [--dry-run]
aidc app rollback <slug> --version 1.1.0 --notes "回退:…"
aidc app status <slug>                                           # 版本号 / 构建序号 / 更新状态
aidc app history <slug>                                          # 发布记录
aidc app list

本页由 developer/docs/publish.md 生成 · Markdown 原文 · llms.txt