87 lines
3.3 KiB
Markdown
87 lines
3.3 KiB
Markdown
# 当前 MVP 架构
|
||
|
||
**更新日期**:2026-07-22
|
||
**状态**:当前可运行架构
|
||
|
||
## 1. 系统定位
|
||
|
||
SuperBizAgent 是面向故障诊断的可追踪 Agent 应用。当前系统只保留一个拥有 Tool loop 的 `Diagnosis Agent`;Harness 负责确定性的预算、取消、工具边界、证据验真、语义审查和安全发布。
|
||
|
||
## 2. 分层
|
||
|
||
```mermaid
|
||
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"]
|
||
Tools --> Invocation["tool_invocation metadata audit"]
|
||
Run --> Trace["Diagnosis Trace API"]
|
||
Step --> Trace
|
||
Invocation --> Trace
|
||
```
|
||
|
||
## 3. 唯一 Chat 主链
|
||
|
||
```text
|
||
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_knowledge`
|
||
- `query_logs`
|
||
- `query_mysql`
|
||
|
||
每次调用由框架提供 `tool_call_id`,Harness 校验 exact run、只读、Schema、预算和容量。Redis 保存 TTL 内完整 canonical invocation;MySQL `tool_invocation` 只保存长期有界 metadata,不保存完整参数、SQL/日志正文、raw response 或 Agent projection。
|
||
|
||
## 5. Trace 与持久化
|
||
|
||
```text
|
||
chat_session(sessionId)
|
||
-> diagnosis_run(runId)
|
||
-> agent_step(runId)
|
||
-> tool_invocation(runId)
|
||
```
|
||
|
||
- `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 短期保存。
|
||
|
||
## 6. 公开 API
|
||
|
||
当前诊断执行入口只有 `POST /api/chat`。Trace、feedback、文档与检索 API 保持独立;已删除的旧诊断和 Redis conversation Session endpoint 不提供兼容分支。
|
||
|
||
## 7. 安全边界
|
||
|
||
- 不输出或长期持久化 Chain of Thought。
|
||
- 不向 Agent 暴露 Redis、canonical key、完整 Tool 请求/响应或数据库凭据。
|
||
- EvidenceGuard 只接受当前 Run 的 READY canonical invocation。
|
||
- SemanticGuard 无 Tool、无记忆、无回调主 Agent 能力。
|
||
- technical failure 与 guard rejection 只能产生 stable failure 或固定 safe fallback。
|