
pi-gl-mem을 만들어 보았습니다 (실험적 시도)
요약
터미널 기반 AI 코딩 에이전트인 pi에 장기 기억 기능을 추가하는 확장 기능 pi-gl-mem을 소개합니다. 글로벌 및 로컬 기억 영역을 분리하여 프로젝트별 맞춤형 컨텍스트를 유지할 수 있도록 설계되었습니다.
핵심 포인트
- pi 에이전트의 대화 맥락 유지 문제를 해결하는 기억 확장 기능
- 의존성 없이 단일 MEMORY.md 파일로 관리되는 간결한 구조
- 글로벌(PC 공통) 및 로컬(프로젝트 전용) 기억 영역 분리 지원
- 초기화되지 않은 프로젝트에서는 동작하지 않는 안전한 설계
pi-gl-mem을 만들어 보았습니다
동작 확인 환경
OS: Windows 11 Pro (WSL2 / Ubuntu 24.04) -
pi 본체: v0.79.8 /Node.js: v24.17.0 /TypeScript: 5.x
시작하며
pi는 터미널에서 동작하는 AI 코딩 에이전트이지만, 대화를 마치면 기억을 이어갈 수 없습니다. 한 번 전달해도 다음 실행 시에는 잊어버리고 맙니다.
pi-gl-mem은 pi에 「기억」을 추가하는 확장 기능입니다.
왜 pi-mem이 아니라 pi-gl-mem인가
기존의 pi-mem은 글로벌 기억(Global Memory)을 제공하지만, 개인적으로 개선하고 싶은 점이 있었습니다.
| 과제 | pi-mem | pi-gl-mem |
|---|---|---|
| 글로벌 기억 관리 | 여러 파일 구성으로 번거로움 | MEMORY.md 1개 파일로 통일 |
| ... |
pi-gl-mem은 이러한 과제들을 모두 해결하면서, 의존성 제로 (pi-mem 불필요)로 동작합니다. pi-mem의 사양을 참고하고 있지만, 코드 의존성은 전혀 없습니다.
할 수 있는 일 — 안전 설계
초기화되지 않은 프로젝트에서는 아무것도 하지 않습니다. 툴 자체가 등록되지 않기 때문에, AI가 실수로 호출하거나 에러로 인해 크래시(Crash)가 발생할 일도 없습니다.
초기화(프로젝트마다 1회)를 실행하는 과정이 필요합니다. 프로젝트 루트에서 pi-gl-mem-init 명령어를 실행하여 프로젝트 전용 디렉토리를 만듭니다. pi를 실행하면 git처럼 디렉토리를 생성한 위치(./.pi-gl-mem)를 체크합니다. 상위 계층으로 올라가며 체크를 수행합니다.
그 후, pi-gl-mem을 넣으면 두 가지 기억 영역을 사용할 수 있습니다.
💡
멀티 에이전트(Multi-agent) 운용의 경우: 글로벌 기억은 하나의 에이전트만 ON으로 설정하고, 나머지는 OFF로 설정하여 사용하는 것을 권장합니다 (pi_gl_settings.json에서 injectGlobal을 조정). 프로젝트 내에서는 동시에 하나의 pi만 실행해 주세요. 여러 프로세스에서 동일한 파일에 쓰기를 시도하면 경합(Contention)의 원인이 됩니다.
| 기억 | 저장 위치 | 파일 수 | 용도 |
|---|---|---|---|
| 🌐 글로벌 | ~/.pi/agent/pi-gl-mem/MEMORY.md | 1개 파일 | PC 전체의 공통 지식 |
| 📁 로컬 | ./.pi-gl-mem/ | 4개 파일 | 프로젝트 고유 정보 |
이런 상황에서 편리함
| 상황 | 글로벌/로컬 | 예 |
|---|---|---|
| 프로젝트마다 테스트 프레임워크가 다름 | 📁 로컬 | "이 프로젝트에서는 vitest 사용" |
| ... |
사용법
설치
pi install https://github.com/tanadeyu/pi-gl-mem
pi install은 GitHub에서 클론(Clone)하여 ~/.pi/agent/settings.json의 packages에 추가합니다. pi 실행 시 자동으로 로드됩니다. packages의 뒤쪽에 있는 확장 기능일수록 우선순위가 높으므로, 필요에 따라 순서를 조정해 주세요.
삭제 (Uninstall)
pi uninstall https://github.com/tanadeyu/pi-gl-mem
rm -rf ./.pi-gl-mem # 데이터도 남으므로 불필요하다면 삭제
초기화 (프로젝트마다 1회)
프로젝트 루트에서 폴더를 생성함으로써 로컬 기억 파일 세트가 만들어집니다. 글로벌은 설치 시 자동으로 생성됩니다.
pi-gl-mem-init # Y/N 확인 → .pi-gl-mem/ 생성
your-project/.pi-gl-mem/
├── MEMORY.md # 장기 기억 (자동 로드)
├── SCRATCHPAD.md # 체크리스트 (수동 read)
...
📌
주의: .gitignore에 추가하는 것을 권장하지만, 자동으로 변경되지는 않습니다. 필요에 따라 수동으로 추가해 주세요.
💡
write_* / read_* 툴로 작성한 내용은 AI 실행 시 즉시 반영됩니다. 재시작은 필요하지 않습니다.
echo ".pi-gl-mem/" >> .gitignore
pi_gl_settings.json
에서는 각 프로젝트의 설정을 관리합니다.
{"injectLocal": true, "injectGlobal": true}
| 설정 | 초기값 | 의미 |
|---|---|---|
injectLocal | true | 로컬 기억 (Local Memory)을 AI에게 읽게 함 |
injectGlobal | true | 글로벌 기억 (Global Memory)을 AI에게 읽게 함 |
false로 설정하면 해당 기억이 주입되지 않습니다. 멀티 에이전트 (Multi-agent) 시에는 글로벌을 하나만 ON으로 설정하는 등의 조정에 사용합니다.
글로벌과 로컬의 구분 사용
"PC 전체에서 기억해 둬: 테스트는 vitest" → 🌐 글로벌
"이 프로젝트에서 기억해 둬: DB는 SQLite" → 📁 로컬
"기억해 둬" → AI가 문맥에서 자동 판단
툴 목록 및 저장 위치 매핑
pi-gl-mem은 6개의 툴을 제공합니다.
| 당신의 지시 | AI가 호출하는 툴 | 저장 위치 |
|---|---|---|
| "기억해 둬" | write_local_memory(target="long_term") | .pi-gl-mem/MEMORY.md |
| "일기에 써 줘" | write_local_memory(target="daily") | .pi-gl-mem/daily/YYYY-MM-DD.md |
| "노트에 저장해 줘" | write_local_memory(target="note") | .pi-gl-mem/notes/*.md |
| "할 일 목록에 추가" | local_scratchpad(action="add") | .pi-gl-mem/SCRATCHPAD.md |
| "PC 전체에서 기억해 둬" | write_global_memory(...) | ~/.pi/agent/pi-gl-mem/MEMORY.md |
| "읽어 줘" | read_local_memory(...) | 각종 파일 |
| "찾아 줘" | search_local_memory(query=...) | .pi-gl-mem/**/*.md |
기술적인 포인트
// 상향 탐색 (Upward Search): 서브 디렉토리에서도 부모의 기억을 인식
while (currentDir !== path.dirname(currentDir)) {
if (fs.existsSync(path.join(currentDir, '.pi-gl-mem'))) break;
...
TypeScript 1개 파일, 약 400줄로 완결됩니다. 다른 확장 (Extension)에 대한 의존성은 제로입니다.
설계의 핵심 포인트
| 항목 | 내용 |
|---|---|
| 제로 의존 (Zero Dependency) | 다른 확장의 함수를 일절 import하지 않음. 필요한 함수는 모두 직접 복사해서 가져옴 |
| 안전 설계 (Safe Design) | 초기화되지 않은 프로젝트에서는 아무것도 하지 않음 (크래시 발생 안 함) |
| 상향 탐색 (Upward Search) | 서브 디렉토리에서 실행해도 부모의 기억을 자동으로 인식 |
| 변경에 강함 | append(추가) 방식. 덮어쓰기는 명시적으로 mode=overwrite 지정 |
| git 안심 | init 시 .gitignore 추가를 권장 표시 (자동 변경은 하지 않음) |
요약
- ✅ 글로벌과 로컬, 2계층의 기억 제공
- ✅ 설치는 1개 커맨드. 프로젝트 루트에서의 초기화는 1개 커맨드 필요
- ✅ 다른 확장에 의존하지 않는 자기 완결적 설계
- ✅ 안전 설계 (초기화되지 않았을 때는 아무것도 하지 않음)
링크: github.com/tanadeyu/pi-gl-mem
설치: pi install https://github.com/tanadeyu/pi-gl-mem
라이선스: MIT License / v1.0.0 (2026-06-21) / pi-mem의 사양을 참고하고 있으나 코드 의존성은 전혀 없습니다. 단독으로 동작합니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기