应用(Apps)
新应用默认使用标准 plugin.json;旧 aidc.app.json 继续支持。Apps 与 OpenAI Plugin 的包、UI、默认 AIDC 登录和可选 OAuth 规范见 Plugin 兼容。
AIDC 的应用,就是智能体时代的插件:一组 Skills 加一组 APIs,界面可选。智能体照 Skills 调 APIs 把事做完,程序直接调 APIs;人需要看、比较、确认的时候,才打开界面。应用在 Developer 里做和测,发布到 Nexus 的应用目录;用的人不用安装——在应用页点「复制给智能体」,把那一句话贴给 Adis、Claude Code 或 Codex 就能用。
这份标准照 OpenAI 的 Plugin 定义来(ChatGPT 与 Codex 共用的插件格式,官方文档,2026-09-29 读取):Plugin 是人们发现、安装、分享和发布的包,可以带 Skills(给模型的说明和资源)、MCP 服务器(工具和外部系统),两者都要时就都带,界面可选。AIDC 应用一一对应,只多了一条:数据在公司的语义层,应用本身不存东西。

一个应用由什么组成
应用(aidc.app.json)
├── Skills skills/<名字>/SKILL.md:教智能体完成一件可重复的事
├── APIs 应用对外提供的能力:HTTP、CLI、MCP 都能调
└── 界面(可选) index.html:给人看、比较、确认、编辑
| 部分 | 是什么 | 对应 Plugin 的 |
|---|---|---|
| Skills | 一份 SKILL.md:什么时候用、按什么步骤调哪些 API、输出什么、哪些事不能推断。可以附参考资料 |
Skills |
| APIs | 应用对外提供的查询、读取、汇总、动作,以及工作流的运行。以「应用 × 调用人的角色」执行 | MCP 服务器的工具 |
| 界面 | 应用的页面。只调同一套 API,界面能做的事智能体一定也能做 | 可选的 UI |
| 清单 | aidc.app.json:名字、版本、介绍、示例说法、负责方、用到的 SDK、权限与资源上限 |
plugin.json |
两种用法,同一套 API:
- 智能体用:人把「帮我用 AIDC 应用「报价工作流」:…/about.md」交给智能体,智能体读这份说明(APIs、Skills 全文、示例说法、规矩),照 Skills 调 APIs。
- 程序用:
POST /api/v1/developer/apps/{命名空间}/{slug}/apis/{名字}/execute、aidc app call,或者把应用接成 MCP 服务器。
选一个形态
| 形态 | 什么时候选 | 例子 |
|---|---|---|
| 只有 Skills | 说明加上现成的 AIDC 能力(模型、视觉、语音、语义层)就能把事做完 | 瑕疵检测:Skill 教智能体用 aidc vision inspect |
| 只有 APIs | API 自己说得清,不需要额外的流程说明 | 设计中心 · 初始材料清单:导出 bom_of |
| Skills + APIs | Skill 带智能体走一套流程,用的是本应用的 API | 报价工作流:先预演、给人看、确认后正式运行 |
| APIs + 界面 | 人要看、比较、编辑或确认结构化的信息 | 企业数据浏览器、审批看板 |
先做最小的形态。以后加 API 或界面,不改应用的用途。
包的结构
quote-workflow/
├── aidc.app.json 清单
├── skills/
│ ├── quote-rfq/
│ │ ├── SKILL.md 一条 Skill(name 与目录同名)
│ │ └── references/ 可选:口径、例子、模板
│ └── explain-quote-risk/
│ └── SKILL.md
├── index.html 界面(可选;没有界面时清单写 "entry": null)
└── app.js / style.css
- Skills 固定放在包根目录的
skills/下,一条一个目录,清单里不用登记(照 Plugin 的固定目录)。 - 界面、代码、图片照旧;包里的文件只从版本目录
_v/<digest>/出。 - 平台在应用地址下另外生成三样东西,包里不用写:
<应用地址>/about(应用页)、<应用地址>/about.md(给智能体的说明)、<应用地址>/skills/<名字>/SKILL.md(线上版本的 Skill 原文)。
清单:身份、示例说法、介绍
{
"manifestVersion": 1,
"slug": "quote-workflow",
"version": "1.1.0",
"title": "报价工作流(演示)",
"summary": "跨部门报价:从一张询价算到一张待审批的报价草稿。",
"description": "营业部收到客户询价后,把设计 BOM、采购行情、制造工艺、财务核价串起来……",
"examples": ["给 RFQ-2609-006 核价,出一张报价草稿", "列出待报价的询价,按目标价差距排先后"],
"owner": { "department": "营业部", "team": "营业小兴-报价" },
"category": "data",
"entry": "index.html"
}
| 字段 | 做什么 | Plugin 里叫 |
|---|---|---|
slug |
应用标识,出现在地址里(小写、连字符) | name |
version |
语义化版本号,改了任何东西就要升 | version |
title / summary |
目录与应用页上的名字、一句话 | displayName / shortDescription |
description |
应用页「介绍」一节:做什么、给谁用、输入输出(≤ 2000 字) | longDescription |
examples |
示例说法:人对智能体说的一句话,应用页「调用方法」里点一下就复制(≤ 6 条) | defaultPrompt |
owner |
负责方:部门、岗位 / 智能体、联系人 | developerName |
category |
目录里的分类 | category |
entry |
界面入口;null = 没有界面 |
可选的 UI |
其余字段(sdk、semantic、exports、workflow、auth、limits……)见发布 SDK。
Skills
一条 Skill 是一个目录,里面一份 SKILL.md:
---
name: quote-rfq
description: "给一张客户询价核价并生成待审批的报价草稿。用户给出询价单号(RFQ-…)、说要报价或核价时使用。先预演,人确认后再正式运行。"
---
# 核价并出报价草稿
## 输入
- 询价单号(RFQ-…)。没有就先问。
## 步骤
1. 预演:`aidc app call cell-aidc/quote-workflow run --param rfq_no=<单号> --preview --json`
2. 用 get_run 等结果,把单价、风险与目标价差距给人看。
3. 人确认后去掉 --preview 正式运行。
## 不要
- 替人批准报价。
name:小写字母开头,字母 / 数字 / 连字符,和目录同名。description:智能体靠它决定什么时候用这条 Skill。写用户的目标和触发的场合,≤ 1024 字符;里面有「: 」就整句加引号。- 正文写清楚:要什么输入、按什么顺序调哪些 API、输出什么、哪些事不能推断、什么时候该问人或停下。
- 一条 Skill 对一个目标。触发条件、输入或完成标准不同,就拆成两条。一个应用最多 12 条。
- 详细材料放
references/,正文里写什么时候去读它。
部署时平台检查:目录名、name 与目录一致、description 的长度和写法、正文不能空、单个 SKILL.md ≤ 32 KB。不合规的整个版本拒收,问题一次列全。
没写 Skill 的应用,平台按清单生成一条「使用这个应用」的 Skill(应用页标「平台自动生成」):列出它的 APIs 和用得上的 AIDC 命令。能用,但比不上你自己写的——写一条,把你们的做法教给智能体。
测一条 Skill,照 Plugin 的做法准备五类说法:直接要求、换个说法的同一个目标、缺信息(应该追问)、不该触发的、容易编造的边界情况。Skill 在错的时候被用上,改 description;用对了但结果不稳,改正文。
APIs
一个应用的 APIs 有三个来源:
| 来源 | 从哪来 | 例子 |
|---|---|---|
| 显式导出 | 清单 exports:名字、参数、说明(推荐,名字和参数是给人看的契约) |
quote-sales/rfq |
| 自动提取 | 清单 semantic 里登记的对象类型(查询)与动作 |
quote-sales/demo.approve_quote |
| 工作流 | 带 workflow 的应用多三个:run、get_run、list_runs |
quote-workflow/run |
所有 API 走同一个调用口:
curl https://www.ai-dc.ai/api/v1/developer/apps/cell-aidc/quote-sales/apis/rfq/execute \
-H "Authorization: Bearer $AIDC_API_KEY" -H "Content-Type: application/json" \
-d '{"input":{"rfq_no":"RFQ-2609-006"}}'
aidc app call cell-aidc/quote-sales rfq --param rfq_no=RFQ-2609-006 --json
- 身份:以「应用 × 调用人的角色」执行——读只能读应用登记过的类型,动作过它自己的角色规则。调用人拿不到应用本来拿不到的东西;留痕记的是调用人。
- 凭证:开发者 Key 调本公司任何应用;应用票据只能调它自己。
- 写入先预演:动作和工作流正式运行会写语义层。请求体加
"preview": true(CLI--preview),读、算、AI 分析照跑,写入只返回计划;把计划给人看,确认后再正式调用。x-aidc-dry-run: true只校验输入。 - 列出全部 API:
GET …/apps/{命名空间}/{slug}/apis(aidc app apis):名字、说明、输入的 JSON Schema、返回、调用口与 CLI 写法。 - MCP:公司应用另有一个 MCP 服务器
…/apps/{命名空间}/{slug}/mcp(Streamable HTTP,凭证是开发者 Key):工具 = APIs(名字里的「.」换成「__」),prompts = Skills。
claude mcp add --transport http quote-workflow \
https://www.ai-dc.ai/api/v1/developer/apps/cell-aidc/quote-workflow/mcp \
--header "Authorization: Bearer $AIDC_API_KEY"
没有自己 API 的应用(界面里直接调 AIDC SDK 的,比如瑕疵检测),应用页列出它「用到的 AIDC 能力」——现成的 CLI 命令,Skill 教智能体用它们做同样的事。
复制给智能体,不用安装

每个应用页右上角都有「复制给智能体」。复制的是一句话:
帮我用 AIDC 应用「报价工作流」:https://www.ai-dc.ai/nexus/cell-aidc/apps/quote-workflow/about.md
贴给 Adis、Claude Code、Codex 或任何能跑终端命令的智能体。它读 about.md:这是什么、怎么登录、有哪些 API(CLI 与 HTTP 写法)、每条 Skill 的全文、示例说法、规矩——读完照做。「调用方法」里的示例说法点一下,复制的是「那句话 + 这个应用的说明地址」。
- AIDC 官方应用的说明谁都能读。
- 公司应用的说明要凭证:智能体先请人在终端运行
aidc login,然后aidc app about <命名空间>/<slug>读;或者带Authorization: Bearer $AIDC_API_KEY请求about.md。智能体不索要、不转述密码。
应用页
每个应用都有一张平台生成的应用页(<应用地址>/about),照 Codex Plugins 的详情页排:
| 一节 | 放什么 | 数据从哪来 |
|---|---|---|
| 调用方法 | 示例说法(点一下就复制);对智能体说 / CLI / HTTP / MCP | 清单 examples;APIs |
| 介绍 | 做什么、执行什么任务(工作流按取数 → 计算 → AI 分析 → 写入分组)、输入与输出、触发 | 清单 description、workflow |
| Skills & APIs | Skills(可展开看 SKILL.md、复制)、APIs(参数、返回、CLI 与 HTTP)、依赖的能力、用到的 AIDC 能力、连接的数据 |
包里的 skills/、能力目录 |
| Information | 负责方、类别、形态、版本、访问范围、SDK、模型、资源上限、地址、文件 | 应用卡片 |
应用页只有元数据,不含业务数据。目录在 /nexus/apps(AIDC 官方)与 /nexus/<公司>/apps(登录后:本公司的应用 + AIDC 官方;打开 /nexus 登录后直接到这里);测试版在 Developer 下:/developer/<公司>/apps 是本公司应用的 Developer 版本(只给 developer),应用页 /developer/…/apps/<slug>/about。发布到 Nexus 需要 Developer 账号。
做、测、发布
aidc app init quote-helper --template skills # 只有 Skills 的应用;别的模板也都带一条 Skill
aidc app check quote-helper # 本地校验:清单、包、Skills
aidc app deploy quote-helper # test 通道:Developer 里的应用页与 about.md
aidc app publish quote-helper # 测过的版本进 Nexus 目录
完整走一遍:快速开始。
上架前的检查清单
-
summary一句话说清给谁用、做什么;description写清输入、输出和边界。 -
examples两三句,写成用户会说的话,不写成命令。 - 至少一条 Skill 或一个 API;每条 Skill 的
description写清什么时候用。 - 会写入的 API 能预演;Skill 里写明「先预演、给人看、确认后再正式调用」。
- 结论只用 API 返回的内容:Skill 里写明哪些事不能推断。
- 写了
owner;版本号已升;aidc app check通过。 - 用五类说法测过 Skill:直接、换说法、缺信息、不该触发、边界。
课程
AIDC Academy 的《成为 AIDC Developer》把这一页讲成课:第 4 课「应用:给智能体用,也给人用」讲定义、四种形态和复制给智能体,第 7 课「动手:做第一个应用」从一条 Skill 做到发布。
本页由 developer/docs/apps.md 生成 · Markdown 原文 · llms.txt