| name | fact-audit |
| description | 사실주장 밀도 높은 답변의 미묘한 오류를 탈상관 검증으로 잡는다. 주장 추출→검증가능(web/Crossref/DigiKey)·판단성(Gemini 이종) 분리 대조→불일치만 리포트. "팩트체크", "이거 틀린 데 없나", "사실 검증", "이 결론 미심쩍다", 또는 규격수치·물성·인과주장이 많은 답변 직후 호출. |
fact-audit — 미묘한 사실오류 탈상관 검증
⚠️ 전제(정직): 이 skill은 환각을 0으로 못 만든다. 모델이 확신하며 틀린 오류 중 외부와 대조 가능한 부분만 잡는다. 두 모델이 같은 학습편향을 공유하면 둘 다 틀려 통과(상관오류). 안전임계는 최종적으로 1차 문헌+인간.
절차 (답변 송출 전 또는 사후)
- 주장 추출: 답변에서 반증가능한 개별 사실주장을 리스트화 (규격 Rev·수치·물성·인과·"항상/없다" 단정). 의견·정성서술 제외.
- 분류:
- 🔢 검증가능(외부 정답 존재) → 도구 대조: 규격/최신성=web_search, DOI/논문=
pn-verify/crossref, 부품=pn-verify/digikey, 산술=Bash.
- 🧠 판단성(정답 외부에 없음·해석) → 아래 계층형 이종검증.
계층형 이종검증 (Groq + Gemini 캐스케이드)
- 1차 스크리닝 → Groq(
groq-review, llama-3.3-70b, 빠름·쌈): 명백한 오류 솎기. 단 약한 모델이라 단독반박=권위 아님, "조사 플래그"로만.
- 권위 교차검증 → Gemini(
gemini-review, flash): 안전임계 또는 Groq가 플래그한 건. 더 강함.
- 삼각측량(안전임계만): Claude≠Gemini 갈리면 Groq 표로 판정. 2:1 다수 + 근거 우선.
- 폴백: Gemini 429/503 실패 시 Groq를 주검증자로 대체.
- 상관오류(셋 다 공유하는 오개념)는 못 잡음 → 안전임계 최종은 1차문헌+인간.
- 대조 실행: 각 주장을 해당 경로로 독립 확인. 자기확신 재진술 금지 — 반드시 외부 앵커.
- 불일치 리포트(핵심 산출물): 일치는 생략, 불일치·미검증만 표로.
| 주장 | 내 근거 | 외부확인 | 판정(일치/반증/미검증) | 조치 |
- 반증 프롬프트(보조): 남은 판단성 주장에 "이게 틀렸다면 어디서 깨지나?" 1패스. 자기검토라 효과 제한적임을 명시.
출력 규율
- 불일치/미검증 0건이어도 "전부 일치"라 단정 말 것 → "외부확인된 N건 일치, 검증불가 M건"으로 표기(미검증을 일치로 위장 금지).
- 검증불가 주장은 🔴 [지식한계]로 강등. 도구 실패 시 "미검증", 날조 금지.
- 불일치 건은
eval/verifier_disagree.md에 적재(이종검증 ROI 추적).
한계 명시 (매 사용 시 1줄)
"이 감사는 외부 대조 가능한 오류만 커버. 두 모델 공통 맹점·1차문헌 미확인 영역은 잔존 — 안전임계는 전문가 확정."
구조화 출력 (필수 — 불일치 리포트 표 다음에 항상 포함)
{
"tool": "fact-audit",
"verdict": "PASS|WARN|FAIL",
"confirmed": 0,
"unverified": 0,
"refuted": 0,
"findings": [
{"claim": "주장", "status": "confirmed|refuted|unverified", "source": "web_search|groq|gemini|bash", "detail": "근거 1줄", "severity": "INFO|WARN|ERROR"}
],
"summary": "외부확인 N건 일치, 반증 N건, 검증불가 N건"
}
verdict: FAIL=반증 1건 이상, WARN=미검증 존재, PASS=전건 확인
- Workflow에서 이 블록으로 자동 에스컬레이션 판정