BurningTimesAi/scripts/fact_first_check.sh

49 lines
1.7 KiB
Bash

#!/bin/bash
# fact_first_check.sh — BurningTimes BT10 C44 팩트 우선주의 hook
# 2026-04-24 PD 직접 승인 신설
# PostToolUse (Edit/Write/MultiEdit) — 모호 표현 감지 + WebSearch 이력 교차 환기
# 토큰 비용: 0 (stdin grep)
INPUT=$(cat 2>/dev/null)
BODY=$(echo "$INPUT" | grep -oE '"(new_string|content)"[[:space:]]*:[[:space:]]*"[^"]*"' | head -3)
[ -z "$BODY" ] && exit 0
HIT_LIST=""
# 그룹 1 — 모호 표현
if echo "$BODY" | grep -qE '(추정컨대|아마도|대략|아마[[:space:]]|대충|정확한[[:space:]]*수치[[:space:]]*모름|정확히는[[:space:]]*모름|~라고[[:space:]]*알고[[:space:]]*있)'; then
HIT_LIST="${HIT_LIST}모호 표현, "
fi
# 그룹 2 — 확정 단언 공존 (모순 신호)
if echo "$BODY" | grep -qE '(반드시|틀림없이|확실히|분명히)' && [ -n "$HIT_LIST" ]; then
HIT_LIST="${HIT_LIST}확정 단언 모순, "
fi
[ -z "$HIT_LIST" ] && exit 0
# WebSearch 이력 mtime 체크 (10분 윈도우)
VERIFY_LOG="$HOME/.claude/.burningtimes_fact_check/websearch.log"
mkdir -p "$(dirname "$VERIFY_LOG")" 2>/dev/null
LAST_SEARCH=0
[ -f "$VERIFY_LOG" ] && LAST_SEARCH=$(stat -c %Y "$VERIFY_LOG" 2>/dev/null || stat -f %m "$VERIFY_LOG" 2>/dev/null || echo 0)
NOW=$(date +%s)
ELAPSED=$((NOW - LAST_SEARCH))
cat >&2 <<EOF
⚠️ [BurningTimes C44 팩트 우선주의 감지]
감지 키워드: ${HIT_LIST%, }
직전 WebSearch 이력: ${ELAPSED}초 전 (윈도우 600초)
의무:
- 모호 정보 감지 시 WebSearch 즉시 수행
- 팩트 의심 시 유보적 태도 유지
- 확정적 언사 사용 전 실측 확증
허용 예외: 완곡 표현·가정적 진술·미확인 태그 부착
근거: BurningTimes C44 · c9_2_block 동형
EOF
exit 0