aps-agent/docs/adr/0002-engine-provider-deploy...

2.0 KiB
Raw Permalink Blame History

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