oh-my-pi 심층 분석: IDE를 연결한 코딩 에이전트, 편집 형식이 모델 성패를 가르는 이유
oh-my-pi(omp)는 Stencil Labs가 Pi를 포크해 만든 코딩 에이전트로, IDE를 에이전트에 연결한다는 한 가지 발상에 기반합니다. 31개의 내장 도구, 14개의 LSP 연산, 28개의 DAP 연산, 약 8만 줄의 Rust 코어를 제공합니다. 작성자는 모델별 편집 형식 조정으로 Grok Code Fast 1의 통과율이 6.7%에서 68.3%로 올랐다고 주장합니다. 이 보고서는 구조, 지속형 Python과 Bun 커널의 도구 호출, 한계를 다룹니다. 수치는 자체 보고이므로 직접 검증이 필요합니다.
포지셔닝: IDE를 연결한 코딩 에이전트
oh-my-pi(명령어 이름은 omp)는 Stencil Labs의 can1357이 관리하는 프로젝트입니다. Mario Zechner의 오픈소스 프로젝트 Pi를 포크한 것입니다. 소개 문구는 한 줄입니다. "IDE를 연결한 코딩 에이전트." README가 제시하는 규모는 60개 이상의 모델 제공자, 31개의 내장 도구, 14개의 LSP 연산, 28개의 DAP 연산, 그리고 약 8만 줄의 Rust 코어입니다. 이 수치는 프로젝트 자체의 주장이며 하나하나 독립적으로 검증하지는 않았습니다. 그래도 방향은 분명합니다. omp는 모델에 터미널만 붙인 도구가 아니라, 개발자가 IDE에서 누리는 기능 전체를 에이전트에 주려 합니다.
기술 스택은 TypeScript, Rust, Bun 런타임입니다. Bun 1.3.14 이상이 필요하고 macOS, Linux, Windows에서 동작합니다. README에는 기여 정책 실험도 적혀 있습니다. 당분간 풀 리퀘스트는 누구에게나 열려 있습니다. 이전에는 vouch(보증)가 필요했고, 결과에 따라 다시 도입될 수 있습니다.
핵심 아키텍처: Pi 위에 쌓은 세 층
README에서 세 층을 읽을 수 있습니다. 첫째는 Pi에서 물려받은 에이전트 루프와 터미널 UI입니다. 둘째는 omp가 배터리라고 부르는 추가분으로, 많은 내장 도구와 모델별 적응, 프롬프트 조정이 포함됩니다. 셋째는 IDE에 해당하는 언어 서비스 층, 즉 LSP와 DAP입니다.
LSP(Language Server Protocol)는 정의로 이동, 참조 찾기, 진단, 이름 바꾸기 등을 제공합니다. README의 표현은 "IDE가 아는 것은 에이전트도 안다"입니다. 14개의 LSP 연산이 있으면 에이전트는 grep으로 심볼 관계를 추측하지 않고 언어 서버에 직접 물어볼 수 있습니다. DAP(Debug Adapter Protocol)는 에이전트에서는 드문 기능입니다. 28개의 연산으로 중단점 설정, 단계 실행, 변수 확인이 가능합니다. 로그를 추가하고 다시 실행하는 거친 방식이 진짜 디버그 세션으로 바뀝니다. 자동화된 에이전트에게 이 두 프로토콜은 텍스트 편집기를 개발 환경으로 끌어올리는 열쇠입니다.
성능에 민감한 부분은 Rust 코어가 맡습니다. README는 grep을 "서부에서 가장 빠르다"고 표현하며 검색이 즉시 반환된다고 말합니다. 구현 세부 사항이나 검색 벤치마크는 README에 없으므로 여기서는 추측하지 않습니다.
내부 원리: 병목은 편집 형식
omp의 중심 주장은 품질이 모델만이 아니라 하니스(모델을 둘러싼 틀)에도 달려 있다는 것입니다. 작성자는 2026년 2월 12일 「The Harness Problem」이라는 글을 발표했고 README가 이를 링크합니다. 요지는 같은 모델도 하니스에 따라 성능이 크게 달라지며, 그중 편집 형식이 가장 중요하다는 것입니다. 모델이 잘못된 형태의 diff를 내면 도구가 거부합니다. 그러면 에이전트는 재시도 루프에 빠집니다. 재시도는 토큰을 낭비하고 컨텍스트를 오염시킵니다. omp는 모델별로 도구와 프롬프트를 조정해 편집이 첫 시도에 성공하도록 합니다. README 표에는 네 가지 예가 있습니다. - Grok Code Fast 1: 통과율이 6.7%에서 68.3%로, 약 10배입니다. 작성자는 편집 형식이 더 이상 모델을 "잡아먹지" 않기 때문이라고 설명합니다.
- Gemini 3 Flash: str_replace보다 5%포인트 높습니다. 작성자는 구글 자체의 최선의 시도를 넘었다고 말합니다.
- Grok 4 Fast: 출력 토큰이 61% 줄었습니다. 잘못된 diff로 인한 재시도 루프가 사라졌기 때문입니다.
- MiniMax: 통과율이 2.1배입니다. 가중치와 프롬프트는 같습니다.
주의할 점이 있습니다. 이 수치는 작성자가 직접 보고한 것입니다. 테스트 세트, 표본 크기, 비교 조건은 README 표가 아니라 블로그 글에 있습니다. 확정된 결과가 아니라 확인해 볼 만한 단서로 다루는 편이 안전합니다. 다만 현상 자체는 설득력이 있습니다. 편집 도구의 설계가 같은 모델의 쓸모를 크게 바꿀 수 있습니다. README에는 다른 설계 원칙도 있습니다. `read`는 파일 전체를 쏟아내지 않고 요약된 스니펫을 반환하며, 기본값과 셀렉터 적중률이 조정되어 있습니다. `prompts`는 모델마다 끊임없이 조정됩니다.
도구 호출이 가능한 코드 실행
README가 가장 먼저 소개하는 기능은 도구 호출이 가능한 코드 실행입니다. 대부분의 하니스는 Python 샌드박스를 주고 끝냅니다. omp는 지속되는 Python 커널과 Bun 워커를 함께 실행합니다. 두 커널 모두 루프백 브리지를 통해 에이전트 자신의 도구, 예컨대 read, search, task를 다시 호출할 수 있습니다.
README의 예에서 에이전트는 Python 안에서 tool.read로 CSV를 읽고, JavaScript에서 차트를 그리며, 같은 셀을 떠나지 않습니다. 장점은 분명합니다. 중간 데이터가 커널 안에 남아 매 단계마다 모델 컨텍스트로 돌아갈 필요가 없습니다. 큰 파일과 다단계 분석에서 컨텍스트를 아끼고, 사람이 노트북에서 일하는 방식에 가까워집니다. 위험도 같은 곳에 있습니다. 코드 실행과 도구 콜백은 공격 표면을 넓히므로, 기업은 널리 쓰기 전에 권한 경계를 점검해야 합니다.
설치와 생태계
설치 방법은 다양합니다. macOS와 Linux용 curl 한 줄, Homebrew, Bun 전역 설치(README가 권장), Nix, Windows PowerShell, mise를 통한 버전 고정이 있습니다. Nix 사용자는 packages, overlays, nixosModules, homeManagerModules가 있는 flake를 쓸 수 있습니다. Home Manager 설정으로 omp를 설치하고 `settings.startup.quiet = true`처럼 설정을 선언적으로 관리할 수 있습니다. Alpine에서는 미리 빌드된 musl 바이너리가 libstdc++와 libgcc를 동적으로 링크하므로 먼저 설치해야 합니다.
셸 자동 완성은 omp가 bash, zsh, fish용으로 직접 생성합니다. 실행 중인 명령과 플래그의 메타데이터에서 만들기 때문에 실제 CLI와 어긋나지 않습니다. `--model`, `--smol`, `--slow`, `--plan`의 모델 이름은 내장 모델 카탈로그로, `--resume`은 디스크의 세션으로 완성됩니다. 플래그 이름을 보면 작업 단계마다 다른 모델을 쓸 수 있는 듯하지만, 정확한 규칙은 공식 문서에서 확인해야 합니다.
개발자와 기업에 미치는 영향
개인 개발자에게는 바로 쓸 수 있고 깊은 곳까지 열려 있다는 점이 매력입니다. 60개 이상의 제공자를 지원해 모델 전환 비용이 낮고, 모델별 조정은 여러 벤더를 섞어 쓰는 팀에 특히 의미가 있습니다.
기업에는 Nix와 Home Manager 지원, 버전 고정 설치가 재현 가능한 환경 관리에 도움이 됩니다. LSP와 DAP 통합으로 팀이 이미 갖춘 언어 서비스 설정을 에이전트가 재사용할 수 있습니다.
한계와 전망
첫째, 성능 수치 대부분이 자체 보고이며 제3자 재현이 없습니다. 둘째, 31개 도구와 두 개의 코드 커널, LSP와 DAP는 표면적이 커서 학습 비용과 보안 검토 비용이 큽니다. 셋째, Pi의 포크이므로 업스트림을 계속 따라가야 하고 장기 유지보수 부담이 있습니다. 넷째, PR 정책은 아직 실험 중이라 커뮤니티 운영 방식이 바뀔 수 있습니다.
모델별 조정 확대, 더 깊은 디버깅 지원, 더 엄격한 권한 제어가 앞으로의 방향일 수 있습니다. 실용적인 조언은 이렇습니다. 먼저 「The Harness Problem」을 읽으세요. 그런 다음 평소 쓰는 모델로 자신의 코드베이스에서 omp를 돌려, 각 퍼센트를 자기 작업으로 확인해 보세요.