# ADR-0002:引擎与 Provider 的部署形态 - **状态**:已接受 - **日期**:2026-09-22 - **决策人**:技术负责人 - **相关**:任务表 A0.3(决策 D1);设计文档《架构设计》第 6 节 ## 背景 平台要调用 APS、ERP、EMS 这些业务系统。Provider(能力适配器)跑在平台进程里,还是跑成独立服务,决定了三件事:实现复杂度、故障隔离程度、以及凭据怎么交给 Provider。 约束:「凭据不进模型上下文、不落日志」是硬要求;首版只有内部团队接入,没有第三方;工厂内网部署。 ## 选项 | 选项 | 做法 | 代价 | 不选的理由 | | --- | --- | --- | --- | | A 进程内 Provider | Core 按 execution 注入短期凭据,Provider 与平台同进程 | 实现简单、无网络鉴权、调试直接 | 选定 | | B 跨进程 Provider 服务 | 独立服务,双向认证 + 一次性凭据 | 隔离好、可独立发版 | 首版就把鉴权、序列化、部署复杂度前置 | ## 结论 选 A:首版 Provider 运行在平台信任域内,Core 按 execution 注入短期凭据,Provider 不落库、不缓存。 代价用三条约束兜住:**Provider 不得阻塞事件循环**;**重活走异步任务**;**每类调用带超时**。跨进程模式留给第三方接入或 Provider 需要独立发版时启用。 ## 影响 - **对代码**:`providers/` 与 `server/core/execution` 同进程运行;`server/provider-sdk/http.ts` 先写好,供将来切跨进程时复用,不改 Provider 实现 - **对任务**:A2 的假 Provider、A5 的首个真实 Provider 都按进程内实现;B5 的契约化接口做成 HTTP,正是为了将来能平滑切成跨进程 - **对文档**:设计文档《架构设计》第 6 节「Provider 契约」 - **不这么做的后果**:首版做跨进程,团队要先把鉴权体系、序列化协议、服务发现做出来,才写第一个能力 ## 遗留 跨进程模式的启动条件:第三方团队接入,或某个 Provider 需要独立发版。到 A8 或更晚再评估,不预先设计。