
MemoryCustodian
MemoryCustodian은 코딩 에이전트에게 지속적이고 리포지토리 고유의 프로젝트 메모리를 제공합니다. 이는 핵심 컨텍스트를 일반 마크다운으로 저장하고, 매니페스트를 통해 작업 관련 부분만 로드하여 세션 및 팀 전반에 걸쳐 최소한의 프롬프트 오버헤드를 유지합니다.
https://github.com/waittim/MemoryCustodian?ref=producthunt&utm_source=aipure

제품 정보
업데이트됨:Jul 30, 2026
MemoryCustodian이란?
MemoryCustodian은 AI 코딩 에이전트를 위한 경량 '프로젝트 메모리' 시스템으로, 채팅 기록이나 부풀려진 지시 프롬프트에 의존하지 않고 세션 전반에 걸쳐 중요한 내용(결정, 제약 조건, 거부된 접근 방식, 현재 프로젝트 형태)을 유지하는 데 도움을 줍니다. 이는 지속적인 컨텍스트를 저장소 내(일반적으로 `docs/memory/` 아래)에서 검토 가능하고 차이점 비교 가능한 마크다운으로 유지하며, 빠르고 오프라인 우선의 Python(stdlib-only) CLI와 에이전트 통합(예: Codex, Claude Code, Gemini 스타일 기술)을 제공합니다. 목표는 프로젝트 지식을 에이전트 전반에 걸쳐 이식 가능하게 만들고, 코드처럼 사람이 쉽게 감사할 수 있도록 하는 동시에, 런타임 컨텍스트를 작고 의도적으로 유지하는 것입니다.
MemoryCustodian의 주요 기능
MemoryCustodian은 코딩 에이전트를 위한 오프라인 우선 "프로젝트 메모리" 시스템으로, 내구성 있는 컨텍스트(결정, 제약 조건, 거부된 접근 방식 및 현재 프로젝트 형태)를 저장소 내부에 일반 Markdown으로 저장합니다. 큰 프롬프트를 붙여넣거나 채팅 기록에 의존하는 대신, 매니페스트 우선 워크플로우를 사용하여 작업 관련 메모리 파일만 에이전트의 컨텍스트 팩에 로드하여 세션을 경량화하는 동시에 지식을 검사 가능하고, 비교 가능하며, 에이전트/팀 간에 이식 가능하고, 보호된 미리보기 우선 변형(예: 압축/삭제/마이그레이션)이 있는 결정론적이고 stdlib 전용 Python CLI를 통해 유지 관리할 수 있도록 합니다.
저장소 기본 Markdown 메모리: 내구성 있는 프로젝트 지식을 `docs/memory/` 아래에 일반 Markdown으로 저장하여 사람이 코드를 검토, 비교, 커밋 및 롤백하는 것처럼 메모리를 검토, 비교, 커밋 및 롤백할 수 있도록 합니다. 벡터 DB, RAG 인덱스 또는 클라우드 종속성이 필요하지 않습니다.
매니페스트 우선 선택적 로딩: 에이전트는 `manifest.md`를 읽은 다음 `brief.md`를 읽고 현재 작업(계획/구현/아티팩트)과 관련된 특정 파일만 로드하여 중요한 컨텍스트를 보존하면서 프롬프트 비대화를 최소화합니다.
플랫폼 전반에 걸친 얇은 에이전트 부트스트랩: 큰 지침 블록을 포함하는 대신 에이전트가 매니페스트를 가리키도록 하는 작은 부트스트랩 파일(예: `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`)을 생성하여 Codex, Claude Code, Gemini 스타일 에이전트 및 일반 셸 사용을 지원합니다.
보호된 유지 관리 기능이 있는 결정론적 CLI: `init/status/check/read/add/enable/forget/compact/migrate` 명령을 제공합니다. 유지 관리 작업은 미리보기 우선이며 구조를 보존하며, 변경 사항을 적용하기 전에 예산 확인 및 안전한 변형 계획을 포함합니다.
범위가 지정된 옵트인 메모리 모듈: 선택적 지식(예: `rules/`, `profiles/`, `areas/`, `archive/`)을 매니페스트에서 명시적으로 활성화할 때까지 기본 컨텍스트에서 제외하여 모든 작업을 오염시키지 않고 서브시스템별 메모리를 허용합니다.
개인 정보 보호에 안전한 삭제 및 보관 제어: 삭제 표시 및 수정 보호 기능이 있는 소프트/하드 삭제 및 제거 흐름을 지원하며, 우발적인 의미 손실을 방지하기 위해 명시적인 확인이 필요한 제어된 보관(예: 가장 오래된 결정 보관)을 지원합니다.
MemoryCustodian의 사용 사례
장기 코드베이스를 유지 관리하는 소프트웨어 팀: 아키텍처 결정, 제약 조건 및 거부된 접근 방식을 캡처하여 새로운 에이전트 세션(및 새로운 엔지니어)이 이전 선택을 재논의하지 않도록 하여 스프린트 전반에 걸쳐 반복되는 디버깅 및 재작업을 줄입니다.
규제 또는 오프라인 환경: 클라우드 메모리 서비스가 허용되지 않는 금융, 의료, 방위 또는 에어갭 엔터프라이즈 설정에서 사용합니다. stdlib 전용 CLI 및 로컬 Markdown 스토리지는 완전한 오프라인 워크플로우를 지원합니다.
다중 에이전트/도구 상호 운용성: 다양한 에이전트 호스트(Codex, Claude Code, Gemini 스타일 에이전트) 간에 프로젝트 메모리를 표준화하여 팀이 컨텍스트를 잃거나 프롬프트를 다시 빌드하지 않고도 도구를 전환할 수 있도록 합니다.
컨설팅 및 에이전시 핸드오프: 향후 유지 관리자를 위해 근거와 경계를 보존하는 감사 가능하고 저장소에 포함된 메모리 팩(요약/결정/제약 조건/사용 금지)과 함께 클라이언트 프로젝트를 제공합니다.
복잡한 모노레포 및 서브시스템 소유권: `areas/` 및 매니페스트 라우팅을 사용하여 도메인 관련 메모리(프론트엔드, 동기화, 인프라 등)만 로드하여 에이전트가 모든 작업에 전체 조직의 컨텍스트를 끌어들이지 않고도 효과적으로 작업할 수 있도록 돕습니다.
장점
이식 가능하고 감사 가능: 메모리는 저장소 내 일반 Markdown으로, 검토, 비교 및 버전 제어가 쉽습니다.
낮은 오버헤드 컨텍스트: 매니페스트 기반 선택적 로딩은 프롬프트 비대화를 방지하고 에이전트 세션을 효율적으로 유지합니다.
오프라인 우선 및 최소 종속성: 코어 CLI는 Python stdlib 전용이며 네트워크 서비스 없이 작동하도록 설계되었습니다.
단점
큐레이션 규율 필요: 생성된 `brief.md` 스캐폴드는 신뢰할 수 있는 소스에서 큐레이션되어야 신뢰할 수 있습니다.
자동 의미 검색 아님: 임베딩/RAG를 의도적으로 피하므로 관련성은 좋은 매니페스트 구조와 사람/에이전트 작성 품질에 따라 달라집니다.
유지 관리 작업이 보수적일 수 있음: 미리보기 우선 안전 장치 및 제약 조건(예: 광범위 일치 보호)은 완전 자동 정리를 기대하는 사용자에게 워크플로우 단계를 추가할 수 있습니다.
MemoryCustodian 사용 방법
1) MemoryCustodian 설치 (에이전트/워크플로우에 맞는 경로 선택): 하나의 설치 방법을 선택하세요:
- 코딩 에이전트에게 리포지토리에서 기술을 설치하도록 요청: https://github.com/waittim/MemoryCustodian
- Codex (로컬 마켓플레이스): 체크아웃에서 `codex plugin marketplace add .`를 실행한 다음, `codex plugin add memory-custodian@memory-custodian-dev`를 실행합니다.
- Claude Code (플러그인): 로컬 테스트를 위해 `claude --plugin-dir .`를 실행하거나, `./install.sh claude`로 개인 기술에 설치합니다.
- Gemini 스타일 에이전트: `./install.sh gemini` 또는 `gemini skills link ./skills/memory-custodian`으로 설치합니다.
- CLI/소스 체크아웃: `scripts/memory-custodian ...`를 통해 리포지토리에서 실행하거나, `python3 -m pip install -e .`로 편집 가능한 상태로 설치하여 `memory-custodian` 명령을 얻습니다.
2) 프로젝트에 MemoryCustodian 초기화 (리포당 한 번): 각 대상 프로젝트에 대해 초기화를 한 번 실행합니다:
- 콘솔 스크립트로 설치된 경우: `memory-custodian init --project-root /path/to/project --agent all`
- 소스 체크아웃에서: `scripts/memory-custodian init --project-root /path/to/project --agent all`
에이전트가 읽는 얇은 부트스트랩 파일을 생성하려면 `--agent codex`, `--agent claude`, `--agent gemini` 또는 `--agent all`을 사용하세요.
3) 초기화가 생성하는 내용 이해 (메모리가 상주하는 곳): 초기화는 `docs/memory/` 아래에 기본 지속성 메모리 세트를 생성합니다:
- `manifest.md` (로드할 내용을 라우팅)
- `brief.md` (현재 프로젝트 형태)
- `decisions.md` (주요 결정)
- `constraints.md` (하드 요구 사항)
- `do-not-use.md` (거부된 경로 / 툼스톤)
- `inbox.md` (스테이징 영역)
플랫폼 부트스트랩 파일(예: `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`)은 얇게 유지되며 에이전트를 `docs/memory/`로 안내합니다.
4) 생성된 요약을 신뢰하기 전에 큐레이션: `init` 후, `brief.md`는 TODO가 있는 스캐폴드로 시작합니다. 메모리를 준비된 것으로 간주하기 전에 권위 있는 프로젝트 소스(README, 코드, 문서)에서 내용을 채우세요. `memory-custodian status --project-root /path/to/project` (또는 `scripts/memory-custodian status ...`)를 사용하여 요약이 아직 큐레이션되지 않았는지 확인하세요. `status` 및 `check`는 큐레이션되지 않은 요약을 보고합니다.
5) 작업에 적합한 메모리 로드 (매니페스트 우선 읽기): 에이전트의 의도된 워크플로우는 다음과 같습니다:
1) `docs/memory/manifest.md`를 읽습니다.
2) `docs/memory/brief.md`를 읽습니다.
3) 매니페스트가 현재 작업에 관련 있다고 표시한 파일만 로드합니다.
수동 검사를 위해 다음을 사용하여 컨텍스트 팩을 생성합니다:
- `memory-custodian read --project-root /path/to/project --task planning`
- `memory-custodian read --project-root /path/to/project --task implementation`
- `memory-custodian read --project-root /path/to/project --task artifact`
6) 현재 채팅을 넘어 지속되어야 할 때 지속성 메모리 추가: CLI를 사용하여 결정/제약 조건/선호도/거부된 접근 방식을 기록합니다:
- `memory-custodian add "우리는 매니페스트 우선 로딩을 선택했습니다." --type decision`
- `memory-custodian add "동기화 재시도 백오프를 유지합니다." --type decision --area sync --reason "시작 전반에 걸쳐 재시도를 제한합니다."`
결정 항목을 짧게 유지하세요 (도구는 토큰 가이드를 적용하며 명시적으로 긴 항목을 허용하지 않는 한 너무 긴 쓰기를 거부합니다).
7) 관련성이 있을 때만 선택적 메모리 모듈 활성화: 선택적 모듈(예: 규칙, 프로필, 영역)은 옵트인이며 매니페스트에 의해 활성화되고 라우팅되지 않는 한 로드되지 않습니다. 필요에 따라 활성화하세요:
- `memory-custodian enable preferences`
- `memory-custodian enable rules/output`
- `memory-custodian enable profile/git`
- `memory-custodian enable area/frontend`
활성화는 기존 모듈 파일을 덮어쓰지 않습니다.
8) 거부된 접근 방식을 보존하고 회귀를 방지하기 위해 'do-not-use' 사용: 접근 방식(예: 저장소 백엔드 또는 아키텍처)을 의도적으로 거부할 때, `docs/memory/do-not-use.md`에 기록하여 (편집 또는 적절한 추가/삭제 워크플로우를 통해) 향후 세션에서 다시 제안하지 않도록 합니다.
9) 상태 및 프로토콜 호환성 정기적으로 확인: 구조, 예산 및 프로토콜 메타데이터가 올바른지 확인하기 위해 결정론적 유효성 검사를 실행합니다:
- `memory-custodian check --project-root /path/to/project`
빠른 개요 및 큐레이션되지 않은 요약을 감지하려면 `memory-custodian status`를 사용하세요.
10) 메모리 압축 및 유지 관리 (미리보기 우선, 안전한 변경): 메모리를 작고 최신 상태로 유지하려면 유지 관리 명령을 사용하세요:
- `memory-custodian compact --project-root /path/to/project`
압축은 보호되며 미리보기 우선입니다. 계획을 검토한 후에만 변경 사항을 적용하세요. 받은 편지함 압축은 보수적이며 (예: 정확히 중복되는 최상위 글머리 기호 단위 제거 및 툼스톤 필터링) 에이전트/사람이 결정/제약 조건으로 의미론적 승격을 수행할 것으로 예상합니다.
11) 오래된 정보 안전하게 삭제 (미리보기 우선): 미리보기 우선 삭제를 통해 오래된 주제를 제거하거나 수정합니다:
- 미리보기: `memory-custodian forget "오래된 배포 노트" --mode soft --project-root /path/to/project`
- 검토 후 적용: `memory-custodian forget "오래된 배포 노트" --mode soft --apply --project-root /path/to/project`
광범위한 일치는 명시적 확인이 필요합니다 (예: `--allow-broad-match`). 일부 경우에는 수동 재작성이 필요합니다. 도구는 안전하지 않은 전체 삭제를 거부합니다.
12) 필요할 때 기존 설정 복구 또는 교체: 파일이 누락되었거나 큐레이션된 콘텐츠를 덮어쓰지 않고 메타데이터를 업데이트해야 하는 경우:
- 복구: `memory-custodian init --project-root /path/to/project --repair`
의도적으로 전체 교체를 원한다면 미리보기 우선 교체를 사용하고 올바른 경우에만 적용하세요:
- `memory-custodian init --project-root /path/to/project --replace-existing`
- 그런 다음 나열된 파일을 교체해야 하는 경우에만 `--apply`를 추가합니다.
13) 도구가 업데이트될 때 프로토콜/프로젝트 메모리 버전 마이그레이션: `check`가 오래되었거나 누락된 프로토콜 메타데이터를 보고할 때, 프로젝트 매니페스트를 오프라인으로 마이그레이션합니다:
- 미리보기: `memory-custodian migrate --project-root /path/to/project`
- 검토 후 적용: `memory-custodian migrate --apply --project-root /path/to/project`
14) Windows와 소스 체크아웃에서 올바른 호출 사용: Windows에서는 콘솔 명령을 설치하고 `memory-custodian ...`를 사용합니다. 모든 플랫폼의 리포지토리 체크아웃에서 래퍼로 `scripts/memory-custodian ...`를 실행할 수 있습니다.
MemoryCustodian 자주 묻는 질문
MemoryCustodian은 의사 결정, 제약 조건, 거부된 아이디어 및 프로젝트 컨텍스트를 저장소 내에 일반 Markdown으로 저장한 다음 현재 작업에 필요한 부분만 로드하여 코딩 에이전트에게 내구성 있는 '프로젝트 메모리'를 제공하는 도구입니다.











