企业级 Agent 系统架构设计:从循环引擎到信任层级的完整技术方案

#AI技术#架构设计

企业级 Agent 系统架构设计:从循环引擎到信任层级的完整技术方案

基于真实项目实践——将一个拥有数百个 API 的企业级平台,从”人在 UI 上操作”演进为”意图驱动的 Agent 智能体系统”。约 2800 行设计文档,19 轮迭代,~3 天完成。

本文的目标读者:正在设计或即将设计企业级 Agent 系统的架构师。如果你面对的是”已有一套复杂的企业平台,要在上面加一层 Agent 大脑”的问题,这篇文章提供了完整的架构参考。


一、Agent 系统是什么——从”人操作 UI”到”意图即操作”

1.1 范式跳跃

传统平台:人 → 固定 UI → 各模块独立操作 → 人脑串联结果
Agent 平台:人 → 对话 → Agent 大脑 → MCP 工具(= 各模块的原子化接口)→ Agent 自动串联

Agent 不是平台上面的一层壳——Agent 就是平台本身。

已有平台的每个模块都是 Agent 的”器官”。Agent 系统做的是给这些器官加上”大脑”(Agent Brain)、“自生长能力”(工厂 Agent)和”肌肉记忆”(经验固化),并把”固定 UI + 用户旅程”替换为”意图即操作的对话界面”。

四层能力递进:

层次能力一句话
层次一对话即平台自然语言对话取代传统 UI,所有能力原子化为 MCP 工具,Agent 大脑是平台的操作系统
层次二按需呈现Agent 大脑从 Schema 约束的信息呈现原语中按需选取图表、表格、时间线等嵌入对话
层次三经验自固化通过行为分析,将 Agent 反复执行的行动模式自动沉淀为确定性工作流
层次四能力自生产AI 自主识别能力缺口,自主生成规则、子 Agent、测试用例等结构化制品

1.2 两个关键设计选择

  1. Schema 约束的有限解空间:Agent 的”生成”不是写任意代码,而是在 Schema 约束下组装结构化制品——有限解空间 + 自动化验证 + 热加载生效
  2. 不设计用户旅程:客户有意图,Agent 理解并执行,中间不需要”旅程”。客户可能说出产品经理从未想过的需求,对话式交互天然支持这种不可预测性

二、架构全景

2.1 分层架构

┌─────────────────────────────────────────────────────────────────┐
│                    👤 用户(自然语言对话)                          │
└───────────────────────────┬─────────────────────────────────────┘

┌───────────────────────────┴─────────────────────────────────────┐
│                   对话引擎 + AG-UI 渲染器                         │
│              (唯一交互入口,信息呈现原语按需嵌入)                  │
└───────────────────────────┬─────────────────────────────────────┘

┌───────────────────────────┴─────────────────────────────────────┐
│                    🧠 Agent 大脑(平台操作系统)                    │
│          意图理解 · 任务规划 · 全局态势感知 · 子 Agent 调度          │
│                       长期记忆                                    │
├─────────────┬──────────────┬────────────────────────────────────┤
│  子 Agent    │  工厂 Agent   │  信任层级执行框架                    │
│  1+N 专项    │  规则/Agent   │  L0自主→L1事后→L2审批→L3多人审批    │
│  角色集群     │  工作流/模板   │                                    │
└──────┬──────┴──────┬───────┴────────────────────────────────────┘
       ↕             ↕
┌──────┴─────────────┴────────────────────────────────────────────┐
│              🔧 MCP Tool 层(原子工具 · 五类分级)                  │
│    👁感知  🧠决策  ⚡执行  💾记忆  📊呈现                          │
├─────────────────────────────────────────────────────────────────┤
│              📦 制品体系(Schema Registry + Artifact Store)       │
└───────────────────────────┬─────────────────────────────────────┘

┌───────────────────────────┴─────────────────────────────────────┐
│              ⚙️ 已有平台能力底座(现有各模块 · 不变)                │
│              模块A · 模块B · 模块C · 模块D · IAM · ...             │
├─────────────────────────────────────────────────────────────────┤
│              数据层(消息队列 · 时序数据库 · 关系型数据库)           │
└─────────────────────────────────────────────────────────────────┘

分层说明

  • 对话层(新增):用户唯一入口,替代传统 UI
  • 智能层(新增):Agent 大脑 + 子 Agent + 工厂 Agent + 信任层级
  • 工具层(新增):MCP Tool 原子接口 + 制品体系
  • 能力层(继承):已有平台所有现有模块,通过 MCP Tool 层被 Agent 调用
  • 数据层(继承):数据库、消息队列、通信链路

2.2 Agent 引擎内部架构

以下将全景图中”新增层”展开,展示一次用户请求从进入到响应的完整数据流:

                          👤 用户输入(自然语言)

                ┌─────────────────▼──────────────────────────────────┐
                │              Agent 循环引擎(核心)                  │
                │                                                    │
  ┌──────────┐  │  ① 意图识别 ──→ ② 任务规划 ──→ ③ 工具选择         │  ┌──────────┐
  │ 上下文管理 │──▶      │              │                │            │  │ 模型路由器 │
  │          │  │      │         复杂任务分派         │            │◀─│          │
  │ ·规范文件 │  │      │              │                ▼            │  │ ·企业白名单│
  │ ·ToolSearch│ │      │              ▼        ④ 权限决策(五层)    │  │ ·内网优先 │
  │ ·PromptCache││      │        ┌──────────┐    L5企业策略          │  │ ·按需fallback│
  │ ·Compaction│ │      │        │ 子Agent  │    L4信任层级          │  └──────────┘
  └──────────┘  │      │        │ 调度(1+N)│    L3 Hook拦截         │
                │      │        └────┬─────┘    L2 审计记录          │  ┌──────────┐
  ┌──────────┐  │      │             │          L1 人工确认          │  │ 配置系统  │
  │ 持久化层  │◀─│──────│─────────────│──────────────│               │──▶│          │
  │          │  │      │             │              ▼               │  │ ·企业策略 │
  │ ·会话转录 │  │      │             │        ⑤ MCP Tool 执行      │  │ ·用户偏好 │
  │ ·行动轨迹 │  │      │             │              │               │  └──────────┘
  │ ·长期记忆 │  │      │             │              ▼               │
  │ ·审计日志 │  │      │             └──────→ ⑥ 结果回传            │  ┌──────────┐
  └──────────┘  │      │                          │                 │  │ 观测系统  │
                │      │    ┌──────────┐    未完成 │  尝试退出        │──▶│          │
  ┌──────────┐  │      │    │ 工厂Agent │          │      │         │  │ ·Traces  │
  │ 工厂Agent │◀─│──能力缺口 │(延后启动) │    ┌─────▼──────▼───────┐  │  │ ·Metrics │
  │ (延后启动) │  │      │    └──────────┘    │ ⑦ Stop Hook 完成度  │  │  │ ·Logs    │
  └──────────┘  │      │                    │ approve→退出循环     │  │  └──────────┘
                │      └────────────────────│ block →继续循环      │  │
                │                           └──────────┬──────────┘  │
                └──────────────────────────────────────┼─────────────┘

                                👤 用户响应(文字 + 可视化组件 + 审批卡片)

架构说明

  • 核心循环:① 意图识别 → ② 任务规划 → ③ 工具选择 → ④ 权限决策(五层)→ ⑤ 工具执行 → ⑥ 结果回传 → 循环或退出。⑦ Stop Hook 检查完成度,未完成则自迭代
  • 模型路由器:每次 LLM 推理前,根据企业配置 + 网络环境 + 数据敏感度选择最优模型,内网优先,按策略 fallback
  • 上下文管理:规范文件 + ToolSearch 按需加载 + Prompt Cache + Compaction,控制每次推理的输入质量和 token 成本
  • 配置系统:企业→用户两级配置,注入到模型路由器和权限决策引擎
  • 子 Agent 调度:从任务规划步骤分叉,独立执行后将结论+证据+轨迹回传
  • 持久化层:循环中四个写入点——执行写轨迹、权限写审计、结果写转录、意图读写记忆
  • 观测系统:采集循环每一步的 Traces / Metrics / Logs

三、Agent 框架选型——从 9 个框架中提炼设计精华

本节不是”从 N 个框架中选一个”,而是从主流框架中提炼设计精华,结合企业场景的独特需求,设计最合适的 Agent 引擎

3.1 主流 Agent 框架能力全景

框架核心模式工具调用多 Agent上下文管理扩展方式运行形态
Claude CodeAgent 循环 + 事件钩子 + 分层插件MCP 原生SubAgent/Teammate/Task 三级CLAUDE.md + Skill 三级 + Compaction + ToolSearchHook/Skill/MCP/Command本地 CLI(TypeScript/Bun)
OpenAI Codex CLI统一 App Server + CodeActJSON Schema + MCP有限线程级IDE 插件本地 CLI + IDE
CursorVS Code Fork + Composer多模型切换8 Agent 并行Git 历史 + 编辑器插件市场IDE 内嵌
LangGraph状态图 DAG + 检查点统一接口状态机 + 人工审批检查点持久化自定义节点Python 库
CrewAI角色化团队 + Manager工具注册层级式分派最小化自定义 AgentPython 库
AutoGen事件驱动消息传递函数工具异步拓扑可定制组件化Python 库
Dify可视化工作流 DAG多类型 + MCP工作流内链式RAG 集成插件系统Web 平台
Coze/扣子全生命周期管理Skill 体系有限全链路 TracingSkill 生态Web 平台

3.2 选型评估

企业级 Agent 需要的是一个可嵌入私有化部署环境的 Agent 引擎——以独立服务端进程运行,支持多用户并发会话,权限控制内建到引擎核心。

一、按产品形态分类

分类框架运行形态与企业场景的适配度
本地工具型Claude Code、Codex CLI、Cursor本地 CLI / IDE 内嵌产品形态不匹配——企业 Agent 是服务端多用户系统。但设计理念高度可参考
通用编排库LangGraph、CrewAI、AutoGenPython 库,可包装为微服务运行形态可适配——但需评估领域需求支持能力
平台型Dify、CozeWeb 托管平台不可私有化嵌入

关键区分:产品形态不匹配 ≠ 没有参考价值。“不能直接用”和”不值得学”是两件事。

二、通用编排库详细评估

LangGraph(最接近可用)

维度评估
架构优势状态图 DAG + 检查点恢复机制成熟;Human-in-the-loop 作为一等公民
可借鉴状态机管理(任务的进行中/等待审批/已完成状态);审批作为正常流程
不能直接用① 状态图 DAG 适合固定工作流,Agent 循环是开放式推理(每轮工具选择不可预测),用 DAG 建模会过度约束;② Human-in-the-loop 有但不是”引擎原生信任层级”——审批是流程节点,企业需要的是每次工具调用前的信任层级评估,粒度不同;③ 无多用户会话隔离、无审计、无领域感知

CrewAI(角色模型好,框架太轻)

维度评估
架构优势角色化 Agent + Manager 分派模型直觉好
可借鉴Manager 模式的 1+N 子 Agent 分工
不能直接用① 无权限控制、无审计、无 Hook 体系;② 上下文管理最小化,无法承载大型上下文(数百工具清单 + 规范文件 + 用户配置);③ 框架面向轻量原型,不适合生产级系统的长期演进

AutoGen(通信模型好,稳定性存疑)

维度评估
架构优势事件驱动消息传递架构设计好,支持异步拓扑
可借鉴子 Agent 间通过结构化消息(task→conclusion+evidence)通信
不能直接用① 核心 API 正在重写,选择正在重构的框架做生产系统基础风险太高;② 事件驱动适合跨进程分布式场景,同一引擎内的 Agent 不需要这层复杂度

三、企业领域需求 vs 框架能力差距

上述框架各有设计亮点。但它们共同缺失以下企业领域需求——不是”配置一下就能满足”的功能缺失,而是框架从设计之初就没有考虑的场景:

企业领域需求说明通用框架的现状
信任层级原生化L0-L3 是 Agent 循环引擎的核心数据结构——每次工具调用前评估,不是可选插件无此概念,需侵入框架内核实现
多用户会话隔离同一引擎实例内,不同用户的上下文/记忆/配置/工具权限完全隔离面向单用户设计
合规级审计不可关闭每次工具调用自动产出不可篡改的审计记录审计是可选功能
制品 Schema 体系引擎原生集成 Schema Registry,工厂 Agent 生成制品时自动校验无此概念
经验固化闭环行动轨迹 → 行为分析 → 工作流提炼 → Skill 替代 LLM 推理无此概念

在现有框架上定制实现这些能力,等于在框架内核中插入大量侵入式代码。长期维护成本不低于自研。

3.3 从各框架提炼的 12 条设计精华

自研不等于从零发明。以下设计理念从各框架中提炼,直接复用:

#设计理念提炼来源在企业 Agent 中的应用
1Agent 循环引擎(LLM→权限→执行→回传→循环)Claude CodeAgent Loop 核心骨架,每步内建信任层级检查
2状态图 + 检查点恢复LangGraph任务状态机管理、会话中断恢复
3角色化 Agent + Manager 分派CrewAI顶层 Agent 作为 Manager,子 Agent 按角色分化
4事件驱动消息传递AutoGen子 Agent 间通过结构化消息通信
5递归任务分解 + 深度自主规划企业级 Agent 平台实践多步任务规划,每步检查依赖和信任层级
6Skill 市场架构理念企业级 Agent 平台实践Schema 约束的结构化制品生态
7事件钩子体系(生命周期拦截)Claude Code15 个事件,审计和权限控制通过 Hook 实现
8Human-in-the-loop 一等公民LangGraphL2 审批是”正常流程”而非”异常路径”
9上下文分层管理(Compaction / ToolSearch)Claude Code大规模工具三档加载、自动压缩断路器、大输出外溢
10五层纵深权限模型Claude Code企业策略→信任层级→Hook 拦截→审计→人工确认
11MCP 工具协议Claude Code / Dify标准化工具接口,与外部系统互操作的基础
12全链路 TracingCoze Loop每次推理和工具调用的完整追踪链

来源分布:Claude Code 5 条(循环引擎/钩子/上下文/权限/MCP),是贡献最多的——因为它是唯一经过大规模生产验证的 Agent 系统。

3.4 技术选型总结

决策项选型核心理由
Agent 引擎Python 自研,独立微服务部署9 框架评估均不满足企业领域需求;自研引擎,设计模式从框架精华提炼
开发语言Python(asyncio 并发模型)Agent 引擎 95% I/O 密集(等 LLM 响应、等 HTTP 返回),asyncio 完美匹配;Python AI 生态远超其他语言
工具协议MCP(Model Context Protocol)行业标准,与外部系统互操作的基础
LLM 接口统一适配层,多厂商模型无关架构——多厂商通过统一接口适配,模型切换不影响业务逻辑
前端协议AG-UI(Agent-User Interface)流式通信 + 呈现原语嵌入,Human-in-the-loop 审批作为一等公民
与已有平台的关系独立微服务,REST API/MCP 通信Agent 引擎与已有后端语言解耦、进程隔离——Agent 崩溃不影响已有平台核心功能

自研范围界定——不是所有东西都自研:

范围自研/复用/标准说明
Agent 循环引擎(核心循环 + 权限决策 + 状态管理)自研信任层级、审计、会话隔离深度内建
事件钩子体系自研(设计参考 Claude Code)通用事件 + 领域特有事件
子 Agent 调度协议自研(设计参考 CrewAI + AutoGen)角色化分派 + 结构化消息传递
MCP Tool 层采用标准协议MCP 标准,使用官方 SDK
LLM 调用层复用开源 SDK + 自研路由逻辑各厂商 SDK 处理通信,自研路由器
上下文管理(Compaction / ToolSearch / Prompt Cache)自研(设计参考 Claude Code)上下文压缩和工具按需加载与约束保护深度耦合
持久化层复用已有基础设施PostgreSQL / ClickHouse / Redis
观测系统采用标准协议OpenTelemetry
Schema Registry自研(轻量级)JSON Schema 校验,需与引擎深度集成

四、Agent 核心引擎

本章描述 Agent 引擎的核心运转机制——Agent 循环如何工作、子 Agent 如何协作。

4.1 Agent 大脑(顶层 Agent)

4.1.1 定位与职责

Agent 大脑是整个系统的操作系统内核——用户对话的直接对象,所有任务的调度中枢。

职责说明
意图理解解析自然语言,映射到具体操作
任务规划将复杂意图分解为多步执行计划,决定调用哪些工具或子 Agent
全局态势感知持续监控业务事件流、状态变化,主动发现并推送风险
子 Agent 调度将专项任务分派给对应子 Agent,汇总结果后组装响应
结果呈现决定用文字、图表还是表格呈现结果——呈现方式选择是推理的一部分
长期记忆记录用户偏好、历史结论、经验模式,跨会话保持上下文连续性

4.1.2 运行模式

被动模式(用户驱动)——用户发起对话,Agent 响应:

用户:"最近有没有异常?"
  → Agent 大脑调用 event.query() + status.check() + health.overview()
  → 推理、关联
  → 组装响应(文字结论 + 指标卡片 + 事件表格)

主动模式(自主巡检)——Agent 后台持续监控,主动推送:

Agent 大脑后台持续监控:
  → 发现业务指标异常飙升
  → 自动调用 event.query() 关联分析
  → 判断需要人关注
  → 主动推送:"检测到用户 X 的操作模式异常,建议排查"
  → 用户确认后,调度分析员深入调查

Headless 模式(API/SDK 驱动)——无人交互,供外部系统调用:

外部系统通过 SDK/API 发送指令:
  → Agent 大脑接收结构化任务
  → 执行预定义工作流(如:定时全量检查、定时态势报告)
  → 结果写入持久化层,通知外部系统
  → L2 操作降级为排队等待人工审批

4.1.3 Agent 循环引擎状态机

这是最核心的组件——所有 Agent 行为都在这个循环中发生。

                    ┌──────────────────────────┐
                    │      IDLE(空闲)          │
                    │   等待用户输入 or 主动触发   │
                    └────────────┬─────────────┘
                                 │ 收到输入

                    ┌──────────────────────────┐
              ┌────→│    REASONING(推理中)      │
              │     │  LLM 推理:意图→工具选择    │
              │     └────────────┬─────────────┘
              │                  │ 产出工具调用请求
              │                  ▼
              │     ┌──────────────────────────┐
              │     │  PERMISSION(权限评估中)    │
              │     │  五层决策引擎评估            │
              │     └──┬──────┬──────┬─────────┘
              │        │      │      │
              │     denied  approved  need_approval
              │        │      │      │
              │        ▼      ▼      ▼
              │     跳过   ┌──────┐  推送审批卡片
              │     执行   │EXEC  │  等待用户响应
              │      │    │执行中 │     │
              │      │    └──┬───┘     │
              │      │       │         │
              │      ▼       ▼         ▼
              │     ┌──────────────────────────┐
              │     │   RESULT(结果处理)        │
              │     │  PostToolUse Hook → 审计   │
              │     │  结果注入上下文              │
              │     └────────────┬─────────────┘
              │                  │
              │           ┌──────┴──────┐
              │           │             │
              │        未完成        尝试退出
              │           │             │
              └───────────┘             ▼
                               ┌──────────────────┐
                               │  STOP_CHECK       │
                               │  Stop Hook 检查    │
                               └──┬──────┬────────┘
                                  │      │
                               approve  block
                                  │      │
                                  ▼      └──→ 重新注入提示 → REASONING
                            ┌──────────────┐
                            │  COMPLETE     │
                            │  组装响应      │
                            │  写入转录      │
                            └──────────────┘

循环控制参数(全部可通过配置系统调整):

参数说明
max_reasoning_rounds单次会话最大推理轮次,防止 Agent 无限循环
tool_call_timeout单次工具调用超时时间
approval_wait_timeoutL2 审批等待超时时间
same_tool_repeat_limit连续调用同一工具的最大次数(断路器)
total_session_timeout单次会话总超时时间

异常处理与恢复

异常场景处理策略
LLM 调用失败重试 1 次 → 仍失败则返回错误提示,不中断会话
工具调用超时PostToolUse Hook 记录超时 → 结果标记为 timeout → Agent 可选择换一个工具重试
权限被拒绝记录到审计 → 跳过该工具 → Agent 继续推理选择替代方案
循环次数达上限强制退出 → 返回当前已有结论 + 提示”任务未完成”
同一工具连续调用 N 次断路器触发 → 强制退出该工具 → Agent 推理选择其他路径
LLM 幻觉不存在的工具工具注册表校验失败 → 拒绝执行 → 将”工具不存在”作为结果回传 LLM
子 Agent 超时子 Agent 返回 timeout 状态 → 顶层 Agent 决定是否重派或放弃
上下文溢出触发 Compaction → 断路器(3 次仍溢出则终止)

循环中的核心数据结构

数据结构职责生命周期
LoopState循环当前状态(IDLE/REASONING/PERMISSION/EXEC/RESULT/STOP_CHECK/COMPLETE)单次会话
ConversationCtx对话上下文(含压缩管理),供每轮 LLM 推理使用单次会话,Compaction 管理
ToolRegistryMCP Tool 注册表(只读引用),循环中查询工具 Schema 和信任层级全局共享
TrustConfig当前会话的信任层级配置(从配置系统按用户加载)单次会话
ActionTrace本次会话的行动轨迹列表(每次工具调用记录:工具名、输入、输出、权限决策、耗时、钩子结果、时间戳)单次会话,完成后写入持久化层

4.1.4 上下文管理

Agent 面临的上下文压力远大于编程场景——数百个工具 Schema + 业务规则库 + 历史事件 + 资产台账,不做分层管理必然爆窗口。

四类上下文

上下文类型存储位置生命周期内容
会话上下文内存单次对话当前多轮对话历史、中间工具调用结果
工作记忆短期存储(Redis)当前任务链任务进度、待确认审批、子 Agent 已返回的结论
长期记忆持久化存储(PostgreSQL)永久,跨会话用户偏好、历史结论、经验模式
态势上下文实时计算持续更新业务事件统计、异常趋势、系统健康度

五大上下文管理机制

机制一:规范文件(≈ Claude Code 的 CLAUDE.md)

~/.agent/global.md                → 全局运营偏好(管理员级)
    ↓ 覆盖
/user/{userId}/agent.md           → 用户个人偏好

每次会话启动时自动加载,多级文件按优先级合并后注入系统提示。

机制二:工具 Schema 按需加载(≈ Claude Code 的 ToolSearch)

当平台有数百个 API 可包装为 MCP Tool 时,全量 Schema 注入上下文会占用大量 token。采用三档管理:

档位工具范围加载时机
常驻高频核心工具会话启动时预加载
按需中频操作工具Agent 推理时识别到需要后加载 Schema
休眠低频/批量/内部工具仅元数据常驻,完整 Schema 按需唤醒
DORMANT(休眠)→ Agent 需要时 → LOADED(加载 Schema)→ 调用完成 → 释放 Schema → DORMANT

机制三:自动压缩(≈ Claude Code 的 Compaction)

阶段行为
正常不触发
预警开始压缩中间工具结果(保留结论,丢弃原始数据)
紧急强制压缩——仅保留:规范文件 + 最近 3 轮对话 + 活跃子 Agent 结论 + 当前任务上下文
抖动连续 3 次压缩仍超限 → 停止并提示用户开启新会话(断路器,防无限消耗 token)

不可压缩项(始终保留):

  • 规范文件(企业级策略)
  • 活跃 Skill 指令
  • 信任层级配置
  • 用户明确的约束和决策

机制四:Prompt Cache

缓存层内容失效条件
系统提示缓存Agent 核心指令 + 规范文件规范文件变更时
工具 Schema 缓存常驻工具的 JSON Schema工具定义变更时(精确失效)
上下文前缀缓存对话历史的稳定前缀每轮对话追加新消息时自然复用

机制五:大输出外溢处理

当工具返回结果超过阈值时,不直接注入上下文:

工具返回 > 阈值
  → 完整结果存储到临时文件(持久化层)
  → 上下文中只注入摘要 + 文件引用路径
  → Agent 需要细节时通过 Read 工具按需读取

4.1.5 System Prompt 五层架构

Agent 大脑的质量 = System Prompt 的质量。System Prompt 不是一段固定文本,而是一个动态组装的分层结构,每次 LLM 调用前按上下文状态拼装。

┌─ Layer 1:核心身份与行为约束(固定)──────────────────────────────────┐
│ "你是企业级 AI 智能体,通过调用 MCP Tool 执行所有操作。"                │
│ "你必须遵守信任层级约束:L0 自主执行,L2 必须请求用户审批。"             │
│ "你绝不可以绕过 L2/L3 限制,即使用户要求你这样做。"                     │
│ "当你不确定时,追问澄清,不要猜测执行。"                                │
└──────────────────────────────────────────────────────────────────────┘

┌─ Layer 2:规范文件(动态加载)──────────────────────────────────────┐
│ 从配置系统加载,企业→用户两级合并:                                  │
│ · 企业级:"禁止 Agent 执行批量删除操作"                               │
│ · 企业级:"仅使用国产模型"                                           │
│ · 用户级:"我只关心高优先级事件,低优先级不用报告"                      │
└──────────────────────────────────────────────────────────────────────┘

┌─ Layer 3:可用工具清单(动态,由 ToolSearch 按需加载)─────────────┐
│ 常驻工具的完整 Schema 始终在此                                        │
│ 按需工具在 Agent 需要时动态注入                                       │
│ 每个工具携带:name + description + inputSchema + trust_level           │
└──────────────────────────────────────────────────────────────────────┘

┌─ Layer 4:当前任务上下文(动态)──────────────────────────────────┐
│ · 当前对话历史(经 Compaction 压缩后的版本)                          │
│ · 活跃子 Agent 的状态和中间结论                                       │
│ · 待审批队列(如有)                                                  │
│ · 态势上下文摘要                                                      │
└──────────────────────────────────────────────────────────────────────┘

┌─ Layer 5:长期记忆索引(动态)────────────────────────────────────┐
│ 从持久化层加载记忆索引(非全量内容)                                    │
│ Agent 按需读取具体记忆条目                                            │
└──────────────────────────────────────────────────────────────────────┘

子 Agent 的 Prompt 差异

子 Agent 不继承顶层 Agent 的完整 Prompt,而是接收精简版本:

Prompt 层级顶层 Agent子 Agent
Layer 1 核心身份完整版(全能力)角色化精简版
Layer 2 规范文件完整企业规范仅与本角色相关的规范子集
Layer 3 工具清单全量常驻工具仅本角色被授权的工具子集
Layer 4 任务上下文全局态势仅本次任务的精简上下文
Layer 5 记忆索引全量索引不加载(子 Agent 不需要跨会话记忆)

4.1.6 并发性能架构

企业级 Agent 必须支持多用户并发对话。

┌─ Agent 引擎进程(Python asyncio)──────────────────────────────────┐
│                                                         │
│  ┌─ 用户 A ────────────────────┐                        │
│  │  Session 1 → asyncio task   │                        │
│  │  Session 2 → asyncio task   │   共享 LLM 连接池      │
│  │  (上下文完全隔离)            │   共享 MCP Tool 注册表  │
│  └─────────────────────────────┘   共享 Schema Registry  │
│                                                         │
│  ┌─ 用户 B ────────────────────┐                        │
│  │  Session 3 → asyncio task   │                        │
│  │  (上下文完全隔离)            │                        │
│  └─────────────────────────────┘                        │
│                                                         │
│  ┌─ 共享资源 ──────────────────┐                        │
│  │  LLM 连接池(按模型分组)    │                        │
│  │  MCP Tool 注册表(只读)     │                        │
│  │  Schema Registry(只读)     │                        │
│  │  配置缓存(按用户分片)      │                        │
│  └─────────────────────────────┘                        │
└─────────────────────────────────────────────────────────┘

隔离与共享的边界

资源隔离/共享机制
对话上下文完全隔离每个 Session 独立 asyncio task
长期记忆用户隔离按 user_id 过滤
行动轨迹用户隔离按 user_id 分区
LLM 连接池共享按模型分组,协程安全
MCP Tool 注册表共享(只读)启动时加载,热加载通过替换实现
Prompt Cache部分共享Layer 1 全局共享;Layer 2~5 按用户/会话隔离

4.1.7 意图识别与模型选择

意图识别架构

用户输入(自然语言)

┌─────────────────────────────────────────┐
│ 意图分类器(第一层,快速路由)              │
│                                         │
│ · 直接操作意图 → 调用 MCP Tool            │
│   "帮我查一下今天的事件"                    │
│                                         │
│ · 复杂分析意图 → 分派子 Agent             │
│   "调查这个异常行为的根因"                  │
│                                         │
│ · 闲聊/知识咨询 → 直接回复                │
│   "XXX 模块是什么?"                       │
│                                         │
│ · 模糊意图 → 追问澄清                    │
│   "帮我看看整体态势" → "你想看哪个维度?"    │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│ 任务规划器(第二层,多步编排)              │
│                                         │
│ 复杂任务拆解为多步执行计划:                │
│ "把这个新实体注册完再做检查再接入"            │
│   → Step 1: entity.create()             │
│   → Step 2: check.create()             │
│   → Step 3: 等待检查完成                  │
│   → Step 4: 通过 → policy.create()      │
│   → 每步检查信任层级(L2 操作需审批)       │
└─────────────────────────────────────────┘

模型选择策略

Agent 引擎不绑定单一模型厂商,通过统一 LLM 接口适配多厂商,按场景差异化配置:

场景模型要求推理深度
顶层 Agent(意图理解 + 任务规划)最强推理 + 长上下文
分析类子 Agent(证据推理)强推理 + 结构化输出
操作类子 Agent(规则生成)结构化生成 + Schema 遵循
工厂 Agent(制品生成)强结构化生成
固化工作流执行无需模型(零 token)

4.2 子 Agent 协作架构

角色设计依据:子 Agent 的角色划分基于已有平台实际能力模块(数百个 API)和业务场景反推,不是凭空设计——每个 Agent 背后有明确的 API 领域支撑。

4.2.1 1+N 分层协作体系

采用 1 + N 架构——1 个顶层 Agent 统筹调度 N 个专项子 Agent:

┌──────────────────────────────────────────────────────────────┐
│              🏠 顶层 Agent(Agent 大脑)                         │
│        意图理解 · 全局态势 · 任务分派 · 结果组装                 │
│                 使用最强推理模型                                │
│                 有长期记忆和全局上下文                           │
└───┬────────┬────────┬──────────┬────────────┬────────────────┘
    ↓        ↓        ↓          ↓            ↓
┌───┴──┐ ┌───┴──┐ ┌───┴────┐ ┌───┴──────┐ ┌───┴──────┐
│🔬检查 │ │🛡️配置 │ │📞协作  │ │📦资产    │ │📊分析    │
│专员   │ │专员   │ │专员    │ │管理员    │ │专员      │
│      │ │      │ │       │ │         │ │         │
│质量检查│ │规则调优│ │IM通讯  │ │实体注册  │ │事件分析  │
│测试执行│ │策略生成│ │多渠道  │ │资源管理  │ │日志检索  │
│报告生成│ │效果验证│ │通知    │ │生命周期  │ │趋势分析  │
└──────┘ └──────┘ └───────┘ └─────────┘ └─────────┘

4.2.2 角色设计的三个依据

依据一:能力模块对齐——每个子 Agent 背后有明确的 API 领域

检查专员    ← 检查/评估模块(N 个 API)
配置专员    ← 策略/规则管理模块(N 个 API)
协作专员    ← 通讯/通知模块(N 个 API)
资产管理员  ← 资产管理模块(N 个 API)
分析专员    ← 事件/日志模块(N 个 API)

依据二:多步推理需求——每个角色都有需要 5+ 步工具调用的核心场景

Agent典型多步场景步骤数
检查专员创建任务→等待完成→查结果→查问题→生成建议→重测7+
配置专员查当前配置→分析效果→调整规则→推送生效→验证→回滚6+
协作专员识别对象→发起通讯→等待回复→追问→汇总→推送给顶层 Agent5+
资产管理员创建实体→配置关联→配置规则→生成访问入口→验证6+
分析专员查事件列表→查详情→搜日志→关联证据→AI 解读→标记处置7+

依据三:上下文隔离必要性——每个角色处理的数据量大,塞进主对话会溢出

Agent典型数据量为什么要隔离
检查专员检查报告可能很长检查细节不应占据用户对话上下文
配置专员规则库可能有数百条规则遍历不应暴露在主对话中
协作专员多轮通讯可能 10+ 轮与第三方的沟通不应和用户对话混在一起
资产管理员资产台账列表很长资产清单遍历不应占据主上下文
分析专员日志检索可能返回大量原始数据数据细节应在子 Agent 内消化,只返回结论

4.2.3 协作模式

模式一:串行分派(常见场景)

用户:"把这个新实体做完检查再接入"
  → 顶层 Agent 拆解任务
  → Step 1: 分派资产管理员 → 注册实体
  → Step 2: 分派检查专员 → 执行检查
  → Step 3: 检查通过 → 分派配置专员 → 创建策略(L2 审批)
  → Step 4: 审批通过 → 配置专员推送生效
  → 顶层 Agent 汇总结果 → 回复用户

模式二:并行分派(调查场景)

用户:"调查这个异常事件的根因"
  → 顶层 Agent 分派两个任务并行:
    ├─ 分析专员 → 查事件详情 + 搜日志 + 关联证据
    └─ 协作专员 → 通讯问询当事人
  → 两者结论汇总到顶层 Agent
  → 综合研判 → 回复用户

模式三:级联触发(自动化场景)

系统检测到新事件
  → 顶层 Agent 判断需要处理
  → 分派分析专员 → 分析结论:需要调整配置
  → 顶层 Agent 转派配置专员 → 生成配置调整方案(L2)
  → 推送审批卡片给用户

4.2.4 调度协议

顶层 Agent 与子 Agent 之间的交互遵循统一协议:

顶层 Agent → 子 Agent:
  {
    task_id: "uuid",
    task_type: "check | config | liaison | asset | analyst",
    context: { ... },       // 精简后的任务上下文(非全局上下文)
    constraints: {
      max_tool_calls: 20,   // 工具调用次数上限
      timeout_seconds: 300, // 超时时间
      trust_level: "L1"     // 该子 Agent 的最高信任层级
    }
  }

子 Agent → 顶层 Agent:
  {
    task_id: "uuid",
    status: "completed | escalated | timeout | waiting_approval",
    conclusion: "...",      // 结论摘要
    evidence: [ ... ],      // 证据链
    actions_taken: [ ... ], // 行动轨迹(供经验固化分析)
    suggested_next: "..."   // 建议的后续操作(可选)
  }

4.2.5 子 Agent Prompt 设计指引

通用约束(所有子 Agent 共享)

  • 只能使用被授权的工具子集,尝试调用未授权工具时引擎层会拒绝
  • 不能修改自己的信任层级上限
  • 必须在 constraints.max_tool_calls 次数内完成任务
  • 结论必须结构化返回(conclusion + evidence + actions_taken),不能只返回自由文本

Prompt 与引擎的关系:Prompt 引导 LLM “应该做什么”(软约束),引擎层强制 LLM “不能做什么”(硬约束,代码层面不可绕过)。两层互补——Prompt 做意图引导,引擎做兜底。

Prompt 调优方法:先写初版 Prompt → 用意图测试集验证 → 分析失败用例 → 调优 Prompt → 再验证。这是迭代过程,不是一次性交付。


五、安全控制体系

5.1 信任层级执行框架

5.1.1 四级信任模型

企业级 Agent 自主执行必须设计严格的信任边界。将所有操作按风险等级分为四个信任层级:

信任层级操作范围Agent 行为人的角色典型操作
L0:完全自主感知类操作自主执行,无需报告无需参与查询列表、日志检索、状态查看
L1:自主 + 事后报告低风险执行自主执行,执行后通知人事后审阅标记已读、发送通知、记忆存储
L2:人工确认后执行高风险执行Agent 提出方案,人确认后才执行事前审批创建/修改策略、注册新资产
L3:最严格审批极高风险操作提交多人审批 + 冷静期二次确认双人审批批量删除、身份注销

5.1.2 信任层级与 MCP Tool 的绑定

每个 MCP Tool 在注册时必须声明其信任层级:

name: resource.create
trust_level: L2          # 需要人工审批
description: "创建一条新的业务资源"
side_effect: true
risk_description: "新资源将影响系统行为"
input_schema: { ... }
output_schema: { ... }

信任层级 × 工具分级映射示例

  • L0(完全自主):所有感知类、决策类工具(查询列表、详情、分析、状态检查)
  • L1(自主 + 事后报告):低风险写入(标记已读、触发检查、更新非关键信息)
  • L2(人工确认后执行):高风险写入(创建/修改/删除策略、注册/禁用资产)
  • L3(最严格审批):极高风险操作(批量删除)

5.1.3 审批流程

L2 审批

Agent 大脑判断需要执行 L2 操作
  → 生成操作方案(做什么 + 为什么 + 影响范围)
  → 通过 AG-UI 推送审批卡片到前端
  → 用户审阅方案
  → 同意 → Agent 执行 → 执行结果回报
  → 拒绝 → Agent 记录拒绝原因 → 调整方案或结束

L3 多人审批 + 冷静期

Agent 大脑判断需要执行 L3 操作
  → 生成操作方案(做什么 + 影响范围 + 不可逆警告)
  → 推送 L3 审批卡片(标注"高危操作")
  → 发起人确认(第一次确认)
  → 通知管理员确认(第二次确认)
  → 双人确认通过后进入冷静期(可配置)
  → 冷静期结束,推送最终确认
  → 最终确认 → Agent 执行 → 审计记录
  → 任一环节拒绝 → 操作取消,全程审计

设计理念:L3 的保障不靠”禁止”,靠流程摩擦力——双人确认排除个人误操作,冷静期排除冲动决策。闭环在对话内完成。

5.1.4 权限决策完整链路

当 Agent 发起一次工具调用时,请求经过以下五层逐级评估:

Agent 发起工具调用(tool_name + tool_input)
  → Layer 5 企业策略:deny 列表命中 → 直接拒绝(不可覆盖)
  → Layer 4 工具信任层级:L3→拒绝 / L2→进审批 / L1→执行+通知 / L0→执行
  → Layer 3 PreToolUse Hook:任一 deny→拒绝 / ask→升级审批 / allow→继续
  → Layer 2 审计记录:PostToolUse 自动写入观测系统,不可关闭
  → Layer 1 人工确认:L2 操作推送审批卡片 → 同意/拒绝/"总是允许"

5.1.5 权限决策引擎数据结构

组件职责数据来源
企业策略缓存全局禁用工具列表、强制 L2 工具列表、模型白名单管理员配置
用户信任配置缓存按 user_id 分片存储用户级信任层级和工具权限配置系统
工具信任层级映射工具名 → 信任层级,从 Tool Registry 同步MCP Tool 注册时声明
用户自定义规则用户”总是允许”的操作规则用户通过审批卡片生成

5.1.6 信任层级的动态调整

信任层级不是静态不变的:

  • 向上提权:经过充分验证的固化工作流,可由管理员审批将部分 L2 操作提升为 L1
  • 向下降权:Agent 出现异常行为(行为分析检测到偏离基线)时,自动将 L1 降级为 L2
  • 紧急熔断:管理员可一键将所有 Agent 操作降级为 L3(仅建议模式)

5.2 事件钩子体系

“不改 Agent 内核,在外围拦截和扩展”的 AOP 模式。

5.2.1 事件清单

事件触发时机支持的钩子类型典型用途
SessionStart对话会话初始化command加载规范文件、用户配置、态势快照
SessionEnd对话会话结束command持久化工作记忆、清理临时资源
UserPromptSubmit用户输入后、Agent 推理前prompt / command输入合规检查、上下文增强
PreToolUseAgent 决定调用工具、执行前prompt / command权限决策(核心)、参数校验、输入脱敏
PostToolUse工具执行完成后prompt / command审计记录、结果脱敏、质量验证
PreCompact上下文压缩前command保留关键上下文
StopAgent 大脑尝试退出prompt / command完成度检查——任务是否充分完成?
SubAgentStop子 Agent 完成prompt / command子 Agent 结论质量检查
TaskCreated后台任务创建command任务拦截和增强
TaskCompleted后台任务完成command清理、通知、后续触发

根据业务领域,可在此基础上新增领域特有事件(如 PolicyChanged / AlertEscalated 等),覆盖关键业务时刻。

5.2.2 钩子执行引擎

事件触发(如 PreToolUse)

从注册表中取出该事件的所有 Handler

按注册顺序依次执行(非并行)

每个 Handler:
    ├─ command 类型 → 直接执行,同步返回
    ├─ prompt 类型 → 发送给 LLM 判断,解析返回决策
    └─ 超时 → 视为 allow(fail-open)

汇总结果:
    ├─ 任一 deny → 最终 deny(短路)
    ├─ 任一 ask → 升级为人工确认
    ├─ 全部 allow → 最终 allow
    └─ Hook 返回 modified_input → 传递给下一个 Hook 和实际工具执行

关键设计约束

约束说明理由
顺序执行不并行前一个的 modified_input 传给后一个需要确定性
超时 fail-open钩子超时视为 allow业务连续性优先
deny 短路任一钩子 deny 立即停止后续执行性能优化
PostToolUse 不可 deny工具已执行完毕,只能记录和告警工具执行不可逆

钩子执行模式

模式执行方式速度适用场景
command执行确定性函数毫秒级明确规则(权限匹配、审计记录)
prompt发送给 LLM 判断秒级模糊判断(“这个操作是否合理?”、“调查结论是否充分?“)

5.3 Agent 自身安全威胁模型

Agent 大脑本身是 LLM 驱动的,面临各种威胁。Agent 系统自身的安全是必答题。

威胁攻击方式防御机制
Prompt Injection用户注入指令试图绕过信任层级① System Prompt Layer 1 硬编码不可覆盖;② 信任层级在引擎层强制执行,不依赖 LLM 遵守指令
工具幻觉Agent 幻觉不存在的工具名或构造错误参数① 工具注册表严格校验;② inputSchema 强类型校验;③ PostToolUse Hook 检查返回值
无限循环Agent 反复调用同一工具或陷入推理死循环① 最大循环次数限制;② 断路器;③ Stop Hook 检测循环模式;④ 工具调用超时
Agent 提权多轮对话逐步提升操作权限① 信任层级在引擎层硬编码,LLM 无法”说服自己”提权;② 提权只能通过管理员显式操作;③ 每次变更触发审计
敏感数据泄露Agent 在响应中泄露其他用户数据① 用户级会话隔离;② System Prompt 禁止输出原始记录;③ PostToolUse Hook 做响应脱敏
资源滥用恶意用户发送极长对话消耗 token① Compaction 断路器;② 并发会话限制;③ LLM 全局限速
子 Agent 逃逸子 Agent 尝试调用超出权限的工具① 工具清单在分派时已限定;② 权限决策引擎按子 Agent ID 校验

安全设计原则

原则说明
信任层级引擎层强制安全约束不依赖 LLM 遵守指令——即使 LLM 被诱导,引擎层仍会拦截
最小权限每个子 Agent 只能访问其角色所需的最小工具集
全量审计不可关闭每次工具调用都写入不可篡改的审计日志
异常自动降权行为分析检测到异常时自动降级信任层级
人是最终防线L2/L3 操作的审批不可被 Agent 绕过——代码层面的强制

六、能力接入层

6.1 MCP Tool 层(原子工具体系)

6.1.1 定位与职责

MCP Tool 层是 Agent 大脑调用一切能力的统一接口。已有平台各模块的 API 通过原子化包装,暴露为 Agent 可理解、可调用的标准化工具。

核心原则:底层一套 API 实现,上面开两个口——CLI 和 MCP 平行暴露同一个底层实现。

                     ┌─ Skill(编排层)─────────────────┐
                     │  固化的多步工作流(零 token 执行)   │
                     └──────────────┬──────────────────┘
                                    ↑ 组合
┌───────────────────────────────────┼─────────────────────────┐
│                   同一个底层 API 实现                          │
│                                   │                          │
│  ┌─ CLI(命令行接口)──────────┐  │  ┌─ MCP Tool(协议接口)─┐│
│  │  agent resource query      │  │  │  resource.query(args)  ││
│  │  消费者:                   │  │  │  消费者:              ││
│  │  · Agent 通过 bash 执行     │  │  │  · Agent 原生调用      ││
│  │  · 人直接终端使用           │  │  │  · 外部系统互操作      ││
│  └─────────────────────────────┘  │  └────────────────────────┘│
└───────────────────────────────────┴─────────────────────────────┘

6.1.2 工具设计三原则

  1. Tool 描述即契约:每个 MCP Tool 的 description 足够精确,让 Agent 仅凭描述即可判断何时调用——这是给 LLM 看的工具说明书
  2. 按副作用分级:感知类无副作用可自主调用;执行类有副作用必须标注风险等级,与信任层级联动
  3. 粒度适中:每个工具完成一个语义完整的原子动作——不拆太细(浪费 token),不合太粗(Agent 失去控制力)

6.1.3 五类工具分级

工具类别副作用职责典型工具
感知类获取系统状态与数据event.list · log.search · entity.list · config.list
决策类产出分析结论event.detail · check.result · entity.detail
执行类改变系统状态config.create(L2) · entity.create(L2) · event.mark(L1)
记忆类有(仅写记忆库)经验存储与检索memory.store · memory.recall · workflow.save
呈现类组装可视化结果chart.render · table.render · report.generate

6.1.4 Skill 层——从 Agent 行为中涌现

Skill 不需要预先设计,它是 Agent 行为固化的自然产物:

第 1~100 次:Agent 自主编排工具调用(灵活,消耗 token)
第 101 次:  系统发现历史轨迹高度相似 → 自动提炼为 Skill
第 102 次起:Agent 识别到匹配场景 → 直接调用 Skill(零 token,确定性执行)

6.2 已有平台改造原则

原则说明
不重写内核,只加接口层已有模块的业务逻辑已经过验证,不动内核。只在现有 API 外包 MCP Tool 壳(加 description + inputSchema + trust_level)
核心工具优先,不全量包装数百个 API 不全部包装,按 Agent 使用频率筛选核心工具集
Schema 从现有结构导出已有数据表结构直接导出为 JSON Schema,不重新设计
已有接口零改造现有 API 完全保留,传统 UI 继续调用,零影响

6.3 Agent 专属 API 设计

Agent API 不是已有接口的封装,而是面向 Agent 推理需求重新设计的接口层。

已有 API 围绕”人在 UI 上的操作”设计——一个按钮对应一个 API。Agent 的消费模式完全不同:它需要在一个推理步骤内获得完整的决策上下文,而不是像人一样在多个页面间切换拼凑信息。

Agent 引擎(Python)
    ↓ 调用
MCP Tool 层
    ↓ 调用
┌─────────────────────────────────────────┐
│ Agent API 层(/agent/ 命名空间)          │ ← 新增
│ 调用已有 Service 层(不是调已有 API 层)   │
├─────────────────────────────────────────┤
│ 已有 REST API 层(数百个)               │ ← 不动
│ 调用已有 Service 层                      │
├─────────────────────────────────────────┤
│ 已有 Service 层(业务逻辑,共享)         │ ← 不动
├─────────────────────────────────────────┤
│ 数据库                                   │ ← 不动
└─────────────────────────────────────────┘

三种 API 性质

性质说明示例
聚合型多个原子 API 的结果组合为一个完整上下文entity.full-profile(聚合基础信息+关联关系+状态历史)
增强型在原子 API 基础上增加 Agent 消费所需的额外信息config.effect(在配置详情基础上增加影响范围分析)
同步化型将异步任务封装为同步接口log.search-sync(将”创建→轮询→取结果”封装为一次调用)

设计原则

原则说明
面向推理步骤设计一个 Agent API 调用 = Agent 一个推理步骤所需的完整信息
调 Service 层不调 API 层Agent API 直接调用 Service 层方法,不走已有 API 的 Controller
精简字段去掉 UI 友好字段(iconKey/colorCode),保留语义字段
含基线对比返回值自带基线对比数据(同比/环比),减少 Agent 的额外查询

七、支撑系统

7.1 对话引擎 + AG-UI 渲染器

7.1.1 AG-UI 协议

AG-UI 是 Agent 大脑与前端渲染器之间的流式通信协议:

事件类型方向说明
text.deltaAgent → 前端流式文本输出(逐 token)
tool.call.startAgent → 前端Agent 开始调用工具,前端展示加载状态
tool.call.resultAgent → 前端工具调用结果
render.componentAgent → 前端嵌入信息呈现原语(图表/表格/时间线)
approval.requestAgent → 前端请求人工审批(L2 操作)
user.message前端 → Agent用户输入文本
user.approval前端 → Agent用户审批结果

7.1.2 信息呈现原语

当对话需要可视化时,Agent 大脑从 Schema 约束的原语中按需选取组件嵌入对话:

原语类型典型场景Schema 约束
折线图/柱状图趋势变化数据源绑定 + 时间范围 + 聚合粒度
表格列表展示列定义 + 排序 + 筛选条件 + 分页
时间线事件链事件序列 + 时间戳 + 关联证据
拓扑图关系图节点 + 边 + 分组
指标卡片关键数字指标名 + 值 + 趋势 + 对比基线
审批卡片操作确认操作摘要 + 影响范围 + 同意/拒绝按钮

设计原则

  • 大部分交互通过纯文字完成——文字是最可靠的
  • 呈现原语是 Schema 约束的,Agent 的”呈现”是在有限选项中组装,不是生成前端代码
  • 组件渲染失败时优雅降级为文字

7.2 制品体系 + Schema Registry

7.2.1 定位

制品体系是”能力自生产”的基础设施——定义 AI 可以生产什么、生产物长什么样、如何验证、如何上线。

核心概念:Schema 就是告诉 AI”你要生成的东西长什么样”的标准格式定义。有了它,AI 的生产行为从”写任意代码”变成”填一份有约束的结构化表单”。

7.2.2 四大 Schema 方向

方向一(MCP Tool 契约)→ Agent 大脑用来"做事"——调什么工具、传什么参数
方向二(业务制品)     → 工厂 Agent 用来"造东西"——生产什么规则、什么策略
方向三(Agent 编排)   → Agent 工厂用来"造 Agent"——定义什么角色、什么工作流
方向四(信息呈现)     → Agent 大脑用来"展示结果"——用什么图表、什么格式

MCP Tool 契约 Schema 示例

name: "event.list"
description: "分页查询业务事件列表..."
trust_level: "L0"
side_effect: false
category: "感知"
input_schema:
  type: object
  properties:
    pageNum: { type: integer, minimum: 1 }
    pageSize: { type: integer, minimum: 1, maximum: 100 }
    filters: { type: object }
    time_type: { type: string, enum: ["today", "week", "month", "custom"] }
  required: ["pageNum", "pageSize"]
output_schema:
  type: object
  properties:
    total: { type: integer }
    items: { type: array }

Agent 编排 Schema 示例

kind: AgentDefinition
name: "data-analyst"
role: "analyst"
model_requirement: "strong_reasoning"
tools_allowed: ["event.*", "log.*"]
tools_denied: ["config.*"]
max_trust_level: "L1"
trigger_conditions:
  - event_type: "anomaly"

工作流 DAG Schema 示例

kind: WorkflowDAG
name: "event-investigate-standard"
trigger: "event.new"
nodes:
  - id: "query_event"
    tool: "event.detail"
  - id: "search_logs"
    tool: "log.search"
    depends_on: ["query_event"]
  - id: "conclude"
    type: "decision"
    branches: { true: "escalate", false: "close" }
fallback: "agent_mode"    # 失败时回退到 Agent 自主模式

7.2.3 制品生命周期

draft → validated → approved → canary → active → deprecated
  ↑        ↑          ↑          ↑        ↑
 生成    Schema    人工审批    灰度验证   全量上线
       自动校验
状态触发条件说明
draft工厂 Agent 生成 或 人工创建初始状态
validatedSchema 校验通过结构合法
approved人工审批通过不可跳过
canary灰度引擎启动新旧对比新旧制品并行运行
active灰度达标 或 管理员手动上线正式生效
deprecated新版本替代 或 管理员下线保留记录

7.2.4 基础设施组件

组件职责
Schema Registry存储四大方向所有 Schema 定义,按方向分 namespace 管理
Artifact Store制品仓库,带版本管理、来源追溯、状态流转
Validation PipelineSchema 校验 → 效果验证 → 历史数据回放 → 生成验证报告
Canary Engine新旧制品并行运行,效果对比,自动决策上线或回滚

7.3 工厂 Agent 集群

工厂 Agent 让系统从”人工开发能力,等版本发布”变为”AI 自主识别能力缺口,自主生产新能力”。

传统模式:人设计 → 人编码 → 人测试 → 人部署
Agent 模式:AI 感知缺口 → AI 生成制品 → Schema校验 → 人审批 → 热加载生效

                                                唯一的人工环节
工厂生产物启动前提
规则工厂业务规则 / 检测策略热加载能力就绪 + 样本积累
Agent 工厂子 Agent 定义(角色/工具集/权限/Prompt)现有角色运营中出现覆盖盲区
工作流工厂确定性工作流 DAG(经验固化)Agent 运行积累足够行动轨迹数据

为什么适合 AI 自主工程:制品的解空间是有限的(Schema 约束),生成失败的代价可控(灰度可回滚),验证方式天然闭环——相比 AI 写通用代码,结构化制品的 AI 自主生产更可控。

7.4 持久化层

┌─ 会话级持久化 ──────────────────────────────────────────────┐
│  对话转录(Transcript)                                       │
│  · 格式:JSONL(每条消息一行,追加写入)                        │
│  · 内容:用户消息 + Agent 推理 + 工具调用 + 工具结果            │
│  · 用途:会话恢复、行动轨迹分析                                │
│                                                              │
│  会话状态(Session State)                                     │
│  · 工作记忆快照、活跃子 Agent 状态、待审批队列                  │
│  · 存储:Redis(TTL = 会话超时时间)                           │
│                                                              │
│  子 Agent 任务状态(Task State)                               │
│  · 任务进度、中间结论、行动轨迹                                │
│  · 存储:Redis + 完成后归档到持久存储                          │
└──────────────────────────────────────────────────────────────┘

┌─ 全局级持久化 ──────────────────────────────────────────────┐
│  长期记忆(Memory)                                           │
│  · 用户偏好、历史结论、经验模式                                │
│  · 加载:会话启动时加载索引,按需读取详情                      │
│                                                              │
│  行动轨迹(Action Trace)                                     │
│  · Agent 每次行动的完整记录                                   │
│  · 存储:时序数据库(供工作流工厂分析)                        │
│                                                              │
│  审计日志(Audit Log)                                        │
│  · 所有 L1/L2/L3 操作的不可篡改记录                           │
│  · 存储:追加写入,不可删除                                    │
└──────────────────────────────────────────────────────────────┘

会话恢复机制

正常对话中
    ├─ 网络中断 → 会话状态已持久化 → 用户重新打开 → 自动恢复到中断点
    ├─ LLM 不可用 → 回退到传统 UI 模式 → 恢复后自动续接
    └─ 上下文溢出 → 保存状态 → 新会话自动加载长期记忆

7.5 观测系统

观测三支柱

支柱内容
TracesAgent 每次推理→工具调用→子 Agent 调度的完整调用链
MetricsToken 消耗、工具调用次数/延迟、Skill 命中率
Logs权限决策记录、审批记录、异常事件、钩子执行结果

Agent 追踪数据模型

{
  "trace_id": "uuid",
  "session_id": "uuid",
  "agent_id": "brain",
  "span_type": "tool_call | sub_agent_dispatch | llm_inference | approval_wait",
  "tool_name": "event.list",
  "trust_level": "L0",
  "permission_decision": "allow",
  "hook_results": [
    {"hook": "PreToolUse", "result": "allow", "latency_ms": 3}
  ],
  "input_tokens": 1200,
  "output_tokens": 350,
  "latency_ms": 2100,
  "timestamp": "2026-04-03T10:30:00Z"
}

7.6 配置系统

┌─ 企业级(最高优先级,不可被用户覆盖)───────────────────────┐
│  · 全局禁用的工具列表                                      │
│  · 强制审批的操作列表                                      │
│  · 允许的 LLM 模型白名单                                   │
│  · Agent 最大自主操作次数限制                               │
│  · 默认信任层级                                            │
│  · 规范文件                                                │
│  · 是否启用主动巡检模式                                    │
├──────────────────────────────────────────────────────────┤
│  ↓ 用户可在企业策略允许范围内覆盖                           │
├─ 用户级 ──────────────────────────────────────────────────┤
│  · 用户个人偏好(交互模式、通知频率、关注范围)              │
│  · 用户交互风格(简洁/详细)                                │
│  · 用户"总是允许"的操作规则                                 │
└──────────────────────────────────────────────────────────┘

配置合并规则

读取配置值(key):
  1. 检查企业级配置 → 如果是 deny/强制项 → 直接返回(不可覆盖)
  2. 检查用户级配置 → 如果有值 → 返回
  3. 返回系统默认值

八、新旧架构共存设计

Agent 系统上线后,传统 UI 不会立即下线。需要一个过渡期,新旧两套交互方式并存,用户可自由切换

8.1 共存架构

┌─ 前端 ───────────────────────────────────────────┐
│  ┌─ 传统 UI ───────────┐  ┌─ 对话界面 ─────────┐ │
│  │  菜单 + 表单 + 分页   │  │  对话引擎 + AG-UI   │ │
│  └────────┬──────────────┘  └────────┬──────────┘ │
│           │     模式开关               │            │
└───────────┼──────────────────────────┼─────────────┘
            │                          │
            ▼                          ▼
┌─ API 层 ──────────────────────────────────────────┐
│  ┌─ 已有 REST API ────┐  ┌─ Agent API 层 ───────┐ │
│  │  数百个原子接口      │  │  /agent/ 聚合接口     │ │
│  │  面向 UI 消费       │  │  + 已有接口直调       │ │
│  └────────┬────────────┘  └────────┬─────────────┘ │
│           └───────────┬───────────┘                 │
│                       ▼                             │
│           同一个 Service 层(业务逻辑共享)            │
└───────────────────────────────────────────────────┘

关键架构约束:两种模式共享同一个 Service 层和数据库。传统 UI 调已有 API,Agent 调 /agent/ 聚合 API + 已有原子 API。数据完全一致。

8.2 模式切换机制

维度说明
切换粒度按用户级别
默认模式过渡期默认传统 UI
数据一致性共享 Service 层,零延迟一致
回退保障对话模式异常时,用户可随时切回传统 UI——Agent 引擎是独立微服务,崩溃不影响已有平台

8.3 过渡期计划

阶段传统 UIAgent 对话
并存期默认开启可选开启(Beta)
切换期可选保留默认开启
迁移完成仅保留核心管理页面唯一入口

性能不退化原则:Agent 模式与传统 UI 模式完成同一操作的端到端时长对比,是决定切换节奏的关键指标。

降级策略:Agent 引擎是独立微服务。Agent 引擎崩溃 = 对话模式不可用,但传统 UI + 全部已有 API 继续正常工作。


九、Agent 测试体系设计

传统平台测试是确定性的——调 API、传固定参数、断言返回值。Agent 系统将确定性操作变成了”自然语言 → Agent 理解 → 工具选择 → 参数构造”,每一步都引入了概率性。没有系统化的测试体系,Agent 的质量无法量化。

9.1 Agent 测试与传统测试的本质差异

维度传统 API 测试Agent 测试
输入固定 API Path + 固定参数自然语言(同一意图有 N 种表达)
确定性100%——同输入同输出概率性——LLM 推理可能选不同工具
正确性定义返回值 = 期望值意图识别正确 + 工具选择正确 + 参数构造合理 + 信任层级正确
回归风险代码变更导致System Prompt 变更、模型升级、上下文变化都可能导致
覆盖率衡量API 覆盖率 / 分支覆盖率意图覆盖率——多少种用户意图被正确理解和执行

9.2 三层测试模型

┌─────────────────────────────────────────────────────┐
│ 第三层:端到端场景测试                                  │
│ "把这个新实体做完检查再接入"                             │
│ → 验证多步任务拆解、步骤顺序、审批流、最终结果             │
├─────────────────────────────────────────────────────┤
│ 第二层:工具选择 + 参数构造测试                          │
│ "查一下昨天的高优先级事件"                               │
│ → 验证选对工具 + 时间参数正确 + 筛选条件正确              │
├─────────────────────────────────────────────────────┤
│ 第一层:意图识别测试                                    │
│ "帮我看看最近的事件"                                    │
│ → 验证识别为正确的事件类型查询                            │
└─────────────────────────────────────────────────────┘

第一层:意图识别准确率

测试维度说明
正向识别标准表达 → 正确意图
同义变体同一意图的不同表达方式均能识别
模糊消歧模糊表达能正确追问或合理默认
误识别防御不应被错误识别的表达
复合意图拆解多意图表达能正确拆解

第二层:工具选择 + 参数构造正确性

测试维度说明
工具选择意图 → 正确的 MCP Tool
参数提取自然语言中的条件正确提取为参数
参数默认未指定的参数使用合理默认值
信任层级操作的信任层级判定正确
子 Agent 分派复杂意图正确分派给对应子 Agent

第三层:端到端场景测试

测试维度说明
任务拆解复杂意图正确拆解为多步计划
步骤顺序有依赖关系的步骤按正确顺序执行
审批流L2 操作正确触发审批
异常恢复某步骤失败时的处理
上下文保持多轮对话中上下文不丢失

9.3 评估指标

指标定义目标值
意图识别准确率正确识别的意图数 / 总意图数待建立基线
工具选择准确率选对工具的次数 / 总调用次数待建立基线
信任层级判定准确率信任层级判定正确的次数 / 总调用次数100%(底线——不允许将 L2 操作误判为 L0)
变体一致性同一意图 N 种表达的识别一致率待建立基线
回归通过率基线集通过用例数 / 总数≥ 95%

9.4 测试与开发的闭环

每次 System Prompt / 模型变更 → 运行回归基线集 → 通过率达标则允许发布;不达标则定位失败用例(意图退化→调 Prompt / 工具偏移→调 description / 参数错误→调 Schema / 信任层级误判→紧急修复)→ 修复后重跑回归集。

9.5 模型评测框架

评测维度评测方法用途
意图识别准确率基础意图集 → 各模型识别正确率对比选择 Agent 大脑模型
工具选择准确率给定意图 → 各模型选择正确工具的比率选择 Agent 大脑模型
结构化输出遵循率要求输出 JSON → 各模型格式合规率选择工厂 Agent 模型
推理延迟相同 Prompt → 各模型首 token 延迟和完整响应延迟权衡速度与质量
长上下文保持能力上下文逐步增大 → 各模型准确率退化曲线评估上下文管理策略
约束遵循率Prompt Injection 测试集 → 各模型拒绝违规指令的比率选择可信赖的模型

十、实施路线

10.1 Agent 引擎分阶段实施

阶段交付物完成标志
阶段零:Mock API Server核心接口 Mock 就绪Agent 引擎所有 MCP Tool 调用均可获得合法响应
阶段一:Agent 循环引擎骨架状态机完整闭环真实 Mock API 调用,完整循环可运转
阶段二:信任层级权限引擎L0/L2 硬约束生效L2 工具被引擎层拦截推审批,L0 无感通过
阶段三:事件钩子体系核心三钩子接入PreToolUse/PostToolUse/Stop 触发,审计记录落库
阶段四:1+N 子 Agent 调度任务分派协议跑通顶层 Agent 可分派任务,结论回传组装响应
阶段五:System Prompt 五层组装动态 Prompt 替换按用户动态注入 Layer 2,工具按需分档加载
阶段六:意图测试与调优核心场景可演示信任层级判定 100% 准确,端到端场景可完整演示

10.2 交付依赖关系

阶段一                阶段二                阶段三                阶段四
──────────────────────────────────────────────────────────────────────
MCP Tool 层 ──────→ Agent 引擎 ──────→ 子 Agent ──────→ 端到端验证
Schema Registry ──→ 信任层级框架 ──→ 审批流联调
                    对话引擎 ──────→ 前端联调 ──────→ 新旧共存
已有模块改造 + Agent 专属 API ──────────────────→ 集成测试
持久化 + 观测 + 配置 ──────────────────────────→ 运维验证
意图测试集 ──────────────────────────────────→ 回归门控

10.3 后续演进方向

方向内容启动前提
工作流工厂启动历史轨迹 → 高频场景提炼为 DAG → Skill 执行,零 tokenAgent 运行积累足够行动轨迹数据
规则工厂启动AI 自动生成业务规则,响应周期从人工数天缩短到分钟级热加载能力就绪 + 样本积累
Agent 工厂启动现有角色覆盖盲区时自动生成新角色定义运营期发现真实新角色需求
子 Agent 能力深化自动效果分析、趋势预测、多渠道协作基础版运营稳定后
信任层级动态化基于行为分析自动提权/降权 + 紧急熔断行为分析双用途完成
主动巡检模式Agent 后台持续监控,主动推送风险Agent 大脑能力成熟后

总结

这篇文章的十个核心架构模式

  1. Agent 循环引擎状态机:IDLE→REASONING→PERMISSION→EXEC→RESULT→STOP_CHECK 六态循环,信任层级内建到每一步
  2. 信任层级四级模型 L0-L3:从完全自主到多人审批,引擎层强制执行,不依赖 LLM 遵守指令
  3. 事件钩子体系:AOP 模式拦截 Agent 生命周期,10+ 个事件点,支持 command 和 prompt 两种模式
  4. 1+N 子 Agent 协作:Manager + 专项角色的分派/调度协议,基于能力模块反推角色,上下文隔离
  5. System Prompt 五层架构:核心身份→规范→工具→上下文→记忆的动态组装
  6. 上下文管理五机制:规范文件 / ToolSearch / Compaction / Prompt Cache / 大输出外溢
  7. 制品体系 + Schema Registry:Schema 约束的有限解空间,四大方向覆盖工具/业务/编排/呈现
  8. 框架选型方法论:不选框架本身,而是从各框架提炼设计精华,自研引擎整合
  9. 新旧架构共存:传统 UI 与 Agent 模式共享 Service 层,Agent 崩溃不影响已有平台
  10. Agent 测试体系:三层测试模型(意图→工具→端到端),信任层级判定 100% 是底线

关键设计原则

  • Agent 不是平台上面的壳,Agent 就是平台本身——已有模块是”器官”,Agent 是”大脑”
  • 信任层级是引擎原生的,不是插件——这决定了为什么通用框架不能直接用
  • Prompt 引导”应该做什么”,引擎强制”不能做什么”——两层互补
  • 人负责决策,AI 负责分析和执行——L2/L3 审批是代码层面的强制,不是请求
  • 不设计用户旅程——用户有意图,Agent 理解并执行,中间不需要”旅程”
  • Schema 约束的有限解空间——AI 的”生成”不是写任意代码,而是在约束下组装结构化制品

本文基于真实项目实践整理,已脱敏处理。架构设计由架构师与 AI 协作完成——架构师主导方向判断和技术决策,AI 负责设计推演、文档生成和一致性检查。