OMP(Oh My Pi) 시스템 프롬프트를 22.6k에서 5.9k 토큰으로 줄이고 실제 TS/Python 버그로 테스트함
Cut OMP's (Oh My Pi) system prompt from 22.6k to 5.9k tokens with two settings, then tested it on real TS + Python bugs
핵심 요약
OMP의 과도한 시스템 프롬프트 문제를 해결하기 위해 프롬프트 프로필과 도구 마운트 설정을 최적화하여 로컬 모델 성능을 개선했습니다.
- 프롬프트 최적화 — 시스템 프롬프트를 22.6k에서 5.9k 토큰으로 대폭 축소함
- 도구 마운트 설정 — 필수 도구 외에는 필요할 때만 로드하도록 설정 변경
- 성능 테스트 — 로컬 Qwen 모델로 실제 TS/Python 버그를 해결하며 성능 검증
- 결과 개선 — 프롬프트 압축을 통해 로컬 모델의 컨텍스트 창 부족 문제 해결
문제 상황. OMP 18.0.7 버전은 사용자가 뭐라 치기도 전에 22,643 토큰을 처먹음. 실제 TypeScript 모노레포에서 네트워크 패킷으로 측정한 결과임. 어디서 이렇게 잡아먹나 봤더니, 최상위 도구 11개의 JSON 스키마가 11,734(52%, hub 하나만 2,898), 지시사항 템플릿 6,160, 내 컨텍스트 파일 3,981, MCP 라우트 401, 기타 367 토큰임. 200k 클라우드 모델에선 문제없는데, 로컬 30k 윈도우에선 작업할 공간이 7k밖에 안 남음. 업스트림 이슈: #1734.
설정만으론 해결 안 되는 이유. OMP는 이미 도구 지연 로딩을 지원함. xd:// 아래에 마운트된 도구는 스키마를 안 보내고, 모델이 필요할 때 read xd://<tool>을 실행함. 근데 isMountableUnderXdev()가 discoverable로 선언된 도구만 받아주는데다, ESSENTIAL_BUILTIN_TOOL_NAMES랑 XDEV_KEEP_TOP_LEVEL이 11개 중 10개를 꽉 잡고 있음. 확장 기능에서 setActiveTools는 되는데 setActiveToolPresentation은 안 됨. 소스 코드 외부에서 비싼 도구를 제거할 순 있어도, 나중으로 미루는 건 불가능함.
변경 사항: 설정 2개 추가 (기본값은 꺼짐).
promptProfile: compact # 규칙은 그대로, 결과물도 동일, 성격/예시/장황한 설명 제거
tools:
xdevDocs: catalog
xdevForceMount: [hub, eval, task, todo, web_search] # glob 패턴 가능; 읽기/쓰기 도구는 절대 강등 불가
promptProfile: full은 여전히 업스트림이랑 바이트 단위까지 똑같이 나옴. 캡처된 요청 기준으로 측정한 프리셋 3개는 다음과 같음.
| preset | config.yml | tools left top-level | moved to xd:// | OMP's share: template + schemas | my context files | request total |
|---|---|---|---|---|---|---|
| base (upstream default) | nothing | 11 | none | 18,531 | 3,923 | 22,643 |
| p7k | promptProfile: compact + xdevForceMount: [hub, eval, task, todo, web_search] | read bash edit glob grep write |

