Files
llm-wiki/docs/superpowers/specs/2026-06-10-tiered-extraction-design.md
T

46 lines
3.6 KiB
Markdown

# 2026-06-10 — Tiered Extraction 아키텍처 (토큰 계층화: codex/agy 구독 + haiku 위임)
- **의뢰**: 메인 모델(opus) 토큰 소모 과다. 발췌(context 의 대부분)를 codex-cli/agy-cli(둘 다 구독) → haiku 순으로 위임하고, 판단·웹조사·작업 지시는 메인 모델 유지. 품질 최상 유지 조건.
- **사용자 결정**: 전체 구현 / 작업별 분담(codex=구조화 발췌, agy=web·요약, quorum 양쪽 1표씩) / 보수적 다운그레이드.
## §0. 핵심 원리
**발췌의 품질은 발췌자의 지능이 아니라 검증 게이트가 보장한다.** verbatim 인용은 re-grep, 커버리지는 funnel, 형태는 schema — 전부 기계 검증 가능. 따라서 발췌자는 가장 싼 엔진이어도 되며, 규율은 하나: **무검증 발췌는 절대 소비하지 않는다.**
## §1. 구성 (규약: `rules/extraction-tiering.md`)
| Tier | 엔진 | 담당 |
|---|---|---|
| T0 | 결정론 | 린터·`--packets`(엣지 ±맥락 0토큰 추출) |
| T1 | codex / agy | bulk 발췌(`deep_research.extract`)·cross-vendor 표(`deep_research.vote`) |
| T2 | haiku | `extraction-broker` agent(드라이버 구동+실패분 재발췌)·link-verifier(다운그레이드) |
| T3 | sonnet | 레포 쓰기 에이전트(훅 경유 필수 — doc-author/source-summarizer 유지) |
| T4 | opus | 판단·웹조사 방향·작업 지시·모순 판결·판정 3종 |
5계명: ① 외부 CLI = read-only 추출기(드라이버가 파일 내용을 프롬프트에 내장 — 엔진은 repo 미접근, 레포 쓰기는 Claude 훅 경유만) ② 무검증 발췌 소비 금지 ③ engine funnel(no silent swap) ④ opus 에 raw corpus 반입 금지(digest+file:line 만) ⑤ fallback 사다리 codex→agy→haiku→sonnet.
## §2. 신규/변경 컴포넌트
- `scripts/deep-research/deep_research/extract.py` — 발췌 드라이버 + **quote-verifier 내장**(PASS/CORRECTED/DROPPED) + digest(wiki-stats funnel)
- `scripts/deep-research/deep_research/vote.py` — cross-vendor 적대 표 생성 → `wiki_quorum.py` 가 엔진 불가지로 집계
- `wiki_consistency_check.py --packets` — /sync 의미 판정 입력의 T0 화
- `.claude/agents/extraction-broker.md` (haiku) + WIKI_AGENT_TYPES 등록 (wiki-stats 훅 검증)
- 라우팅: SKILL.md(bulk 정독 broker 1순위), `/lint` quorum·invest 수치 검증 = **cross-vendor 1+1+1**(Claude+codex+agy, 실패 시 Claude 대체+funnel), `/sync` 팩킷 선행
- `wiki-link-verifier` sonnet→haiku
## §3. 실 CLI 스모크에서 잡은 잠복 버그 4건 (전부 수정·실증)
| 버그 | 수정 |
|---|---|
| codex: 비-tty 에서 stdin 대기 블록 | `stdin=DEVNULL` |
| codex: /tmp 비신뢰 디렉터리 즉사 | `--skip-git-repo-check` |
| codex: JSONL 이벤트가 `item.completed`/중첩 `agent_message` — 파서 미인식 | 중첩 형태 파싱 추가 |
| codex: OpenAI strict schema — `additionalProperties:false`+전 required 요구 | `_strict_schema` 변환 |
| agy: `--cd`/`-m` 플래그 부재로 usage 즉사 | `cwd=` subprocess 인자 + `--model` |
**E2E 실증**: codex 발췌 성공(인용 PASS, Claude 토큰 0) / agy 발췌 성공 — 그리고 agy 가 낸 의역 인용 1건을 verifier 가 **폐기**(trust boundary 라이브 작동) / fallback 사다리 작동(agy 실패 시 codex 로, funnel 에 정직 기록).
## §4. 검증
deep-research 39 tests + wiki hooks 96 tests 전부 OK / 실 CLI E2E 양 엔진 성공 / 미러(lint·sync) 반영. **이월**: wiki-consistency-auditor 의 3-플랫폼 변형에 packets 입력 줄 동기화, extraction-broker 타 플랫폼 포팅 미정(Claude 전용).