Files
llm-wiki/rules/extraction-tiering.md
T

5.2 KiB

rules/extraction-tiering — Tiered Extraction 계약 (싼 발췌 + 검증 게이트)

rules/ 의 방법론 규칙. multi-doc 작업에서 토큰 대부분은 발췌(다파일 정독 input) 가 먹는다 — 그런데 발췌 품질은 발췌자의 지능이 아니라 검증 게이트(결정론 quote-verifier) 가 보장한다. 따라서 발췌는 가장 싼 엔진에 위임할 수 있고, 비싼 모델(opus)은 판단 에만 쓴다. 집행 도구: scripts/deep-research/deep_research/extract.py (발췌 브로커 드라이버) · deep_research/vote.py (cross-vendor 적대 표) · .claude/hooks/wiki_consistency_check.py --packets (T0 팩킷) · .claude/agents/extraction-broker.md (T2 브로커 agent).

4-Tier 표

Tier 엔진 담당 비용
T0 결정론 (Python) 린터·검사기·팩킷 빌더 (wiki_structure_lint.py · wiki_consistency_check.py --packets · quote-verifier) 0 토큰
T1 외부 구독 CLI codex = 구조화 발췌 (--output-schema JSON 강제) · agy = web 조사·요약. quorum 표결은 양쪽 1표씩 (cross-vendor 독립 실패 모드) 별도 구독
T2 haiku 브로커·글루 — extraction-broker(드라이버 구동 + 실패분 재발췌) · wiki-link-verifier
T3 sonnet 레포 쓰기 에이전트wiki-doc-author · wiki-source-summarizer. 쓰기는 반드시 Claude 훅(claim gate / structure lint) 경유
T4 opus 판단 — 웹조사 방향 결정·작업 지시·모순 판결(wiki-consistency-auditor)·판정 3종(branch-depth-auditor/coverage-auditor/project-readiness-auditor)

5계명 (Hard Rules)

# 계명 내용
1 외부 CLI = read-only 추출기 드라이버(extract.py/vote.py)가 파일 내용을 줄번호 붙여 프롬프트에 내장 — 외부 엔진은 repo 에 접근하지 않는다. 레포 쓰기는 Claude 훅 경유만 (codex/agy 직접 쓰기 금지).
2 무검증 발췌 소비 금지 외부 발췌의 모든 verbatim 인용은 quote-verifier(결정론 re-grep)를 거친다 — PASS/CORRECTED 통과분만 상위 티어로 올라간다. DROPPED(원문 부재 = 위조·의역)는 폐기.
3 engine funnel 필수 어떤 엔진이 몇 파일을 처리/실패했는지 항상 기록 — no silent engine swap. digest 의 **Engines:** 행 + wiki-stats 블록이 증거.
4 opus 컨텍스트에 raw corpus 반입 금지 opus 는 digest + file:line 포인터만 받는다. 판결이 모호한 지점만 해당 라인을 직접 Read (포인터 추적 — 전문 정독 아님).
5 fallback 사다리 codex→agy→haiku→sonnet 각 단계 실패 시 다음 단계로 — 단계마다 funnel 에 기록. 사다리를 건너뛰거나 기록 없이 갈아타지 않는다.

사용법 표 (작업별 1순위 / 검증 / fallback)

작업 1순위 검증 fallback
bulk 파일 발췌 (다수 raw 정독 input) extraction-brokercd scripts/deep-research && python3 -m deep_research.extract --backend codex ... (구조화=codex 우선, web성 질문=--backend antigravity) quote-verifier 내장 (PASS/CORRECTED/DROPPED) 실패 파일은 broker(haiku) 직접 재발췌 → 그래도 실패면 sonnet lane
quorum 적대 표결 (lint CRITICAL≥5 등) wiki-adversarial-reviewer(Claude) 1표 + python3 -m deep_research.vote --backend codex 1표 + --backend antigravity 1표 wiki_quorum.py 결정론 합산 (≥2 REJECT=KILL) 외부 표 실패 시 해당 표만 Claude 추가 dispatch 로 대체 + funnel 기록
/sync 의미 대조 input python3 .claude/hooks/wiki_consistency_check.py --packets [slug] (T0, 0토큰) 결정론 추출이므로 검증 불요 팩킷 모호 시 auditor 가 해당 원문 라인만 Read
합성·추출 권고 (synthesis) wiki-research-lane검증된 digest 를 1차 input 으로 소비 (직접 전수 정독은 broker 불가 시 fallback) digest 인용은 이미 verifier 통과분 broker 불가 시 기존 직접 정독 모드
레포 쓰기 (raw/wiki 문서) wiki-doc-author · wiki-source-summarizer (T3 sonnet, 훅 경유) claim gate + structure lint (PreToolUse/PostToolUse) — (외부 엔진으로 대체 금지 — 계명 1)
링크·구조 감사 wiki-link-verifier (T2 haiku) + wiki_structure_lint.py (T0) self-grep 카운트 일치
판결·게이트 (모순/깊이/완전성/readiness) T4 opus 판정 agent 4종 wiki-verdict 스키마 훅 검증 하향 금지 — 판단은 싼 티어로 내리지 않는다

한계

  • 외부 모델 coverage 누락 리스크 — codex/agy 가 관련 라인을 못 찾으면 digest 에 없는 것 은 검증 게이트가 못 잡는다 (verifier 는 위조를 잡지, 누락은 못 잡음). 완화: funnel 균형 감시(파일별 인용 0건은 의심) + 핵심 작업은 cross-vendor 2-pass (codex·agy 양쪽 발췌 후 합집합).
  • 구독 율제한 — 외부 CLI 는 rate limit 이 있다. fan-out 은 bounded (extract.py CONCURRENCY=3) — 무한 병렬 금지, 대량 작업은 배치 분할.