feat(agent): add executor evidence output contract

This commit is contained in:
zhuyongxin
2026-07-07 19:02:02 +08:00
parent 7f2e47ca38
commit 04eb50e2b4
19 changed files with 986 additions and 25 deletions
@@ -73,6 +73,41 @@ class DiagnosisTraceEvaluatorTest {
assertTrue(result.getFailedChecks().contains("reject output does not use degraded template"));
}
@Test
void evaluateFailsWhenStructuredConfirmedClaimHasNoEvidenceBindings() {
DiagnosisEvalCase evalCase = DiagnosisEvalCase.builder()
.id("structured-claim-case")
.title("Structured claim case")
.expectedRootCauseKeywords(List.of())
.requiredEvidenceTools(List.of())
.allowedVerdicts(List.of("LOW_CONFID", "PASS"))
.build();
DiagnosisTraceResponse trace = DiagnosisTraceResponse.builder()
.session(DiagnosisTraceResponse.SessionTrace.builder()
.answer("以下结论基于当前已获取证据,仍存在部分证据缺口,请谨慎参考。")
.selfEvaluation(java.util.Map.of(
"verifier_evaluation", java.util.Map.of(
"verdict", "LOW_CONFID",
"executor_structured_output", java.util.Map.of(
"claims", java.util.List.of(java.util.Map.of(
"claim_id", "claim-unsupported",
"claim_text", "OOM 导致连接泄漏",
"support_level", "direct",
"evidence_bindings", java.util.List.of()
))
)
)))
.build())
.toolInvocations(List.of())
.build();
DiagnosisEvalResult result = evaluator.evaluate(evalCase, trace);
assertFalse(result.isPassed());
assertTrue(result.getFailedChecks().contains(
"executor confirmed claim missing evidence bindings: claim-unsupported"));
}
@Test
void reportWriterOutputsJsonAndMarkdown(@TempDir Path tempDir) throws Exception {
DiagnosisEvalReport report = evaluator.evaluate(readCases(), Path.of("mvp/eval/fixtures"));