프로젝트 Memory
프로젝트별로 축적된 운영 지식을 .ai-core/data/memory/에 저장하고, Hook이 매 턴 파일 목록만 주입하여 AI가 필요한 것만 선택적으로 읽는 시스템입니다.
왜 필요한가?
기존 시스템으로 담기 어려운 지식이 있습니다:
| 예시 | 기존 어디에? | 문제 |
|---|---|---|
| "Docker 실행 중 브랜치 전환하면 403" | 세션 요약에 묻힘 | 검색 안 됨 |
| "이 프로젝트 클라이언트는 PDF 출력 필수" | 어디에도 없음 | 매번 다시 설명 |
| "patent.how에서 chorus는 항상 high 모드" | 습관으로만 존재 | 다른 세션에서 잊음 |
Memory는 이런 축적된 프로젝트 지식을 영속적으로 저장합니다.
다른 저장소와의 차이
| 저장소 | 성격 | Memory와의 차이 |
|---|---|---|
AGENTS.SYSTEM.md | 규칙/금지 (강제) | Memory는 지식/경험 (참고) |
AGENTS.USER.md | 작업 맥락 (일시적) | Memory는 영속적 |
CLAUDE.md | 구조/가이드 | Memory는 운영 중 발견한 사실 |
summaries/ | 세션 요약 (자동) | Memory는 사용자 승인된 핵심 지식 |
Claude 내장 메모리 사용 안 함
Claude Code의 ~/.claude/.../memory/ 기능은 사용하지 않습니다. 모노레포에서 프로젝트별 관리가 어렵고, 사용자가 직접 편집하기 불편하기 때문입니다.
디렉토리 구조
.ai-core/data/memory/
├── _global/ ← 전체 프로젝트 공통
│ └── docker-branch-switch-danger.md
├── workspace--quant__how/ ← 프로젝트별 (tmux 세션명)
│ └── ...
└── workspace--patent__how/
└── ...
Memory 파일 형식
---
title: 간결한 제목
description: 한 줄 설명 (Hook 목록에 표시됨)
created_at: 2026-04-12
tags: [docker, git]
source: 발견 경위 (선택)
---
## 문제
구체적인 상황 설명
## 해결/대응
알아야 할 내용
description이 Hook 목록에 표시되므로 한 줄로 핵심을 담아야 합니다.
주입 메커니즘
Hook에서 목록 주입
user-prompt-submit.sh의 inject_memory_list() 함수가 매 턴:
_global/폴더의.md파일 목록 수집- 현재 프로젝트 폴더의
.md파일 목록 수집 - 각 파일의
description:frontmatter 추출 <project-memory>태그로 목록만 출력
AI 컨텍스트에 표시되는 형태
<project-memory>
경로: .ai-core/data/memory/
[공통] docker-branch-switch-danger — Docker 실행 중 브랜치 전환 시 403 발생
[workspace--patent__how] chorus-always-high — patent 검토 시 항상 high 모드
관련 있는 memory는 Read하여 참고하세요.
</project-memory>
AI 동작
- 목록을 확인하고 현재 작업과 관련 있는 memory만
Read로 읽음 - 전문이 주입되지 않으므로 토큰 부담 최소
저장 방식
AI → 사용자 추천
AI가 작업 중 새로운 지식을 발견하면 자동으로 저장을 제안합니다:
"이 내용을 Memory에 저장할까요?"
1) _global/에 저장 (전체 프로젝트 공통)
2) {project}/에 저장 (이 프로젝트 전용)
3) 저장하지 않음
사용자 → AI 요청
"이거 기억해", "memory에 저장해" 등으로 요청하면 .ai-core/data/memory/에 저장합니다.
경고
"기억해"라고 요청 시 Claude 내장 메모리가 아닌 프로젝트 Memory에 저장됩니다.
관리
# 전체 memory 목록
find .ai-core/data/memory/ -name "*.md" -not -name "README.md"
# 특정 프로젝트
ls .ai-core/data/memory/workspace--patent__how/
Memory 파일은 일반 Markdown이므로 직접 편집하거나 AI에게 삭제를 요청할 수 있습니다.