oh-my-pi

AI Coding ToolsTUITypeScript

★ 30,818주당 +1,174조회 13

무엇인가

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

유사 도구