Files
SuperBizAgent-java/mvp/architecture/harness-quality-gates.md
T

5.7 KiB
Raw Blame History

Harness 与质量门禁架构

更新日期:2026-07-05
状态:当前可运行架构 + 后续门禁规划
参考历史文档:archive/2026-07-05-legacy/agent-architecture.md

1. 设计目标

Agent 系统的核心风险不是“没有答案”,而是:

  • 答案引用了不存在的证据。
  • 工具调用失败后仍然编造结论。
  • 检索结果相关性不足但被当作强证据。
  • 多轮诊断重复检索同一文档,浪费上下文。
  • 最终报告无法回放执行过程。

因此当前 MVP 的 Harness 不是单个组件,而是一组约束:

Prompt contract
  + Tool boundary
  + Agent hooks
  + Trace persistence
  + Verifier / rule evaluation
  + Eval baseline

2. Harness 总图

flowchart TB
    Input["User / AIOps input"] --> Prompt["Prompt contract"]
    Prompt --> Agent["Planner / Executor / Verifier"]
    Agent --> Tools["Evidence tools"]
    Tools --> Invocation["tool_invocation"]
    Agent --> StepHook["AgentLoggingHook"]
    StepHook --> Step["agent_step"]
    Agent --> Session["diagnosis_session"]

    Invocation --> TraceSummary["ToolTraceSummaryService"]
    TraceSummary --> Verifier["chat_verifier"]
    Verifier --> SelfEval["self_evaluation.verifier_evaluation"]

    Invocation --> AiOpsRule["AiOpsRuleEvaluationService"]
    AiOpsRule --> AiOpsEval["self_evaluation.aiops_rule_evaluation"]

    Session --> TraceAPI["DiagnosisTraceService"]
    Step --> TraceAPI
    Invocation --> TraceAPI
    SelfEval --> TraceAPI
    AiOpsEval --> TraceAPI

    TraceAPI --> Eval["diagnosis eval / RAG eval"]

3. Prompt Contract

当前 Prompt 按角色拆分:

Prompt 用途
supervisor-prompt.md AIOps Supervisor 调度 Planner / Executor
planner-prompt.md AIOps Planner 规划、再规划、输出告警报告
executor-prompt.md AIOps Executor 按步骤调用工具
chat-planner-prompt.md Chat 复杂问题规划
chat-executor-prompt.md Chat 执行工具并形成诊断答复
chat-verifier-prompt.md 校验 Executor 答案是否被工具证据支撑

Prompt 层当前承担的门禁:

  • 禁止凭记忆回答错误码、接口定义、排障步骤。
  • 需要外部信息时必须调用工具。
  • 工具连续失败或返回空结果时,最终报告必须诚实说明。
  • Chat Verifier 不允许做新检索,只能校验已有证据。
  • AIOps payload 模式必须聚焦输入告警。

4. Trace Hooks

AgentLoggingHook 是当前 Agent step 可观测性的核心。

sequenceDiagram
    autonumber
    participant A as Agent
    participant H as AgentLoggingHook
    participant DB as agent_step

    A->>H: before_model(messages, sessionId)
    H->>DB: 写入 model_input / step_index / agent_name
    A-->>A: LLM 推理
    A->>H: after_model(messages, sessionId)
    H->>DB: 回填 model_output / thought / has_tool_call / duration / token_count

记录内容:

  • 最近输入消息摘要。
  • Agent 输出摘要。
  • 是否包含 tool call。
  • duration。
  • token count。
  • Verifier 的 JSON 输出摘要。

5. Tool Invocation 门禁

工具调用记录由 ToolInvocationRecorder 和具体工具共同完成。

核心记录:

tool_name
input_params
output_preview
retrieval_layer
l0_match_count
l1_match_count
retrieval_details
relevance_level
dedup_reason
duration_ms
success
error_message

对 lookup_knowledge 的质量约束:

  • L0 只作为 hint,不绕过 L1。
  • 检索结果归一化为 PRECISE、HIGHLY_RELEVANT、REFERENCE。
  • 同 session 内重复文档会被 RetrievedDocTracker 去重。
  • dedup、no evidence、failed 等状态进入 retrieval_details.evidence_status。

6. Verifier 门禁

Chat Verifier 的输入不是原始工具日志,而是 ToolTraceSummaryService 构造的证据索引。

flowchart LR
    Invocation["tool_invocation"] --> Summary["ToolTraceSummaryService"]
    Summary --> EvidenceIndex["tool_trace_summary"]
    EvidenceIndex --> Verifier["chat_verifier"]
    ExecutorAnswer["executor_final_answer"] --> Verifier
    Verifier --> Verdict{"verdict"}
    Verdict -->|PASS| Pass["输出原答案"]
    Verdict -->|LOW_CONFID| Low["补证据或低置信输出"]
    Verdict -->|REJECT| Reject["降级输出"]

Verifier 输出:

{
  "verdict": "PASS|LOW_CONFID|REJECT",
  "groundedness_score": 0.8,
  "critical_fact_count": 2,
  "facts_checked": [],
  "rationale": "..."
}

结果写入:

diagnosis_session.self_evaluation.verifier_evaluation

7. AIOps 规则门禁

AIOps 当前不走 Chat Verifier,而是用 AiOpsRuleEvaluationService 做轻量检查。

检查重点:

  • 最终报告是否存在。
  • payload 模式是否围绕输入告警展开。
  • 是否调用证据工具,尤其是 lookup_knowledge、日志、指标。
  • 是否把无关活跃告警扩展成主诊断对象。

结果写入:

diagnosis_session.self_evaluation.aiops_rule_evaluation

8. Eval Baseline

当前质量门禁还包括离线评测资产:

评测 位置 作用
Diagnosis eval mvp/eval/ 检查诊断 trace、报告和证据行为
RAG retrieval eval eval/rag-retrieval/ 检查固定检索 query 的召回稳定性
Live RAG acceptance scripts/eval_rag_live_acceptance.py 检查运行环境中真实 /api/search/similar 行为

9. 后续门禁规划

从旧版设计继承但尚未完整实现的门禁:

  • 工具参数 schema 校验。
  • 同一工具调用次数上限。
  • 工具超时的统一熔断。
  • 报告中的数值与工具返回值自动对齐校验。
  • Prompt 版本记录和回滚。
  • Verifier 对 AIOps 报告的 LLM 级事实校验。

这些应在评测集扩大后逐步加入,避免一次性把诊断流程卡得过死。