37 lines
2.0 KiB
Markdown
37 lines
2.0 KiB
Markdown
# 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 或更晚再评估,不预先设计。
|