4. 边界分层模型

Agent 与用户之间的交互不是单层协议,而是由展示层、交互层、决策层、执行层构成的四层边界。每层承载独立的职责与信任假设,层间通过标准化接口进行隔离。本章定义各层的边界划分、接口规范、数据流与安全策略,并给出落地步骤与验收清单。

4.1 四层职责与边界定义

分层职责范围边界输入边界输出
展示层用户界面渲染、输入采集、响应显示。不包含业务逻辑。用户事件(点击、语音、文字)标准化用户请求(UserRequest)
交互层对话管理、多轮状态跟踪、意图消歧。维护会话上下文。UserRequest + 会话ID格式化意图对象(Intent)
决策层策略选择、权限校验、任务规划、合规检查。不直接执行。Intent + 用户上下文批准的执行计划(ExecutionPlan)
执行层调用外部工具、执行原子操作、返回结果。不改变决策规则。ExecutionPlanActionResult / 异常信号
边界原则:下层不能跳过上层直接修改上层状态;上层不能直接调用下层私有资源。层间数据必须经过序列化/反序列化,禁止共享内存或对象引用。

4.2 层间接口规范

每一对相邻层之间定义严格的契约,使用 JSON Schema 或 Proto 描述,部署时生成校验桩。以下为展示层→交互层接口的伪代码定义(非实际实现):

// 展示层 → 交互层 接口契约
Interface PresentationToInteraction {
  // 输入字段
  userId: string
  sessionId: string
  channelType: "web" | "voice" | "api"
  payload: {
    rawText?: string
    structuredForm?: Record<string, any>
    // 仅允许枚举类型,避免注入
    command?: "query" | "confirm" | "cancel"
  }
  // 输出(回调)
  ResponseCallback: (output: PresentationOutput) => void
  ErrorCallback: (errorCode: string, detail: any) => void
}
层间数据流约束:所有跨层数据必须携带traceId用于审计;决策层向下发送执行计划时,必须附带权限签名(由权限模型签发,有效期≤30s)。

4.3 信任链路与权限模型

信任链自顶向下逐层衰减:展示层信任用户输入格式;交互层信任展示层已经做过基础清洗;决策层只信任交互层给出的意图,不信任原始输入;执行层信任决策层给出的计划,不信任上层传来的敏感参数。

权限校验集中在决策层入口。规则示例:

// 决策层权限检查伪规则
Rules:
- Role=admin → 可执行任何 ExecutionPlan
- Role=viewer → 仅允许只读 Intent(query类型)
- 高风险操作(文件删除、转账) → 必须附带二次确认 token
- 所有拒绝记录到 AuditLog,触发安全告警
风险提示:若执行层绕过决策层直接执行(例如从缓存中复用旧计划),将破坏信任链路,必须被监控系统标记为异常行为。

4.4 异常处理与安全策略

各层独立处理本层异常,不得将底层异常细节暴露给上层。异常处理边界如下:

层次异常类型处理方式向上返回
展示层渲染异常、输入解析失败立即恢复默认UI,日志记录向用户显示“输入不识别”
交互层会话超时、意图歧义度>80%发起消歧对话,请求澄清返回消歧事件
决策层权限不足、策略违规、计划不可行拒绝执行,生成拒绝理由返回DecisionRejected
执行层工具超时、网络不可达、数据校验失败重试一次后仍失败则上报返回ExecutionError+错误码

安全策略聚焦于层间传输:

  • 展示层→交互层:必须启用 CSRF/API Token 验证
  • 交互层→决策层:修改源 IP 白名单,禁止公网直接调用
  • 决策层→执行层:必须使用短时效 HMAC 签名,防止重放
  • 全链路:记录每条跨层消息的完整性哈希

4.5 分层架构总览

以下 SVG 展示四层边界及层间接口数据流。节点颜色对应各层职责:

Agent 四层边界与接口 用户交互边界 — 四层模型 用户 / 外部调用 展示层 交互层 决策层 执行层 外部工具 / API 层间接口规范(关键字段) 展示层 → 交互层 UserRequest: { userId, sessionId, channelType, payload } 交互层 → 决策层 Intent: { intentType, slots, confidence, contextHash } 决策层 → 执行层 ExecutionPlan: { planId, steps[], permissionSig, ttl } 执行层 → 决策层(回调) ActionResult: { stepId, status, output, errorCode? } 决策层 → 交互层(拒绝/消歧) DecisionFeedback: { decision, reason, requiredClarify? } 展示层输出: PresentationOutput: { screen, voice, notification }

4.6 方案权衡

决策点强分层(推荐)弱分层适用场景
层间耦合度严格接口契约,独立部署允许直接调用,简化调试强分层适合多团队协作项目;弱分层适合原型验证
性能开销额外序列化/反序列化内存共享,延迟低延迟敏感且信任链简单时可考虑弱分层
安全审计每层可独立监审跨层日志混乱金融、医疗等合规场景必须强分层
变更影响修改一层不影响其他层修改可能级联长期维护项目优先强分层

4.7 落地步骤与验收标准

  • 步骤1:绘制当前 Agent 的交互边界图,标注现有混合层的职责混乱点。
  • 步骤2:按本章四层模型重构代码模块,每个层独立为命名空间或微服务。
  • 步骤3:为每对相邻层编写接口 Schema(JSON Schema 或 Protobuf),并生成校验桩。
  • 步骤4:在决策层入口集成权限校验与审计日志。
  • 步骤5:配置层间超时熔断(默认:展示层→交互层 5s,交互层→决策层 10s,决策层→执行层 30s)。
  • 步骤6:部署监控探针,统计每层 P99 响应时间与错误率。

验收检查清单:

  1. 所有跨层调用均经过契约校验,契约变更必须双方确认。
  2. 执行层不产生新决策,仅执行由决策层下发的计划。
  3. 展示层不包含任何权限判断逻辑。
  4. 违反信任链的行为(如执行层直接使用用户原始输入)被监控捕获并告警。
  5. 层间异常不泄漏堆栈细节给上层。
  6. 审计日志可追踪每条用户请求的完整四层流转路径。
本章核心:边界分层不是技术风格,而是安全与可演化性的基础设施。坚持展示层无逻辑、决策层无执行、执行层无策略,才能让 Agent 在复杂交互中保持可审计与可干预。