方案优先流水线
selling_solution_first 是一条面向阿里云购买场景的流水线。它会先让您比较架构方案,再由 IaC Code 生成 ROS 模板;只实现并询价最终选中的方案,减少在不会部署的候选方案上花费的时间。
现有 selling 流水线仍然可用,并且仍是默认值。新流水线是需要显式选择的另一种方案,不会改变已有的 selling 会话。
适用场景
当您希望完成以下工作时,可以使用 selling_solution_first:
- 在实现前比较多种架构、云产品、费用、优点和风险;
- 在确定模板前补充地域、规模、网络、可用性或预算等信息;
- 只为选中的架构生成模板、执行预览和询价;
- 在创建云资源前核对最终 ROS 参数和精确报价。
| 流水线 | 工作顺序 |
|---|---|
selling | 生成并评估候选模板,选择一个方案,然后部署。 |
selling_solution_first | 规划并选择架构,只实现选中的方案,然后部署。 |
启动流水线
在交互式终端中运行:
IAC_CODE_MODE=pipeline \
IAC_CODE_PIPELINE_NAME=selling_solution_first \
iac-code
使用本地 Web 应用时,请在创建会话时选择流水线模式,并用指定的流水线名称启动服务:
IAC_CODE_PIPELINE_NAME=selling_solution_first iac-code web
通过 A2A 调用时,可以在每条消息中选择模式和流水线,而不必修改服务器默认值:
{
"metadata": {
"iac_code": {
"run_mode": "pipeline",
"pipeline_name": "selling_solution_first",
"preferredLanguage": "zh",
"candidatePresentation": "rich-v1"
}
}
}
pipeline_name 只接受 selling 和 selling_solution_first。不受支持的非空值会直接报错,不会静默运行另一条流水线。继续已保存的流水线时,应复用相同的 A2A contextId;持久化快照中的流水线标识是权威值。
三个阶段
1. 规划并选择方案
IaC Code 首先判断请求是否属于支持的阿里云基础设施任务。如果缺失的信息会明显影响产品组合、拓扑或价格,它会有针对性地提问。
随后会展示一到三个可比较的方案。每个方案可以包含:
- 架构图和拓扑;
- 阿里云产品和资源清单;
- 推荐规格和硬约束;
- 适用场景和解决的问题;
- 用于比较的月度粗估费用;
- 优点、缺点、风险和推荐理由。
您可以选择一个方案、调整需求并重新生成一组方案,或者取消。在这个阶段不会生成 ROS 模板,也不会创建云资源。
2. 实现选中的方案
IaC Code 只处理选中的方案。它会生成并写入 ROS 模板、校验模板、求解必填参数、运行 PreviewStack,并请求 ROS 精确询价。
部署前,界面会展示最终架构、模板参数和报价。您可以:
- 确认部署;
- 修改允许调整的参数并重新计算;
- 返回第一阶段,选择或规划其他方案;
- 取消且不创建云资源。
第一阶段的粗估费用和第二阶段的 ROS 精确报价是两个不同的值。部署确认以精确报价和当前模板参数为准。
3. 部署
确认后,IaC Code 会创建 ROS 资源栈、流式输出权威的资源栈进度、等待终态,并记录资源栈 ID 和输出。部署失败的信息会保留下来,便于诊断和恢复。
部署确认与工具权限
部署确认和工具权限是两个独立的安全边界:
- 部署确认表示您接受所选方案、参数和报价。
- 工具权限授权本次执行中的具体云变更调用,例如
ros:CreateStack或vpc:CreateVpc。
批准第一项不会自动批准第二项。工具需要权限时,IaC Code 会在调用点暂停并展示安全的权限请求。只读、变更和删除操作会使用不同的提示。云 API 详情可以包含产品、API、地域、API 调用顺序以及脱敏参数;凭证、令牌、签名和其他敏感值不会进入展示字段。
用户可以选择仅本次允许或拒绝。权限决定会与具体请求精确关联,并写入权限审计日志。如果必需的审计记录无法持久化,允许决定会按失败关闭原则被拒绝。
暂停、恢复与交接
方案选择、问题、部署确认和权限请求都是可恢复的等待点。IaC Code 会在依赖调用方继续操作前持久化流水线快照。进程重启或会话重新加载后,界面会重建已完成的步骤,并把待处理输入恢复到原来的位置,而不是全部堆到会话末尾。
对于 A2A 集成:
permission_requested和permission_resolved事件会保留所属步骤和候选坐标;- 恢复后的任务快照通过
pendingPermissions暴露尚未处理的请求; - 通过旁路消息返回权限决定后,会恢复原 task 和 context;
- 重复发送同一个决定具有幂等性,冲突的决定会被拒绝。
流水线完成、失败、提前退出或取消后,会把同一个上下文交接给普通对话。后续请求可以继续使用所选方案、生成的模板、部署结果和清理状态,无需新建会话。
界面与语言
该流水线支持交互式终端、本地 Web 应用、Desktop Web 外壳、SDK 进程模式和 A2A 服务器模式。不同界面的展示能力有所不同,例如 A2A 可以请求结构化的 rich-v1 候选方案,但它们共享相同的流水线状态和安全边界。
面向用户的流水线文本支持英语、简体中文、西班牙语、法语、德语、日语和葡萄牙语。A2A 调用方通过 metadata.iac_code.preferredLanguage 选择单次请求的语言;协议字段名、枚举值、ID 和 JSON 结构不会翻译。