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