can1357/oh-my-pi

⌥ Coding agent with the IDE wired in

GitHub에서 열기 ↗ ai-agentai-coding-agentanthropicbunclaudeclicoding-assistantllmmcpmulti-provideropenairustterminaltuitypescript
28,358
GitHub 스타
2,829
포크
TypeScript
언어
MIT
라이선스
2026.08.30
최근 푸시
2026.07.18
별표한 날

AI 분석

설치 난이도: 쉬움
큐레이터 노트
터미널 기반 AI 코딩 에이전트를 찾고 있고, LSP/디버거/브라우저/서브에이전트 등 고급 기능을 하나의 도구로 통합하려는 개발자에게 적합하다. 특히 기존 설정 파일을 그대로 활용하고 싶은 팀이나 모델 공급자를 다양하게 바꿔가며 쓰는 사용자에게 유용하다.

강점

  • 60개 이상의 프로바이더, 31개의 내장 도구, LSP/DAP 연산, 약 8만 줄의 Rust 코어로 구성된 매우 강력한 에이전트 도구 서피스를 제공한다.
  • macOS/Linux/Windows, Homebrew, Bun, Nix, mise 등 다양한 설치 경로를 지원하고 셸 컴플리션도 자동 생성된다.
  • LSP, 디버거, 브라우저, 데스크톱 제어, 서브에이전트, 협업, 메모리 등 IDE 수준의 기능을 터미널 에이전트에 통합했다.
  • 해시 앵커 기반 편집(Hashline)과 스트림 규칙 주입으로 토큰 비용을 줄이고 편집 정확도를 높였다.
  • 기존 도구들의 설정 형식(Cursor, Cline, Codex, Copilot 등)을 그대로 읽어 마이그레이션 부담이 없다.

약점

  • README에 벤치마크 수치가 일부 모델에 국한되어 있고, 전체적인 평가 방법론이나 재현 절차가 명시되어 있지 않다.
  • Rust 코어 기반이라 사용자 정의 확장이나 플러그인 생태계에 대한 정보가 README에 부족하다.
  • 고급 기능(ACP, 브라우저 릴레이, 데스크톱 제어 등)이 많아 초보자가 온보딩하기에 러닝커브가 있을 수 있다.

주의사항

  • Alpine/musl 환경에서는 libstdc++와 libgcc를 별도로 설치해야 한다.
  • PR 수락 정책이 현재 시험적으로 열려 있으며, 이후 보증(vouch) 시스템이 부활할 수 있다.
  • 일부 기능(예: /collab, 브라우저 릴레이)은 릴레이 서버나 확장 프로그램 등 외부 의존성이 있을 수 있다.
  • README가 매우 길고 마케팅성 표현이 많아 실제 동작을 검증하려면 직접 설치해 봐야 한다.

시작 가이드

  • 공식 설치 스크립트(https://omp.sh/install)로 omp를 설치하고 기본 세션을 실행해 본다.
  • README에 언급된 LSP, 디버거, Hashline, 서브에이전트 기능을 실제 코드베이스에서 테스트한다.
  • 기존에 사용 중인 에이전트 설정(Cursor, Cline, Codex 등)이 omp에서 그대로 읽히는지 확인한다.
  • 벤치마크 수치와 기능 주장을 검증하기 위해 공식 문서와 캡처 영상을 추가로 확인한다.
  • 팀 도입을 고려한다면 /collab 협업 기능과 메모리 백엔드 설정을 평가한다.

README 한국어 번역

이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.

IDE가 연결된 코딩 에이전트.

omp.sh

Fork of Pi by @mariozechner

가장 강력한 에이전트 서피스를 제공합니다. 실사용을 통해 지속적으로 튜닝되며 — 설치 즉시 완성되어 있고, 끝까지 열려 있습니다.

60개 이상 프로바이더 · 31개 내장 도구 · 14개 LSP 연산 · 28개 DAP 연산 · 약 8만 줄의 Rust 코어.

[!NOTE]

풀 리퀘스트는 시험적으로 당분간 모든 사람에게 열려 있습니다. 이전에는 PR을 수락하기 전에 보증(vouch)을 요구했지만, 오픈 기여가 어떻게 진행되는지 평가하는 동안 그 요건은 현재 해제되어 있습니다. 결과에 따라 보증 시스템이 돌아올 수 있습니다.

Install

macOS · Linux

curl -fsSL https://omp.sh/install | sh

Alpine / musl: 사전 빌드된 musl 바이너리는 libstdc++/libgcc를 동적으로 링크하는데, 기본 Alpine에는 포함되어 있지 않습니다. 먼저 설치하세요: apk add libstdc++ libgcc.

Homebrew

brew install can1357/tap/omp

Bun (recommended)

bun install -g @oh-my-pi/pi-coding-agent

Nix

# 설치 없이 실행
nix run github:can1357/oh-my-pi

# 또는 활성 프로필에 설치
nix profile install github:can1357/oh-my-pi

Flake 사용자는 packages..omp, overlays.default, nixosModules.default, homeManagerModules.default를 사용할 수 있습니다. Home Manager 구성에서 OMP를 설치하고 설정을 선언적으로 관리할 수 있습니다:

{
  inputs.omp.url = "github:can1357/oh-my-pi";

  # Home Manager 모듈에서:
  imports = [ inputs.omp.homeManagerModules.default ];
  programs.omp = {
    enable = true;
    settings.startup.quiet = true;
  };
}

Windows (PowerShell)

irm https://omp.sh/install.ps1 | iex

버전 고정 (mise)

mise use -g github:can1357/oh-my-pi

macOS · Linux · Windows · bun ≥ 1.3.14

셸 컴플리션

omp는 실제 명령/플래그 메타데이터에서 bash, zsh, fish용 컴플리션 스크립트를 직접 생성하므로 실제 CLI와 어긋나지 않습니다. 하위 명령, 플래그, enum 값은 정적으로 완성되고, 모델 이름(--model, --smol, --slow, --plan)은 번들된 모델 카탈로그를 기준으로, --resume은 디스크에 저장된 세션을 기준으로 해석됩니다.

# zsh — ~/.zshrc에 추가 (또는 출력을 $fpath의 파일로 저장)
eval "$(omp completions zsh)"

# bash — ~/.bashrc에 추가
eval "$(omp completions bash)"

# fish
omp completions fish > ~/.config/fish/completions/omp.fish

모든 도구, 벤치마크 극대화.

첫 시도에 적용되는 편집. 파일 내용을 통째로 던지는 대신 요약해 주는 읽기. 즉시 결과를 돌려주는 검색. 어떤 모델을 골라도 omp가 제대로 처리합니다.

모델 지표 설명
Grok Code Fast 1 6.7% → 68.3% 편집 형식이 모델을 좀먹지 않게 되는 순간 10배 향상.
Gemini 3 Flash +5 pp str_replace 대비 +5%p — Google 자체의 최고 시도보다 나은 형식 성능.
Grok 4 Fast −61% tokens 잘못된 diff에 대한 재시도 루프가 사라지면 출력 토큰이 61% 감소.
MiniMax 2.1× 통과율이 2배 이상. 동일한 가중치, 동일한 프롬프트.
  • read : 요약된 스니펫 · 이상적인 기본값 · 셀렉터 적중률
  • grep : 가장 빠른 속도
  • lsp : IDE가 아는 모든 것을 에이전트도 안다
  • prompts : 각 모델에 맞춰 끊임없이 조정됨

전체 글 읽기 ↗

당신이 사랑하는 Pi, 배터리 포함.

원래 Mario Zechner의 훌륭한 Pi를 기반으로 만들어진 omp는 당신에게 부족했던 모든 것을 추가합니다.

01 · 도구 호출을 통한 코드 실행

대부분의 하네스는 에이전트에게 Python 샌드박스를 주고 끝냅니다. omp는 지속적인 Python과 Bun 워커를 실행하며, 두 커널 모두 루프백 브리지를 통해 에이전트의 자체 도구(read, search, task)를 다시 호출할 수 있습니다. 에이전트는 Python 내부에서 tool.read로 CSV를 불러오고, JavaScript로 차트를 그리며, 셀을 벗어나지 않습니다.

02 · 모든 쓰기에 연결된 LSP

리네임을 요청하면 실제로 리네임이 수행됩니다. 호출은 workspace/willRenameFiles를 거치므로 파일이 이동하기 전에 re-export, 배럴 파일, 별칭 import가 갱신됩니다. IDE가 아는 모든 것을 에이전트도 압니다.

LSP 구성 문서 읽기

03 · 실제 디버거 구동

C 바이너리가 세그폴트를 일으키면 에이전트는 lldb를 붙여 잘못된 포인터까지 스텝하고 프레임을 읽습니다. Go 서비스가 멈추면 dlv를 붙여 고루틴을 탐색합니다. Python 프로세스가 막히면 debugpy로 일시 중지하고 검사하고 평가합니다. 대부분의 에이전트는 여전히 print 문을 뿌리고 있을 뿐입니다.

캡처 보기 ↗

04 · 타임트래블 스트림 규칙

규칙은 모델이 스크립트를 벗어날 때까지 휴면 상태로 있습니다. 정규식 매치가 토큰 중간에 스트림을 중단시키고, 규칙을 시스템 리마인더로 주입한 뒤 같은 지점에서 재시도합니다. 매 턴 컨텍스트 비용을 지불하지 않고도 방향을 수정할 수 있습니다. 주입된 내용은 컴팩션 후에도 유지되므로 수정이 고정됩니다.

캡처 보기 ↗

05 · 일급 서브에이전트

작업을 워커들에 분산하고 타입이 지정된 결과를 돌려받습니다. task는 격리된 worktree로 팬아웃되고, 각 워커는 자체 도구 서피스를 실행하며, 최종 결과물은 스키마 검증을 거친 객체로 부모가 직접 읽습니다. 파싱할 산문도, 형제 간 병합 충돌도, 고아가 된 편집도 없습니다.

캡처 보기 ↗

실행 중 팬아웃을 지켜보세요: Alt+A를 누르면 Agent Hub가 열리고, 명단에서 각 서브에이전트의 현재 활동과 사용량을 볼 수 있습니다. 하나를 열면 실시간 트랜스크립트를 읽고, 방향을 지시하는 메시지를 보내고, 대기 중인 워커를 재개하거나, 부모 세션을 중단하지 않고 멈춘 워커를 종료할 수 있습니다.

06 · 모든 턴을 지켜보는 두 번째 모델

리뷰어 모델을 'advisor' 역할에 연결하면 메인 에이전트가 수행하는 모든 턴을 읽고, 조용한 곁말, 우려, 또는 강력한 차단(blocker)을 인라인으로 주입합니다. 이 모델은 자체 컨텍스트와 자체 모델로 실행되므로 실행자가 지나친 것을 놓치지 않습니다. 메인 에이전트는 그 메모를 보고 방향을 수정하거나, 수정하지 않는 이유를 설명합니다.

캡처 보기 ↗

07 · 링크만 건네주면 바로 합류

/collab은 라이브 세션을 릴레이에 올리고 링크와 QR을 돌려줍니다. 팀원은 다른 터미널에서 omp join으로 합류하거나 브라우저에서 열기만 하면 됩니다. 같은 에이전트에서 페어링하려면 읽기-쓰기 권한을 공유하고, 누구나 볼 수 있지만 아무도 조종할 수 없는 읽기 전용 링크는 /collab view를 사용하세요. 프레임은 클라이언트 측에서 봉인되며 릴레이는 키를 볼 수 없습니다.

캡처 보기 ↗

08 · arxiv PDF를 읽는 건 어떨까요?

web_search는 23개의 순위가 매겨진 프로바이더를 연결하고, 찾은 URL을 곧바로 read에 넘깁니다. Arxiv PDF, GitHub 페이지, Stack Overflow 스레드는 앵커가 보존된 구조화된 마크다운으로 돌아옵니다 — 로컬 파일에 사용하는 것과 동일한 도구 서피스입니다. 인용하고, 따라가고, 인용구를 쓰고, 출처를 잃지 마세요.

캡처 보기 ↗

09 · 거리낌 없이 네이티브. Windows에서도.

다른 에이전트는 rg, grep, find, bash를 외부 프로세스로 호출합니다. 많은 머신에는 그런 바이너리가 없고, 있다 하더라도 호출할 때마다 fork-exec 왕복 비용이 발생합니다. omp는 실제 구현을 프로세스 안에 링크합니다. ripgrep, glob, find: 인프로세스로 동작합니다. brush는 bash 역할을 하며, 호출 간에도 유지되는 세션과 58개의 명령줄 유틸리티(ls, sed, sort, xargs, 심지어 jq까지)를 builtins 크레이트로 포팅해 인프로세스로 실행합니다. fork/exec가 전혀 없습니다. 동일한 omp 바이너리가 macOS, Linux, Windows에서 실행되며 WSL 브리지가 필요 없습니다.

10 · 우선순위와 판정이 있는 코드 리뷰

변경 사항이 출시될 수 있는지에 대한 명확한 판정을 받고, 모든 이슈는 P0부터 P3까지 순위가 매겨지고 신뢰도 점수가 부여됩니다. /review는 브랜치, 단일 커밋, 또는 커밋되지 않은 작업을 병렬로 훑는 전용 리뷰어 서브에이전트를 생성합니다. 릴리스를 막는 것부터 먼저 처리하면 됩니다. 중요한 것이 장황한 산문 속에 숨지 않습니다.

11 · Hashline: 콘텐츠 해시 기반 편집

완벽한 편집, 더 적은 토큰. 모델은 변경하려는 줄을 다시 입력하는 대신 앵커를 가리키므로, 공백 문자 씨름과 string-not-found 루프가 더 이상 발생하지 않습니다. 오래된 파일을 편집하면 앵커가 어긋나며, 패치가 무엇이든 손상시키기 전에 거부합니다. Grok 4 Fast는 같은 작업에 출력 토큰을 61% 더 적게 사용합니다.

12 · GitHub는 그저 또 하나의 파일시스템

다른 하네스는 ghissueview, ghprview, gh_search를 덧붙이는데, 각각 에이전트가 배워야 하고 당신이 디버깅해야 하는 자체 파라미터가 있습니다. omp는 그렇게 하지 않았습니다. read는 이미 경로를 처리하며, PR도 경로입니다. 모델에게 가르칠 인터페이스 하나, 올바르게 유지할 서피스 하나.

13 · 에이전트가 관리하는 메모리

에이전트는 세션 간에 코드베이스를 기억합니다. 실행 중에 retain으로 사실을 기록하고, learn으로 재사용 가능한 교훈을 포착하며, recall로 다시 불러오고, 각 세션을 다음 세션의 첫 턴에 로드되는 정신 모델로 압축합니다. memory.backend로 엔진을 선택하세요 — local, Hindsight, Mnemopi. 기본적으로 프로젝트 범위로 지정되므로 이 저장소에 대해 배운 것은 이 저장소에만 유지됩니다.

14 · ACP: 에디터로 구동하는 에이전트

Zed 안에서 omp를 실행하면 터미널에서 구동하는 것과 동일한 에이전트를 얻습니다 — 실제로 보고 있는 버퍼를 읽고, 에디터의 저장 경로를 통해 쓰고, 에디터의 터미널에서 셸을 실행합니다. 파괴적인 도구는 권한 프롬프트에서 일시 중지되며, 한 번 응답하면 다시 묻지 않습니다. 브리지도, 플러그인도, 동기화할 두 번째 두뇌도 없습니다.

15 · 다른 도구들이 이미 작성한 것을 그대로 계승

다른 모든 에이전트는 임포터를 제공하고 변환을 요구합니다. omp는 이미 디스크에 있는 여덟 가지 형식을 원래 형태 그대로 읽습니다 — Cursor MDC, Cline.clinerules, Codex AGENTS.md, Copilot applyTo 등. 마이그레이션 스크립트도, YAML-to-TOML 포팅도, "지원되는 하위 집합" 각주도 없습니다. 지난 분기에 팀이 작성한 설정이 오늘 밤에도 그대로 작동합니다.

16 · omp commit: 원자적 분할, 검증된 메시지

omp는 gitoverview, gitfilediff, githunk를 통해 작업 트리를 읽은 다음, 관련 없는 변경 사항을 의존성 순서에 따라 원자적 커밋으로 분할합니다. 순환은 아무것도 쓰기 전에 거부됩니다. 소스 파일은 테스트, 문서, 설정보다 높은 점수를 받으므로 헤드라인 커밋이 중요한 커밋이 됩니다. 잠금 파일은 분석에서 완전히 제외됩니다.

17 · PR 읽기. 스킬 탐색. 서브에이전트에서 JSON 꺼내기.

16개의 내부 스킴 — pr://, issue://, agent://, skill://, ssh:// 등 — 은 에이전트가 이미 호출하는 모든 FS 형태 도구 안에서 투명하게 해석됩니다. read pr://1428read src/foo.ts와 같은 형태를 반환합니다. grep은 diff를 디렉터리처럼 탐색합니다. agent:///findings.0.path는 서브에이전트 출력에서 경로로 필드를 꺼냅니다.

18 · 충돌 해결, 쉬워졌습니다.

각 병합 충돌이 하나의 URL이 됩니다. 에이전트가 conflict://N@theirs, @ours, @base를 쓰면 파일이 깔끔하게 해결됩니다. 일괄 형식: conflict://*.

캡처 보기 ↗

19 · 미리 보고 수락

astedit은 교체 횟수가 포함된 (proposed)_ 카드를 반환합니다. 변경 사항은 스테이징됩니다. 에이전트가 xd://resolve에 한 줄 이유를 쓰면 TUI가 이를 Accept 카드로 바꾸고 디스크 이동이 발생합니다 — 원자적이며, 전부 아니면 전무입니다.

캡처 보기 ↗

20 · 실제 브라우저를 구동합니다. 아니면 Slack?

Stealth가 기본으로 켜져 있어 페이지는 헤드리스 봇 대신 일반 사용자를 봅니다. 동일한 API로 어떤 Electron 앱도 그 자리에서 구동할 수 있습니다 — Slack을 가리키면 에이전트가 웹을 읽는 것처럼 DM을 읽습니다. 또는 샌드박스를 완전히 건너뛸 수 있습니다: 브라우저 릴레이 확장 프로그램을 사용하면 에이전트가 이미 열려 있는 Chrome 탭을 포커스를 빼앗지 않고 사용할 수 있습니다.

21 · 데스크톱 자체를 다루다

computer는 실제 호스트에서 지속적인 JavaScript를 실행합니다: 창과 디스플레이를 열거하고, 스크린샷을 캡처하고, 네이티브 입력을 보내고, OS 접근성 트리를 탐색하고, 클립보드를 다룹니다. 브라우저 도구가 아니며 DOM도 아닙니다 — 당신이 보고 있는 바로 그 데스크톱...

원본 저장소: can1357/oh-my-pi

라이선스: MIT

게재 제외를 원하시면 삭제 요청을 보내주세요.