Skip to content

v4.0.0 — 멀티에이전트 공유 기억 (Claude Code + Codex)

Latest

Choose a tag to compare

@etinpres etinpres released this 22 Jul 00:33

v4.0.0 — 멀티에이전트 공유 기억 (Claude Code + Codex)

Summary

MindVault가 단일 에이전트(Claude Code)의 영구 기억에서 Claude Code와 Codex가 같은 기억을
회수·추출·저장·계측 전 생명주기로 공유하는 시스템
이 됐다. 두 에이전트가 같은 물리 저장소에
쓰고, 같은 hybrid 검색 엔진(FTS5 + Arctic-ko RRF)의 자동 주입을 받으며, 양쪽 세션 모두에서
기억 후보가 자동 추출된다.

구현은 Codex와 Claude Code가 태스크를 분담(S1S4 / P1P4)하고 서로의 산출물을 교차
검수하는 왕복으로 진행 — Codex 검수가 Claude 구현에서 5결함(High 2 포함), Claude 검수 이후
추가 점검이 배포 자산에서 2결함을 잡아 수정 후 수렴했다. 릴리스 기준 6항(에이전트별 계측
실기록·실제 Stop 트리거 경유 추출→review 승인·close-session 실사용·양방향 주입 e2e·fixture
비밀 스캔·신규 설치 왕복 시뮬레이션)을 실운영 환경에서 충족하고 태그했다.

테스트: 927 passed (v3.9.1) → 961 passed + 2 skipped + 41 subtests (회귀 0).

Added

  • Codex UserPromptSubmit 자동 회수 (scripts/manage_codex_recall.py): Codex CLI
    0.144+의 hook 계약이 Claude Code와 호환(동일 prompt stdin 필드, plain stdout 컨텍스트
    주입)임을 확인하고 배포된 memory-recall.py를 어댑터 없이 직결. 관리자는
    ~/.codex/hooks.json의 단일 작성자로 기존 hook(비 MindVault 항목)을 보존하며
    install/status/uninstall을 멱등 지원.
  • Codex 세션 자동 추출: Codex에는 SessionEnd가 없어 turn-scope Stop hook을 트리거로
    사용. Stop payload → 비동기 wrapper → rollout 로더(src/codex_session_loader.py) →
    기존 Gemma 추출·review 파이프라인. (session_id, turn_id) 멱등키로 중복 추출 차단,
    transcript 부재·손상은 전부 fail-open.
  • Codex rollout 포맷 스펙 + 익명 fixture (docs/specs/codex-rollout-format.md,
    tests/fixtures/codex_sessions/): 0.144.6 실측 기반 — turn 경계·bootstrap/developer 제외·
    final_answer만 적재·custom_tool_call(exec)의 cmd 보수 파싱(eval 금지)·compacted 처리.
  • 에이전트 소스 계측 (hooks/memory-recall.py): metrics.jsonl의 recall/recall_skip
    레코드에 agent: claude|codex|unknown 필드. 미설정·비인가 값은 unknown — 수동 실행을
    오분류하지 않는 계측 정직성 규칙. 등록 command가 MV3_AGENT를 명시(양측 대칭).
  • Codex $close-session 스킬 + 저장 규약 (codex/): repo 템플릿이 정본. frontmatter
    스키마(name/description/metadata.type)·[YYYY-MM-DD] 태그·인덱스 분리 규칙
    (MEMORY-PROCEDURAL/FEEDBACK)을 Codex 저장에도 동일 적용.
  • install.sh Codex 자동 통합: ~/.codex 감지 시 회수+Stop hook 등록, close-session 스킬
    배포, AGENTS.md에 마커 기반 idempotent 규약 삽입. 부재 시 조용히 skip — Claude 단독
    사용자 무영향. uninstall.sh 대칭 해제.
  • README "AI에게 설치 맡기기" 섹션: Claude Code/Codex에 붙여넣는 설치 프롬프트
    (환경 확인 → 설치 → settings.json 변경 고지 → Codex /hooks 신뢰 안내 → 검증).

Fixed (교차 검수 왕복에서 발견)

  • codex_session_loader 배포 누락 — install 배포 목록에 없어 실운영에서
    ModuleNotFoundError → Claude 로더 fallback으로 Codex 자동 추출이 조용히 무력화되던 결함.
    배포 목록 추가 + 파일명 누락 시 실패하는 회귀 가드.
  • 추출 명령 문자열 redact 미적용 — Codex rollout의 bash 명령에 redact() 미적용
    (Claude 경로와 비대칭). 비밀값 스테이징 차단.
  • uninstall의 Codex 설정 경로 비대칭MV3_CODEX_HOME override가 uninstall 경로에
    전달되지 않던 결함.
  • 배포용 close-session 스킬의 개인 인프라 참조 — 신규 사용자에게 존재하지 않는 외부
    도구 참조 제거, 기본 메모리 슬롯 해석 규칙 선언. 재발 차단 가드 테스트 추가.
  • 그 외: is_codex_rollout 선행 malformed 줄 skip(첫 유효 레코드 계약), recall_skip debug
    라인 agent 토큰, 문서 개인 절대경로 일반화(~·<home-slug>).

Changed

  • 저장소 이름: etinpres/mindvault-v3etinpres/mindvault (무버전 — 버전은 태그가
    담당). 기존 링크·클론은 GitHub 자동 리다이렉트. 옛 v1 프로토타입은 mindvault-v1으로
    이관 후 아카이브 유지.
  • v3.10.0 (중간 태그): Codex UserPromptSubmit 회수 연결 시점.

Known limitations

  • 공유되는 것은 저장된 영구 메모리다. 아직 추출·저장되지 않은 실시간 대화 transcript
    전체가 즉시 동기화되는 것은 아니다.
  • Codex 통합은 Codex CLI 0.144.6 hook 계약 실측 기준이며, rollout transcript 포맷은 Codex
    공식 문서상 안정 인터페이스가 아니다 — 로더는 알 수 없는 레코드를 오류 없이 건너뛴다.
  • 지원 환경은 v3와 동일: macOS Apple Silicon 전용.