21 KiB
智能化部署 Agent 技术架构设计说明书
1. 文档说明
1.1 文档目的
本文档用于在《智能化部署 Agent 方案建议》基础上,进一步细化系统技术架构设计,作为后续研发、联调、评审、实施和试点落地的依据。
本文档重点回答以下问题:
- 系统由哪些模块组成。
- 云端与本地分别承担什么职责。
- 软件 A 如何被接入和封装。
- Agent 如何安全地调用部署、验证、日志、监控和第三方接口能力。
- 高危动作如何被拦截、确认、审批和审计。
- MVP 阶段应实现哪些能力,哪些能力暂缓。
1.2 适用范围
本文档适用于:
- 研发架构设计。
- 软件 A 集成设计。
- 本地 Agent 设计。
- 安全评审。
- MVP 实施和试点。
1.3 设计原则
- 复用软件 A,避免重复建设部署底座。
- 所有执行必须受控,禁止模型直接自由执行命令。
- 先覆盖标准场景,再扩展复杂场景。
- 结论以工具证据为准,不以模型主观推断为准。
- 安全、审批、审计与功能同级建设。
2. 建设目标
2.1 业务目标
建设一套支持自然语言交互的智能部署与验证 Agent,面向软件交付、实施和运维场景,完成以下工作:
- 触发标准化软件部署,优先支持 Java 应用。
- 调用软件 A 完成部署包推送、配置推送、任务执行和状态查询。
- 执行日志检查、进程检查、端口检查、健康检查、第三方接口联调验证。
- 输出标准化执行报告和结果结论。
- 在生产等高风险场景下实现权限、审批、确认和审计。
2.2 技术目标
- 建立统一的 Agent 编排层。
- 建立统一的工具适配层。
- 建立云端编排与本地执行分离架构。
- 建立统一的任务模型、工具结果模型和审计模型。
- 建立面向高风险动作的安全控制机制。
2.3 MVP 目标
MVP 目标是打通一条完整闭环:
用户自然语言输入 -> Agent 识别任务 -> 策略校验 -> 调用软件 A -> 本地验证 -> 结果汇总 -> 审计留痕
3. 总体架构设计
3.1 架构概览
系统采用"云端智能编排 + 本地受控执行 + 软件 A 作为执行底座"的总体架构。
3.1.1 云端核心职责
- 用户接入与身份认证。
- 大模型推理与任务理解。
- 任务编排与状态流转。
- 风险识别与策略决策。
- 审批、审计和结果归档。
3.1.2 本地核心职责
- 执行云端下发的结构化任务。
- 调用软件 A 本地可达能力。
- 调用本地验证工具。
- 回传结构化结果和执行证据。
3.1.3 软件 A 的职责
- 作为部署和配置下发的主执行引擎。
- 提供部署任务状态查询能力。
- 提供日志、监控、配置等基础运维数据能力。
3.2 架构分层
系统分为六层:
第一层:接入层
负责:
- Web 控制台。
- 企业 IM 机器人。
- OpenAPI 接口。
第二层:会话与任务层
负责:
- 会话管理。
- 用户上下文管理。
- 原始输入记录。
- 任务创建与任务状态管理。
第三层:Agent 编排层
负责:
- 意图识别。
- 参数抽取。
- 缺参澄清。
- 任务规划。
- 工具路由。
- 结果总结。
第四层:策略治理层
负责:
- 身份与权限校验。
- 风险分级。
- 二次确认。
- 审批流。
- 幂等控制。
- 执行限流。
- 审计日志。
第五层:工具适配层
负责:
- 软件 A 适配器。
- 本地验证适配器。
- 第三方接口适配器。
第六层:执行与观测层
负责:
- 云端任务调度。
- 本地 Agent 执行器。
- 日志、指标、Trace、审计采集。
4. 核心模块设计
4.1 接入层
4.1.1 Web 控制台
建议提供以下能力:
- 对话输入。
- 任务执行确认。
- 审批处理。
- 执行报告展示。
- 审计查询。
4.1.2 企业 IM 机器人
适合:
- 快速发起查询类任务。
- 快速发起测试/预发部署任务。
- 审批通知和结果通知。
4.1.3 OpenAPI
用于:
- 第三方系统发起标准任务。
- 自动化平台对接。
- 审批和工单系统集成。
4.2 会话与任务层
4.2.1 会话管理
职责:
- 维护用户会话上下文。
- 关联最近任务。
- 支持多轮澄清。
4.2.2 任务管理
任务状态建议至少包括:
CREATEDPENDING_CONFIRMPENDING_APPROVALRUNNINGVERIFYINGSUCCEEDEDFAILEDPARTIAL_SUCCEEDEDCANCELLED
4.2.3 上下文约束
会话层不应将全部历史数据无边界提供给模型,建议:
- 只传最近相关任务。
- 对日志和工具结果做摘要。
- 通过结构化上下文替代长文本拼接。
4.3 Agent 编排层
建议采用状态机方式实现,优先选择 LangGraph 类框架。
4.3.1 编排节点建议
建议包含以下节点:
intent_parseslot_extracttask_normalizerisk_evaluateconfirm_requiredapproval_requiredtool_dispatchverify_dispatchresult_summarizeaudit_persist
4.3.2 编排输入
输入至少包括:
- 用户信息。
- 原始文本。
- 会话上下文。
- 环境信息。
- 应用元数据。
- 风险规则。
4.3.3 编排输出
输出至少包括:
- 标准化动作类型。
- 结构化参数。
- 风险等级。
- 任务执行计划。
- 工具调用列表。
- 最终结论。
4.4 策略治理层
策略治理层必须在模型之外独立实现。
4.4.1 权限控制
建议同时支持:
- RBAC:按角色授权。
- ABAC:按环境、应用、租户、动作类型做属性控制。
4.4.2 风险分级
建议按以下维度综合计算:
- 环境级别。
- 动作类型。
- 是否影响生产流量。
- 是否涉及配置变更。
- 是否涉及回滚或停机。
4.4.3 审批流
审批流建议支持:
- 单人审批。
- 多级审批。
- 超时失效。
- 审批驳回。
- 审批记录审计。
4.4.4 幂等与并发控制
建议实现:
- 任务唯一请求 ID。
- 同一应用同一环境互斥执行。
- 防止重复部署。
- 防止同一审批结果重复使用。
4.5 工具适配层
4.5.1 设计目标
工具适配层的目标是将不同系统封装成统一可调用能力,避免编排层直接依赖外部系统差异。
4.5.2 统一工具协议
建议每个工具遵循统一协议:
输入:
tool_namerequest_idoperatortargetparams
输出:
successcodemessagedataevidenceretryableduration_mstimestamp
4.5.3 软件 A 适配器
建议封装以下能力:
deploy_packagepush_configstart_servicestop_servicerestart_servicerollback_servicequery_deploy_taskquery_logsquery_alertsquery_metrics
4.5.4 本地验证适配器
建议封装:
check_processcheck_porthttp_health_checktcp_probegrep_logjvm_statusdisk_space_check
4.5.5 第三方接口适配器
建议封装:
invoke_http_apiquery_cmdbquery_config_centercreate_ticketsend_notification
4.6 本地 Agent 执行器
4.6.1 核心职责
- 校验任务签名。
- 鉴权与策略匹配。
- 执行工具调用。
- 采集执行证据。
- 回传执行结果。
4.6.2 执行约束
- 不提供自由 Shell 能力。
- 仅允许调用白名单工具。
- 每个工具独立参数校验。
- 每个工具有超时控制。
- 每次执行都写审计日志。
5. 云端与本地部署架构
5.1 部署拓扑
建议部署为两部分:
云端服务
- API 网关。
- Agent 编排服务。
- 策略引擎服务。
- 审批与审计服务。
- 元数据服务。
- 任务中心。
- 模型网关。
本地服务
- 本地 Agent。
- 本地工具插件。
- 本地缓存与任务队列。
- 本地审计日志模块。
5.1.1 本地部署环境约束
本地 Agent 部署环境确认为混合环境,需同时支持 Windows 和 Linux,并根据用户现场环境选择部署方式。
因此架构上需满足:
- 本地 Agent 核心能力跨平台一致。
- 工具插件按操作系统实现适配层。
- 进程检查、端口检查、日志采集、服务控制等能力需区分 Windows 与 Linux 实现。
- 打包、安装、升级和日志路径配置需支持双平台差异。
5.2 通信模式
建议采用"云端下发结构化任务,本地回传结构化结果"的方式,避免传输自由文本命令。
通信要求:
- 双向 TLS。
- 设备身份认证。
- 请求签名。
- 任务过期时间。
- 重放保护。
5.3 弱网与离线处理
建议支持:
- 本地任务重试。
- 网络恢复后结果补传。
- 审批未完成任务不得离线执行。
- 高风险任务必须在线校验策略。
6. 软件 A 集成设计
6.1 集成方式
优先级建议如下:
- 首选 API / SDK 集成。
- 其次通过网关封装内部接口。
- 不建议通过页面自动化方式集成。
当前确认前提如下:
- MVP 阶段不直接对接真实软件 A。
- 需要先开发一个满足当前需求的 demo 版软件 A 接口层或模拟服务。
- 后续对接真实软件 A 时,预计仍需做接口适配或能力改造。
6.2 软件 A 接口能力清单
建议与软件 A 对接时确认以下能力:
- 部署任务创建。
- 配置推送。
- 应用启停。
- 回滚能力。
- 任务状态查询。
- 日志查询。
- 告警查询。
- 指标查询。
- 应用拓扑查询。
- 权限透传或操作者记录。
基于当前已知前提,MVP 阶段建议 demo 版软件 A 至少提供以下能力:
- 部署任务创建与任务状态查询。
- 配置推送。
- 服务启停与重启。
- 基础日志查询。
- 操作者标识透传。
- 基础权限控制或最小可用权限校验。
6.3 软件 A 适配器设计要求
- 对外暴露统一语义接口。
- 屏蔽软件 A 错误码差异。
- 将软件 A 错误转换为统一错误模型。
- 保留软件 A 原始任务 ID 以便追溯。
- 适配器接口需同时兼容 demo 版软件 A 和后续真实软件 A。
- 适配器内部应预留能力探测和版本兼容机制,避免后续接入真实软件 A 时推翻上层编排逻辑。
6.4 失败处理设计
需要区分:
- 调用失败。
- 任务创建成功但执行失败。
- 软件 A 返回成功但验证失败。
- 查询超时或状态不确定。
对于 MVP 阶段,还需要额外区分:
- demo 版软件 A 能力未实现。
- demo 版接口与未来真实软件 A 语义不一致。
- 真实软件 A 接入后因接口缺口需要降级处理。
7. 数据模型设计
本说明书中的时间字段,例如 created_at、updated_at、started_at、finished_at、timestamp,统一采用 yyyy-MM-dd HH:mm:ss.SSS 字符串格式,默认时区为 Asia/Shanghai。
字段命名建议统一遵循以下规范:
- JSON 字段统一采用
snake_case。 - 主键和关联键统一使用
*_id。 - 状态字段统一使用
*_status。 - 类型字段统一使用
*_type。 - 时间点字段统一使用
*_at,通用响应时间可使用timestamp。 - 毫秒级耗时统一使用
*_ms。 - 数量统计统一使用
*_count。 - 集合字段优先使用复数名词。
7.1 应用元数据模型
建议字段:
app_codeapp_nameenvdeploy_typepackage_typeservice_start_modehealth_check_urllog_pathslisten_portsdependenciesconfig_templatesrollback_policyownerrisk_level
7.2 任务模型
建议字段:
task_idsession_idtenant_idoperatorintent_typeaction_typeapp_codeenvversiontarget_nodesrisk_levelapproval_statustask_statusplan_snapshotresult_summarycreated_atupdated_at
7.3 工具调用模型
建议字段:
tool_call_idtask_idtool_namerequest_payloadresponse_payloadsuccessduration_msstarted_atfinished_at
7.4 审计模型
建议字段:
audit_idtask_idoperatoractiontargetrisk_levelapproval_tracetool_traceresulttimestamp
8. 接口设计建议
8.1 对话任务接口
8.1.1 创建任务
POST /api/agent/tasks
请求示例字段:
input_textchannelsession_idtenant_id
返回字段:
task_idparsed_intentmissing_slotsrisk_levelnext_action
8.1.2 查询任务状态
GET /api/agent/tasks/{task_id}
返回字段:
task_statusapproval_statustool_callsverification_resultsummary
8.2 审批接口
8.2.1 提交审批
POST /api/agent/approvals
8.2.2 审批通过/驳回
POST /api/agent/approvals/{approval_id}/decision
8.3 本地 Agent 回调接口
8.3.1 拉取任务
POST /api/agent/edge/tasks/pull
8.3.2 回传结果
POST /api/agent/edge/tasks/report
8.4 软件 A 适配器内部接口
建议内部抽象接口:
create_deploy_taskquery_deploy_taskpush_configrestart_servicequery_logsquery_metrics
9. 关键流程设计
9.1 部署流程
- 用户输入部署请求。
- Agent 解析意图并抽取参数。
- 若缺参则澄清。
- 风险引擎计算风险等级。
- 若需确认或审批,则进入等待状态。
- 调用软件 A 创建部署任务。
- 查询部署状态直到完成或超时。
- 调用本地验证工具执行校验。
- 汇总证据并输出结论。
- 写入审计。
9.2 日志查询流程
- 用户输入日志查询请求。
- Agent 识别应用、环境、时间范围和关键字。
- 调用软件 A 或本地日志工具查询。
- 进行摘要和异常聚合。
- 输出结果。
9.3 第三方接口联调验证流程
- 用户输入联调验证请求。
- Agent 路由到第三方接口工具。
- 获取响应码、响应体、耗时。
- 必要时结合日志和监控交叉验证。
- 输出验证结论。
9.4 生产环境高危操作流程
- 判定为高风险操作。
- 执行权限校验。
- 执行二次确认。
- 发起审批。
- 审批通过后再执行。
- 执行完成后自动验证。
- 写入完整审计链路。
10. 安全设计
10.1 身份认证
建议:
- 用户通过统一身份认证系统接入。
- 本地 Agent 使用设备证书认证。
- 内部服务间使用服务身份认证。
当前确认前提如下:
- 现网可能已有身份系统标准接口,但当前阶段无法直接接入。
- MVP 阶段需开发 demo 版身份能力,用于完成登录、用户识别、角色识别和基础鉴权闭环。
10.2 权限控制
按以下维度控制:
- 用户角色。
- 租户。
- 应用。
- 环境。
- 动作类型。
当前确认前提如下:
- 现网审批系统可能已有标准接口,但当前阶段无法直接接入。
- MVP 阶段需提供 demo 版审批能力,至少支持提交审批、审批通过、审批驳回和审批记录。
10.3 敏感数据保护
- Token、密钥、密码不进入模型上下文。
- 日志和配置默认脱敏。
- 用户展示层默认隐藏敏感字段。
10.4 Prompt Injection 防护
- 所有日志、接口响应、配置文本视为不可信数据。
- 不允许外部文本影响系统策略与审批逻辑。
- 模型只能建议,不直接突破策略层。
10.5 本地执行安全
- 工具白名单。
- 参数白名单和格式校验。
- 最小系统权限运行。
- 限制出站访问范围。
- 每个工具独立超时和资源限制。
10.6 审计要求
必须审计:
- 原始输入。
- 解析结果。
- 风险结果。
- 审批结果。
- 工具调用。
- 验证结果。
- 最终结论。
11. 非功能设计
11.1 可用性
- 核心服务支持水平扩展。
- 任务执行状态可恢复。
- 外部系统短时失败可重试。
11.2 稳定性
- 每类工具单独超时控制。
- 异常分类处理。
- 长任务支持轮询与中断。
11.3 可观测性
建议采集:
- 接口日志。
- 工具调用日志。
- 任务状态流转日志。
- Trace。
- 指标监控。
11.4 可扩展性
- 工具插件化。
- 应用元数据可配置化。
- 策略规则可扩展。
- 支持后续增加更多部署类型和中间件类型。
12. 技术选型建议
12.1 编排框架
推荐:
- LangGraph 作为核心编排框架。
理由:
- 更适合状态机和受控执行流程。
- 更适合插入确认、审批和人工干预。
- 更适合长期维护和审计追溯。
12.2 快速原型方案
如果需要快速演示,可选:
- Dify 作为前台工作流和对话原型。
但长期建议迁移回代码化编排。
12.3 执行引擎
推荐:
- 软件 A 作为主执行引擎。
- AWX 或 Rundeck 作为补充能力,不作为主底座。
落地约束:
- MVP 阶段由 demo 版软件 A 承担主执行引擎角色。
- 正式阶段再对接真实软件 A,并通过适配层完成平滑切换。
12.4 模型接入
建议采用模型网关方式,屏蔽底层模型差异,并统一处理:
- Prompt 模板。
- 模型选择。
- 调用审计。
- 敏感信息过滤。
模型接入前提已确认如下:
- 模型接入方式支持自定义
base_url和api_key。 - 因此架构上不强制限定为公有云模型或私有化模型。
- 模型网关需支持多模型源配置、动态切换和按租户配置接入参数。
- 模型网关需支持最小化敏感信息透传和调用审计。
13. MVP 范围与边界
13.1 MVP 纳入范围
- Java 应用标准部署。
- 配置推送。
- 服务启停/重启。
- 日志查询。
- 进程/端口/HTTP 健康检查。
- 审批和二次确认。
- 审计留痕。
13.2 MVP 暂不纳入
- 任意命令执行。
- 复杂自治型多 Agent。
- 自动根因分析闭环。
- 无人审批的生产自动处置。
- 全类型应用和全中间件覆盖。
14. 实施建议
14.1 第一阶段:接口与元数据梳理
输出:
- 软件 A 接口清单。
- 试点应用元数据模板。
- 风险规则表。
- 工具协议定义。
14.2 第二阶段:核心链路开发
输出:
- 对话任务接口。
- 编排服务。
- 软件 A 适配器。
- 本地 Agent 基础执行器。
- 基础验证插件。
14.3 第三阶段:治理能力补齐
输出:
- 审批接入。
- 审计中心。
- 任务中心。
- 权限模型。
14.4 第四阶段:试点与优化
输出:
- 试点应用上线。
- 指标统计。
- 问题闭环与优化清单。
15. 已确认前提与实施约束
以下前提已确认,可作为后续研发与实施的固定输入:
- 当前不直接对接真实软件 A,MVP 阶段需开发 demo 版软件 A;后续对接真实软件 A 时可能仍需开发改造。
- 软件 A 的操作者透传和权限控制在 MVP 阶段由 demo 版能力承接,正式对接真实软件 A 时再评估透传和鉴权改造方案。
- 本地 Agent 部署环境为 Windows 和 Linux 混合环境,需按用户现场环境适配。
- 试点应用部署方式统一,这有利于先沉淀标准任务模型、标准验证模型和标准回滚策略。
- 审批系统和身份系统理论上有标准接口,但当前阶段无法直接提供,MVP 阶段需开发 demo 版能力闭环。
- 模型接入采用自定义
base_url和api_key的方式,因此模型网关必须支持灵活配置,不预设单一模型厂商。
基于以上前提,对实施的直接影响如下:
- MVP 应优先验证编排层、策略层、本地执行器和统一工具协议,不以真实外部系统对接完成度作为第一阶段阻塞项。
- 软件 A、审批系统、身份系统均需采用"适配层 + demo 实现 + 后续真实替换"的分层设计。
- 本地工具体系必须从一开始就考虑跨平台实现,避免后续从单平台重构。
- 试点应用部署方式统一,可优先围绕单一部署范式建设模板化能力。
- 模型网关需在配置、审计、安全过滤层面先抽象清楚,避免后续因模型源变化重构上层调用链路。
16. 结论
推荐将本项目建设为"受控执行型部署 Agent 平台",以软件 A 为执行底座,以 LangGraph 为编排核心,以本地 Agent 为边缘执行节点,以策略治理层保障高危动作安全。
从工程落地看,最关键的不是模型能力本身,而是以下四点:
- 软件 A 能否提供稳定可调用接口。
- 应用元数据是否完整。
- 本地执行是否足够受控。
- 审批、权限、审计是否能真正闭环。
如果以上四点落实,本项目具备较强的 MVP 落地可行性。