auto_agent/智能化部署agent-技术架构设计说明书.md
2026-04-08 19:28:26 +08:00

21 KiB

智能化部署 Agent 技术架构设计说明书

1. 文档说明

1.1 文档目的

本文档用于在《智能化部署 Agent 方案建议》基础上,进一步细化系统技术架构设计,作为后续研发、联调、评审、实施和试点落地的依据。

本文档重点回答以下问题:

  1. 系统由哪些模块组成。
  2. 云端与本地分别承担什么职责。
  3. 软件 A 如何被接入和封装。
  4. Agent 如何安全地调用部署、验证、日志、监控和第三方接口能力。
  5. 高危动作如何被拦截、确认、审批和审计。
  6. MVP 阶段应实现哪些能力,哪些能力暂缓。

1.2 适用范围

本文档适用于:

  1. 研发架构设计。
  2. 软件 A 集成设计。
  3. 本地 Agent 设计。
  4. 安全评审。
  5. MVP 实施和试点。

1.3 设计原则

  1. 复用软件 A,避免重复建设部署底座。
  2. 所有执行必须受控,禁止模型直接自由执行命令。
  3. 先覆盖标准场景,再扩展复杂场景。
  4. 结论以工具证据为准,不以模型主观推断为准。
  5. 安全、审批、审计与功能同级建设。

2. 建设目标

2.1 业务目标

建设一套支持自然语言交互的智能部署与验证 Agent,面向软件交付、实施和运维场景,完成以下工作:

  1. 触发标准化软件部署,优先支持 Java 应用。
  2. 调用软件 A 完成部署包推送、配置推送、任务执行和状态查询。
  3. 执行日志检查、进程检查、端口检查、健康检查、第三方接口联调验证。
  4. 输出标准化执行报告和结果结论。
  5. 在生产等高风险场景下实现权限、审批、确认和审计。

2.2 技术目标

  1. 建立统一的 Agent 编排层。
  2. 建立统一的工具适配层。
  3. 建立云端编排与本地执行分离架构。
  4. 建立统一的任务模型、工具结果模型和审计模型。
  5. 建立面向高风险动作的安全控制机制。

2.3 MVP 目标

MVP 目标是打通一条完整闭环:

用户自然语言输入 -> Agent 识别任务 -> 策略校验 -> 调用软件 A -> 本地验证 -> 结果汇总 -> 审计留痕


3. 总体架构设计

3.1 架构概览

系统采用"云端智能编排 + 本地受控执行 + 软件 A 作为执行底座"的总体架构。

3.1.1 云端核心职责

  1. 用户接入与身份认证。
  2. 大模型推理与任务理解。
  3. 任务编排与状态流转。
  4. 风险识别与策略决策。
  5. 审批、审计和结果归档。

3.1.2 本地核心职责

  1. 执行云端下发的结构化任务。
  2. 调用软件 A 本地可达能力。
  3. 调用本地验证工具。
  4. 回传结构化结果和执行证据。

3.1.3 软件 A 的职责

  1. 作为部署和配置下发的主执行引擎。
  2. 提供部署任务状态查询能力。
  3. 提供日志、监控、配置等基础运维数据能力。

3.2 架构分层

系统分为六层:

第一层:接入层

负责:

  1. Web 控制台。
  2. 企业 IM 机器人。
  3. OpenAPI 接口。

第二层:会话与任务层

负责:

  1. 会话管理。
  2. 用户上下文管理。
  3. 原始输入记录。
  4. 任务创建与任务状态管理。

第三层:Agent 编排层

负责:

  1. 意图识别。
  2. 参数抽取。
  3. 缺参澄清。
  4. 任务规划。
  5. 工具路由。
  6. 结果总结。

第四层:策略治理层

负责:

  1. 身份与权限校验。
  2. 风险分级。
  3. 二次确认。
  4. 审批流。
  5. 幂等控制。
  6. 执行限流。
  7. 审计日志。

第五层:工具适配层

负责:

  1. 软件 A 适配器。
  2. 本地验证适配器。
  3. 第三方接口适配器。

第六层:执行与观测层

负责:

  1. 云端任务调度。
  2. 本地 Agent 执行器。
  3. 日志、指标、Trace、审计采集。

4. 核心模块设计

4.1 接入层

4.1.1 Web 控制台

建议提供以下能力:

  1. 对话输入。
  2. 任务执行确认。
  3. 审批处理。
  4. 执行报告展示。
  5. 审计查询。

4.1.2 企业 IM 机器人

适合:

  1. 快速发起查询类任务。
  2. 快速发起测试/预发部署任务。
  3. 审批通知和结果通知。

4.1.3 OpenAPI

用于:

  1. 第三方系统发起标准任务。
  2. 自动化平台对接。
  3. 审批和工单系统集成。

4.2 会话与任务层

4.2.1 会话管理

职责:

  1. 维护用户会话上下文。
  2. 关联最近任务。
  3. 支持多轮澄清。

4.2.2 任务管理

任务状态建议至少包括:

  1. CREATED
  2. PENDING_CONFIRM
  3. PENDING_APPROVAL
  4. RUNNING
  5. VERIFYING
  6. SUCCEEDED
  7. FAILED
  8. PARTIAL_SUCCEEDED
  9. CANCELLED

4.2.3 上下文约束

会话层不应将全部历史数据无边界提供给模型,建议:

  1. 只传最近相关任务。
  2. 对日志和工具结果做摘要。
  3. 通过结构化上下文替代长文本拼接。

4.3 Agent 编排层

建议采用状态机方式实现,优先选择 LangGraph 类框架。

4.3.1 编排节点建议

建议包含以下节点:

  1. intent_parse
  2. slot_extract
  3. task_normalize
  4. risk_evaluate
  5. confirm_required
  6. approval_required
  7. tool_dispatch
  8. verify_dispatch
  9. result_summarize
  10. audit_persist

4.3.2 编排输入

输入至少包括:

  1. 用户信息。
  2. 原始文本。
  3. 会话上下文。
  4. 环境信息。
  5. 应用元数据。
  6. 风险规则。

4.3.3 编排输出

输出至少包括:

  1. 标准化动作类型。
  2. 结构化参数。
  3. 风险等级。
  4. 任务执行计划。
  5. 工具调用列表。
  6. 最终结论。

4.4 策略治理层

策略治理层必须在模型之外独立实现。

4.4.1 权限控制

建议同时支持:

  1. RBAC:按角色授权。
  2. ABAC:按环境、应用、租户、动作类型做属性控制。

4.4.2 风险分级

建议按以下维度综合计算:

  1. 环境级别。
  2. 动作类型。
  3. 是否影响生产流量。
  4. 是否涉及配置变更。
  5. 是否涉及回滚或停机。

4.4.3 审批流

审批流建议支持:

  1. 单人审批。
  2. 多级审批。
  3. 超时失效。
  4. 审批驳回。
  5. 审批记录审计。

4.4.4 幂等与并发控制

建议实现:

  1. 任务唯一请求 ID。
  2. 同一应用同一环境互斥执行。
  3. 防止重复部署。
  4. 防止同一审批结果重复使用。

4.5 工具适配层

4.5.1 设计目标

工具适配层的目标是将不同系统封装成统一可调用能力,避免编排层直接依赖外部系统差异。

4.5.2 统一工具协议

建议每个工具遵循统一协议:

输入:

  1. tool_name
  2. request_id
  3. operator
  4. target
  5. params

输出:

  1. success
  2. code
  3. message
  4. data
  5. evidence
  6. retryable
  7. duration_ms
  8. timestamp

4.5.3 软件 A 适配器

建议封装以下能力:

  1. deploy_package
  2. push_config
  3. start_service
  4. stop_service
  5. restart_service
  6. rollback_service
  7. query_deploy_task
  8. query_logs
  9. query_alerts
  10. query_metrics

4.5.4 本地验证适配器

建议封装:

  1. check_process
  2. check_port
  3. http_health_check
  4. tcp_probe
  5. grep_log
  6. jvm_status
  7. disk_space_check

4.5.5 第三方接口适配器

建议封装:

  1. invoke_http_api
  2. query_cmdb
  3. query_config_center
  4. create_ticket
  5. send_notification

4.6 本地 Agent 执行器

4.6.1 核心职责

  1. 校验任务签名。
  2. 鉴权与策略匹配。
  3. 执行工具调用。
  4. 采集执行证据。
  5. 回传执行结果。

4.6.2 执行约束

  1. 不提供自由 Shell 能力。
  2. 仅允许调用白名单工具。
  3. 每个工具独立参数校验。
  4. 每个工具有超时控制。
  5. 每次执行都写审计日志。

5. 云端与本地部署架构

5.1 部署拓扑

建议部署为两部分:

云端服务

  1. API 网关。
  2. Agent 编排服务。
  3. 策略引擎服务。
  4. 审批与审计服务。
  5. 元数据服务。
  6. 任务中心。
  7. 模型网关。

本地服务

  1. 本地 Agent。
  2. 本地工具插件。
  3. 本地缓存与任务队列。
  4. 本地审计日志模块。

5.1.1 本地部署环境约束

本地 Agent 部署环境确认为混合环境,需同时支持 Windows 和 Linux,并根据用户现场环境选择部署方式。

因此架构上需满足:

  1. 本地 Agent 核心能力跨平台一致。
  2. 工具插件按操作系统实现适配层。
  3. 进程检查、端口检查、日志采集、服务控制等能力需区分 Windows 与 Linux 实现。
  4. 打包、安装、升级和日志路径配置需支持双平台差异。

5.2 通信模式

建议采用"云端下发结构化任务,本地回传结构化结果"的方式,避免传输自由文本命令。

通信要求:

  1. 双向 TLS。
  2. 设备身份认证。
  3. 请求签名。
  4. 任务过期时间。
  5. 重放保护。

5.3 弱网与离线处理

建议支持:

  1. 本地任务重试。
  2. 网络恢复后结果补传。
  3. 审批未完成任务不得离线执行。
  4. 高风险任务必须在线校验策略。

6. 软件 A 集成设计

6.1 集成方式

优先级建议如下:

  1. 首选 API / SDK 集成。
  2. 其次通过网关封装内部接口。
  3. 不建议通过页面自动化方式集成。

当前确认前提如下:

  1. MVP 阶段不直接对接真实软件 A。
  2. 需要先开发一个满足当前需求的 demo 版软件 A 接口层或模拟服务。
  3. 后续对接真实软件 A 时,预计仍需做接口适配或能力改造。

6.2 软件 A 接口能力清单

建议与软件 A 对接时确认以下能力:

  1. 部署任务创建。
  2. 配置推送。
  3. 应用启停。
  4. 回滚能力。
  5. 任务状态查询。
  6. 日志查询。
  7. 告警查询。
  8. 指标查询。
  9. 应用拓扑查询。
  10. 权限透传或操作者记录。

基于当前已知前提,MVP 阶段建议 demo 版软件 A 至少提供以下能力:

  1. 部署任务创建与任务状态查询。
  2. 配置推送。
  3. 服务启停与重启。
  4. 基础日志查询。
  5. 操作者标识透传。
  6. 基础权限控制或最小可用权限校验。

6.3 软件 A 适配器设计要求

  1. 对外暴露统一语义接口。
  2. 屏蔽软件 A 错误码差异。
  3. 将软件 A 错误转换为统一错误模型。
  4. 保留软件 A 原始任务 ID 以便追溯。
  5. 适配器接口需同时兼容 demo 版软件 A 和后续真实软件 A。
  6. 适配器内部应预留能力探测和版本兼容机制,避免后续接入真实软件 A 时推翻上层编排逻辑。

6.4 失败处理设计

需要区分:

  1. 调用失败。
  2. 任务创建成功但执行失败。
  3. 软件 A 返回成功但验证失败。
  4. 查询超时或状态不确定。

对于 MVP 阶段,还需要额外区分:

  1. demo 版软件 A 能力未实现。
  2. demo 版接口与未来真实软件 A 语义不一致。
  3. 真实软件 A 接入后因接口缺口需要降级处理。

7. 数据模型设计

本说明书中的时间字段,例如 created_atupdated_atstarted_atfinished_attimestamp,统一采用 yyyy-MM-dd HH:mm:ss.SSS 字符串格式,默认时区为 Asia/Shanghai

字段命名建议统一遵循以下规范:

  1. JSON 字段统一采用 snake_case
  2. 主键和关联键统一使用 *_id
  3. 状态字段统一使用 *_status
  4. 类型字段统一使用 *_type
  5. 时间点字段统一使用 *_at,通用响应时间可使用 timestamp
  6. 毫秒级耗时统一使用 *_ms
  7. 数量统计统一使用 *_count
  8. 集合字段优先使用复数名词。

7.1 应用元数据模型

建议字段:

  1. app_code
  2. app_name
  3. env
  4. deploy_type
  5. package_type
  6. service_start_mode
  7. health_check_url
  8. log_paths
  9. listen_ports
  10. dependencies
  11. config_templates
  12. rollback_policy
  13. owner
  14. risk_level

7.2 任务模型

建议字段:

  1. task_id
  2. session_id
  3. tenant_id
  4. operator
  5. intent_type
  6. action_type
  7. app_code
  8. env
  9. version
  10. target_nodes
  11. risk_level
  12. approval_status
  13. task_status
  14. plan_snapshot
  15. result_summary
  16. created_at
  17. updated_at

7.3 工具调用模型

建议字段:

  1. tool_call_id
  2. task_id
  3. tool_name
  4. request_payload
  5. response_payload
  6. success
  7. duration_ms
  8. started_at
  9. finished_at

7.4 审计模型

建议字段:

  1. audit_id
  2. task_id
  3. operator
  4. action
  5. target
  6. risk_level
  7. approval_trace
  8. tool_trace
  9. result
  10. timestamp

8. 接口设计建议

8.1 对话任务接口

8.1.1 创建任务

POST /api/agent/tasks

请求示例字段:

  1. input_text
  2. channel
  3. session_id
  4. tenant_id

返回字段:

  1. task_id
  2. parsed_intent
  3. missing_slots
  4. risk_level
  5. next_action

8.1.2 查询任务状态

GET /api/agent/tasks/{task_id}

返回字段:

  1. task_status
  2. approval_status
  3. tool_calls
  4. verification_result
  5. summary

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 适配器内部接口

建议内部抽象接口:

  1. create_deploy_task
  2. query_deploy_task
  3. push_config
  4. restart_service
  5. query_logs
  6. query_metrics

9. 关键流程设计

9.1 部署流程

  1. 用户输入部署请求。
  2. Agent 解析意图并抽取参数。
  3. 若缺参则澄清。
  4. 风险引擎计算风险等级。
  5. 若需确认或审批,则进入等待状态。
  6. 调用软件 A 创建部署任务。
  7. 查询部署状态直到完成或超时。
  8. 调用本地验证工具执行校验。
  9. 汇总证据并输出结论。
  10. 写入审计。

9.2 日志查询流程

  1. 用户输入日志查询请求。
  2. Agent 识别应用、环境、时间范围和关键字。
  3. 调用软件 A 或本地日志工具查询。
  4. 进行摘要和异常聚合。
  5. 输出结果。

9.3 第三方接口联调验证流程

  1. 用户输入联调验证请求。
  2. Agent 路由到第三方接口工具。
  3. 获取响应码、响应体、耗时。
  4. 必要时结合日志和监控交叉验证。
  5. 输出验证结论。

9.4 生产环境高危操作流程

  1. 判定为高风险操作。
  2. 执行权限校验。
  3. 执行二次确认。
  4. 发起审批。
  5. 审批通过后再执行。
  6. 执行完成后自动验证。
  7. 写入完整审计链路。

10. 安全设计

10.1 身份认证

建议:

  1. 用户通过统一身份认证系统接入。
  2. 本地 Agent 使用设备证书认证。
  3. 内部服务间使用服务身份认证。

当前确认前提如下:

  1. 现网可能已有身份系统标准接口,但当前阶段无法直接接入。
  2. MVP 阶段需开发 demo 版身份能力,用于完成登录、用户识别、角色识别和基础鉴权闭环。

10.2 权限控制

按以下维度控制:

  1. 用户角色。
  2. 租户。
  3. 应用。
  4. 环境。
  5. 动作类型。

当前确认前提如下:

  1. 现网审批系统可能已有标准接口,但当前阶段无法直接接入。
  2. MVP 阶段需提供 demo 版审批能力,至少支持提交审批、审批通过、审批驳回和审批记录。

10.3 敏感数据保护

  1. Token、密钥、密码不进入模型上下文。
  2. 日志和配置默认脱敏。
  3. 用户展示层默认隐藏敏感字段。

10.4 Prompt Injection 防护

  1. 所有日志、接口响应、配置文本视为不可信数据。
  2. 不允许外部文本影响系统策略与审批逻辑。
  3. 模型只能建议,不直接突破策略层。

10.5 本地执行安全

  1. 工具白名单。
  2. 参数白名单和格式校验。
  3. 最小系统权限运行。
  4. 限制出站访问范围。
  5. 每个工具独立超时和资源限制。

10.6 审计要求

必须审计:

  1. 原始输入。
  2. 解析结果。
  3. 风险结果。
  4. 审批结果。
  5. 工具调用。
  6. 验证结果。
  7. 最终结论。

11. 非功能设计

11.1 可用性

  1. 核心服务支持水平扩展。
  2. 任务执行状态可恢复。
  3. 外部系统短时失败可重试。

11.2 稳定性

  1. 每类工具单独超时控制。
  2. 异常分类处理。
  3. 长任务支持轮询与中断。

11.3 可观测性

建议采集:

  1. 接口日志。
  2. 工具调用日志。
  3. 任务状态流转日志。
  4. Trace。
  5. 指标监控。

11.4 可扩展性

  1. 工具插件化。
  2. 应用元数据可配置化。
  3. 策略规则可扩展。
  4. 支持后续增加更多部署类型和中间件类型。

12. 技术选型建议

12.1 编排框架

推荐:

  1. LangGraph 作为核心编排框架。

理由:

  1. 更适合状态机和受控执行流程。
  2. 更适合插入确认、审批和人工干预。
  3. 更适合长期维护和审计追溯。

12.2 快速原型方案

如果需要快速演示,可选:

  1. Dify 作为前台工作流和对话原型。

但长期建议迁移回代码化编排。

12.3 执行引擎

推荐:

  1. 软件 A 作为主执行引擎。
  2. AWX 或 Rundeck 作为补充能力,不作为主底座。

落地约束:

  1. MVP 阶段由 demo 版软件 A 承担主执行引擎角色。
  2. 正式阶段再对接真实软件 A,并通过适配层完成平滑切换。

12.4 模型接入

建议采用模型网关方式,屏蔽底层模型差异,并统一处理:

  1. Prompt 模板。
  2. 模型选择。
  3. 调用审计。
  4. 敏感信息过滤。

模型接入前提已确认如下:

  1. 模型接入方式支持自定义 base_urlapi_key
  2. 因此架构上不强制限定为公有云模型或私有化模型。
  3. 模型网关需支持多模型源配置、动态切换和按租户配置接入参数。
  4. 模型网关需支持最小化敏感信息透传和调用审计。

13. MVP 范围与边界

13.1 MVP 纳入范围

  1. Java 应用标准部署。
  2. 配置推送。
  3. 服务启停/重启。
  4. 日志查询。
  5. 进程/端口/HTTP 健康检查。
  6. 审批和二次确认。
  7. 审计留痕。

13.2 MVP 暂不纳入

  1. 任意命令执行。
  2. 复杂自治型多 Agent。
  3. 自动根因分析闭环。
  4. 无人审批的生产自动处置。
  5. 全类型应用和全中间件覆盖。

14. 实施建议

14.1 第一阶段:接口与元数据梳理

输出:

  1. 软件 A 接口清单。
  2. 试点应用元数据模板。
  3. 风险规则表。
  4. 工具协议定义。

14.2 第二阶段:核心链路开发

输出:

  1. 对话任务接口。
  2. 编排服务。
  3. 软件 A 适配器。
  4. 本地 Agent 基础执行器。
  5. 基础验证插件。

14.3 第三阶段:治理能力补齐

输出:

  1. 审批接入。
  2. 审计中心。
  3. 任务中心。
  4. 权限模型。

14.4 第四阶段:试点与优化

输出:

  1. 试点应用上线。
  2. 指标统计。
  3. 问题闭环与优化清单。

15. 已确认前提与实施约束

以下前提已确认,可作为后续研发与实施的固定输入:

  1. 当前不直接对接真实软件 A,MVP 阶段需开发 demo 版软件 A;后续对接真实软件 A 时可能仍需开发改造。
  2. 软件 A 的操作者透传和权限控制在 MVP 阶段由 demo 版能力承接,正式对接真实软件 A 时再评估透传和鉴权改造方案。
  3. 本地 Agent 部署环境为 Windows 和 Linux 混合环境,需按用户现场环境适配。
  4. 试点应用部署方式统一,这有利于先沉淀标准任务模型、标准验证模型和标准回滚策略。
  5. 审批系统和身份系统理论上有标准接口,但当前阶段无法直接提供,MVP 阶段需开发 demo 版能力闭环。
  6. 模型接入采用自定义 base_urlapi_key 的方式,因此模型网关必须支持灵活配置,不预设单一模型厂商。

基于以上前提,对实施的直接影响如下:

  1. MVP 应优先验证编排层、策略层、本地执行器和统一工具协议,不以真实外部系统对接完成度作为第一阶段阻塞项。
  2. 软件 A、审批系统、身份系统均需采用"适配层 + demo 实现 + 后续真实替换"的分层设计。
  3. 本地工具体系必须从一开始就考虑跨平台实现,避免后续从单平台重构。
  4. 试点应用部署方式统一,可优先围绕单一部署范式建设模板化能力。
  5. 模型网关需在配置、审计、安全过滤层面先抽象清楚,避免后续因模型源变化重构上层调用链路。

16. 结论

推荐将本项目建设为"受控执行型部署 Agent 平台",以软件 A 为执行底座,以 LangGraph 为编排核心,以本地 Agent 为边缘执行节点,以策略治理层保障高危动作安全。

从工程落地看,最关键的不是模型能力本身,而是以下四点:

  1. 软件 A 能否提供稳定可调用接口。
  2. 应用元数据是否完整。
  3. 本地执行是否足够受控。
  4. 审批、权限、审计是否能真正闭环。

如果以上四点落实,本项目具备较强的 MVP 落地可行性。