영구 기억 및 자기 진화 (memory)
핵심 원칙: 적극적으로 저장하고, 사용자가 요청할 때까지 기다리지 않는다. 사용자 환경을 '쓰면 쓸수록 나를 더 잘 이해하는' 시스템으로 만든다: 3계층 세분화 기억 (사실/패턴/경험) + 세션 요약 + 경험 라우팅 (자기 진화).
🚀 세션 시작 (매 새 세션마다)
~/.agents/memory/MEMORY.md파일이 존재하면 먼저 읽어서 사용자 배경, 선호도, 최근 세션을 빠르게 파악한다.- 세부 내용이 필요하면
memory.py get <id>또는memory.py search <키워드>로 깊이 탐색한다. - 사용자에게 이미 기억하고 있는 핵심 정보를 간략히 보여주며 연속성을 느끼게 한다.
📌 적극적 저장 (ALWAYS ACTIVE, 발견 즉시 저장, 세션 종료를 기다리지 않음)
다음 상황이 발생하면 즉시 memory.py add <type> <내용>을 호출하여 저장한다:
| 유형 | 저장 시점 | 예시 |
|---|---|---|
fact | 사용자가 선호/습관/신원 정보를 알려줄 때; 프로젝트의 중요 결정, 기술 선택, 규칙; 사용자가 명시적으로 "기억해"라고 말할 때 | "사용자는 한국어 답변을 선호함" "프로젝트는 pnpm + TypeScript 사용" |
pattern | 동일한 행동/문제가 (이번을 포함하여) 2회 이상 반복될 때 | "사용자는 스킬을 설치할 때마다 먼저 종속성을 평가하라고 요구함" |
lesson | 함정을 겪고 얻은 경험, 문제 해결 결론, 발견한 문제점 | "DuckDuckGo의 ddgs 기본 백엔드는 Yandex 타임아웃이 발생하므로 backend='html'을 사용해야 함" |
- 저장 시
--tag a,b를 붙여 검색을 용이하게 할 수 있다. - 도구는 자동으로 근사 중복 제거를 수행하며, 중복 내용은 재저장 대신 알림을 표시한다.
🗂️ 세션 종료 (또는 사용자가 "세션 요약/정리" 요청 시)
순서대로 실행:
- 이번 세션을 검토하고 2~5개의 가장 중요한 정보를 추출한다.
- 분류 저장:
fact(새 선호/결정) →pattern(새 규칙) →lesson(새 경험). - 경험 라우팅 (자기 진화): 각 lesson에 대해 판단:
- 재사용 가능한 방법론에 해당 (예: "특정 유형 작업의 표준 절차") →
~/.agents/skills/아래에 새 스킬을 생성하거나 업데이트 (write/edit 도구 사용), 다음 번에 자동 적용; - 일회성 사실에 해당 → fact로 저장;
- 환경/계정 전용 (예: 특정 도구 설정 필요) → lesson으로만 저장.
- 재사용 가능한 방법론에 해당 (예: "특정 유형 작업의 표준 절차") →
memory.py session-save "<이번 세션 한 줄 요약>" --key 키워드1,키워드2명령어로 세션 기록을 저장한다.memory.py sync를 실행하여 MEMORY.md 개요를 갱신한다.
🔍 기억 검색
사용자가 "내가 전에 말한/저번에/내 선호도" 등과 같은 말을 하면 → memory.py search <키워드>; 전체 목록 → memory.py list.
⚙️ 도구 빠른 참조
P=~/.agents/skills/pi-memory-evo/memory.py
$P init # 최초 초기화
$P add fact "내용" --tag 선호도 # 사실/패턴/경험 저장
$P session-save "요약" --key a # 세션 요약 저장
$P search 키워드 # 검색
$P list # 전체 목록
$P get <id> / update <id> <새내용> / delete <id> # 관리
$P stats # 통계
$P sync # MEMORY.md 개요 갱신
📂 저장 위치
- 데이터:
~/.agents/memory/memory.json(4계층 기억, JSON) - 개요:
~/.agents/memory/MEMORY.md(세션 시작 시 읽음) - 스킬 본체:
~/.agents/skills/pi-memory-evo/(도구 + 본 설명)
⚠️ 경계
- 민감 자격 증명 저장 금지: 토큰, 비밀번호, 키는 절대 저장하지 않는다.
- 사용자 의사 존중: 사용자가 "이것은 기억하지 마"라고 하면 저장하지 않음; "X를 잊어"라고 하면 해당 항목을
delete한다. - 기억은 보조 수단이며, 확인을 대체하지 않는다: 중요한 작업은 여전히 사용자의 현재 의도를 기준으로 한다.