본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 21. 21:16

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-mempi-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.md1개 파일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}
설정초기값의미
injectLocaltrue로컬 기억 (Local Memory)을 AI에게 읽게 함
injectGlobaltrue글로벌 기억 (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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0