Files
SuperBizAgent-java/mvp/architecture/executor-evidence-pipeline-refactor.md
T

16 KiB
Raw Blame History

Current Chat Agent Data Contracts

状态:当前实现
日期:2026-07-07
范围:当前 Chat 复杂诊断链路的数据结构定义

当前代码实现是三 Agent 顺序链路:

chat_planner -> chat_executor -> chat_verifier

对应 ChatService.executeChatComplex(...) 中的 SequentialAgent。


1. Workflow Input

由 ChatService.buildWorkflowInput(...) 构造,传给 chat_workflow。

请按固定工作流完成本轮 Planner -> Executor -> Verifier。

--- 用户问题 ---
{question}

--- retry_context ---
{retry_context}

Verifier 完成后由外层代码读取 verifier_output 并决定最终用户输出。
字段 来源 定义
question 用户输入 用户本轮原始问题
retry_context ChatService 第二轮补证据约束;首轮为空

2. chat_planner

2.1 Input

chat_planner 的输入来自 workflow input 和 system prompt 追加上下文。

{
  "question": "用户原始问题",
  "history": [],
  "available_knowledge_domains": "...",
  "skill_catalog": {},
  "retry_context": null
}
字段 来源 定义
question workflow input 用户原始问题
history ChatService.buildChatPlannerAgent(...) 对话历史,拼接到 planner system prompt
available_knowledge_domains KnowledgeDomainService.buildKnowledgeMap() 可用知识域地图,拼接到 planner system prompt
skill_catalog PlannerSkillMetadataHook Planner 可见的 skill name/description 元数据
retry_context ChatService Verifier 低置信后构造的补证据上下文

2.2 Output:planner_plan

当前 prompt 要求输出 JSON:

{
  "selected_skill": "匹配的 skill 名称;如果没有匹配则为 null",
  "selection_reason": "选择该 skill 的原因;如果没有匹配则说明不使用 skill",
  "plan": ["步骤1描述", "步骤2描述", "步骤3描述"],
  "reasoning": "规划思路说明"
}
字段 类型 定义
selected_skill string/null Planner 选择的诊断 skill 名称
selection_reason string skill 选择理由
plan array 给 Executor 的执行步骤
reasoning string 规划思路说明

运行态输出 key:

planner_plan

3. chat_executor

3.1 Input

chat_executor 接收前序 planner_plan,并通过 system prompt 获得历史、skill 读取约束、retry 约束和工具权限。

{
  "planner_plan": {},
  "history": [],
  "retry_context": null,
  "tool_permissions": {
    "method_tools": ["dateTimeTools", "lookupKnowledgeTool", "queryMetricsTools", "queryLogsTools"],
    "tool_callbacks": []
  }
}
字段 来源 定义
planner_plan chat_planner Planner 输出的计划
history ChatService.buildChatExecutorAgent(...) 对话历史,拼接到 executor system prompt
retry_context ChatService 本轮补证据约束
method_tools ChatService.buildMethodToolsArray() Executor 可直接调用的本地工具
tool_callbacks ToolCallback[] 框架发现或外部注入工具
read_skill SkillsAgentHook 当存在 skillRegistry 时,Executor 可读取 Planner 选中的 skill

3.2 Output:executor_feedback

当前 chat-executor-prompt.md 要求输出一个 JSON 对象,即 executor_evidence_v1。

{
  "answer_version": "executor_evidence_v1",
  "diagnosis_summary": "1-2句话总结,仅包含有证据支撑的事实和证据边界",
  "claims": [
    {
      "claim_id": "claim-1",
      "claim_type": "root_cause",
      "claim_text": "事实断言或有限结论",
      "support_level": "direct",
      "evidence_bindings": [
        {
          "source_type": "tool_trace",
          "source_id": "工具返回中的 evidence block id、trace_ref 或可定位标识",
          "tool_name": "lookup_knowledge/query_logs/query_metrics/read_skill 等",
          "source_invocation_ids": [],
          "evidence_excerpt": "从工具返回中摘取的原话、指标值、日志片段或关键数据"
        }
      ]
    }
  ],
  "hypotheses": [
    {
      "hypothesis_text": "未被证实但值得排查的方向",
      "basis": "它基于哪些已知证据或为什么只是推测",
      "needed_evidence": ["需要补充的证据"]
    }
  ],
  "recommended_actions": [
    {
      "action_text": "建议动作",
      "reason": "为什么建议做这个动作",
      "evidence_bindings": []
    }
  ],
  "missing_info": [
    "导致无法确认完整根因的证据缺口"
  ],
  "user_facing_answer": "面向用户的中文回答。必须与 claims/hypotheses/recommended_actions/missing_info 一致。"
}
字段 类型 定义
answer_version string 当前固定为 executor_evidence_v1
diagnosis_summary string 有证据边界的简短诊断摘要
claims array 已证实或有明确间接支撑的事实断言
claims[].claim_id string claim 标识
claims[].claim_type string claim 类型,例如 root_cause、symptom、impact
claims[].claim_text string 事实断言文本
claims[].support_level string direct 或 indirect
claims[].evidence_bindings array 支撑 claim 的证据绑定,不能为空
evidence_bindings[].source_type string 证据来源类型,例如 tool_trace
evidence_bindings[].source_id string evidence block id、trace_ref 或其它定位标识
evidence_bindings[].tool_name string 来源工具名
evidence_bindings[].source_invocation_ids array 来源 tool_invocation.id
evidence_bindings[].evidence_excerpt string 工具返回中的原话、指标值、日志片段或关键数据
hypotheses array 未证实但值得排查的方向
hypotheses[].hypothesis_text string 假设文本
hypotheses[].basis string 假设依据和未证实原因
hypotheses[].needed_evidence array 确认该假设还需要的证据
recommended_actions array 建议动作
recommended_actions[].action_text string 建议动作文本
recommended_actions[].reason string 建议原因
recommended_actions[].evidence_bindings array 建议动作关联证据,可为空
missing_info array 证据缺口
user_facing_answer string 候选用户答案,PASS 时由 ChatService 提取输出

运行态输出 key:

executor_feedback

4. chat_verifier

4.1 Input

VerifierInputHook 会在 Verifier 调用前替换消息历史,构造显式 JSON payload。

{
  "original_query": "用户原始问题",
  "executor_final_answer": "{...executor_feedback raw text...}",
  "executor_structured_output": {},
  "executor_output_parse_status": {
    "status": "valid",
    "detail": "parsed executor evidence contract"
  },
  "tool_trace_summary": [],
  "retry_context": null
}
字段 来源 定义
original_query VerifierContextHolder 用户原始问题
executor_final_answer VerifierContextHolder 或上一条 AssistantMessage Executor 原始输出文本
executor_structured_output VerifierInputHook.parseExecutorOutput(...) Executor 输出可解析且包含 claims 时的 JSON 对象;否则为 null
executor_output_parse_status.status VerifierInputHook valid / missing / malformed
executor_output_parse_status.detail VerifierInputHook 解析状态说明
tool_trace_summary ToolTraceSummaryService.buildVerifierTraceSummary(...) 基于真实 tool_invocation 构建的证据索引
retry_context VerifierContextHolder 当前补证据上下文

4.2 tool_trace_summary

ToolTraceSummaryService 聚合 evidence tools:

lookup_knowledge, query_logs, query_metrics, query_order

输出项结构:

{
  "trace_ref": "trace-1",
  "tool_name": "query_logs",
  "success": true,
  "input_summary": "query=payment-service timeout",
  "output_summary": "log_evidence: ...",
  "evidence_level": "direct",
  "topic_domain": "general",
  "source_invocation_ids": [394],
  "invocation_count": 1,
  "failed_invocation_count": 0,
  "no_hit_invocation_count": 0,
  "query_samples": ["payment-service timeout"],
  "retrieval_layers": [],
  "relevance_levels": [],
  "source_documents": []
}
字段 类型 定义
trace_ref string Verifier 可引用的证据摘要编号
tool_name string 聚合后的工具名
success boolean 是否存在可用证据
input_summary string 工具输入摘要
output_summary string 工具输出摘要
evidence_level string direct / indirect / none
topic_domain string 主题域,优先来自 retrieval_details.retrieved_domains
source_invocation_ids array 聚合的 tool_invocation.id
invocation_count number 聚合调用次数
failed_invocation_count number 失败调用次数
no_hit_invocation_count number 无证据或去重调用次数
query_samples array 查询样例
retrieval_layers array 检索层级
relevance_levels array 相关性等级
source_documents array 来源文档标签

4.3 Output:verifier_output

当前 chat-verifier-prompt.md 要求输出:

{
  "verdict": "PASS",
  "groundedness_score": 0.8,
  "critical_fact_count": 2,
  "facts_checked": [
    {
      "fact": "ERR_TIMEOUT 表示请求超时",
      "is_critical": true,
      "verification": "direct_evidence",
      "detail": "知识库文档明确给出该错误码定义",
      "evidence_refs": [
        {
          "trace_ref": "trace-1",
          "tool_name": "lookup_knowledge",
          "topic_domain": "api",
          "source_invocation_ids": [101, 104],
          "note": "trace-1 的文档摘要直接给出错误码定义"
        }
      ]
    }
  ],
  "rationale": "所有关键事实均有支撑,且至少一条具有直接证据"
}
字段 类型 定义
verdict string PASS / LOW_CONFID / REJECT
groundedness_score number 关键事实证据支撑评分
critical_fact_count number facts_checked 中 is_critical=true 的数量
facts_checked array Verifier 校验过的事实列表
facts_checked[].fact string 被校验事实
facts_checked[].is_critical boolean 是否关键事实
facts_checked[].verification string direct_evidence / indirect_support / no_evidence / contradicted
facts_checked[].detail string 校验说明
facts_checked[].evidence_refs array 证据引用
evidence_refs[].trace_ref string 引用的 tool_trace_summary.trace_ref
evidence_refs[].tool_name string 引用工具
evidence_refs[].topic_domain string 引用主题域
evidence_refs[].source_invocation_ids array 引用的 tool_invocation.id
evidence_refs[].note string 引用说明
rationale string verdict 判定理由

运行态输出 key:

verifier_output

5. VerifierDecision

ChatService.parseVerifierDecision(...) 将 verifier_output 解析为内部 record:

{
  "verdict": "LOW_CONFID",
  "groundednessScore": 0.5,
  "criticalFactCount": 2,
  "factsChecked": [],
  "rationale": "证据不足",
  "round": 1
}
字段 类型 定义
verdict string Verifier verdict
groundednessScore number groundedness score
criticalFactCount number 关键事实数量
factsChecked array 解析后的 facts_checked
rationale string 判定理由
round number 当前验证轮次

6. retry_context

当 LOW_CONFID 且满足重试条件时,ChatService.buildRetryContext(...) 构造:

{
  "round": 1,
  "missing_evidence_facts": [
    "某关键事实:缺少直接证据"
  ],
  "instruction": "仅补充以上断言相关证据,不要重复已完成检索"
}
字段 类型 定义
round number 触发 retry 的轮次
missing_evidence_facts array 来自 Verifier 的证据缺口
instruction string 补证据约束

7. diagnosis_session.self_evaluation.verifier_evaluation

ChatService.persistVerifierEvaluation(...) 将 Verifier 结果合并进 diagnosis_session.self_evaluation。

{
  "verifier_evaluation": {
    "verdict": "LOW_CONFID",
    "groundedness_score": 0.5,
    "critical_fact_count": 2,
    "facts_checked": [],
    "rationale": "证据不足",
    "round": 1,
    "traceability_version": "v1",
    "executor_output_parse_status": {
      "status": "valid",
      "detail": "parsed executor evidence contract"
    },
    "executor_structured_output": {},
    "tool_trace_summary": []
  }
}
字段 类型 定义
verifier_evaluation.verdict string Verifier verdict
verifier_evaluation.groundedness_score number groundedness score
verifier_evaluation.critical_fact_count number 关键事实数量
verifier_evaluation.facts_checked array 校验事实列表
verifier_evaluation.rationale string 判定理由
verifier_evaluation.round number 验证轮次
verifier_evaluation.traceability_version string 当前固定为 v1
verifier_evaluation.executor_output_parse_status object Executor 输出解析状态
verifier_evaluation.executor_structured_output object/null 解析后的 Executor 结构化输出
verifier_evaluation.tool_trace_summary array Verifier 使用的工具证据索引

8. Final Answer Rendering

ChatService 根据 Verifier verdict 决定最终 diagnosis_session.answer。

Verdict 当前行为
PASS 优先提取 executor_feedback.user_facing_answer;提取失败则使用 executor 原文
LOW_CONFID 输出低置信模板:已确认信息、当前缺口、建议下一步
REJECT 输出降级模板:已确认信息、证据缺口、建议下一步

低置信模板使用:

以下结论基于当前已获取证据,仍存在部分证据缺口,请谨慎参考。

已确认信息:
- ...

当前缺口:
- ...

建议下一步:
- ...

拒绝模板使用:

当前无法基于已获取证据生成可靠结论。

已确认信息:
- ...

证据缺口:
- ...

建议下一步:
- ...

9. Trace Persistence Data

9.1 diagnosis_session

字段 类型 定义
session_id string 会话 id
query text 用户问题
status string 会话状态
agent_flow string 当前 Chat 链路为 CHAT
total_duration_ms number 总耗时
total_token_count number 总 token
step_count number agent step 数
tool_call_count number tool invocation 数
answer longtext 最终用户答案
self_evaluation json 包含 verifier_evaluation
feedback string 用户反馈

9.2 agent_step

字段 类型 定义
session_id string 会话 id
step_index number 步骤序号
agent_name string planner / executor / verifier
model_input text 模型输入摘要
model_output text 模型输出摘要
thought text hook 记录的摘要信息
has_tool_call boolean 是否包含工具调用
duration_ms number 模型调用耗时
token_count number token 数

9.3 tool_invocation

字段 类型 定义
id number 工具调用 id
session_id string 会话 id
step_id number 对应 agent_step id
tool_name string 工具名
input_params json 工具输入参数
output_preview text 工具输出预览
output_length number 原始输出长度
retrieval_layer string 检索层
l0_match_count number L0 命中数
l1_match_count number L1 命中数
is_truncated boolean 输出是否截断
relevance_level string 相关性等级
dedup_reason string 去重原因
retrieval_details json 检索细节
duration_ms number 工具耗时
success boolean 是否成功
error_message text 错误信息