oh-my-pi (omp) — кодинг-агент с «проводкой» от IDE и встроенными инструментами

· 2 мин чтения
coding-agent agent-harness cli lsp open-source tui
📂 Исходный код на GitHub

omp — кодинг-агент с IDE на борту: 60+ провайдеров, 31 встроенный инструмент, LSP и DAP-операции, нативный Rust-биндинг без fork/exec. Форк Pi от Mario Zechner.

oh-my-pi (omp) — кодинг-агент с «проводкой» от IDE и встроенными инструментами

omp (Oh My Pi) — кодинг-агент от Can Bölük, форк Pi с философией «batteries included». Вместо минималистичного инструментария он поставляет максимально возможную поверхность агента «из коробки»: более 60 провайдеров, 31 встроенный инструмент, 14 LSP-операций, 28 DAP-операций и около 80 тыс. строк Rust-ядра. Главная идея — вплести в агента то, что знает IDE: язык-сервер, отладчик, поиск и шелл, не выходя из терминала.

Распространяется как один бинарник, собираемый для macOS, Linux и Windows. Работает в TUI, одной командой (omp -p), через RPC по stdio или по протоколу ACP внутри редактора.

Установка

У проекта несколько способов установки — под любую платформу:

# macOS · Linux
curl -fsSL https://omp.sh/install | sh

# Homebrew
brew install can1357/tap/omp

# Bun (рекомендуется)
bun install -g @oh-my-pi/pi-coding-agent

# Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex

Есть и Nix-флейк с модулями для Home Manager, и поддержка pinning-версий через mise. Требуется Bun ≥ 1.3.14. omp сам генерирует completion-скрипты для bash, zsh и fish из живых метаданных CLI, поэтому они никогда не расходятся с реальными командами.

Что отличает omp

LSP в каждом изменении

Попросите переименовать — и получите настоящее переименование. Запрос идёт через workspace/willRenameFiles, поэтому re-export'ы, barrel-файлы и алиасные импорты обновляются до того, как файл передвинется. «Всё, что знает ваша IDE, знает агент».

Настоящий отладчик

C-бинарник падает — агент подключает lldb, доходит до битого указателя и читает кадр. Go-сервис завис — прикрепляется dlv и проходится по горутинам. Python-процесс застрял — debugpy, пауза, инспекция, вычисление. Против этого «агенты, посыпающие код принтами».

Субагенты первого класса

Команда task разносит работу по изолированным worktree, у каждого воркера своя поверхность инструментов, а итог — schema-валидированный объект, который родитель читает напрямую: без разбора прозы, конфликтов между сиблингами и осиротевших правок. Панель Agent Hub (Alt+A) показывает активность и расходы каждого субагента.

Рецензент-модель

К роли advisor можно привязать вторую модель, которая читает каждый ход основного агента и вставляет заметки — тихую ремарку, опасение или жёсткий блокер. Она живёт на своём контексте и своей модели, поэтому замечает то, что исполнитель пробежал мимо.

Нативная производительность

omp не вызывает rg, grep и bash как внешние бинарники: ripgrep, glob и find слинкованы прямо в процесс, а brush — это встроенный bash с сессиями, переживающими вызовы, и 58 утилитами (ls, sed, sort, xargs, даже jq), портированными в крейт builtins. Ноль fork/exec на горячем пути — один и тот же бинарник работает на macOS, Linux и Windows без WSL-моста.

Hashline — правки по хэшу содержимого

Модель указывает на якоря вместо того, чтобы перепечатывать строки, которые хочет изменить: исчезают войны за пробелы и циклы «string not found». Если файл устарел и якоря разошлись — патч отклоняется до того, как что-то испортит. Grok 4 Fast тратит на 61% меньше выходных токенов на ту же работу.

Встроенные инструменты

Ядро инструментов живёт в одном пространстве имён с read и bash. Основные:

Файлы и поискread (файлы, каталоги, архивы, SQLite, PDF, ноутбуки, URL и внутренние ://-схемы одним путём), write, edit (hashline-патчи), ast_edit (структурные перезаписи через ast-grep), ast_grep (структурные запросы по 50+ tree-sitter-грамматикам), grep, glob.

Рантаймbash (рабочий шелл с 46 встроенными coreutils), eval (постоянные Python- и JavaScript-ячейки с общим прелюдом и повторным входом в инструменты).

Интеллект кодаlsp, debug (DAP-сессия: брейкпоинты, шаги, потоки, стек, переменные), security_scan.

Координацияtask, hub, todo, ask.

Рабочий стол и вебbrowser (Puppeteer-вкладки над headless Chromium или вашим Chrome), computer (окна, скриншоты, нативный ввод, AX-дерево, буфер обмена), web_search, github, generate_image, tts.

Память и навыкиretain, recall, reflect, learn, manage_skill (изолированный managed-навык), checkpoint, rewind.

Часть инструментов (github, security_scan, generate_image, tts, память) по умолчанию выключена и включается настройкой.

Всё уже в коробке

  • Веб-поиск через 23 бэкенда с сайт-специфичной экстракцией GitHub, реестров, arXiv, Stack Overflow и документации в структурированный markdown. Vuln-запросы отвечают данными вендора (NVD, OSV, CISA KEV), а не пересказами блогов.
  • GitHub как файловая системаread pr://1428 возвращает ту же форму, что и read src/foo.ts; grep ходит по диффу как по каталогу. Внутренние схемы (pr://, issue://, agent://, skill://, ssh://) разрешаются в любом FS-инструменте.
  • Разрешение конфликтов — каждый merge-конфликт становится одним URL: агент пишет @theirs, @ours или @base в conflict://N, и файл разрешается чисто.
  • omp commit — читает рабочее дерево через git_overview, git_file_diff, git_hunk и разбивает несвязанные изменения на атомарные коммиты, упорядоченные по зависимостям. Циклы отклоняются до записи; исходники получают приоритет над тестами, доками и конфигами.
  • Память, курируемая агентом — пишет факты через retain, ловит уроки через learn, достаёт через recall, сжимает сессию в ментальную модель для следующей. Движок выбирается через memory.backend (local, Hindsight, Mnemopi), по умолчанию контекст ограничен проектом.
  • Наследование чужих конфигов — omp читает восемь форматов уже лежащих на диске в их родном виде: Cursor MDC, Cline .clinerules, Codex AGENTS.md, Copilot applyTo и остальные. Никакой миграции и «поддерживаемого подмножества».
  • Коллаборация/collab выводит сессию на реле и отдаёт ссылку и QR. Напарник подключается через omp join или просто в браузере. Кадры запечатаны на клиенте — реле не видит ключей.

Провайдеры и роутинг

Девять ролей распределяют работу по намерению: default, smol (дешёвый фанаут субагентов), slow (глубокое рассуждение), plan, commit, плюс vision, task, advisor, tiny. Поддерживаются прямые API (Anthropic, OpenAI, Codex, Gemini, xAI, DeepSeek, Mistral, Groq и десятки других), кодинг-планы подписки (Cursor, GitHub Copilot, GitLab Duo, Devin, Kimi Code и др.) и локальные инстансы через OpenAI-совместимый API (Ollama, LM Studio, llama.cpp, vLLM, LiteLLM).

Четыре полезных рычага роутинга:

  • Кастомные провайдеры — всё, что говорит на openai-completions, openai-responses, anthropic-messages, google-gemini-cli и прочих, объявляется в ~/.omp/agent/models.yml.
  • Цепочки фолбэковretry.fallbackChains подхватывает ход, когда первичный провайдер отдаёт 429 или упирается в квоту.
  • Модели по путямenabledModels и disabledProviders можно ограничить префиксом path:, закрепив другой набор моделей на одном репозитории.
  • Круговорот ключей — стек API-ключей на провайдера с ротацией и per-credential backoff'ом.

SDK, RPC и ACP

Один движок, четыре точки входа:

  • Интерактив — TUI по умолчанию: вызовы инструментов рендерятся карточками, правки предпросматриваются, двусмысленность уходит в ask (структурированный выбор).
  • SDK — пакет @oh-my-pi/pi-coding-agent для Node/TypeScript: ModelRegistry, SessionManager, createAgentSession и типизованные события сессии.
  • RPComp --mode rpc отдаёт NDJSON-команды и event-фреймы для немедленного внедрения в свою программу.
  • ACPomp acp говорит с редакторами по Agent Client Protocol: bash идёт в terminal/create + terminal/output, read — в fs/read_text_file, деструктивные записи гейтятся session/request_permission.

Философия

omp — это форк pi-mono от Mario Zechner с «batteries-included» рабочим процессом. Ключевые идеи: терминальный UX для настоящей работы с кодом, практичные встроенные инструменты (тулы, сессии, ветвление, субагенты, расширяемость) и настраиваемое, а не спрятанное, продвинутое поведение. Расширение — это обычный TypeScript-модуль с тем же инструментальным API, реестром слэш-команд и TUI-примитивами, что и встроенные. На первом запуске omp наследует правила, навыки и MCP-серверы из .claude, .cursor, .windsurf, .gemini, .codex, .cline, .github/copilot и .vscode — без скрипта миграции. Весь проект — TypeScript, MIT, на GitHub.

Три магических слова включают специализированное поведение хода: ultrathink (многошаговое рассуждение), orchestrate (параллельные субагенты с проверкой фаз) и workflowz (детерминированный многосубагентный воркфлоу).

Лицензия MIT. Распространяется для macOS, Linux и Windows (x64 и ARM64), x64 поставляется в двух вариантах — AVX2 и базовом.

Источник: https://github.com/can1357/oh-my-pi