본문으로 건너뛰기

프로젝트 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.shinject_memory_list() 함수가 매 턴:

  1. _global/ 폴더의 .md 파일 목록 수집
  2. 현재 프로젝트 폴더의 .md 파일 목록 수집
  3. 각 파일의 description: frontmatter 추출
  4. <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에게 삭제를 요청할 수 있습니다.