4.8 KiB
4.8 KiB
当前 MVP 架构
更新日期:2026-07-23 状态:当前可运行架构
1. 系统定位
SuperBizAgent 是面向故障诊断的可追踪 Agent 应用。当前系统只保留一个拥有 Tool loop 的 Diagnosis Agent;Harness 负责确定性的预算、取消、工具边界、证据验真、语义审查和安全发布。
2. 分层
flowchart TB
Browser["Browser / API client"] --> Chat["POST /api/chat named SSE"]
Chat --> App["ChatApplicationUseCase"]
App --> Router["Intent Router"]
Router --> System["System Chat"]
Router --> Knowledge["Knowledge Query"]
Router --> Diagnosis["Diagnosis Agent"]
Diagnosis --> Tools["Harness ACI Tools"]
Tools --> Canonical["Redis canonical invocation"]
Diagnosis --> Evidence["EvidenceGuard"]
Evidence --> Semantic["SemanticGuard"]
Semantic --> Release["Release Policy"]
Release --> Chat
App --> Run["diagnosis_run"]
Diagnosis --> Step["agent_step metadata audit"]
App --> Timeline["diagnosis_trace_event"]
Diagnosis --> Reasoning["agent_reasoning_audit restricted"]
Tools --> Invocation["tool_invocation metadata audit"]
Run --> Trace["Diagnosis Trace API"]
Step --> Trace
Invocation --> Trace
Timeline --> Trace
Reasoning --> ReasoningAPI["Reasoning Audit API"]
3. 唯一 Chat 主链
POST /api/chat
-> metadata(session_id, run_id)
-> status*
-> ChatApplicationUseCase
-> SYSTEM_CHAT | KNOWLEDGE_QUERY | DIAGNOSIS
-> content | failure
-> done(SUCCESS | FALLBACK | FAILED)
- Controller 只处理请求校验、bounded worker、SSE 和 disconnect。
- Application Use Case 拥有 Session/Run、路由、PreviousTurn 和终态持久化。
- Diagnosis Agent 是唯一报告作者和唯一拥有 evidence Tool loop 的业务 Agent。
- EvidenceGuard 只做确定性结构/引用验真;SemanticGuard 在隔离上下文做整份报告语义审查。
- 未通过 Release Policy 的 Draft 永不进入公开 SSE。
4. Tool 与数据边界
Agent 只看到三个固定 Tool:
lookup_knowledgequery_logsquery_mysql
每次调用由框架提供 tool_call_id,Harness 校验 exact run、只读、Schema、预算和容量。Redis 保存 TTL 内完整 canonical invocation;MySQL tool_invocation 只保存长期有界 metadata,不保存完整参数、SQL/日志正文、raw response 或 Agent projection。
5. Trace 与持久化
chat_session(sessionId)
-> diagnosis_run(runId)
-> agent_step(runId)
-> tool_invocation(runId)
-> diagnosis_trace_event(runId)
-> agent_reasoning_audit(runId, restricted)
chat_session是 JPA Run 目录与多轮 metadata,不保存完整对话历史。diagnosis_run是 Run 状态、intent、release outcome、安全发布结果和预算汇总真理源。agent_step只保存模型步骤 metadata,不保存 Prompt、消息正文、模型正文或 Thought。tool_invocation只保存 Tool durable audit metadata;完整调用由 Redis canonical store 短期保存。diagnosis_trace_event是追加式统一 Timeline,记录 Run、Routing、Agent、Tool、Evidence、Semantic 和 Release 生命周期事件;details只能保存有界安全 metadata。agent_reasoning_audit与普通 Trace 分表,只保存 Provider 实际返回的 reasoning 或明确的 unavailable 记录;reasoning 不属于事实证据。
6. 公开 API
当前诊断执行入口只有 POST /api/chat。诊断审计读取分为:
GET /api/diagnosis/{sessionId}/trace?runId={runId}:普通 Trace,返回 Run、步骤、Tool metadata 和统一 Timeline,不返回 reasoning 原文。GET /api/diagnosis/{sessionId}/trace/reasoning?runId={runId}:独立 reasoning 审计读取,runId必填并校验其属于 pathsessionId。
Reasoning endpoint 是敏感审计面,不属于普通业务 API。当前已完成数据和查询隔离;认证授权、保留期限、加密要求及真实 Provider 验证仍由 ISS-015 收敛。Feedback、文档与检索 API 保持独立;已删除的旧诊断和 Redis conversation Session endpoint 不提供兼容分支。
7. 安全边界
- 普通 SSE、Trace、Evidence Snapshot、业务结果和应用日志不输出或保存 reasoning 原文。
- 仅当 Provider 在模型 metadata 中实际返回 reasoning 时,审计 Hook 才将其截断后写入独立表;Provider 未返回时不得伪造。
- Reasoning 不能作为事实证据,也不能绕过 EvidenceGuard 或 SemanticGuard。
- 不向 Agent 暴露 Redis、canonical key、完整 Tool 请求/响应或数据库凭据。
- EvidenceGuard 只接受当前 Run 的 READY canonical invocation。
- SemanticGuard 无 Tool、无记忆、无回调主 Agent 能力。
- technical failure 与 guard rejection 只能产生 stable failure 或固定 safe fallback。