Java 企业 Agent 平台蓝图:从模块边界到部署拓扑 @ Lin | 2026-09-02T10:00:00+08:00 | 3 分钟阅读 | 更新于 2026-09-12T10:00:00+08:00

串起身份、编排、知识、工具和模型网关,给出可以分阶段实现的平台设计。

本文于 2026-09-12 补充整理,按 2026-09 专题归档。示例为方案设计,参数用于说明方法,不代表已上线项目或实测成果。

从一个业务闭环确定平台边界

这个系列的示例目标是:员工提出问题,系统查找授权范围内的知识,按需查询工单历史,准备明确提案,确认后创建工单,并能在故障后核实结果。

平台蓝图应服务于这个闭环。先把模块职责和数据所有权写清楚,再讨论微服务数量、集群规模或多 Agent。本文是设计蓝图,不代表这些模块已经在本仓库实现。

六个模块如何协作

模块 核心职责 持有的权威数据
任务应用层 创建、取消、查询、流式订阅 任务入口契约
编排运行时 状态推进、预算、租约、恢复 任务状态与检查点
知识服务 入库、检索、引用与版本 文档与索引发布清单
工具执行层 参数校验、授权、审批、幂等 提案与操作账本
模型网关 能力路由、配额、适配、用量 路由与使用记录
评测观测层 版本验收、轨迹关联、告警 评测结果与运行证据

身份由已有认证系统提供,模块之间传递受信任的主体上下文。模型不成为身份源,消息队列也不成为任务状态的唯一权威来源。

核心运行路径

浏览器
  │ 创建任务 / 订阅事件
Java API
  │ 本地事务:任务 + outbox
任务存储 ── 投递器 ── 队列 ── Worker
                              ├─ 知识检索
                              ├─ 模型网关
                              ├─ 工具执行器 ── 工单系统
                              └─ 检查点 / 事件 / 操作账本

任务执行期间,不持有跨越模型调用的长数据库事务。每次状态推进是短事务,外部副作用通过操作标识和结果查询协调。

SSE 可以从事件存储订阅进度。浏览器断线不决定数据库中的任务事实,重连也不会重新发起业务动作。

数据所有权防止模块互相侵入

知识模块负责决定哪些文档版本可检索;工具模块负责判断工单是否实际创建;编排器只保存它们返回的引用和结果,不直接修改所有模块的表。

应用可以共用 PostgreSQL 实例,但应按模块隔离表访问。先建立代码边界和接口契约,后续才有条件按资源需求拆进程。

向量检索若采用 pgvector,仍需由知识模块实现权限、版本和删除流程;数据库扩展提供的是检索能力,不是完整知识治理平台。

分阶段部署更容易验证

第一阶段采用模块化单体,完成只读问答和引用验证。第二阶段加入异步 Worker、操作账本和审批写入。第三阶段在实际负载证明有必要时,独立扩展模型网关或检索服务。

CPU 密集的解析和重排,与主要等待网络的模型调用,可以使用不同工作池或进程。是否独立部署取决于资源争用和故障影响,而不是每个模块都必须一个服务。

共享组件故障时应有明确结果:队列不可用但 outbox 已提交,可显示排队;模型不可用可保留任务等待或返回受控失败;工单响应丢失必须对账。

给平台设定可验收的交付物

最小可验证版本应包括:可重复装载的合成知识集、两个租户、只读问答、一个审批写工具、任务查询接口、异常恢复案例和固定评测集。

后续再加入成本看板、多模型路由和长期记忆。没有一个可恢复的写操作闭环,先建设复杂的 Agent 市场或可视化编排器,很难证明平台解决了核心问题。

面向架构评审,可以沿着“一个请求从哪里来、状态存在哪里、故障后谁负责恢复”讲解全图。每条连线都有数据和责任,图才具有工程意义。


查看系列导读与阅读路线

© 2019 - 2026 Lin 的博客

Powered by Hugo with theme Dream.

avatar
关于我

Lin 的 ❤️ 博客

技术专题:Java Agent 工程化:从知识库问答到可靠业务执行。围绕 RAG、工具治理、任务恢复与 Java 平台架构整理设计思路和验证方法。

记录一些 🌈 生活上,技术上的事

  • 🛠️ 技术阵地: 深耕 Java 开发 ,目前向 AI 应用领域探索与拓展。这里主要记录我从后端架构到 AI 赋能的进阶之路、技术思考以及日常的 debug 血泪史。始终致力于写出优雅且没有 bug 的代码(尽量)。
  • 🌈 生活侧写: 偶尔脱下极客的外衣,我也会在这里分享生活中的灵光一现。不管是好用的效率工具,还是周末的一场骑行,都是构成我真实生活的一部分。