본문으로 건너뛰기

© 2026 Molayo

GH Trending릴리즈2026. 05. 20. 19:43

can1357/oh-my-pi

요약

oh-my-pi(omp)는 IDE 기능이 내장된 고성능 코딩 에이전트로, Rust로 작성된 강력한 코어와 40개 이상의 모델 프로바이더를 지원합니다. LSP 및 DAP 작업을 통해 IDE 수준의 코드 이해도를 갖추었으며, 파일 요약 읽기, 고속 검색, 디버깅 도구 연결 등 실제 개발 워크플로우에 최적화된 기능을 제공합니다.

핵심 포인트

  • LSP(Language Server Protocol) 및 DAP(Debug Adapter Protocol)를 지원하여 IDE 수준의 코드 맥락 파악 가능
  • 파일 전체를 읽는 대신 요약된 스니펫을 사용하는 효율적인 Read 기능 제공
  • Python 및 Bun 워커를 통한 샌드박스 환경과 루프백 브릿지 기반의 도구 호출 지원
  • lldb, dlv, debugpy 등 전문 디버깅 도구를 에이전트가 직접 활용하여 심층적인 문제 해결 가능
  • 40개 이상의 모델 프로바이더와 32개의 내장 도구를 갖춘 개방형 아키텍처

IDE가 내장된 코딩 에이전트 (coding agent).
omp.sh

@mariozechner의 Pi를 포크(Fork)함

출시된 제품 중 가장 유능한 에이전트 인터페이스입니다. 실제 사용 사례를 통해 지속적으로 튜닝되었으며, 즉시 사용 가능하고 모든 계층이 완전히 개방되어 있습니다.

40개 이상의 프로바이더 (providers) · 32개의 내장 도구 (built-in tools) · 13개의 LSP 작업 (lsp ops) · 27개의 DAP 작업 (dap ops) · 약 27,000줄의 Rust 코어 코드.

macOS · Linux

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

Bun (권장)

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

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

첫 시도에 성공하는 편집 (Edits). 파일 내용을 통째로 쏟아내는 대신 파일을 요약하여 읽는 기능 (Reads). 즉각적인 결과를 반환하는 검색 (Searches). 어떤 모델을 선택하든 omp가 정확하게 수행합니다.

모델 (model)지표 (metric)내용 (what)
Grok Code Fast 16.7% → 68.3%편집 포맷이 모델을 망가뜨리는 것을 멈추는 순간 10배의 성능 향상
...
read

: 요약된 스니펫 (summarized snippets) · 이상적인 기본값 (ideal defaults) · 선택자 적중률 (selector hit rate)
search

: 서부에서 가장 빠른 검색
lsp

: 당신의 IDE가 아는 모든 것을 에이전트도 압니다
prompts

: 각 모델에 맞춰 끊임없이 조정됨

본래 Mario Zechner의 훌륭한 Pi를 기반으로 구축되었으며, omp는 당신에게 부족했던 모든 것을 추가합니다.

대부분의 하네스 (harnesses)는 에이전트에게 Python 샌드박스 (sandbox)를 제공하는 것으로 끝냅니다. 우리의 방식은 지속적인 Python과 Bun 워커 (worker)를 실행하며, 두 커널 모두 루프백 브릿지 (loopback bridge)를 통해 에이전트 고유의 도구(읽기, 검색, 작업)를 호출할 수 있습니다. 에이전트는 Python 내부에서 tool.read를 사용하여 CSV를 로드하고, JavaScript에서 이를 차트로 시각화하며, 셀을 벗어나지 않고 작업을 수행합니다.

이름 변경을 요청하면 실제로 이름이 변경됩니다. 호출은 workspace/willRenameFiles를 통해 이루어지므로, 파일이 이동하기 전에 재내보내기 (re-exports), 배럴 파일 (barrel files), 별칭 임포트 (aliased imports)가 모두 업데이트됩니다. 당신의 IDE가 아는 모든 것을 에이전트도 압니다.

C 바이너리가 세그멘테이션 결함 (segfault)을 일으키면: 에이전트가 lldb를 연결하여 잘못된 포인터로 이동하고 프레임 (frame)을 읽습니다. Go 서비스가 멈추면: dlv를 연결하여 고루틴 (goroutines)을 탐색합니다. Python 프로세스가 갇히면: debugpy를 통해 일시 중지, 검사, 평가를 수행합니다. 대부분의 에이전트는 여전히 print 문을 뿌려대는 수준에 머물러 있습니다.

당신의 규칙은 모델이 정해진 스크립트를 벗어날 때까지 휴면 상태로 유지됩니다. 정규 표현식 (regex) 매칭이 토큰 중간에 스트림을 중단시키면, 규칙을 시스템 리마인더 (system reminder)로 주입하고 동일한 지점에서 재시도합니다. 매 턴마다 컨텍스트 비용 (context tax)을 지불하지 않고도 교정 (course-correction)을 받을 수 있습니다. 인젝션 (Injections)은 압축 (compaction) 과정을 거쳐도 살아남으므로, 수정 사항이 유지됩니다.

작업을 워커 (workers)들로 분할하고 타입이 지정된 결과를 돌려받으세요. task는 격리된 워크트리 (worktrees)로 팬아웃 (fans out)되며, 각 워커는 자체적인 툴 표면 (tool surface)을 실행하고, 최종 결과물은 부모 프로세스가 직접 읽을 수 있는 스키마 검증된 (schema-validated) 객체로 반환됩니다. 파싱할 산문도 없고, 형제 작업 간의 병합 충돌 (merge conflicts)도 없으며, 고아 편집 (orphaned edits)도 발생하지 않습니다.

web_search는 14개의 순위가 매겨진 제공업체를 체인 (chains)으로 연결하고, 발견된 모든 URL을 즉시 읽기 단계로 넘깁니다. Arxiv PDF, GitHub 페이지, Stack Overflow 스레드는 앵커 (anchors)가 유지된 구조화된 마크다운 (markdown) 형태로 돌아옵니다. 이는 당신이 로컬 파일에서 사용하는 것과 동일한 툴 표면입니다. 인용하고, 따라가고, 인용하되, 어디에서 왔는지는 절대 놓치지 마세요.

다른 에이전트들은 rg, grep, find, bash를 셸 아웃 (shell out)합니다. 많은 머신에는 이러한 바이너리가 존재하지 않으며, 존재하는 머신에서도 모든 호출은 fork-exec 왕복 비용을 발생시킵니다. omp는 실제 구현체들을 프로세스 내부로 링크합니다. ripgrep, glob, find가 프로세스 내부 (in-process)에서 실행됩니다. brush는 호출 간에도 세션이 유지되는 bash입니다. 동일한 omp 바이너리가 macOS, Linux, Windows에서 실행되며, WSL 브릿지가 필요 없습니다.

모든 이슈를 P0부터 P3까지 순위를 매기고 신뢰도 점수를 부여하여, 변경 사항을 배포할지 여부에 대한 명확한 판결을 받으세요. /review는 브랜치, 단일 커밋 또는 커밋되지 않은 작업을 병렬로 훑는 전용 리뷰어 서브 에이전트 (reviewer subagents)를 생성합니다. 배포를 가로막는 요소부터 먼저 해결하세요. 중요한 것이 산더미 같은 산문 속에 숨겨지는 일은 없을 것입니다.

완벽한 편집, 더 적은 토큰. 모델이 변경하려는 줄을 다시 타이핑하는 대신 앵커(anchors)를 가리키므로, 공백과의 싸움이나 문자열을 찾지 못하는 루프(string-not-found loops)가 더 이상 발생하지 않습니다. 오래된 파일을 편집하여 앵커가 어긋나면, 패치(patch)가 무엇인가를 손상시키기 전에 거부합니다. Grok 4 Fast는 동일한 작업에 대해 출력 토큰을 61% 적게 사용합니다.

다른 하네스(harnesses)들은 gh_issue_view, gh_pr_view, gh_search 등을 덧붙이며, 에이전트가 학습해야 하고 사용자가 디버깅해야 하는 각각의 매개변수(parameters)를 가집니다. 우리는 그것을 건너뛰었습니다. read가 이미 경로(paths)를 처리하며, PR(Pull Requests) 또한 경로입니다. 모델을 가르치기 위한 하나의 인터페이스, 정확성을 유지하기 위한 하나의 접점(surface)만 존재합니다.

에이전트는 세션 사이에도 사용자의 코드베이스를 기억합니다. 실행 도중 retain으로 사실을 기록하고, recall로 이를 다시 불러오며, 각 세션을 다음 세션의 첫 번째 턴에서 로드되는 멘탈 모델(mental model)로 압축합니다. 기본적으로 프로젝트 범위(Project-scoped)로 설정되어 있어, 이 저장소(repo)에 대해 학습한 내용은 이 저장소에만 머뭅니다.

Zed 내부에서 omp를 실행하면 터미널에서 구동하던 것과 동일한 에이전트를 사용할 수 있습니다. 즉, 사용자가 실제로 보고 있는 버퍼(buffer)를 읽고, 에디터의 저장 경로(save path)를 통해 작성하며, 에디터의 터미널에서 셸(shell)을 생성합니다. 파괴적인 도구(Destructive tools)는 한 번만 응답하고 잊어버릴 수 있는 권한 프롬프트(permission prompt)를 위해 일시 중지됩니다. 브리지(bridge), 플러그인(plugin), 동기화해야 할 두 번째 뇌(second brain)가 필요 없습니다.

다른 모든 에이전트는 임포터(importer)를 배포하며 사용자가 변환하기를 기대합니다. omp는 디스크에 이미 존재하는 8가지 형식을 고유한 형태 그대로 읽습니다 — Cursor MDC, Cline .clinerules, Codex AGENTS.md, Copilot applyTo 및 기타 형식들입니다. 마이그레이션 스크립트, YAML-to-TOML 포팅, "지원되는 하위 집합(supported subset)"과 같은 각주도 없습니다. 팀이 지난 분기에 작성한 설정이 오늘 밤에도 그대로 작동합니다.

omp는 git-overview, git-file-diff, git-hunk을 통해 워킹 트리(working tree)를 읽고, 관련 없는 변경 사항을 의존성 순서에 따라 원자적 커밋(atomic commits)으로 분할합니다. 무언가가 작성되기 전에 사이클(cycles)은 거부됩니다. 소스 파일이 테스트, 문서 및 설정보다 높은 점수를 받으므로, 핵심적인 커밋이 가장 중요하게 다뤄집니다. 락 파일(Lock files)은 분석에서 완전히 제외됩니다.

열 가지 내부 스킴(schemes) — pr://, issue://, agent://

, skill://

, rule://

, 그리고 나머지는 에이전트가 이미 호출하는 모든 FS(File System) 형태의 도구 내부에서 투명하게 해결됩니다. read pr://1428read src/foo.ts와 동일한 형태를 반환합니다. search는 디렉토리처럼 diff를 탐색합니다. agent://<id>/findings.0.path는 경로를 통해 서브에이전트(subagent) 출력에서 필드를 추출합니다.

각 병합 충돌(merge conflict)은 하나의 URL이 됩니다. 에이전트는 conflict://N@theirs, @ours, 또는 @base를 작성하며, 파일은 깔끔하게 해결됩니다. 일괄 형식은 conflict://*입니다.

ast_edit는 교체 횟수가 포함된 (제안된) 카드를 반환합니다. 변경 사항은 스테이징(staged)됩니다. 에이전트가 이유와 함께 resolve를 호출하면, TUI는 이를 Accept 카드로 변환하며 디스크 이동이 발생합니다 — 이는 원자적(atomic)으로, 전부 성공하거나 전부 실패합니다.

Stealth 모드가 기본적으로 활성화되어 있어, 페이지들은 헤드리스 봇(headless bot) 대신 일반 사용자를 보게 됩니다. 동일한 API가 Electron 앱을 구동합니다 — Slack을 대상으로 지정하면 에이전트는 웹을 읽는 방식 그대로 사용자의 DM을 읽습니다.

32개의 도구가 readbash와 동일한 네임스페이스(namespace)에 존재합니다. --tools read,edit,bash,…로 활성 세트를 고정할 수 있으며, 나머지는 숨겨져 있지만 인덱싱되어 있습니다 — tools.discoveryMode 설정에 따라 search_tool_bm25가 세션 중간에 이들을 다시 불러옵니다.

파일 및 검색 (Files & search)

read — 파일, 디렉토리, 아카이브, SQLite, PDF, 노트북, URL, 그리고 내부 :// 스킴(schemes)을 하나의 경로를 통해 처리합니다.
write — 파일, 아카이브 항목 또는 SQLite 행을 생성하거나 덮어씁니다.
edit — 콘텐츠 해시 앵커(content-hash anchors)와 만료된 앵커 복구(stale-anchor recovery) 기능을 갖춘 해시라인(hashline) 패치를 제공합니다.
ast_edit — ast-grep를 통해 적용 전 구조적 재작성(structural rewrites)을 미리 보여줍니다.
ast_grep — 50개 이상의 tree-sitter 문법을 통한 구조적 코드 쿼리를 지원합니다.
search — 파일, 글로브(globs), 내부 URL에 대한 정규 표현식(regex) 검색을 지원합니다.
find — 글로브 기반의 경로 조회를 수행합니다; 콘텐츠 일치가 필요한 경우에는 search를 사용하세요.

런타임 (Runtime)

bash — 선택적 PTY 또는 백그라운드 작업 디스패치(background-job dispatch) 기능을 갖춘 워크스페이스 셸(workspace shell)입니다.
eval — 공유된 서문(prelude)과 도구 재진입(tool re-entry) 기능을 갖춘 지속 가능한 Python 및 JavaScript 셀(cells)입니다.
recipe — 감지된 태스크 러너(task runner)인 bun, just, make, cargo로부터 타겟을 호출합니다.
ssh

— 설정된 호스트에 대해 하나의 원격 명령을 실행합니다.

Code intelligence (코드 지능)

lsp

— 진단 (diagnostics), 탐색 (navigation), 심볼 (symbols), 이름 변경 (renames), 코드 액션 (code actions), 원시 요청 (raw requests).

debug

— DAP (Debug Adapter Protocol) 세션을 구동합니다 — 중단점 (breakpoints), 스텝 (stepping), 스레드 (threads), 스택 (stack), 변수 (variables).

Coordination (조정)

task

— 서브에이전트 (subagents)를 병렬로 확산(fan out)시키며, 선택적으로 워크스페이스 격리 (workspace-isolated)가 가능합니다.

irc

— 이 프로세스 내의 라이브 에이전트들 간의 짧은 산문적 대화.

todo_write

— 단계 추적 (phase tracking) 기능과 함께 세션 할 일 목록 (todo list)에 대한 순차적 변이 (mutations).

job

— 백그라운드 작업 (background jobs)을 대기하거나 취소합니다.

ask

— 대화형 실행을 위한 구조화된 후속 질문.

Outside the box (확장 기능)

browser

— 헤드리스 Chromium (headless Chromium) 또는 CDP (Chrome DevTools Protocol)가 연결된 앱을 통한 Puppeteer 탭.

web_search

— 설정된 제공업체 전체에 대해 하나의 쿼리를 실행하여 답변과 인용 (citations)을 반환합니다.

github

— GitHub CLI 작업 — 리포지토리 (repo), PR, 이슈 (issues), 코드 검색 (code search), Actions 실행 모니터링 (run-watch).

generate_image

— Gemini 이미지 모델을 통해 래스터 이미지 (raster images)를 생성하거나 편집합니다.

inspect_image

— 로컬 이미지 파일에 대한 비전 모델 (vision-model) 분석.

render_mermaid

— Mermaid 소스를 터미널 친화적인 ASCII 또는 PNG로 렌더링합니다.

Memory & state (메모리 및 상태)

checkpoint

— 나중에 요약 및 보고 (collapse-and-report)를 위해 대화 상태를 표시합니다.

rewind

— 탐색적 컨텍스트 (exploratory context)를 정리하고 간결한 보고서를 유지합니다.

retain

— 지속적인 사실 (durable facts)을 활성 Hindsight 뱅크에 큐잉 (queue)합니다.

recall

— Hindsight 뱅크에서 원시 메모리 (raw memories)를 검색합니다.

reflect

— Hindsight에 뱅크를 바탕으로 답변을 합성 (synthesize)하도록 요청합니다.

Misc (기타)

calc

— 결정론적 산술 (deterministic arithmetic) — 모델이 개입하지 않습니다.

resolve

— 큐잉된 미리보기 액션 (preview action)을 적용하거나 폐기합니다.

search_tool_bm25

— 숨겨진 도구 인덱스에 대한 BM25 검색; 세션 중간에 상위 일치 항목을 활성화합니다.

설정으로 제어되며, 기본적으로는 꺼져 있습니다: github, calc, inspect_image, render_mermaid, checkpoint, rewind, search_tool_bm25, retain, recall, reflect. 프로젝트별로 한 번만 켜면 적용됩니다.

역할 (Roles)은 의도 (intent)에 따라 작업을 라우팅합니다. 일반적인 턴에는 default, 저렴한 서브에이전트 확산에는 smol, 깊은 추론 (deep reasoning)에는 slow, 계획 모드에는 plan, 커밋에는 commit을 사용합니다.

변경 로그 (changelogs)를 위해 사용합니다. 실행 시 --smol, --slow, 또는 --plan을 사용하여 재정의할 수 있습니다. Ctrl+P를 누르면 활성화된 역할 (role)에 대해 설정된 모델들을 순환하며 전환할 수 있습니다. 세션 중간에 /model 슬래시 명령어를 사용하여 활성 모델을 교체할 수 있습니다.

아래는 인증 태그 (Auth tags)입니다: oauth는 제공업체의 계정으로 로그인하며, plan은 코딩 계획 (coding-plan) 구독을 통해 경로를 지정하고, local은 키 입력이 선택 사항인 로컬 서버에서 실행됩니다.

직접 API 및 게이트웨이. 역할별로 제공업체를 혼합할 수 있습니다.

Anthropic oauth · OpenAI · OpenAI Codex oauth · Google Gemini · Google Antigravity oauth · xAI · Mistral · Groq · Cerebras · Fireworks · Together · Hugging Face · NVIDIA · OpenRouter · Synthetic · Vercel AI Gateway · Cloudflare AI Gateway · Perplexity oauth

구독 경로 지정 (Subscription-routed). /login은 세션을 연결합니다.

Cursor oauth · GitHub Copilot oauth · GitLab Duo · Kimi Code plan · Moonshot · MiniMax Coding Plan plan · MiniMax Coding Plan CN plan · Alibaba Coding Plan plan · Qwen Portal · Z.AI / GLM Coding Plan plan · Xiaomi MiMo · Qianfan · NanoGPT · Venice · Kilo · ZenMux · OpenCode Go · OpenCode Zen

OpenAI 호환 /v1/models. 로컬 인스턴스는 키를 생략합니다.

Ollama local · Ollama Cloud · LM Studio local · llama.cpp local · vLLM local · LiteLLM

커스텀 제공업체 (Custom providers)~/.omp/agent/models.yml에서 openai-completions, openai-responses, openai-codex-responses, azure-openai-responses, anthropic-messages, google-generative-ai, 또는 google-vertex를 지원하는 모든 것을 선언할 수 있습니다.

폴백 체인 (Fallback chains)retry.fallbackChains 아래에 역할별 체인을 설정합니다. 기본 모델이 429 오류를 발생시키거나 할당량 제한 (quota wall)에 도달하면, 다음 항목이 해당 턴의 남은 부분을 처리하며, 쿨다운 (cooldown) 시 복구됩니다.

경로 범위 역할 (Path-scoped roles)modelRoles 아래에 paths:를 중첩하여 더 무거운 default 모델을 고정할 수 있습니다.

글로벌 설정(global config)을 건드리지 않고도 하나의 리포지토리(repo)에서 수행할 수 있습니다. 가장 가까운 경로가 우선합니다 (Closest path wins). 라운드 로빈 자격 증명 (Round-robin credentials)— 제공자(provider)별로 Stack API 키를 쌓아두면, 런타임(runtime)이 세션 어피니티(session affinity) 및 자격 증명별 백오프(per-credential backoff)와 함께 순환하며 사용합니다. 하나의 키가 점심시간 전에 할당량(quota)을 모두 소진할 것 같을 때 유용합니다.

전체 제공자 및 라우팅(routing) 참조는 omp.sh/docs/providers에서 확인할 수 있습니다.

web_search는 별도로 덧붙인 것이 아니라 내장(built-in)되어 있습니다. auto는 14개의 제공자 체인을 탐색합니다. 이미 비용을 지불하고 있는 서비스가 있다면 이름으로 하나를 고정(pin)하십시오. 모든 검색 결과의 이면에는 사이트 인식 추출(site-aware extraction) 기술이 있어 GitHub, 레지스트리(registries), arXiv, Stack Overflow, 그리고 문서(docs)들을 구조화된 마크다운(markdown)으로 변환하며, 앵커(anchors)와 링크 대상(link targets)도 그대로 유지됩니다.

14개의 백엔드(backends)가 있습니다. 하나를 고정하거나, auto가 순서대로 체인을 탐색하게 두십시오.

제공자 (provider)인증 (auth)
auto체인 (chain)
exaEXA_API_KEY (또는 mcp)
braveBRAVE_API_KEY
jinaJINA_API_KEY
kimiMOONSHOT_API_KEY
zaiZAI_API_KEY
anthropicoauth
perplexityPERPLEXITY_API_KEY
geminioauth
codexoauth
tavilyTAVILY_API_KEY
parallelPARALLEL_API_KEY
kagiKAGI_API_KEY
syntheticSYNTHETIC_API_KEY
searxng자체 호스팅 (self-hosted)

에이전트(agent)는 단순한 HTML이 아닌 구조화된 콘텐츠를 전달받습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
2

댓글

0