콘텐츠로 이동

메모리 구조

relay의 에이전트 메모리는 두 레이어로 나뉩니다: 세션 메모리프로젝트 메모리.

my-project/
└── .relay/
├── memory/ # 세션을 넘어 유지되는 메모리 (git 커밋 권장)
│ ├── project.md # 아키텍처, 도메인, 기술 스택 요약
│ └── agents/
│ ├── pm.md # PM 개인 메모리
│ ├── fe.md # FE: 컴포넌트 구조, 컨벤션
│ ├── be.md # BE: API 패턴, DB 스키마
│ ├── da.md # DA: 이벤트/메트릭 분류 체계
│ ├── designer.md # Designer: UI 패턴, 디자인 시스템
│ ├── qa.md # QA: 반복되는 버그 패턴, 취약한 영역
│ └── deployer.md # Deployer: 배포 히스토리, 주의사항
└── sessions/ # 세션별 요약 (gitignore 대상; 자동 생성)
├── 2026-03-13-001/
│ └── summary.md
└── ...

세션 내 데이터는 MCP 서버 프로세스 메모리에 저장합니다:

  • 메시지
  • 태스크
  • 아티팩트
  • 리뷰
  • WebSocket 이벤트

이 데이터는 일시적입니다. 서버 프로세스가 살아있는 동안만 존재하며 디스크에 기록하지 않습니다.

세션이 끝나면 save_session_summary가 사람이 읽을 수 있는 요약을 .relay/sessions/{session_id}/summary.md에 남깁니다. sessions 디렉토리는 gitignore 대상이므로 로컬에서만 유지됩니다.

프로젝트 메모리 (마크다운 파일)

Section titled “프로젝트 메모리 (마크다운 파일)”

세션을 넘어 유지되는 메모리는 .relay/memory/에 마크다운 파일로 저장합니다.

/relay:relay 세션이 끝날 때 코디네이터가 작성하는 프로젝트 전체 요약입니다:

  • 도메인 및 핵심 기능
  • 아키텍처 개요
  • 팀 컨벤션

각 에이전트의 개인 메모리입니다:

  • 역할별 주요 코드 패턴
  • 이전 세션에서 발견한 컨벤션
  • 특정 영역에 대한 주의사항
// 에이전트 개인 메모리 읽기
read_memory({ agent_id: "fe" });
// → .relay/memory/agents/fe.md 반환
// 프로젝트 메모리 읽기 (agent_id 생략)
read_memory({});
// → project.md 반환
// 에이전트 개인 메모리에 쓰기
write_memory({
agent_id: "fe",
key: "component-patterns",
content: "Button components always use shadcn/ui as the base...",
});
// .relay/memory/agents/fe.md의 ## component-patterns 섹션을 교체
// 프로젝트 메모리에 쓰기 (agent_id 생략)
write_memory({
key: "architecture",
content: "Monorepo with packages/server, packages/dashboard, packages/shared",
});
// .relay/memory/project.md의 ## architecture 섹션을 교체
// 에이전트 개인 메모리에 추가 (agent_id 필수)
append_memory({
agent_id: "qa",
content: "2026-03-13: found missing empty-email case in login flow",
});

각 에이전트의 시스템 프롬프트에 다음이 자동 주입됩니다:

  1. project.md (프로젝트 메모리)
  2. agents/{agentId}.md (개인 메모리)
  1. 각 에이전트가 write_memory 또는 append_memory로 새로 발견한 내용을 저장
  2. save_session_summary로 세션 아카이브

.relay/memory/ 파일을 git에 커밋하면 팀 전체가 메모리를 공유할 수 있습니다:

git add .relay/memory/
git commit -m "chore: update relay memory"

새 팀원이나 새 Claude Code 세션에서도 이전 세션의 컨텍스트를 바로 활용할 수 있습니다.

기본 메모리 경로는 {cwd}/.relay이지만, RELAY_DIR 환경 변수로 변경할 수 있습니다:

RELAY_DIR=/path/to/shared/.relay bun run start