본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 22. 15:16

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-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을 넣으면 두 가지 기억 영역을 사용할 수 있습니다.

기억저장 위치파일 수용도
🌐 글로벌~/.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에서 클론하여 ~/.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}
설정초기값의미
injectLocaltrue로컬 기억 (Local Memory)을 AI에게 읽히기
injectGlobaltrue글로벌 기억 (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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0