
pi-coding-agent용 확장 기억 pi-gl-mem을 만들어 보았습니다 (테스트 수준)
요약
AI 코딩 에이전트인 pi의 기억력 한계를 극복하기 위해 개발된 확장 기능 pi-gl-mem을 소개합니다. 글로벌 및 로컬 기억 영역을 분리하여 프로젝트별 맞춤형 지식을 관리할 수 있도록 설계되었습니다.
핵심 포인트
- pi 에이전트에 글로벌 및 로컬 기억(Memory) 기능 추가
- 의존성 없이 단일 MEMORY.md 파일로 간편한 관리 가능
- 프로젝트별로 다른 테스트 프레임워크 등 고유 정보 저장 지원
- 초기화되지 않은 프로젝트에서는 동작하지 않는 안전한 설계
동작 확인 환경
OS: Windows 11 Pro (WSL2 / Ubuntu 24.04) -
pi 본체: v0.79.8 /Node.js: v24.17.0 /TypeScript: 5.x
시작하며
pi는 터미널에서 동작하는 AI 코딩 에이전트(AI coding agent)이지만, 대화를 마치면 기억을 이어갈 수 없습니다. 한 번 전달해도 다음에 실행하면 잊어버리고 맙니다.
pi-gl-mem은 pi에 「기억」을 추가하는 확장 기능입니다.
왜 pi-mem이 아니라 pi-gl-mem인가
기존의 pi-mem은 글로벌 기억(Global memory)을 제공하지만, 개인적으로 개선하고 싶은 점이 있었습니다.
그렇기 때문에, 새롭게 pi-gl-mem을 만들어 보았습니다.
| 과제 | 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을 넣으면 두 가지 기억 영역을 사용할 수 있습니다.
| 기억 | 저장 위치 | 파일 수 | 용도 |
|---|---|---|---|
| 🌐 글로벌 | ~/.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에서 클론하여 ~/.pi/agent/settings.json의 packages에 추가합니다. pi 실행 시 자동으로 로드됩니다. packages의 뒤에 있는 확장 기능일수록 우선순위가 높으므로, 필요에 따라 순서를 조정해 주세요.
삭제
pi uninstall https://github.com/tanadeyu/pi-gl-mem
rm -rf ./.pi-gl-mem # 데이터도 남으므로 불필요하면 삭제
초기화 (프로젝트마다 1회)
프로젝트 루트에서 폴더를 만듦으로써 로컬 기억 파일 세트가 만들어집니다. 글로벌은 설치 시 자동으로 만들어집니다.
~/.pi/agent/git/github.com/tanadeyu/pi-gl-mem/pi-gl-mem-init # Y/N 확인 → .pi-gl-mem/ 생성
your-project/.pi-gl-mem/
├── MEMORY.md # 장기 기억 (자동 로드)
├── SCRATCHPAD.md # 체크리스트 (수동 read)
...
💡
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" → 🌐 글로벌 (Global)
"이 프로젝트에서 기억해 둬: DB는 SQLite" → 📁 로컬 (Local)
"기억해 둬" → 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개 명령어가 필요
- ✅ 다른 확장에 의존하지 않는 자기 완결적 (Self-contained) 설계
- ✅ 안전 설계 (초기화되지 않았을 때는 아무것도 하지 않음)
- ✅
.pi-gl-mem폴더를 상위 계층에서 찾기 때문에 하위 계층에서도 동작 (Git과 유사한 사양). 찾을 수 없을 때는 아무것도 하지 않음.
링크: 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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기