oh-my-pi
무엇인가
oh-my-pi(omp)는 터미널에서 실행되는 코딩 에이전트다. 채팅 에이전트·에디터 플러그인·셸 도구를 따로 붙여 쓰던 자리를 단일 바이너리로 대체한다. 에이전트 루프가 파일 읽기와 검색, 편집에 그치지 않고 언어 서버와 디버거 프로토콜까지 직접 호출한다. 표면은 TypeScript, 코어는 약 8만 줄 규모의 Rust다. Mario Zechner의 Pi를 포크해 확장했다.
어떻게 동작하나
에이전트는 31개 내장 도구로 작업한다. read는 파일 전체 대신 요약 스니펫을 반환하고, grep은 프로세스 안에서 검색하며, lsp는 14개, dap는 28개 연산을 노출한다. 코드 실행은 영속 Python 커널과 Bun 워커로 나뉘고, 두 커널 모두 루프백 브리지로 read·search·task 같은 에이전트 도구를 역호출한다. 파일 이름 변경은 workspace/willRenameFiles를 거쳐 재수출·배럴 파일·별칭 임포트를 먼저 갱신한다. 디버깅은 lldb·dlv·debugpy에 attach해 프레임과 고루틴을 읽는다. task 도구는 작업을 격리된 워크트리로 팬아웃하고 스키마 검증된 객체로 결과를 돌려받는다. advisor 역할의 별도 모델은 매 턴을 독립 컨텍스트에서 읽고 인라인 주석을 주입한다. /collab은 세션을 릴레이에 올려 링크와 QR을 발급하며 프레임은 클라이언트 측에서 봉인된다.
무엇과 다른가
다른 하네스는 rg·grep·find·bash를 외부 프로세스로 호출해 매 호출마다 fork-exec 비용을 낸다. omp는 ripgrep·glob·find 구현을 프로세스에 링크하고, brush 기반 bash와 ls·sed·sort·xargs·jq 등 58개 유틸리티를 builtins 크레이트로 옮겨 fork/exec 없이 실행한다. 셸 세션은 호출 사이에도 유지된다. 편집은 LSP 이름 변경을 경유하므로 임포트가 깨지지 않고, 디버깅은 print문 삽입 대신 실제 디버거 부착으로 처리된다. 같은 바이너리가 macOS·Linux·Windows에서 동작하며 WSL 브리지를 쓰지 않는다.
어떻게 쓰나
설치는 Homebrew, Bun, Nix, PowerShell, mise 경로를 지원한다. Nix 플레이크는 packages.<system>.omp, overlays.default, nixosModules.default, homeManagerModules.default를 노출하고, Home Manager 설정으로 OMP와 그 설정을 선언적으로 관리할 수 있다. omp는 bash·zsh·fish 완성 스크립트를 실제 명령·플래그 메타데이터에서 생성하므로 CLI와 어긋나지 않는다. --model·--smol·--slow·--plan은 번들 모델 카탈로그에서, --resume은 디스크의 세션에서 완성된다. Alt+A는 Agent Hub를 열고, /review는 리뷰어 서브에이전트를 병렬로 띄운다.
전제와 한계
Bun 설치 경로는 bun ≥ 1.3.14를 요구한다. Alpine/musl 사전 빌드 바이너리는 libstdc++·libgcc를 동적 링크하므로 apk add libstdc++ libgcc가 선행돼야 한다. 모델은 60개 이상의 제공자를 통해 붙는다. PR은 현재 vouch 요구 없이 누구에게나 열려 있으나, 결과에 따라 vouch 시스템이 다시 도입될 수 있다.
관련 논문 1
유사 도구
- Codewhale터미널에서 프로젝트를 읽고 파일을 고치고 명령을 실행하는 Rust 기반 코딩 에이전트다. 호스티드·로컬 모델을 골라 붙인다.
- jcodeRust로 작성된 터미널 코딩 에이전트 하네스다. 세션당 메모리 사용량을 수십 MB로 줄이고, 턴마다 임베딩으로 기억 그래프를 검색한다.
- serenaMCP 클라이언트에 연결해 심볼 단위 코드 검색·편집·리팩터링을 제공하는 Python 서버다. 언어 서버로 코드의 의미 구조를 해석한다.
- agnixCLAUDE.md·AGENTS.md·SKILL.md·훅·MCP 설정을 456개 규칙으로 검사해 잘못된 필드와 무시되는 지시를 잡아내고 자동 수정까지 하는 린터 플러그인이다.
- agent-of-empires여러 AI 코딩 에이전트를 tmux 세션에 격리해 병렬 실행하고 TUI·웹·CLI에서 관리하는 Rust 세션 매니저다.
- hunk에이전트가 만든 변경 집합을 터미널에서 리뷰하도록 만든 diff 뷰어다. OpenTUI와 Pierre diffs 위에 사이드바, 인라인 주석, watch 모드를 얹었다.