# Hermes Agent 도입 방안 설계서

**작성일:** 2026-03-23
**작성자:** 토르 (dev2-team 백엔드)
**참조 리포트:** `/home/jay/workspace/memory/research/hermes-agent-full-audit.md`
**Hermes 버전:** v0.4.0
**대상 항목:** 가치 '상' 15개 + 가치 '중' 25개 = 총 40개

---

## 목차

1. [항목별 상세 설계](#1-항목별-상세-설계)
   - [1-1. 가치 '상' 15개](#1-1-가치-상-15개)
   - [1-2. 가치 '중' 25개](#1-2-가치-중-25개)
2. [구현 순서 (토폴로지컬 정렬)](#2-구현-순서-토폴로지컬-정렬)
3. [의존성 맵](#3-의존성-맵)
4. [총 예상 산출물 목록](#4-총-예상-산출물-목록)

---

## 1. 항목별 상세 설계

### 1-1. 가치 '상' 15개

---

#### S-01. 런타임 비밀 마스킹
- **카테고리:** Security / Core Agent
- **Hermes 구현 요약:** `redact.py` — `RedactingFormatter`를 Python 로거에 자동 주입. 20+ 패턴(`sk-*`, `ghp_*`, `AKIA*`, Telegram 토큰, DB 연결 문자열 등) 정규식으로 실시간 마스킹. 165줄.
- **우리 시스템 현재 상태:** 없음 (QC-RULES.md 정책 문서만 존재, 런타임 처리 없음)
- **도입 방식:** 신규 구축 (Hermes 패턴 직접 이식, 우리 로거 설정에 주입)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/redact.py` (165줄 이내)
  - `/home/jay/workspace/utils/__init__.py` 수정 (RedactingFormatter export)
  - `dispatch.py`, `orchestrator.py` 상단 로거 초기화 부분 수정 (3줄)
- **의존성:** 없음 (독립 모듈)

---

#### S-02. 프롬프트 인젝션 탐지
- **카테고리:** Security / Core Agent
- **Hermes 구현 요약:** `prompt_builder.py`의 `_scan_context_content()` — 10개 위험 패턴(ignore previous instructions, jailbreak 등) + 10개 유니코드 인젝션 패턴 탐지. 탐지 시 컨텍스트 로드 거부. 스킬 인덱스 자동 생성 + 컨텍스트 우선순위 결정 포함.
- **우리 시스템 현재 상태:** 없음 (인젝션 탐지, 컨텍스트 우선순위 모두 없음)
- **도입 방식:** 신규 구축 (탐지 로직은 분리 모듈로, `dispatch.py` 컨텍스트 로드 시점에 훅)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/injection_guard.py` (100줄 이내, 패턴 정의 + 스캔 함수)
  - `dispatch.py` 수정 — 컨텍스트/파일 로드 시 `scan_context()` 호출 (10줄)
- **의존성:** S-01 (redact.py 완료 후 동일 유틸 레이어에 배치)

---

#### S-03. 위험 명령 승인 (SmartApproval)
- **카테고리:** Security / Tools
- **Hermes 구현 요약:** `approval.py` — `rm -rf`, `DROP TABLE`, `curl|bash` 등 정규식 탐지 → LLM 위험도 판단(SmartApproval) → 자동 승인(저위험) / 사용자 확인 요청(고위험). 590줄.
- **우리 시스템 현재 상태:** 없음 (QC-RULES.md 정책만, 런타임 차단 없음). `nuclear-approval` 스킬이 스킬 레벨에서 유사하나 도구 레벨은 없음.
- **도입 방식:** 신규 구축 (패턴 매칭 레이어는 경량화, LLM 판단은 우리 dispatch 파이프라인에 통합)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/approval.py` (150줄 이내 — 패턴 + 판단 로직)
  - `orchestrator.py` 수정 — 터미널 명령 실행 전 `check_approval()` 호출
- **의존성:** S-02 (injection_guard와 동일 utils 레이어)

---

#### S-04. 스킬 보안 스캔 (AST 정적 분석)
- **카테고리:** Security / Skills
- **Hermes 구현 요약:** `skills_guard.py` — Python AST 파싱으로 스킬 코드 실행 전 위험 패턴 탐지 (`eval`, `exec`, `__import__`, subprocess 쉘 인젝션, 네트워크 역쉘 패턴 등). 1,084줄.
- **우리 시스템 현재 상태:** 없음 (스킬은 Markdown 기반이나 일부 Python 스크립트 포함, 검증 없음)
- **도입 방식:** 신규 구축 (Hermes 1,084줄을 우리 스킬 구조에 맞게 핵심만 추출, 200줄 원칙에 맞게 2개 파일로 분리)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/skill_guard_patterns.py` (패턴 정의, 100줄)
  - `/home/jay/workspace/utils/skill_guard.py` (AST 스캐너, 180줄)
  - `dispatch.py` 수정 — Python 스킬 실행 전 `guard_skill()` 호출
- **의존성:** S-02 (injection_guard와 동일 보안 레이어)

---

#### S-05. 사전 실행 보안 스캔 (Tirith)
- **카테고리:** Security
- **Hermes 구현 요약:** `tirith_security.py` — Tirith 전용 바이너리 호출. 호모그래프 URL, 파이프-투-인터프리터(`curl|bash`), 터미널 인젝션 탐지. SHA-256 체크섬 + cosign 증명 검증. Exit code 0/1/2로 통과/경고/차단.
- **우리 시스템 현재 상태:** 없음 (가장 큰 보안 격차)
- **도입 방식:** 신규 구축 (Tirith 바이너리 없으면 Python으로 핵심 패턴만 재구현. cosign 검증은 설계만)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/pre_exec_scan.py` (호모그래프+파이프인터프리터+터미널인젝션 탐지, 180줄)
  - `orchestrator.py` 수정 — 모든 외부 명령 실행 전 `pre_exec_scan()` 호출
- **의존성:** S-03 (approval.py 이후 동일 실행 파이프라인에 레이어 추가)

---

#### S-06. Frozen Snapshot 메모리 + 인젝션 탐지
- **카테고리:** Memory
- **Hermes 구현 요약:** `memory_tool.py` — MEMORY.md(2,200자) + USER.md(1,375자) 2파일 분리. `§` 구분자. 세션 시작 시 메모리 스냅샷 고정(Frozen Snapshot) → prefix cache 안정화. 13개 인젝션 패턴 스캔. `fcntl` 파일 잠금. 547줄.
- **우리 시스템 현재 상태:** `memory/` 디렉토리에 MEMORY.md 파일 있음. 문자 제한, Frozen Snapshot, 인젝션 탐지, 파일 잠금 모두 없음.
- **도입 방식:** 기존 코드 확장 (`dispatch.py`의 MEMORY.md 로드 로직 확장)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/memory_manager.py` (Frozen Snapshot + 잠금 + 인젝션 스캔, 180줄)
  - `dispatch.py` 수정 — 세션 시작 시 `memory_manager.load_frozen()` 사용
  - `teams/dev2/USER.md` 신규 생성 (사용자 정보 분리 파일)
- **의존성:** S-02 (injection_guard 패턴 재사용)

---

#### S-07. 보조 LLM 라우터
- **카테고리:** Core Agent
- **Hermes 구현 요약:** `auxiliary_client.py` — 압축/비전/웹추출 등 보조 작업에 저렴한 모델 자동 선택. 6단계 fallback(OpenRouter → Nous Portal → Custom → Codex OAuth → Anthropic → Direct). 작업별 env var 오버라이드. 1,627줄.
- **우리 시스템 현재 상태:** 단일 모델 사용. `config/engine_budget.yaml` 있음 (모델 예산 설정 일부 존재).
- **도입 방식:** 신규 구축 (Hermes 1,627줄 중 핵심 라우팅 로직만 추출, 우리 config 구조에 맞게 경량화)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/aux_llm_router.py` (프로바이더 선택 + fallback, 180줄)
  - `config/engine_budget.yaml` 수정 — auxiliary provider 설정 추가
  - `chain_manager.py` 수정 — 요약/분석 호출 시 aux_router 사용
- **의존성:** M-04 (usage_pricing.py 비용 계산 참고)

---

#### S-08. 세션 인사이트 엔진
- **카테고리:** Analytics
- **Hermes 구현 요약:** `insights.py` — SQLite 기반 토큰/비용/도구 사용 패턴/활동 추세. `InsightsEngine` 클래스. 30/7/1일 필터. ASCII 바 차트. 도구 빈도/성공률 분석.
- **우리 시스템 현재 상태:** `dashboard/server.py` 수동 단순 대시보드 있음. 비용 추정, 도구 성공률 없음.
- **도입 방식:** 신규 구축 (SQLite DB는 S-09 hermes_state 도입 후 활용, 대시보드 서버에 엔드포인트 추가)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/insights_engine.py` (집계 + ASCII 차트, 180줄)
  - `dashboard/server.py` 수정 — `/api/insights` 엔드포인트 추가 (30줄)
- **의존성:** S-09 (hermes_state SQLite), M-04 (usage_pricing)

---

#### S-09. SQLite WAL 세션 저장소
- **카테고리:** Memory / Infrastructure
- **Hermes 구현 요약:** `hermes_state.py` — SCHEMA_VERSION 5. sessions + messages 테이블. FTS5 가상 테이블. 비용 추적 컬럼. WAL 모드. 954줄.
- **우리 시스템 현재 상태:** 파일 기반 daily/ 로그 (`logs/` 디렉토리). 검색 불가, 비용 추적 없음.
- **도입 방식:** 신규 구축 (우리 로그 구조에 맞는 스키마로 재설계, 기존 파일 로그와 병행 운영)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/session_store.py` (SQLite WAL + FTS5 스키마, 200줄)
  - `/home/jay/workspace/utils/session_store_migration.py` (기존 로그 마이그레이션, 100줄)
  - `decision_logger.py` 수정 — 기존 파일 로그 + SQLite 병행 쓰기
- **의존성:** 없음 (독립 저장소, 다른 항목들이 이를 의존)

---

#### S-10. FTS5 세션 검색
- **카테고리:** Memory
- **Hermes 구현 요약:** `session_search_tool.py` — SQLite FTS5 전문 검색 + LLM 요약으로 과거 대화 리콜. FTS5 OR 쿼리 → 부모 세션 해석 → 중복 제거 → ~100K chars 윈도우 → Gemini Flash 10K 토큰 요약. 420줄.
- **우리 시스템 현재 상태:** 없음 (daily/ 로그 수동 참조)
- **도입 방식:** 신규 구축 (S-09 SQLite 기반으로 FTS5 검색 구현)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/session_search.py` (FTS5 검색 + 요약 파이프라인, 200줄)
  - `skills/session-recall/` 신규 스킬 (검색 UI, 50줄 YAML)
- **의존성:** S-09 (session_store SQLite + FTS5)

---

#### S-11. Progressive Disclosure 스킬 관리
- **카테고리:** Skills
- **Hermes 구현 요약:** `skills_tool.py` — 3계층 스킬 로딩(list → view → full). 플랫폼 호환성 필터. 조건부 활성화(`fallback_for`, `requires` YAML frontmatter). 1,320줄.
- **우리 시스템 현재 상태:** 53개 스킬 전체를 단번에 로드. YAML frontmatter 없음. `skills/find-skills/` 스킬로 검색 가능하나 최적화 없음.
- **도입 방식:** 기존 코드 확장 (`dispatch.py` 스킬 로드 로직 재설계)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/skill_loader.py` (3계층 로딩 + YAML frontmatter 파싱, 180줄)
  - `dispatch.py` 수정 — 스킬 로드 시 `skill_loader.load_progressive()` 사용
  - 기존 스킬 YAML frontmatter에 `category`, `requires`, `platform` 필드 추가 (일괄 수정)
- **의존성:** 없음

---

#### S-12. 서브에이전트 격리 위임
- **카테고리:** Skills / Core Agent
- **Hermes 구현 요약:** `delegate_tool.py` — 격리 컨텍스트 자식 AIAgent 스폰. `MAX_CONCURRENT_CHILDREN=3`, `MAX_DEPTH=2`. `DELEGATE_BLOCKED_TOOLS`(delegate, memory, send_message 등 재귀 위험 도구 차단). ThreadPoolExecutor 병렬 실행. 789줄.
- **우리 시스템 현재 상태:** `dispatch.py` 순차 위임. 깊이 제한 없음, 차단 도구 개념 없음.
- **도입 방식:** 기존 코드 확장 (`dispatch.py` 위임 로직에 깊이/동시성/차단 레이어 추가)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/delegate_controller.py` (깊이 추적 + 차단 도구 + 병렬 풀, 180줄)
  - `dispatch.py` 수정 — `delegate_controller.spawn()` 사용
- **의존성:** S-11 (Progressive Disclosure로 스킬 목록 전달)

---

#### S-13. 5단계 컨텍스트 압축
- **카테고리:** Core Agent
- **Hermes 구현 요약:** `context_compressor.py` — 컨텍스트 50% 초과 시 자동 압축. ① 오래된 tool result 정리 → ② head 보호 → ③ tail 20K 토큰 보호 → ④ LLM 구조화 요약(Goal/Progress/Decisions/Files/Next) → ⑤ 반복 압축 시 기존 요약 누적. orphan tool pair 정리. 658줄.
- **우리 시스템 현재 상태:** Claude Code 내장 단순 압축만 사용. 구조화 요약 없음.
- **도입 방식:** 신규 구축 (Hermes 658줄을 우리 chain_manager 파이프라인에 맞게 재설계, 2개 파일로 분리)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/context_compressor.py` (5단계 압축 로직, 200줄)
  - `/home/jay/workspace/utils/context_summary.py` (LLM 구조화 요약 프롬프트 + 호출, 150줄)
  - `chain_manager.py` 수정 — 컨텍스트 크기 체크 후 `compress_context()` 호출
- **의존성:** S-07 (aux_llm_router — 요약용 저렴한 모델 사용)

---

#### S-14. 단일 YAML 설정 중앙화
- **카테고리:** Configuration
- **Hermes 구현 요약:** `cli-config.yaml.example` — 모델/프로바이더, smart_model_routing, worktree 기본값, display 4단계, PII 마스킹, 스킨 등 단일 파일로 중앙화.
- **우리 시스템 현재 상태:** 분산 설정 (`config/engine_budget.yaml`, `config/personas.json`, `config/teams.json`, 코드 내 하드코딩). 통합 설정 파일 없음.
- **도입 방식:** 기존 코드 확장 (기존 config 파일들을 통합 YAML로 마이그레이션)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/config/system.yaml` (통합 설정 파일, 예시 포함)
  - `/home/jay/workspace/utils/config_loader.py` (YAML 파싱 + 환경변수 오버라이드, 100줄)
  - `dispatch.py`, `orchestrator.py` 수정 — `config_loader.get()` 사용으로 전환
- **의존성:** 없음 (다른 항목들이 이를 활용)

---

#### S-15. OpenAI 호환 API 서버
- **카테고리:** UX / Gateway
- **Hermes 구현 요약:** `gateway/platforms/api_server.py` — `/v1/chat/completions` + `/v1/responses` OpenAI 호환 엔드포인트. Open WebUI, LobeChat, LibreChat 등 어떤 프론트엔드도 연결 가능. 스트리밍 지원. 1,158줄.
- **우리 시스템 현재 상태:** `services/mcp_server.py` MCP 서버 있음. OpenAI 호환 엔드포인트 없음.
- **도입 방식:** 신규 구축 (핵심 `/v1/chat/completions` + SSE 스트리밍만 구현, 우리 dispatch에 연결)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/services/openai_compat_server.py` (FastAPI 기반, 180줄)
  - `services/README.md` 업데이트 (연결 방법 문서)
- **의존성:** S-14 (config_loader로 포트/모델 설정)

---

### 1-2. 가치 '중' 25개

---

#### M-01. 원자적 파일 쓰기
- **카테고리:** Infrastructure / Utils
- **Hermes 구현 요약:** `utils.py` — `atomic_json_write()` / `atomic_yaml_write()`. temp 파일 → fsync → `os.replace()` POSIX 원자 교체. `BaseException` catch로 KeyboardInterrupt 시에도 temp 파일 정리. 107줄.
- **우리 시스템 현재 상태:** 없음. 일반 `open().write()` 사용. 프로세스 중단 시 파일 손상 가능.
- **도입 방식:** 신규 구축 (107줄 직접 이식 후 우리 코드에서 사용)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/atomic_write.py` (100줄 이내)
  - `decision_logger.py`, `dispatch.py` 등 파일 쓰기 부분 순차 교체
- **의존성:** 없음

---

#### M-02. Prompt Caching (system_and_3 전략)
- **카테고리:** Core Agent
- **Hermes 구현 요약:** `prompt_caching.py` — Anthropic `cache_control: {"type": "ephemeral"}` 삽입. 시스템 프롬프트 1개 + 최근 non-system 메시지 3개에 캐시 마커. API 비용 ~75% 절감. 72줄.
- **우리 시스템 현재 상태:** 없음.
- **도입 방식:** 신규 구축 (72줄 직접 이식, chain_manager API 호출 시 적용)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/prompt_cache.py` (캐시 마커 삽입 함수, 80줄)
  - `chain_manager.py` 수정 — API 호출 전 `apply_cache_markers()` 호출 (5줄)
- **의존성:** 없음

---

#### M-03. 스마트 모델 라우팅
- **카테고리:** Core Agent
- **Hermes 구현 요약:** `smart_model_routing.py` — `max_simple_chars=160`, `max_simple_words=28`. 복잡 키워드 셋(analyze, implement, debug 등) 체크. 단순 질문 → 저렴한 모델, 복잡 작업 → 고성능 모델. 196줄.
- **우리 시스템 현재 상태:** `scripts/task-router.py` 유사하나 더 단순. `config/engine_budget.yaml` 모델 예산 설정 있음.
- **도입 방식:** 기존 코드 확장 (`config/engine_budget.yaml`의 모델 설정과 연동)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/model_router.py` (키워드 기반 라우팅, 150줄)
  - `dispatch.py` 수정 — 태스크 분석 후 `route_model()` 적용
- **의존성:** S-14 (config_loader로 모델 설정 읽기)

---

#### M-04. 비용 계산 (200+ 모델 가격표)
- **카테고리:** Analytics
- **Hermes 구현 요약:** `usage_pricing.py` — `CanonicalUsage`, `PricingEntry`, `CostResult` 데이터클래스. Anthropic/OpenAI/DeepSeek/Google 등 200+ 모델 가격 하드코딩. 실시간 비용 추정. 655줄.
- **우리 시스템 현재 상태:** 없음 (비용 추적 없음).
- **도입 방식:** 신규 구축 (핵심 우리 사용 모델 20개만 추출, 경량화)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/usage_pricing.py` (우리 사용 모델 가격표 + 비용 계산, 150줄)
  - `decision_logger.py` 수정 — 각 API 호출 후 비용 기록
- **의존성:** 없음

---

#### M-05. @ 참조 시스템
- **카테고리:** UX / Core Agent
- **Hermes 구현 요약:** `context_references.py` — `@file:path`, `@folder:`, `@diff`, `@staged`, `@git:N`, `@url:URL` 6종 참조 정규식 파싱 후 컨텐츠 주입. 50% hard / 25% soft dual-limit 컨텍스트 보호. 485줄.
- **우리 시스템 현재 상태:** 없음 (GitHub Copilot/Cursor 스타일 UX).
- **도입 방식:** 신규 구축 (6종 중 `@file:`, `@folder:`, `@diff`, `@staged` 4종 우선 구현)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/context_refs.py` (참조 파서 + 주입, 180줄)
  - `dispatch.py` 수정 — 사용자 메시지 전처리 시 `parse_refs()` 적용
- **의존성:** S-02 (injection_guard로 주입된 컨텐츠 스캔)

---

#### M-06. 모델 메타데이터 9단계 resolution
- **카테고리:** Core Agent
- **Hermes 구현 요약:** `model_metadata.py` — 사용자 override → models.dev API → Ollama → LM Studio → llama.cpp → vLLM → 하드코딩 → provider 기본값 → 최솟값. 로컬 LLM 서버 자동 감지. 897줄.
- **우리 시스템 현재 상태:** 없음.
- **도입 방식:** 신규 구축 (9단계 중 우리 관련 5단계만: override → 하드코딩 → Ollama → provider 기본값 → 최솟값)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/model_metadata.py` (5단계 resolution, 150줄)
  - `config/system.yaml` 확장 — 로컬 LLM 설정 섹션
- **의존성:** S-14 (config_loader)

---

#### M-07. 스킬 YAML frontmatter 파싱 (스킬 CRUD 도구)
- **카테고리:** Skills
- **Hermes 구현 요약:** `skill_manager_tool.py` — create/edit/patch/delete/write_file/remove_file. 원자적 파일 쓰기, 경로 탐색 공격 방지. YAML frontmatter 파싱. 664줄.
- **우리 시스템 현재 상태:** `skills/skill-creator/` 스킬 있음 (Markdown 생성). 런타임 CRUD 도구 없음.
- **도입 방식:** 기존 코드 확장 (`skill-creator` 스킬 확장 + 런타임 도구로 승격)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/skill_manager.py` (CRUD + 경로 검증 + 원자 쓰기, 180줄)
  - `skills/skill-creator/` 스킬 업데이트 — `skill_manager.py` 호출로 전환
- **의존성:** M-01 (atomic_write), S-11 (Progressive Disclosure frontmatter 구조)

---

#### M-08. 체크포인트 관리
- **카테고리:** Memory
- **Hermes 구현 요약:** `checkpoint_manager.py` — 파일 변경 전 shadow git repo 자동 스냅샷. `~/.hermes/checkpoints/{sha256}` 경로. git commit으로 스냅샷. 롤백 지원. 548줄.
- **우리 시스템 현재 상태:** 없음.
- **도입 방식:** 신규 구축 (shadow git repo 대신 타임스탬프 기반 백업 디렉토리로 단순화)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/checkpoint.py` (스냅샷 + 롤백, 150줄)
  - `orchestrator.py` 수정 — 파일 쓰기 작업 전 `checkpoint.snapshot()` 호출
- **의존성:** M-01 (atomic_write)

---

#### M-09. Honcho 사용자 모델링
- **카테고리:** Memory
- **Hermes 구현 요약:** `honcho_tools.py` — 변증법적 Q&A, 시맨틱 검색, 구조화 프로필, 세션 종료 요약. 비동기 writer 스레드로 Honcho API 동기화. 3종 `recall_mode`: hybrid/context/tools.
- **우리 시스템 현재 상태:** 없음 (외부 AI 메모리 SaaS).
- **도입 방식:** 신규 구축 (Honcho SaaS 대신 로컬 SQLite 기반 사용자 프로필 자체 구현)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/user_model.py` (로컬 사용자 프로필 + 세션 요약, 180줄)
  - `teams/dev2/USER.md` — 자동 업데이트 타겟
- **의존성:** S-09 (session_store SQLite)

---

#### M-10. MoA 앙상블 (Mixture of Agents)
- **카테고리:** Memory / Core Agent
- **Hermes 구현 요약:** `mixture_of_agents_tool.py` — 4 frontier 모델 병렬 호출 → 집계. arXiv:2406.04692 구현. ThreadPoolExecutor 병렬. 548줄.
- **우리 시스템 현재 상태:** 없음. `services/multimodel-bot/` 멀티모델 봇 있으나 앙상블 집계 없음.
- **도입 방식:** 기존 코드 확장 (`multimodel-bot` 기반으로 앙상블 레이어 추가)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/moa_ensemble.py` (병렬 호출 + 집계 프롬프트, 180줄)
  - `services/multimodel-bot/` 수정 — `moa_ensemble.py` 연동
- **의존성:** S-07 (aux_llm_router — 다중 모델 클라이언트)

---

#### M-11. 스킬 허브 연동 (agentskills.io)
- **카테고리:** Skills
- **Hermes 구현 요약:** `skills_hub.py` — GitHub API 기반 외부 스킬 저장소. PAT/gh CLI/GitHub App 3종 인증. 검역 디렉토리 + 감사 로그. 2,488줄.
- **우리 시스템 현재 상태:** 내부 스킬만 (`skills/` 53개).
- **도입 방식:** 신규 구축 (2,488줄 중 핵심만 — GitHub API 검색 + 검역 설치 + 감사 로그, 2개 파일로 분리)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/skill_hub_client.py` (GitHub API + 인증, 180줄)
  - `/home/jay/workspace/utils/skill_quarantine.py` (검역 + 감사 로그, 150줄)
  - `skills/find-skills/` 스킬 업데이트 — 외부 허브 검색 기능 추가
- **의존성:** S-04 (skill_guard — 외부 스킬 AST 스캔 필수)

---

#### M-12. 도구 레지스트리 패턴
- **카테고리:** Skills / Infrastructure
- **Hermes 구현 요약:** `registry.py` — 선언적 자기 등록 패턴. `check_fn` 런타임 가용성 확인. 237줄.
- **우리 시스템 현재 상태:** 직접 import 방식. 느슨한 결합 없음.
- **도입 방식:** 신규 구축 (우리 도구/스킬 등록 체계에 레지스트리 패턴 도입)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/tool_registry.py` (자기 등록 + 가용성 체크, 150줄)
  - `dispatch.py` 수정 — 직접 import 대신 `registry.get_tool()` 사용
- **의존성:** 없음

---

#### M-13. 터미널 다중 환경 (Docker/SSH)
- **카테고리:** Infrastructure
- **Hermes 구현 요약:** `terminal_tool.py` + `environments/` — 6환경 팩토리 (local/Docker/Modal/Singularity/SSH/Daytona). 각각 격리 실행. 1,371줄.
- **우리 시스템 현재 상태:** 로컬 쉘만. Docker 실행 없음.
- **도입 방식:** 신규 구축 (local + Docker + SSH 3종만 우선 구현, 환경 ABC 추상화)
- **구현 난이도:** 상
- **예상 산출물:**
  - `/home/jay/workspace/utils/exec_env.py` (BaseEnvironment ABC, 80줄)
  - `/home/jay/workspace/utils/exec_local.py` (로컬 실행 — 기존 로직 이관, 100줄)
  - `/home/jay/workspace/utils/exec_docker.py` (Docker 격리 실행, 180줄)
  - `/home/jay/workspace/utils/exec_ssh.py` (SSH 원격 실행, 150줄)
  - `orchestrator.py` 수정 — 환경 팩토리 패턴 적용
- **의존성:** S-14 (config_loader로 환경 설정)

---

#### M-14. 코드 실행 샌드박스
- **카테고리:** Tools
- **Hermes 구현 요약:** `code_execution_tool.py` — Python 샌드박스 실행. subprocess 격리. 787줄.
- **우리 시스템 현재 상태:** 없음.
- **도입 방식:** 신규 구축 (Docker 샌드박스 기반으로 안전한 Python 실행 환경)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/code_sandbox.py` (Python 격리 실행, 180줄)
- **의존성:** M-13 (exec_docker — Docker 환경 재사용)

---

#### M-15. STT (Faster Whisper)
- **카테고리:** Tools
- **Hermes 구현 요약:** `transcription_tools.py` — Faster Whisper STT. 다중 모델 크기 지원. 554줄.
- **우리 시스템 현재 상태:** `scripts/whisper-compile.py`, `scripts/whisper-save-guidance.py` 있음 (Whisper 설정 스크립트). 실제 STT 도구 없음.
- **도입 방식:** 기존 코드 확장 (기존 whisper 스크립트를 통합 STT 도구로 승격)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/stt_tool.py` (Faster Whisper 래퍼, 150줄)
  - `skills/transcribe/` 신규 스킬 (STT 호출 UI)
- **의존성:** 없음

---

#### M-16. 명확화 도구 (Clarify)
- **카테고리:** Tools
- **Hermes 구현 요약:** `clarify_tool.py` — 런타임 도구로 구현된 명확화 요청. 모호한 태스크 시 사용자에게 구체적 질문. 141줄.
- **우리 시스템 현재 상태:** `skills/swing-clarify/` 스킬 있음 (스킬 레벨). 런타임 도구 없음.
- **도입 방식:** 설정만 추가 (141줄 직접 이식, `dispatch.py`에 clarify 도구 등록)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/clarify.py` (130줄 이내)
  - `dispatch.py` 수정 — clarify 도구 등록
- **의존성:** M-12 (tool_registry)

---

#### M-17. 퍼지 매칭 (Levenshtein)
- **카테고리:** Tools
- **Hermes 구현 요약:** `fuzzy_match.py` — Levenshtein 거리 기반 퍼지 매칭. 스킬명/파일명 오타 수정. 487줄.
- **우리 시스템 현재 상태:** 없음.
- **도입 방식:** 신규 구축 (핵심 매칭 함수만 경량화)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/fuzzy_match.py` (Levenshtein + 추천, 100줄)
  - `dispatch.py` 수정 — 스킬명 매칭 시 퍼지 적용
- **의존성:** 없음

---

#### M-18. 패치 파서 (unified diff)
- **카테고리:** Tools
- **Hermes 구현 요약:** `patch_parser.py` — unified diff 파싱/적용/롤백. 438줄.
- **우리 시스템 현재 상태:** 없음.
- **도입 방식:** 신규 구축 (Python `difflib` 기반으로 경량화)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/patch_parser.py` (diff 파싱 + 적용, 180줄)
  - `orchestrator.py` 수정 — 파일 수정 제안 수신 시 `apply_patch()` 사용
- **의존성:** M-01 (atomic_write — 패치 적용 시 원자 쓰기)

---

#### M-19. 인터럽트 메커니즘
- **카테고리:** Tools
- **Hermes 구현 요약:** `interrupt.py` — 장시간 실행 중단 메커니즘. 인터럽트 신호 전파. 28줄.
- **우리 시스템 현재 상태:** 없음.
- **도입 방식:** 신규 구축 (28줄 직접 이식)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/interrupt.py` (30줄 이내)
  - `orchestrator.py` 수정 — 장기 작업 루프에 인터럽트 체크 삽입
- **의존성:** 없음

---

#### M-20. robots.txt 정책 준수
- **카테고리:** Security
- **Hermes 구현 요약:** `website_policy.py` — 웹 크롤링 전 robots.txt 파싱 + ToS 준수 확인. 285줄.
- **우리 시스템 현재 상태:** 없음. `scripts/insurance_crawler.py` 등 크롤러 있으나 robots.txt 확인 없음.
- **도입 방식:** 신규 구축 (urllib.robotparser 기반, 크롤러에 훅)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/utils/robots_policy.py` (robots.txt 파싱 + 크롤링 허가 확인, 100줄)
  - `scripts/insurance_crawler.py` 등 수정 — 크롤링 전 `can_crawl()` 체크
- **의존성:** 없음

---

#### M-21. Persistent Shell (상태 유지 셸)
- **카테고리:** Infrastructure
- **Hermes 구현 요약:** `environments/persistent_shell.py` — PTY 프로세스로 셸 상태(CWD, env var) 유지. multi-step 작업에서 디렉토리 변경 유지. 272줄.
- **우리 시스템 현재 상태:** 없음. 각 명령마다 새 subprocess (상태 미유지).
- **도입 방식:** 신규 구축 (PTY 기반 영속 셸 세션)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/persistent_shell.py` (PTY 영속 셸, 180줄)
  - `orchestrator.py` 수정 — 연속 명령 실행 시 `persistent_shell` 세션 재사용
- **의존성:** 없음

---

#### M-22. 이벤트 훅 시스템
- **카테고리:** UX / Gateway
- **Hermes 구현 요약:** `gateway/hooks.py` — `~/.hermes/hooks/` 디렉토리. HOOK.yaml + handler.py. `gateway:startup`, `agent:start/end`, `session:start/end`, `command:*` 이벤트. 153줄.
- **우리 시스템 현재 상태:** `hooks/` 디렉토리 있음 (`/home/jay/workspace/hooks/`). 구조화 이벤트 시스템 없음.
- **도입 방식:** 기존 코드 확장 (기존 hooks 디렉토리에 이벤트 훅 시스템 추가)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/utils/event_hooks.py` (이벤트 발행 + 훅 로드, 150줄)
  - `hooks/` 디렉토리 — HOOK.yaml 예시 추가
  - `dispatch.py` 수정 — 주요 이벤트 포인트에 `emit_event()` 삽입
- **의존성:** 없음

---

#### M-23. CI/CD (GitHub Actions)
- **카테고리:** DevOps
- **Hermes 구현 요약:** `.github/workflows/` — pytest + pyright 자동 실행. PR 체크. ISSUE_TEMPLATE 버그/기능요청 템플릿.
- **우리 시스템 현재 상태:** `scripts/ci.sh` 수동 CI 스크립트. 자동화 없음.
- **도입 방식:** 신규 구축 (GitHub Actions 워크플로우 파일 생성)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/.github/workflows/ci.yml` (pytest + pyright)
  - `/home/jay/workspace/.github/ISSUE_TEMPLATE/bug_report.md`
  - `/home/jay/workspace/.github/ISSUE_TEMPLATE/feature_request.md`
- **의존성:** 없음

---

#### M-24. Fake 테스트 패턴
- **카테고리:** Testing
- **Hermes 구현 요약:** `tests/fakes/` — 플랫폼 어댑터/LLM 클라이언트 Mock(Fake 패턴). 의존성 역전으로 단위 테스트 용이.
- **우리 시스템 현재 상태:** `tests/` 있음. pytest + pyright. Fake 패턴 없음.
- **도입 방식:** 신규 구축 (핵심 컴포넌트 Fake 구현)
- **구현 난이도:** 중
- **예상 산출물:**
  - `/home/jay/workspace/tests/fakes/fake_llm_client.py` (LLM Mock, 100줄)
  - `/home/jay/workspace/tests/fakes/fake_dispatch.py` (dispatch Mock, 100줄)
  - `/home/jay/workspace/tests/fakes/__init__.py`
- **의존성:** M-23 (CI/CD에서 자동 실행)

---

#### M-25. 선택적 의존성 그룹 패턴
- **카테고리:** DevOps / Configuration
- **Hermes 구현 요약:** `pyproject.toml` — 15개 optional deps 그룹. `pip install hermes-agent[rl,voice]` 선택적 설치.
- **우리 시스템 현재 상태:** 단일 `requirements.txt`. 모든 의존성 항상 설치.
- **도입 방식:** 기존 코드 확장 (`pyproject.toml`이 이미 있음, optional deps 그룹 추가)
- **구현 난이도:** 하
- **예상 산출물:**
  - `/home/jay/workspace/pyproject.toml` 수정 — `[project.optional-dependencies]` 그룹 추가 (voice, ml, dev 등)
- **의존성:** 없음

---

## 2. 구현 순서 (토폴로지컬 정렬)

### Phase 0: 기반 인프라 (즉시 도입)

의존성 없음 + 난이도 하. 다른 모든 항목의 기반이 되므로 최우선 구현.

| 순서 | 항목 ID | 항목명 | 예상 기간 | 파일 수 |
|------|---------|--------|----------|---------|
| 0-1 | M-01 | 원자적 파일 쓰기 | 0.5일 | 1 |
| 0-2 | M-04 | 비용 계산 (가격표) | 0.5일 | 1 |
| 0-3 | M-19 | 인터럽트 메커니즘 | 0.5일 | 1 |
| 0-4 | M-17 | 퍼지 매칭 | 0.5일 | 1 |
| 0-5 | M-20 | robots.txt 정책 준수 | 0.5일 | 1 |
| 0-6 | M-25 | 선택적 의존성 그룹 | 0.5일 | 1 (수정) |
| 0-7 | M-02 | Prompt Caching | 0.5일 | 1 |
| 0-8 | M-06 | 모델 메타데이터 | 0.5일 | 1 |
| 0-9 | S-01 | 런타임 비밀 마스킹 | 1일 | 2 |

**소계:** 5일, 10개 파일

---

### Phase 1: 보안 레이어 (즉시 도입)

S-01 완료 후 보안 레이어 구축. 다른 기능들이 이를 기반으로 동작.

| 순서 | 항목 ID | 항목명 | 예상 기간 | 의존성 |
|------|---------|--------|----------|--------|
| 1-1 | S-02 | 프롬프트 인젝션 탐지 | 1일 | S-01 |
| 1-2 | S-03 | 위험 명령 승인 (SmartApproval) | 1.5일 | S-02 |
| 1-3 | M-16 | 명확화 도구 | 0.5일 | 없음 (M-12 선택적) |

**소계:** 3일, 4개 파일

---

### Phase 2: 설정 & 레지스트리 (2차 도입)

설정 중앙화 후 이를 참조하는 모든 컴포넌트 구현 가능.

| 순서 | 항목 ID | 항목명 | 예상 기간 | 의존성 |
|------|---------|--------|----------|--------|
| 2-1 | S-14 | 단일 YAML 설정 중앙화 | 1.5일 | Phase 0 완료 |
| 2-2 | M-12 | 도구 레지스트리 패턴 | 1일 | 없음 |
| 2-3 | S-09 | SQLite WAL 세션 저장소 | 2일 | 없음 |
| 2-4 | M-22 | 이벤트 훅 시스템 | 1일 | 없음 |
| 2-5 | M-23 | CI/CD (GitHub Actions) | 1일 | 없음 |

**소계:** 6.5일, 9개 파일

---

### Phase 3: 핵심 기능 (2차 도입)

Phase 2 기반 위에 핵심 기능 구현.

| 순서 | 항목 ID | 항목명 | 예상 기간 | 의존성 |
|------|---------|--------|----------|--------|
| 3-1 | S-06 | Frozen Snapshot 메모리 | 1.5일 | S-02, M-01 |
| 3-2 | S-11 | Progressive Disclosure 스킬 | 1.5일 | 없음 |
| 3-3 | M-03 | 스마트 모델 라우팅 | 1일 | S-14 |
| 3-4 | M-05 | @ 참조 시스템 | 1.5일 | S-02 |
| 3-5 | M-07 | 스킬 YAML frontmatter / CRUD | 1일 | M-01, S-11 |
| 3-6 | M-08 | 체크포인트 관리 | 1일 | M-01 |
| 3-7 | M-18 | 패치 파서 | 1일 | M-01 |
| 3-8 | M-21 | Persistent Shell | 1.5일 | 없음 |
| 3-9 | M-24 | Fake 테스트 패턴 | 1.5일 | M-23 |

**소계:** 11.5일, 15개 파일

---

### Phase 4: 분석 & 라우팅 (2차 도입)

저장소와 가격 정보가 준비된 후 분석 레이어 구축.

| 순서 | 항목 ID | 항목명 | 예상 기간 | 의존성 |
|------|---------|--------|----------|--------|
| 4-1 | S-07 | 보조 LLM 라우터 | 1.5일 | M-04, S-14 |
| 4-2 | S-08 | 세션 인사이트 엔진 | 1.5일 | S-09, M-04 |
| 4-3 | M-09 | Honcho 사용자 모델링 | 1.5일 | S-09 |
| 4-4 | S-15 | OpenAI 호환 API 서버 | 2일 | S-14 |

**소계:** 6.5일, 6개 파일

---

### Phase 5: 고난이도 기능 (3차 도입 — 설계 선행)

난이도 상. 충분한 설계 문서 작성 후 착수.

| 순서 | 항목 ID | 항목명 | 예상 기간 | 의존성 |
|------|---------|--------|----------|--------|
| 5-1 | S-04 | 스킬 보안 스캔 (AST) | 3일 | S-02, S-11 |
| 5-2 | S-05 | 사전 실행 보안 스캔 (Tirith) | 3일 | S-03 |
| 5-3 | M-13 | 터미널 다중 환경 (Docker/SSH) | 3일 | S-14 |
| 5-4 | M-14 | 코드 실행 샌드박스 | 2일 | M-13 |
| 5-5 | S-12 | 서브에이전트 격리 위임 | 2.5일 | S-11, S-04 |
| 5-6 | S-13 | 5단계 컨텍스트 압축 | 3일 | S-07 |
| 5-7 | S-10 | FTS5 세션 검색 | 2일 | S-09 |

**소계:** 18.5일, 12개 파일

---

### Phase 6: 보류 (참고만 / 외부 의존)

현재 우선순위 낮거나 외부 서비스 의존성 높음.

| 항목 ID | 항목명 | 보류 이유 |
|---------|--------|----------|
| M-09 | Honcho 사용자 모델링 | Honcho SaaS 외부 의존. 로컬 대체 구현 후 결정 |
| M-10 | MoA 앙상블 | API 비용 높음. 비용 계산(M-04) 후 ROI 재평가 |
| M-11 | 스킬 허브 연동 | S-04 완료 후 보안 검증 체계 갖춘 뒤 도입 |
| M-15 | STT (Faster Whisper) | GPU 환경 필요. `scripts/setup-gpu.sh` 완료 후 |

---

## 3. 의존성 맵

```
독립 모듈 (Phase 0)
├── M-01 atomic_write ──────────────┐
├── M-04 usage_pricing ─────────────┤
├── M-02 prompt_cache               │
├── M-06 model_metadata             │
├── M-17 fuzzy_match                │
├── M-19 interrupt                  │
├── M-20 robots_policy              │
├── M-25 optional_deps              │
└── S-01 redact ───────────────────┐│
                                    ││
Phase 1: 보안                       ││
├── S-02 injection_guard ◄──── S-01 ││
│   ├── S-03 approval ◄──── S-02   ││
│   ├── S-04 skill_guard ◄── S-02  ││
│   └── M-05 context_refs ◄─ S-02  ││
└── S-06 memory_manager ◄─ S-02,M-01│
                                     │
Phase 2: 설정/저장소                  │
├── S-14 config_loader               │
│   ├── M-03 model_router ◄── S-14  │
│   ├── M-13 exec_env ◄───── S-14   │
│   └── S-15 openai_api ◄─── S-14  │
├── S-09 session_store               │
│   ├── S-10 session_search ◄─ S-09 │
│   ├── S-08 insights ◄──── S-09   │
│   └── M-09 user_model ◄── S-09   │
├── M-12 tool_registry               │
│   └── M-16 clarify ◄──── M-12    │
└── M-22 event_hooks                 │
                                     │
Phase 3: 핵심 기능                    │
├── S-11 skill_loader                │
│   ├── S-12 delegate ◄── S-11,S-04 │
│   └── M-07 skill_manager ◄ M-01,S-11
├── M-08 checkpoint ◄──── M-01      │
├── M-18 patch_parser ◄── M-01      │
└── M-21 persistent_shell           │
                                     │
Phase 4: 라우팅/분석                  │
├── S-07 aux_llm_router ◄── M-04,S-14
│   ├── S-13 ctx_compressor ◄ S-07  │
│   └── M-10 moa_ensemble ◄── S-07  │
└── S-08 insights ◄──── S-09, M-04  │
```

---

## 4. 총 예상 산출물 목록

### 신규 파일 (utils/)

| 파일 | 항목 | 단계 | 줄 수 |
|------|------|------|------|
| `utils/redact.py` | S-01 | Phase 0 | ~165 |
| `utils/atomic_write.py` | M-01 | Phase 0 | ~100 |
| `utils/usage_pricing.py` | M-04 | Phase 0 | ~150 |
| `utils/prompt_cache.py` | M-02 | Phase 0 | ~80 |
| `utils/model_metadata.py` | M-06 | Phase 0 | ~150 |
| `utils/fuzzy_match.py` | M-17 | Phase 0 | ~100 |
| `utils/interrupt.py` | M-19 | Phase 0 | ~30 |
| `utils/robots_policy.py` | M-20 | Phase 0 | ~100 |
| `utils/injection_guard.py` | S-02 | Phase 1 | ~100 |
| `utils/approval.py` | S-03 | Phase 1 | ~150 |
| `utils/clarify.py` | M-16 | Phase 1 | ~130 |
| `utils/config_loader.py` | S-14 | Phase 2 | ~100 |
| `utils/tool_registry.py` | M-12 | Phase 2 | ~150 |
| `utils/session_store.py` | S-09 | Phase 2 | ~200 |
| `utils/session_store_migration.py` | S-09 | Phase 2 | ~100 |
| `utils/event_hooks.py` | M-22 | Phase 2 | ~150 |
| `utils/memory_manager.py` | S-06 | Phase 3 | ~180 |
| `utils/skill_loader.py` | S-11 | Phase 3 | ~180 |
| `utils/model_router.py` | M-03 | Phase 3 | ~150 |
| `utils/context_refs.py` | M-05 | Phase 3 | ~180 |
| `utils/skill_manager.py` | M-07 | Phase 3 | ~180 |
| `utils/checkpoint.py` | M-08 | Phase 3 | ~150 |
| `utils/patch_parser.py` | M-18 | Phase 3 | ~180 |
| `utils/persistent_shell.py` | M-21 | Phase 3 | ~180 |
| `utils/aux_llm_router.py` | S-07 | Phase 4 | ~180 |
| `utils/insights_engine.py` | S-08 | Phase 4 | ~180 |
| `utils/user_model.py` | M-09 | Phase 4 | ~180 |
| `utils/skill_guard_patterns.py` | S-04 | Phase 5 | ~100 |
| `utils/skill_guard.py` | S-04 | Phase 5 | ~180 |
| `utils/pre_exec_scan.py` | S-05 | Phase 5 | ~180 |
| `utils/exec_env.py` | M-13 | Phase 5 | ~80 |
| `utils/exec_local.py` | M-13 | Phase 5 | ~100 |
| `utils/exec_docker.py` | M-13 | Phase 5 | ~180 |
| `utils/exec_ssh.py` | M-13 | Phase 5 | ~150 |
| `utils/code_sandbox.py` | M-14 | Phase 5 | ~180 |
| `utils/delegate_controller.py` | S-12 | Phase 5 | ~180 |
| `utils/context_compressor.py` | S-13 | Phase 5 | ~200 |
| `utils/context_summary.py` | S-13 | Phase 5 | ~150 |
| `utils/session_search.py` | S-10 | Phase 5 | ~200 |
| `utils/stt_tool.py` | M-15 | 보류 | ~150 |
| `utils/moa_ensemble.py` | M-10 | 보류 | ~180 |
| `utils/skill_hub_client.py` | M-11 | 보류 | ~180 |
| `utils/skill_quarantine.py` | M-11 | 보류 | ~150 |

### 신규 설정/인프라 파일

| 파일 | 항목 | 단계 |
|------|------|------|
| `config/system.yaml` | S-14 | Phase 2 |
| `.github/workflows/ci.yml` | M-23 | Phase 2 |
| `.github/ISSUE_TEMPLATE/bug_report.md` | M-23 | Phase 2 |
| `.github/ISSUE_TEMPLATE/feature_request.md` | M-23 | Phase 2 |
| `skills/session-recall/` (스킬 디렉토리) | S-10 | Phase 5 |
| `skills/transcribe/` (스킬 디렉토리) | M-15 | 보류 |

### 기존 파일 수정

| 파일 | 수정 내용 | 단계 |
|------|---------|------|
| `dispatch.py` | redact 로거, injection_guard, skill_loader, context_refs, delegate_controller | 전 단계 |
| `orchestrator.py` | approval, pre_exec_scan, checkpoint, persistent_shell | Phase 1~5 |
| `chain_manager.py` | prompt_cache, aux_llm_router, context_compressor | Phase 2~5 |
| `decision_logger.py` | usage_pricing 비용 기록, SQLite 병행 쓰기 | Phase 0~2 |
| `dashboard/server.py` | insights 엔드포인트 추가 | Phase 4 |
| `pyproject.toml` | optional deps 그룹 추가 | Phase 0 |
| `skills/skill-creator/` | skill_manager.py 연동 | Phase 3 |

---

## 부록: 총괄 통계

| 구분 | 수치 |
|------|------|
| 총 대상 항목 | 40개 |
| 신규 구축 | 25개 |
| 기존 코드 확장 | 10개 |
| 설정만 추가 | 3개 |
| 참고만 (보류) | 2개 |
| 예상 신규 파일 | 44개 |
| 예상 수정 파일 | 7개 |
| 총 예상 코드 줄 수 | ~6,500줄 |
| 예상 총 기간 | Phase 0~4: 약 7주 / Phase 5: 추가 4주 |
| 200줄 초과 파일 | 0개 (모두 200줄 이내 원칙 준수) |

---

**설계서 작성 완료:** 2026-03-23
**작성자:** 토르 (dev2-team 백엔드)
**다음 단계:** Phase 0 착수 — `utils/redact.py` 및 `utils/atomic_write.py` 구현부터 시작
