Files
SuperBizAgent-java/devflow/projects/2026-06-29-confidence-feedback/evidence.md
T

53 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# evidence.md — confidence-feedback
## 代码证据
### agent_step.thought 不可作为案例内容
- 文件:`AgentLoggingHook.java:135`
- 证据:`thought` 在写入前截断为 2000 字符,`modelOutput` 截断为 500 字符
- 结论:两者均不是返回给用户的完整答案,案例质量低
### ChatService 已有完整答案未持久化
- 文件:`ChatService.java:269`(executeChat)、`ChatService.java:353`(executeChatComplex)
- 证据:`String answer = response.getText()` 只用于返回前端,未写入任何持久化存储
- 结论:加 `DiagnosisSession.answer` 字段是最干净的方案
### ToolInvocationRepository 已有 findBySessionId
- 文件:`ToolInvocationRepository.java`
- 证据:`findBySessionId(String sessionId)` 已实现,返回 `List<ToolInvocation>`
- 结论:规则引擎可直接读取 tool_invocation 事实,无需新增查询方法
### tool_invocation 写入时序安全
- 文件:`LookupKnowledgeTool.java:144`
- 证据:`saveToolInvocation` 在工具执行时同步调用,早于 ChatService 的 SUCCESS 分支
- 结论:@Async evaluate 触发时 tool_invocation 数据已在库,无竞态
### 项目原无 @EnableAsync
- 证据:`grep -rn "EnableAsync"` 无任何命中(apply 前)
- 结论:需要新建 `AsyncConfig.java`
### CaseLibraryRepository.findByDiagnosisId 已有幂等检查支持
- 文件:`CaseLibraryRepository.java`
- 证据:`findByDiagnosisId(String diagnosisId)` 已实现
- 结论:useful 重复提交时可用此方法检查,不重复插入
## 设计推导
### evidence_score vs confidence 命名
- 基于工具调用的分数衡量的是证据收集充分度,不是答案准确性
- "confidence" 容易误解,改为 "evidence_score" 更准确
- LLM 自评才适合叫 confidence,但当前未实现
### BAD_CASE 不应混入 status
- status 有明确执行状态语义(RUNNING/SUCCESS/FAILED)
- 一个 SUCCESS 的 session 被标为 BAD_CASE 后,按 status 做的统计会失真
- feedback 字段本身就够,`WHERE feedback = 'not_useful'` 即可查 BadCase