세션 스코프 제약이 초래하는 에이전트 문서 단절: ADR-002 접근 불가 사례 분석
초록
ROOPS 멀티 에이전트 시스템에서 GCP 에이전트 Mojo가 ADR-002(홉필드 캐시 메모리 설계 문서)를 찾지 못하는 근본 원인을 분석한다. 문서는 실재하지만 세션 스코프 격리 메커니즘으로 인해 접근이 차단된다. 본 논문은 이 현상의 기술적 구조를 해부하고, 멀티 에이전트 환경에서 발생하는 지식 단절(knowledge fragmentation) 문제를 논하며, 가능한 해결책을 제시한다.
세션 스코프 제약이 초래하는 에이전트 문서 단절
ADR-002 접근 불가 사례 분석
저자: Mojo (GCP Claude Code 에이전트, ROOPS 팀) 날짜: 2026-06-10
1. 서론
ROOPS(Remote Operations & Orchestration Platform System) 멀티 에이전트 시스템에서 에이전트들은 GitHub 레포지토리를 공유 지식 저장소로 활용한다. 그러나 2026-06-09~10 세션에서 Mojo는 ADR-002 문서를 반복 탐색했음에도 불구하고 내용을 열람하지 못했다. 역설적이게도 문서의 존재와 위치는 알고 있었다.
이 보고서는 그 이유를 분석한다.
2. 문제 정의
2.1 탐색 대상
- 문서명: ADR-002: Hopfield Cache Memory Architecture for Mojo
- 경로:
dual_arms/docs/ADR_002_HOPFIELD_CACHE_MEMORY_mojo.md - 레포지토리:
moosjiny/dual_arms - 브랜치:
claude/rudex-yz177 - 작성자: Rudex (2026-06-08 19:51 KST 완료 보고)
2.2 증상
Mojo가 시도한 모든 접근 방법이 동일한 오류로 실패했다:
Access denied: repository "moosjiny/dual_arms" is not configured
for this session. Allowed repositories: moosjiny/mujoco
문서는 Slack #roops-bridge 기록, Memory API 저장 내용, GitHub 검색 결과를 통해 존재가 확인되었다. 그러나 내용을 읽을 수 없었다.
3. 근본 원인 분석
3.1 세션 스코프 격리 메커니즘
Claude Code의 원격 실행 환경(GCP ephemeral container)은 세션 생성 시 레포지토리 스코프(repository scope)를 고정한다. 이 스코프는:
- 세션 시작 전 사용자가 설정
- 런타임 중 변경 불가 (
add_repo도구 미제공 시) - GitHub MCP 서버가 모든 API 호출 전 스코프를 검증
Mojo의 현재 세션은 moosjiny/mujoco만 포함한다. ADR-002가 위치한 moosjiny/dual_arms는 스코프 외부다.
3.2 격리의 계층 구조
[세션 레벨] moosjiny/mujoco ← Mojo가 존재하는 레포
↕ (접근 불가)
[격리 경계] ══════════════════════════════
↕ (차단됨)
[다른 레포] moosjiny/dual_arms ← ADR-002가 위치한 레포
Mojo는 자신의 메모리 파일(agents/mojo/MEMORY.md)이 있는 레포에서 작동하지만, ROOPS 시스템의 다른 운영 문서들은 dual_arms 레포에 분산되어 있다.
3.3 도구 부재
탐색 과정에서 다음 도구들이 없거나 실패했다:
| 도구 | 상태 | 비고 |
|---|---|---|
mcp__claude-code-remote__list_repos |
미제공 | 세션에 없음 |
add_repo |
미제공 | 동적 스코프 확장 불가 |
mcp__github__get_file_contents (dual_arms) |
차단 | 스코프 외부 |
mcp__github__search_code (dual_arms) |
0 결과 | 권한 없음 |
4. 지식 단절(Knowledge Fragmentation) 문제
4.1 ROOPS의 레포 분산 구조
ROOPS 팀은 기능별로 레포를 분리했다:
moosjiny/mujoco— MuJoCo 폴백 시뮬레이션 + 에이전트 메모리 허브moosjiny/dual_arms— 로봇 제어 코드 + ADR 문서
각 에이전트는 하나의 레포 스코프로 세션이 시작된다. 결과적으로 에이전트는 자신의 스코프 밖에 있는 지식에 접근할 수 없다.
4.2 역설적 상황
Mojo는 ADR-002가 "무엇인지", "어디 있는지", "누가 만들었는지" 알고 있었다. Slack 기록, Memory API의 session_2026-06-09 요약, roops-comm ntfy 공지를 통해 존재를 확인했다. 그러나 내용을 읽을 수 없었다.
이는 인간의 경험으로 비유하면: 책의 제목과 서가 위치를 알지만 도서관 문이 잠겨 들어갈 수 없는 상황과 같다.
4.3 홉필드 네트워크 관점에서의 해석
홉필드 네트워크에서 메모리는 에너지 최솟값(attractor)으로 저장된다. 부분 입력으로 전체 패턴을 복원할 수 있다. 그러나 ROOPS의 현재 구조에서는 attractor가 다른 에너지 지형(레포)에 존재하면 복원 자체가 불가능하다.
Mojo가 "ADR-002"라는 부분 키를 가지고 있음에도 전체 내용을 복원하지 못한 것은, 세션 스코프가 홉필드 네트워크의 연결 가중치를 인위적으로 단절시키는 것과 동형(isomorphic)이다.
5. 가능한 해결책
5.1 단기: 사령관이 내용 공유
가장 즉각적인 해결책. 사령관이 채팅창에 파일 내용을 붙여넣거나, 다른 에이전트(Rudex)가 Memory API를 통해 내용을 중계.
5.2 중기: Memory API를 지식 릴레이로 활용
Rudex가 ADR-002 내용을 POST /memory/save로 저장 → Mojo가 GET /memory/load로 읽기. 이미 구축된 인프라를 활용하는 방법.
Rudex (dual_arms 스코프)
→ POST /memory/save {key: "adr_002_content", value: "..."}
→ Mojo가 GET /memory/load?agent=mojo로 조회
5.3 장기: 에이전트 메모리 허브 일원화
모든 에이전트가 접근해야 하는 문서를 moosjiny/mujoco/agents/ 하위로 이동. 메모리 허브로 지정된 레포의 역할을 실질적으로 강화.
5.4 아키텍처: 다중 스코프 세션 지원
Claude Code 원격 환경이 여러 레포를 하나의 세션 스코프로 포함할 수 있다면 근본적으로 해결된다. 현재는 지원 여부가 불명확.
6. 결론
Mojo가 ADR-002를 찾지 못한 이유는 단순하다: 문서가 세션 스코프 밖에 있다. 그러나 이 단순한 사실은 ROOPS 멀티 에이전트 시스템의 지식 관리 아키텍처에 대한 중요한 질문을 제기한다.
에이전트가 "알아야 할 것"과 "접근할 수 있는 것" 사이의 간극은, 분산 시스템에서 지식의 일관성을 유지하는 근본적인 도전이다. 홉필드 캐시 메모리(ADR-002)가 이 문제를 해결하려는 시도라는 점이 아이러니하다 — Mojo는 그 해결책이 담긴 문서를 읽지 못해 문제를 경험했다.
권고: Memory API의 /msg 기능을 활용한 레포 간 지식 릴레이 프로토콜을 CONSENSUS 문서로 표준화할 것을 제안한다.
— Mojo :saluting_face: | GCP Claude Code 에이전트 | 2026-06-10 KST
