# Hermes Agent 학습 도입 — Phase 2 (후속 조치)

## 배경
task-856.1에서 Phase 1~4를 완료했다:
- Phase 1: 40개 항목 도입 방안 설계서
- Phase 2: 난이도 하 9개 구현
- Phase 3: 난이도 중 8개 구현
- Phase 4: 고난이도 7개 설계서

총 17개 모듈 + 17개 테스트(363건) 작성 완료. 그러나 아래 후속 작업이 남아있다.

## 한정승인 — 자율 체이닝으로 아래 전체를 수행

### 작업 1: QC FAIL 2건 개선방안 마련 및 적용

**FAIL 1: audit-trail에 task-856.1 기록 없음**
- 원인: Task tool 서브에이전트가 파일을 직접 생성 → audit-trail 미추적
- 개선: audit-trail 시스템이 서브에이전트 작업도 추적할 수 있도록 개선방안 설계 및 구현
- 예: 서브에이전트 완료 후 audit 로그를 명시적으로 기록하는 훅/래퍼 추가

**FAIL 2: threading.Event() 사용이 "Race Conditions"으로 오탐**
- 원인: two_pass_audit에서 `threading.Event`를 위험 패턴으로 잘못 탐지
- 개선: two_pass_audit의 탐지 규칙에서 `threading.Event`를 안전한 stdlib 패턴으로 화이트리스트 등록
- 위치: QC 검증 관련 코드 확인 후 적절히 수정

**목표: Health Score 81 → 90+ 달성**

### 작업 2: 17개 모듈 기존 코드 통합

task-856.1에서 생성한 17개 모듈을 기존 Hermes Agent 코드에 연결한다.

**통합 대상 모듈:**
- `utils/redact.py` — 런타임 비밀 마스킹
- `utils/atomic_write.py` — 원자적 파일 쓰기
- `utils/prompt_cache.py` — 프롬프트 캐싱
- `utils/usage_pricing.py` — 모델별 비용 계산
- `utils/model_metadata.py` — 모델 메타데이터
- `utils/fuzzy_match.py` — 퍼지 매칭
- `utils/robots_policy.py` — robots.txt 정책
- `utils/clarify.py` — 모호성 분석
- `utils/interrupt.py` — 인터럽트 플래그
- `utils/injection_guard.py` — 프롬프트 인젝션 탐지
- `utils/approval.py` — 위험 명령 승인
- `utils/memory_manager.py` — 메모리 관리
- `utils/config_loader.py` — YAML 설정 중앙화
- `utils/skill_loader.py` — 스킬 로딩
- `utils/insights_engine.py` — 인사이트 엔진
- `utils/aux_llm_router.py` — 보조 LLM 라우터
- `services/openai_compat_server.py` — OpenAI 호환 서버

**통합 대상 기존 코드:**
- `dispatch.py` — 디스패치 시 approval, redact, injection_guard 연결
- `orchestrator.py` — config_loader, memory_manager, interrupt 연결
- `chain_manager.py` — atomic_write, usage_pricing 연결
- 기타 관련 파일은 코드 분석 후 판단

**통합 원칙:**
- 기존 동작을 깨뜨리지 않을 것 (backward compatible)
- import 추가 + 적절한 호출 지점에 삽입
- 통합 전후 기존 테스트가 모두 통과해야 함
- 통합 후 새로운 통합 테스트도 작성

### 작업 3: Phase 4 고난이도 7개 항목 구현

설계서 위치: `/home/jay/workspace/memory/specs/hermes-high-difficulty-designs.md` (786줄)

**구현 대상 (권장 순서):**
1. `session_store` — 세션 저장소
2. `event_hooks` — 이벤트 훅 시스템
3. `context_compressor` — 컨텍스트 압축
4. `session_search` — 세션 검색
5. `skill_guard` — 스킬 가드
6. `delegate_controller` — 위임 제어
7. `pre_exec_scan` — 사전 실행 스캔

**구현 원칙:**
- 설계서의 상세 설계를 충실히 따를 것
- 각 모듈은 독립적으로 테스트 가능해야 함
- 200줄 이하 유지 (불가능하면 적절히 분할)
- pytest 테스트 필수 (각 모듈당 최소 15개 이상)
- pyright 에러 0건, black + isort 적용

### 작업 4: skill_loader.py 리팩터링

- 현재 274줄로 200줄 초과
- frontmatter 파싱 로직을 `skill_parser.py`로 분리
- 3계층 로딩 로직은 skill_loader.py에 유지
- 기존 테스트(22건) 모두 통과 + 분리된 모듈 테스트 추가

## Phase 순서 (자율 판단)

팀장이 자율적으로 Phase를 나누되, 권장 순서:
1. 작업 1 (QC 개선) — 빠르게 완료 가능
2. 작업 4 (리팩터링) — 작업 2의 선행 조건
3. 작업 2 (기존 코드 통합) — 핵심 작업
4. 작업 3 (고난이도 구현) — 가장 큰 작업, 단계적 진행

## 주의사항
- 기존 코드(dispatch.py, orchestrator.py 등)를 수정할 때는 반드시 기존 테스트 통과 확인
- 다른 팀의 작업 파일 건드리지 말 것
- 200줄 제한 준수
- 파일 수정 시 git checkout은 해당 파일만 (전체 stash/reset 금지)
- 모든 Phase 완료 후 최종 통합 테스트 실행