docs(mvp): archive session run trace issue
This commit is contained in:
+7
-4
@@ -1,6 +1,6 @@
|
|||||||
# SuperBizAgent MVP 文档
|
# SuperBizAgent MVP 文档
|
||||||
|
|
||||||
**更新日期**:2026-07-09
|
**更新日期**:2026-07-10
|
||||||
|
|
||||||
本目录保存 MVP 阶段的架构、问题、演示、评测和数据表说明。当前材料按“当前入口”和“历史归档”拆开,避免把早期设计稿当成当前实现。
|
本目录保存 MVP 阶段的架构、问题、演示、评测和数据表说明。当前材料按“当前入口”和“历史归档”拆开,避免把早期设计稿当成当前实现。
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
## 当前系统一句话
|
## 当前系统一句话
|
||||||
|
|
||||||
SuperBizAgent MVP 是一个可追踪的故障诊断 Agent:Chat 和 AIOps 入口进入 Agent 编排,Executor 显式调用知识库、日志、指标等工具收集证据,诊断过程落到 `diagnosis_session`、`agent_step`、`tool_invocation`,最终通过 Trace API、Verifier 和评测脚本证明结果可解释、可回放、可对比。
|
SuperBizAgent MVP 是一个可追踪的故障诊断 Agent:Chat 和 AIOps 入口进入 Agent 编排,Executor 显式调用知识库、日志、指标等工具收集证据;多轮会话元数据落到 `chat_session`,每次诊断运行落到 `diagnosis_run`,步骤和工具明细通过 `agent_step.run_id`、`tool_invocation.run_id` 关联,最终通过 Trace API、Verifier 和评测脚本证明结果可解释、可回放、可对比。
|
||||||
|
|
||||||
## 文档结构
|
## 文档结构
|
||||||
|
|
||||||
@@ -83,7 +83,8 @@ mvp/
|
|||||||
- `VectorSearchService` 是检索稳定门面。
|
- `VectorSearchService` 是检索稳定门面。
|
||||||
- Spring AI VectorStore 是当前读取主路径,Milvus SDK 保留为 fallback。
|
- Spring AI VectorStore 是当前读取主路径,Milvus SDK 保留为 fallback。
|
||||||
- AIOps payload 会生成推荐知识库 query,保留业务语义。
|
- AIOps payload 会生成推荐知识库 query,保留业务语义。
|
||||||
- Trace API 聚合 session、step、tool invocation 和 self evaluation。
|
- `sessionId` 表示多轮会话上下文,`runId` 表示一次可回放诊断运行。
|
||||||
|
- Trace API 聚合 `diagnosis_run`、`agent_step.run_id`、`tool_invocation.run_id` 和 self evaluation。
|
||||||
- RAG 行为通过 offline baseline 和 live acceptance 脚本做回归验证。
|
- RAG 行为通过 offline baseline 和 live acceptance 脚本做回归验证。
|
||||||
|
|
||||||
## 关键运行链路
|
## 关键运行链路
|
||||||
@@ -93,7 +94,8 @@ Chat
|
|||||||
-> ChatService
|
-> ChatService
|
||||||
-> Planner / Executor / Verifier
|
-> Planner / Executor / Verifier
|
||||||
-> evidence tools
|
-> evidence tools
|
||||||
-> diagnosis_session / agent_step / tool_invocation
|
-> chat_session / diagnosis_run
|
||||||
|
-> agent_step.run_id / tool_invocation.run_id
|
||||||
-> DiagnosisTraceService
|
-> DiagnosisTraceService
|
||||||
|
|
||||||
AIOps
|
AIOps
|
||||||
@@ -102,6 +104,7 @@ AIOps
|
|||||||
-> Planner / Executor
|
-> Planner / Executor
|
||||||
-> Prometheus / logs / lookup_knowledge
|
-> Prometheus / logs / lookup_knowledge
|
||||||
-> AiOpsRuleEvaluationService
|
-> AiOpsRuleEvaluationService
|
||||||
|
-> diagnosis_run(agent_flow=AI_OPS)
|
||||||
-> DiagnosisTraceService
|
-> DiagnosisTraceService
|
||||||
|
|
||||||
RAG
|
RAG
|
||||||
|
|||||||
@@ -110,10 +110,10 @@ sequenceDiagram
|
|||||||
participant H as AgentLoggingHook
|
participant H as AgentLoggingHook
|
||||||
participant DB as agent_step
|
participant DB as agent_step
|
||||||
|
|
||||||
A->>H: before_model(messages, sessionId)
|
A->>H: before_model(messages, sessionId, runId)
|
||||||
H->>DB: 写入 model_input / step_index / agent_name
|
H->>DB: 写入 session_id / run_id / model_input / step_index / agent_name
|
||||||
A-->>A: LLM 推理
|
A-->>A: LLM 推理
|
||||||
A->>H: after_model(messages, sessionId)
|
A->>H: after_model(messages, sessionId, runId)
|
||||||
H->>DB: 回填 model_output / thought / has_tool_call / duration / token_count
|
H->>DB: 回填 model_output / thought / has_tool_call / duration / token_count
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -126,6 +126,8 @@ sequenceDiagram
|
|||||||
- token count。
|
- token count。
|
||||||
- Verifier 的 JSON 输出摘要。
|
- Verifier 的 JSON 输出摘要。
|
||||||
|
|
||||||
|
新写入必须带 `run_id`;`session_id` 仍保留用于粗粒度排查和历史兼容。
|
||||||
|
|
||||||
## 5. Tool Invocation 门禁
|
## 5. Tool Invocation 门禁
|
||||||
|
|
||||||
工具调用记录由 `ToolInvocationRecorder` 和具体工具共同完成。
|
工具调用记录由 `ToolInvocationRecorder` 和具体工具共同完成。
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
## 1. 一句话
|
## 1. 一句话
|
||||||
|
|
||||||
SuperBizAgent 是一个面向企业故障诊断的可追踪 Agent 系统:它把用户问题或 AIOps 告警转换成 Planner、Executor、Gatekeeper、Verifier、Composer 的诊断链路,所有工具证据、模型步骤、最终答案、自评估和用户反馈都能通过同一个 `sessionId` 回放。
|
SuperBizAgent 是一个面向企业故障诊断的可追踪 Agent 系统:它把用户问题或 AIOps 告警转换成 Planner、Executor、Gatekeeper、Verifier、Composer 的诊断链路,`sessionId` 保留多轮上下文,`runId` 精确绑定一次诊断运行;所有工具证据、模型步骤、最终答案、自评估和用户反馈都能按 `sessionId + runId` 回放。
|
||||||
|
|
||||||
## 2. 一张图
|
## 2. 一张图
|
||||||
|
|
||||||
|
|||||||
@@ -52,12 +52,12 @@ Invoke-RestMethod `
|
|||||||
-Body $body
|
-Body $body
|
||||||
```
|
```
|
||||||
|
|
||||||
然后查询同一 session:
|
然后保留响应里的 `runId`,查询同一 run 的 Trace:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
Invoke-RestMethod `
|
Invoke-RestMethod `
|
||||||
-Method Get `
|
-Method Get `
|
||||||
-Uri "http://localhost:9900/api/diagnosis/mvp-demo-narrow-highcpu-001/trace"
|
-Uri "http://localhost:9900/api/diagnosis/mvp-demo-narrow-highcpu-001/trace?runId=$runId"
|
||||||
```
|
```
|
||||||
|
|
||||||
注意:除 payment-timeout 主路径外,其它 live 请求是“可尝试”的演示入口;稳定验收以 `mvp/eval` fixture 和 baseline 为准。
|
注意:除 payment-timeout 主路径外,其它 live 请求是“可尝试”的演示入口;稳定验收以 `mvp/eval` fixture 和 baseline 为准。
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## 为什么不用普通 Chatbot?
|
## 为什么不用普通 Chatbot?
|
||||||
|
|
||||||
这个项目的重点不是生成一段诊断文本,而是把诊断拆成可审计链路:Planner 拆解问题,Executor 调工具拿证据,Gatekeeper 用代码核验证据引用,Verifier 判断可推导性,Composer 生成最终表达。每次运行都能通过同一个 `sessionId` 回放。
|
这个项目的重点不是生成一段诊断文本,而是把诊断拆成可审计链路:Planner 拆解问题,Executor 调工具拿证据,Gatekeeper 用代码核验证据引用,Verifier 判断可推导性,Composer 生成最终表达。`sessionId` 保留多轮上下文,`runId` 精确绑定一次诊断运行,Trace 和 Feedback 都可以按 `sessionId + runId` 回放和定位。
|
||||||
|
|
||||||
## 为什么 RAG 要做成显式工具?
|
## 为什么 RAG 要做成显式工具?
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# MVP Issues 索引
|
# MVP Issues 索引
|
||||||
|
|
||||||
**更新日期**:2026-07-09
|
**更新日期**:2026-07-10
|
||||||
**状态**:按活跃问题、设计笔记、RAG 问题集和已归档问题整理
|
**状态**:按活跃问题、设计笔记、RAG 问题集和已归档问题整理
|
||||||
|
|
||||||
## 目录约定
|
## 目录约定
|
||||||
@@ -18,7 +18,6 @@
|
|||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| ISS-003 | MVP 设计与实现 Review 收敛 | 高 | 待规划 | [active/ISS-003-mvp-design-implementation-review.md](active/ISS-003-mvp-design-implementation-review.md) |
|
| ISS-003 | MVP 设计与实现 Review 收敛 | 高 | 待规划 | [active/ISS-003-mvp-design-implementation-review.md](active/ISS-003-mvp-design-implementation-review.md) |
|
||||||
| ISS-004 | Executor 域级检索水位控制 | 低 | 待规划 | [active/ISS-004-executor-domain-hard-limit.md](active/ISS-004-executor-domain-hard-limit.md) |
|
| ISS-004 | Executor 域级检索水位控制 | 低 | 待规划 | [active/ISS-004-executor-domain-hard-limit.md](active/ISS-004-executor-domain-hard-limit.md) |
|
||||||
| ISS-010 | 同 session 多轮诊断 Trace 隔离 | 高 | 方案已确认,待 OpenSpec | [active/ISS-010-session-run-trace-isolation.md](active/ISS-010-session-run-trace-isolation.md) |
|
|
||||||
| executor-evidence-attribution-hallucination | Executor 证据归因幻觉 | 高 | 待规划 | [active/executor-evidence-attribution-hallucination.md](active/executor-evidence-attribution-hallucination.md) |
|
| executor-evidence-attribution-hallucination | Executor 证据归因幻觉 | 高 | 待规划 | [active/executor-evidence-attribution-hallucination.md](active/executor-evidence-attribution-hallucination.md) |
|
||||||
| rag-refactor-plan | RAG 检索重构计划 | 高 | 待规划 | [active/rag-refactor-plan.md](active/rag-refactor-plan.md) |
|
| rag-refactor-plan | RAG 检索重构计划 | 高 | 待规划 | [active/rag-refactor-plan.md](active/rag-refactor-plan.md) |
|
||||||
|
|
||||||
@@ -60,6 +59,7 @@
|
|||||||
| ISS-007 | Verifier 证据摘要保真与工具命中质量问题 | 已实施 | [archived/ISS-007-verifier-evidence-summary-fidelity.md](archived/ISS-007-verifier-evidence-summary-fidelity.md) |
|
| ISS-007 | Verifier 证据摘要保真与工具命中质量问题 | 已实施 | [archived/ISS-007-verifier-evidence-summary-fidelity.md](archived/ISS-007-verifier-evidence-summary-fidelity.md) |
|
||||||
| ISS-008 | Executor 窄范围查询越界 | 已修复 | [archived/ISS-008-executor-narrow-scope-overreach.md](archived/ISS-008-executor-narrow-scope-overreach.md) |
|
| ISS-008 | Executor 窄范围查询越界 | 已修复 | [archived/ISS-008-executor-narrow-scope-overreach.md](archived/ISS-008-executor-narrow-scope-overreach.md) |
|
||||||
| ISS-009 | negative_observation 精确引用 no-evidence 结果 | 已修复 | [archived/ISS-009-negative-observation-no-evidence-reference.md](archived/ISS-009-negative-observation-no-evidence-reference.md) |
|
| ISS-009 | negative_observation 精确引用 no-evidence 结果 | 已修复 | [archived/ISS-009-negative-observation-no-evidence-reference.md](archived/ISS-009-negative-observation-no-evidence-reference.md) |
|
||||||
|
| ISS-010 | 同 session 多轮诊断 Trace 隔离 | 已归档 | [archived/ISS-010-session-run-trace-isolation.md](archived/ISS-010-session-run-trace-isolation.md) |
|
||||||
| diagnosis-eval-baseline-diff | 诊断评测 baseline diff 与回归判断 | 已归档 | [archived/diagnosis-eval-baseline-diff.md](archived/diagnosis-eval-baseline-diff.md) |
|
| diagnosis-eval-baseline-diff | 诊断评测 baseline diff 与回归判断 | 已归档 | [archived/diagnosis-eval-baseline-diff.md](archived/diagnosis-eval-baseline-diff.md) |
|
||||||
| expand-diagnosis-eval-fixtures | 补齐固定诊断评测 fixture 与 baseline | 已归档 | [archived/expand-diagnosis-eval-fixtures.md](archived/expand-diagnosis-eval-fixtures.md) |
|
| expand-diagnosis-eval-fixtures | 补齐固定诊断评测 fixture 与 baseline | 已归档 | [archived/expand-diagnosis-eval-fixtures.md](archived/expand-diagnosis-eval-fixtures.md) |
|
||||||
| mvp-demo-interview-runbook | Plan C 面试可复现 Demo 包 | 已归档 | [archived/mvp-demo-interview-runbook.md](archived/mvp-demo-interview-runbook.md) |
|
| mvp-demo-interview-runbook | Plan C 面试可复现 Demo 包 | 已归档 | [archived/mvp-demo-interview-runbook.md](archived/mvp-demo-interview-runbook.md) |
|
||||||
|
|||||||
+31
-2
@@ -1,15 +1,22 @@
|
|||||||
# ISS-010 同 session 多轮诊断 Trace 隔离
|
# ISS-010 同 session 多轮诊断 Trace 隔离
|
||||||
|
|
||||||
**状态**:OpenSpec 已创建,Phase 1-3 已提交,Phase 4 正在收口 gate / commit
|
**状态**:已归档
|
||||||
**严重程度**:高
|
**严重程度**:高
|
||||||
**发现时间**:2026-07-10
|
**发现时间**:2026-07-10
|
||||||
**来源**:同一 `sessionId` 多轮 Chat E2E 验证
|
**来源**:同一 `sessionId` 多轮 Chat E2E 验证
|
||||||
|
|
||||||
|
**归档日期**:2026-07-10
|
||||||
|
**OpenSpec**:`openspec/changes/archive/2026-07-10-session-run-trace-isolation`
|
||||||
|
**实现提交**:`52bf030`、`26d5529`、`027aed1`、`d928a19`、`78c1477`、`f9df943`
|
||||||
|
**归档提交**:`3578709`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 背景
|
## 背景
|
||||||
|
|
||||||
当前 Chat 链路同时存在两类“会话”语义:
|
归档结论:当前 MVP 已将“会话态”和“运行态”拆开。`sessionId` 表示多轮会话目录和 Redis 上下文;`runId` 表示一次可回放诊断执行。Trace、Feedback、Evaluation、AIOps 和案例沉淀的新路径都按 `runId` 隔离。
|
||||||
|
|
||||||
|
原问题中 Chat 链路同时存在两类“会话”语义:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
Redis SessionContext
|
Redis SessionContext
|
||||||
@@ -25,6 +32,26 @@ MySQL diagnosis_session / agent_step / tool_invocation
|
|||||||
|
|
||||||
当前实现只按 `sessionId` 关联 Trace,导致同一个 `sessionId` 下多轮诊断的 step/tool 记录混在一起。
|
当前实现只按 `sessionId` 关联 Trace,导致同一个 `sessionId` 下多轮诊断的 step/tool 记录混在一起。
|
||||||
|
|
||||||
|
当前实现已改为:
|
||||||
|
|
||||||
|
```text
|
||||||
|
chat_session(sessionId)
|
||||||
|
-> diagnosis_run(runId)
|
||||||
|
-> agent_step.run_id
|
||||||
|
-> tool_invocation.run_id
|
||||||
|
```
|
||||||
|
|
||||||
|
旧 `diagnosis_session` 保留为历史兼容和回滚表,新 Chat/AIOps 执行不再写入新的运行态。
|
||||||
|
|
||||||
|
## 归档结果
|
||||||
|
|
||||||
|
- OpenSpec 已归档到 `openspec/changes/archive/2026-07-10-session-run-trace-isolation`。
|
||||||
|
- 主规格已同步到 `openspec/specs/session-run-trace-isolation/spec.md`。
|
||||||
|
- `mvp/architecture/` 和 `mvp/tables/` 已更新为 `chat_session -> diagnosis_run -> agent_step/tool_invocation(run_id)` 模型。
|
||||||
|
- Demo 脚本和 Trace UI 已支持 `sessionId + runId` 精确 Trace 和 Feedback。
|
||||||
|
- Maven E2E、`scripts/query_mysql.py` DB 检查、`logs/` 日志检查和 baseline drift 检查均已通过;未观察到 baseline drift。
|
||||||
|
- `devflow/projects/2026-07-10-session-run-trace-isolation/` 已保存 brief、evidence、decisions、acceptance。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## E2E 证据
|
## E2E 证据
|
||||||
@@ -540,6 +567,8 @@ tool_invocation(run_id, id)
|
|||||||
|
|
||||||
- `mvp/architecture/session-trace-lifecycle.md`
|
- `mvp/architecture/session-trace-lifecycle.md`
|
||||||
- `mvp/architecture/data-model.md`
|
- `mvp/architecture/data-model.md`
|
||||||
|
- `mvp/tables/聊天会话表-chat_session.md`
|
||||||
|
- `mvp/tables/诊断运行表-diagnosis_run.md`
|
||||||
- `mvp/tables/诊断会话表-diagnosis_session.md`
|
- `mvp/tables/诊断会话表-diagnosis_session.md`
|
||||||
- `mvp/tables/Agent步骤表-agent_step.md`
|
- `mvp/tables/Agent步骤表-agent_step.md`
|
||||||
- `mvp/tables/工具调用表-tool_invocation.md`
|
- `mvp/tables/工具调用表-tool_invocation.md`
|
||||||
Reference in New Issue
Block a user