pi-protokoll – 로컬 모델의 긴 세션을 위한 압축 방식
pi-protokoll – compaction for very long sessions with local models
핵심 요약
로컬 모델의 컨텍스트 압축 문제를 해결하기 위해 대화 내용을 프로토콜 블록으로 구조화하여 관리하는 도구입니다.
- 프로토콜 기반 요약 — 대화 끝마다 상태 정보를 기록해 압축 시 컨텍스트 손실을 방지함
- 계층적 컨텍스트 관리 — 최근 대화는 원문 그대로, 이전 대화는 프로토콜과 인덱스로 요약하여 유지함
- 성능 최적화 — 262k 컨텍스트에서 213k를 35k로 빠르게 압축하여 세션 유지력을 대폭 향상함
- 오픈 소스 공개 — 로컬 서버 환경에서 테스트 완료되었으며 커뮤니티의 기여를 환영함
Pi의 압축 방식은 전체 기록을 다시 읽고 모델한테 요약하게 만드는 식임. 로컬 모델로 돌려보니까 압축 한 번 할 때마다 몇 분씩 걸리고, 두세 번만 반복해도 문맥이 개판 나서 세션을 새로 파야 했음. 절차적 그래픽 데모 만들 때는 5일 동안 10번이나 세션을 갈아엎었다고.
pi-protokoll은 모델이 내용을 다 기억하고 있을 때 미리 작업을 쳐버림. 모든 답변 끝에 짧은 <protocol> 블록(결과, 결정 사항, 파일, 미해결 과제, 규칙, 인덱스 라인, 태그)을 붙이는 방식임. 나중에 압축할 때 코드가 이 프로토콜들을 모아서 계층적이고 용량이 제한된 요약본을 만들고, 모델은 짧은 상태 설명만 업데이트하면 됨.
이게 하는 일:
-
최근 대화는 그대로, 예전 대화는 '니 메시지 + 프로토콜'로, 그보다 더 옛날 건 코드로 만든 인덱스랑 규칙, 미해결 과제, 변경된 파일들로 정리함
-
모델이 블록을 까먹으면 원샷으로 다시 알려주고, 그것도 씹으면 대화 기록에서 직접 뽑아옴
-
중간에 끊긴 대화(Esc, 에러, 출력 제한)는 다음 메시지 보내기 전에 알아서 프로토콜을 생성함
-
protocol_search,protocol_read,protocol_turn: 모델이 뇌피셜 돌리는 대신 예전 대화를 직접 찾아볼 수 있음 -
시스템 프롬프트 섹션을 고정해서 서버의 프리픽스 캐시가 계속 유지됨
-
혹시라도 문제 생기면 Pi 자체 압축 방식으로 돌아가니까 채팅이 막힐 일은 없음
로컬 OpenAI 호환 서버에서 Qwen 3.8 Flash Next로 262k 컨텍스트 돌려본 결과임: 세션 하나에서 압축 23번 수행, 매번 대략 213k → 35k 토큰으로 줄어들고 시간은 30초 정도 걸림. 세션 다시 불러올 때는 36~44k 토큰 정도 읽음. 덕분에 데모 만들면서 세션 10번 넘게 새로 파던 걸 딱 한 번으로 끝냄: https://github.com/sebion7125/64kdemo (어쩌다 만들게 됐는지는 ENTSTEHUNG.en.md에 적어둠).
설치: pi install git:github.com/sebion7125/pi-protokoll
저장소: https://github.com/sebion7125/pi-protokoll
아직 로컬 서버에 올린 Qwen으로만 테스트해 봄. 다른 모델이나 서비스에서 돌리면 어떤지 알려주면 개꿀. 내가 직접 더 개발할 시간은 별로 없으니까 포크나 PR은 언제든 환영함.