SuperAPI AI 工具集

discovery-services-starter-kit-deployer

部署与运维

查看项目

更新于 10-31 14:28

技能介绍

用途

Discovery Starter-Kit Deployer 用于把一个 starter-kit 按其中引用的各个 Discovery 提示智能体进行部署。它适合「部署某个 starter-kit 的全部智能体」这类请求,例如 drug-discovery、protein-structure-analysis。若只想部署单个智能体,应改用 discovery-services-agent-deployer;若只是查看清单,应使用 discovery-catalog。

主要能力

运行器读取 starter-kits<starter-kit>\kit.json,校验每个顶层 agentRefs[].ref 都对应到已存在的 agents<agent> 目录;随后为这些智能体构建工具、并行部署工具资源、把已部署的工具资源 ID 回填到各源智能体,再并行部署所有被引用的智能体,最后打印已部署智能体、已部署工具以及客户可手动运行的顶层 samplePrompts 汇总。

部署时,运行器会把每个已部署智能体的 humanInTheLoop 及其绑定的每个工具的确认设置为 Disabled(即使源 YAML 中启用了也一样),该设置会持续影响后续使用;源 YAML 文件本身不变。它不会绕过 Supercomputer nodepool 确认或智能体指令中的审批请求。starter-kit 部署不执行验证,也不创建对话。

使用方式

基本命令:

pwsh -NoProfile -ExecutionPolicy Bypass -File .github\skills\discovery-services-starter-kit-deployer\scripts\deploy-discovery-starter-kit.ps1 <starter-kit-name>

可用参数包括:<starter-kit-name> 或 -StarterKitName(init 与 -WhatIfPlan 必填);-PublisherName(已废弃,仅为兼容而容忍并忽略,会打印弃用提示);-BuildMode remote|local(init 时必选,remote 使用 ACR 构建,local 使用本地 Docker 并推送至 ACR,不写入 config.json);-Stage init|build-tools|deploy-tools|deploy-agent|summary|stop(每次只跑一个阶段);-RunDir(init 之后配合 -Stage 必填);-KnowledgeBasesJson(当被引用智能体声明 discoveryExtensions.knowledgeBases 时,init 阶段必填,可传内联 JSON 或 JSON 文件路径,按智能体名组织);-ConfirmSupercomputerNodepools(本次运行的确认,不写入 config.json);-WhatIfPlan(不调用 Azure,仅打印 kit 发现、agentRefs 与阶段计划)。

分阶段执行示例:

pwsh -NoProfile -ExecutionPolicy Bypass -File .github\skills\discovery-services-starter-kit-deployer\scripts\deploy-discovery-starter-kit.ps1 drug-discovery -Stage init pwsh -NoProfile -ExecutionPolicy Bypass -File .github\skills\discovery-services-starter-kit-deployer\scripts\deploy-discovery-starter-kit.ps1 -RunDir <RunDir> -Stage build-tools pwsh -NoProfile -ExecutionPolicy Bypass -File .github\skills\discovery-services-starter-kit-deployer\scripts\deploy-discovery-starter-kit.ps1 -RunDir <RunDir> -Stage deploy-tools pwsh -NoProfile -ExecutionPolicy Bypass -File .github\skills\discovery-services-starter-kit-deployer\scripts\deploy-discovery-starter-kit.ps1 -RunDir <RunDir> -Stage deploy-agent pwsh -NoProfile -ExecutionPolicy Bypass -File .github\skills\discovery-services-starter-kit-deployer\scripts\deploy-discovery-starter-kit.ps1 -RunDir <RunDir> -Stage summary

若在 Supercomputer nodepool 确认处选择 Stop,运行:

pwsh -NoProfile -ExecutionPolicy Bypass -File .github\skills\discovery-services-starter-kit-deployer\scripts\deploy-discovery-starter-kit.ps1 -RunDir <RunDir> -Stage stop

配置

本地环境值位于 .github\skills\discovery-services-starter-kit-deployer\config.json(从 config.template.json 复制);若该文件不存在,则回退使用 discovery-services-agent-deployer\config.json 中的共享 Azure/Discovery 设置,前者存在时覆盖后者。填充后的文件已被 gitignore,不应提交。构建模式与 Supercomputer nodepool 确认是每次运行的选择,不得写入 config.json。

需要向客户收集的配置字段:subscriptionId(包含 Discovery 资源与 ACR 的 Azure 订阅 ID)、resourceGroup、acrName(不含 .azurecr.io)、acrResourceGroup(可选,与 resourceGroup 不同时设置)、location(支持 eastus、swedencentral、uksouth,其他值视为客户显式未来扩展覆盖)、workspaceEndpoint(如 https://<workspace>.workspace.discovery.azure.com)、project、tenantId(Azure 租户 ID GUID)、chatModel(已部署智能体使用的聊天模型部署名)、forceToolImageRebuild(是否在 ACR 已有相同 repository:tag 时仍重建并重推镜像,默认 false)。build/deploy-tools 需要 subscriptionId、resourceGroup、acrName、location;deploy-agent 需要 workspaceEndpoint、project、tenantId、chatModel。不要臆造缺失值。

知识库与工具计划

知识库不由本技能部署。若被引用智能体声明了知识库,运行器会输出 KNOWLEDGE_BASE_INPUT_REQUIRED=true 及每个受影响智能体的提示,要求用户以 /bookshelves/{bookshelf_name}/knowledgeBases/{knowledgebase_name} 格式提供实际的 knowledgeBaseId(GA 2026-06-01 默认格式);显式预览配置还接受 /versions/{version} 后缀,GA 拒绝该后缀,应按运行器给出的 KNOWLEDGE_BASE_ID_FORMAT 处理,不要静默去掉版本。ID 保存到临时 JSON 文件或内联传入,再用 -KnowledgeBasesJson 重跑 init。

构建工具前,先不带 -ConfirmSupercomputerNodepools 运行 build-tools,使运行器打印权威的 TOOL_BUILD_PLAN、写出 <RunDir>\build-plan.json 并以 TASK_STATUS=build-tools:input_required 暂停。不要用 rg、grep 或临时文件扫描检查生成的 tool.yaml。向客户展示每个工具镜像及 recommendedSkus,说明所列 SKU 是备选 nodepool 选择而非累加要求,每个工具至少需要其中一个 SKU 的容量,然后询问继续或停止,每次运行最多询问一次。若选择 Proceed,带 -ConfirmSupercomputerNodepools 重跑 build-tools;若选择 Stop,立即执行 -Stage stop -RunDir <RunDir>,为全部完整部署任务(init、build-tools、deploy-tools、deploy-agent、summary)输出 TASK_STATUS=<stage>:stopped。默认复用 ACR 已有标签,forceToolImageRebuild: true 可覆盖复用。remote 模式先提交全部 ACR 构建,再分别跟踪;任一构建失败即停止部署并报告失败工具列表。没有 tools*\tool.yaml 的智能体记为跳过。

工作流与任务跟踪

对规划或名称不确定的情况先运行 -WhatIfPlan;校验 starter-kits<starter-kit>\kit.json 存在;解析 agentRefs[].ref 并确保每个 agents<agent>\agent.yaml 存在后再创建 TODO;仅在校验通过后创建原生 Copilot TODO 列表。所有 starter-kit 级运行产物放在 starter-kits\tmp<starter-kit><timestamp>\ 下。在可见 TODO UI 时,完整部署需创建 init、build-tools、deploy-tools、deploy-agent、summary 五个 TODO,且只在命令成功退出或输出 TASK_STATUS=<stage>:done 后标记完成;若输出 input_required,则该阶段保持等待输入而非失败,只收集运行器要求的内容后带 -RunDir 重跑同一阶段;阶段失败则标记失败并报告带 -RunDir 的精确阶段命令。deploy-agent 阶段会为每个源智能体单独部署,回填 discoveryExtensions.tools 指向该智能体部署的工具资源,必要时回填知识库 ID,把修补后的 YAML 写到 <RunDir>\agents\ 下并并行 upsert;不会合成一个合并的 starter-kit 智能体。

报告与限制

完成后应汇总 RUN_DIR、STARTER_KIT、被引用 AGENTS、stage-todos.json 与 summary 输出中的阶段状态、已部署 AGENT_DEPLOYED 名称与本地 AGENT_YAML 文件、已部署 TOOL_DEPLOYED 值,并以「You can now try any of the following prompts to test the deployment:」引出 kit.json 中编号完整的示例提示。失败时报告失败阶段与所需操作;若客户因容量选择 Stop,不提供直接重跑命令,而应说明:"When you have Supercomputer nodepool capacity for at least one of the listed SKUs per tool, rerun the skill."

限制:新配置默认使用 Discovery GA 2026-06-01;本地配置与已保存运行中的显式预览版本保持不变;知识库绑定按所选 API 版本校验;Discovery 目前仅支持 eastus、swedencentral、uksouth 三个区域。构建镜像时本地 Docker 不可用可改用 ACR Tasks。