Oh My Pi (omp): руководство по началу работы
Oh My Pi (сокращение в командной строке — omp) — это AI-агент для программирования с открытым исходным кодом, работающий в терминале; форк Pi от Mario Zechner, созданный Can Bölük и значительно расширенный.
Основная философия Oh My Pi такова:Инструменты не должны просто "подключаться"; они должны быть отполированы до совершенства—Каждый инструмент настроен по бенчмаркам: точность редактирования, скорость поиска и интеграция с LSP — всё стремится быть лучшим в своём классе.
-
Официальный сайт:omp.sh

Что такое omp?
omp — этотерминал-ориентированныйИИ-агент для программирования. Он не зависит ни от какой IDE; он работает как полнофункциональный TUI в вашем терминале, интегрируя LSP, отладчик DAP, двойные исполняющие ядра Python/JavaScript, параллелизм субагентов, память между сессиями и набор из 32 инструментов, настроенных под бенчмарки.
Отличия от других ИИ-инструментов для программирования
| Измерение | Claude Code / похожие инструменты | omp |
|---|---|---|
| Формат редактирования | str_replace (подвержен ошибкам) | Hashline (якоря хэша содержимого, устойчивы к различиям в пробельных символах) |
| Чтение файлов | Полнотекстовый дамп | Сводка структуры + раскрытие по требованию |
| LSP | Отсутствует или ограничено | Полный набор из 14 операций LSP (включая переименование, переход, действия с кодом) |
| Отладчик | Отсутствует | Полный DAP: lldb, dlv, debugpy |
| Субагенты | Отсутствует или ограничено | Параллельные субагенты, изолированные рабочие пространства, типизированные возвращаемые значения |
| Поиск | ripgrep, вызываемый через shell | ripgrep внутри процесса, без fork/exec |
| Коррекция поведения | Полагается на промпт | Правила потока: совпадение по regex → инъекция в середину токена → повтор |
| Память между сессиями | Отсутствует | Банк памяти Hindsight (на уровне проекта) |
| Выполнение кода | Песочница Python | Постоянные двойные ядра Python + Bun, могут вызывать инструменты Agent друг друга |
| Технологический стек | Чистый JS/Python | ~55,000 строк ядра на Rust + TypeScript |
Установка
В этом разделе описаны различные способы установки omp в macOS, Linux и Windows.
macOS / Linux (рекомендуется)
$ curl -fsSL https://omp.sh/install | sh
Скрипт установки автоматически определяет, доступен ли Bun: если Bun (≥ 1.3.14) присутствует, установка сначала выполняется через Bun; в противном случае загружается предварительно собранный бинарный файл.
Homebrew(macOS / Linux)
$ brew install can1357/tap/omp
Bun (рекомендуется, установите последнюю версию)
$ bun install -g @oh-my-pi/pi-coding-agent
Windows(PowerShell)
$ irm https://omp.sh/install.ps1 | iex
Windows поддерживает нативный запуск без WSL.
Фиксация версии (mise)
$ mise use -g github:can1357/oh-my-pi
Проверка установки
$ omp --version
Автодополнение для Shell
omp динамически генерирует скрипты автодополнения из метаданных CLI, поэтому подкоманды, флаги и значения перечислений никогда не расходятся с фактическим CLI:
# zsh(加入 ~/.zshrc) eval "$(omp completions zsh)" # bash(加入 ~/.bashrc) eval "$(omp completions bash)" # fish omp completions fish > ~/.config/fish/completions/omp.fish
Сборка из исходного кода
$ git clone https://github.com/can1357/oh-my-pi $ cd oh-my-pi $ bun setup # 安装 Bun 工作区依赖并构建 Rust N-API 插件 $ bun dev # 启动开发版 CLI # 修改 Rust 代码后,重新构建原生插件 $ bun run build:native
Первоначальная настройка: вход в провайдер моделей
После первого запуска omp используйте /login или /model, чтобы настроить вашего AI-провайдера.
Способ 1: Вход через OAuth в один клик (API-ключ не требуется)
omp поддерживает вход к нескольким провайдерам через OAuth — это самый простой способ:
/login # 打开交互式提供商选择器
Провайдеры, поддерживающие OAuth, включают: Anthropic, OpenAI Codex, Google Antigravity (Gemini), Perplexity, Cursor, GitHub Copilot, GitLab Duo и другие.
Способ 2: API-ключ (прямое подключение к провайдеру)
# 在环境变量里设置(推荐写入 ~/.zshrc или ~/.bashrc) export ANTHROPIC_API_KEY="sk-ant-xxxx" export OPENAI_API_KEY="sk-xxxx" export GOOGLE_API_KEY="xxxx"
Или настройте напрямую в omp:
/model # 打开模型选择器,可以在这里配置 Key
Способ 3: Подписка Coding Plan
Если у вас уже есть подписка на Cursor, GitHub Copilot, Kilo, Kimi Code, MiniMax Coding Plan и т. д., вы можете направлять запросы напрямую в свою подписку:
/login # 选择对应的 Coding Plan 提供商,OAuth 授权
Способ 4: Локальные модели (Ollama / LM Studio)
# 先启动 Ollama $ ollama serve # 在 omp 里选择 Ollama 提供商(key 可选) /model # 选择 Ollama,指向 http://localhost:11434
Путь к конфигурации
Вся конфигурация хранится в каталоге ~/.omp/:
~/.omp/
agent/
settings.yml # 主配置文件
models.yml # 自定义模型/提供商
keybindings.yml # 快捷键绑定
rules/ # 流规则(stream rules)
skills/ # 技能文档
Первый диалог: основы TUI
В этом разделе описывается полноэкранный интерфейс TUI в omp и основные способы взаимодействия.
Запуск omp
# 在项目目录下启动 $ cd ~/your-project $ omp
После запуска omp открывается полноэкранный TUI (интерфейс пользователя терминала). Вызовы инструментов отображаются в виде карточек, а операции редактирования показывают предварительный просмотр перед записью на диск.
Примечание: omp использует протокол клавиатуры Kitty. Рекомендуется запускать его в терминалах, поддерживающих этот протокол (Kitty, Ghostty, WezTerm, iTerm2), для наилучшего взаимодействия.
Базовое взаимодействие
Введите задачу и нажмите Enter, чтобы отправить:
> Analyze the directory structure of this project and tell me what the main modules are.
omp автоматически вызывает такие инструменты, как read и search, для сканирования кодовой базы и возвращает структурированную сводку.
Основные сочетания клавиш
| Клавиша | Функция |
|---|---|
| Enter | Отправить сообщение |
| Ctrl+J / Shift+Enter | Перенос строки внутри сообщения (не отправляет) |
| Ctrl+P | Переключение между доступными моделями для текущей роли |
| Shift+Ctrl+P | Переключение в обратном порядке |
| Ctrl+T | Развернуть/свернуть панель Todo |
| Ctrl+C | Прервать текущую задачу |
| Esc | Отменить ожидающее подтверждение |
| ↑ / ↓ | Просмотреть историю сообщений / опции |
| ? | Вставить ? при пустом вводе; используйте /hotkeys для просмотра списка горячих клавиш |
Однократное выполнение (неинтерактивный режим)
# 一次性执行任务并退出 $ omp -p "列出所有 .ts 文件里未使用的 export" # 管道输入 $ git diff HEAD~1 | omp -p "给这个 diff 写一个精简的 commit message"
Возобновить прошлые сессии
$ omp --resume # 打开会话选择器(Tab 补全可用) $ omp --resume <id> # 直接恢复指定会话
Подробное объяснение основных инструментов
32 инструмента omp объединены в одном пространстве имён; read, search и bash — три наиболее часто используемых в повседневной работе.
read: унифицированный интерфейс чтения
read — один из мощнейших инструментов omp. Он не просто читает файлы — он понимает структуру содержимого:
# 读文件(返回结构化摘要,而非全文 dump) read src/auth/login.ts # 读目录(返回树形结构概览) read src/ # 读 URL(返回结构化 Markdown,锚点保留) read https://docs.anthropic.com/en/api/messages # 读 arxiv 论文 PDF read https://arxiv.org/pdf/2604.10739v1 # 读 SQLite 数据库 read data/app.db # 读 GitHub PR(统一路径接口) read pr://can1357/oh-my-pi/1428 # 读 PR 的 diff read pr://can1357/oh-my-pi/1428/diff/1 # 读 GitHub Issue read issue://can1357/oh-my-pi/142
Ключевое проектное решение: для файлов read возвращает сгенерированное Tree-sitterструктурированную сводку(имена функций, имена классов, важные комментарии) вместо выгрузки всего файла в контекст. Это значительно экономит токены, сохраняя ключевую информацию. Когда требуется подробное содержимое, Агент снова вызывает read, чтобы развернуть определённые разделы.
search:внутрипроцессный ripgrep
# 正则搜索(无 fork/exec,直接在进程内跑)
search "useState\(" src/
# 带文件类型过滤
search "TODO:" --type ts
# 在内部 URL 上搜索(如 PR diff)
search "loginUser" pr://can1357/oh-my-pi/1063/diff
edit: точное редактирование Hashline
См. следующий раздел для подробностей. Это один из самых технически сложных инструментов omp.
bash: Постоянный сеанс оболочки
# 执行命令(bash 会话在调用间保持存活) bash: npm test bash: git log --oneline -10 bash: cargo build --release
Инструмент bash в omp встраивает полную оболочку brush (реализация bash на Rust). Вместо запуска нового процесса каждый раз он поддерживает постоянный сеанс, в котором переменные среды и рабочий каталог сохраняются между вызовами.
eval: Постоянные ядра Python + JavaScript
См. подробности в следующих разделах.
lsp: Полный набор операций LSP
См. подробности в следующих разделах.
todo: Управление задачами
omp имеет встроенный структурированный список задач, поддерживающий фазы и отслеживание статуса задач. Ctrl+T переключает видимость панели Todo.
ask: Структурированные вопросы
Когда Агенту нужно решение пользователя, он вызывает ask, чтобы открыть интерактивный селектор с рекомендуемыми вариантами, вместо того чтобы смешивать вопросы с выводом.
Hashline: более точное редактирование файлов
Это одна из важнейших технических инноваций omp. В этом разделе рассказывается, как работает Hashline, и приводятся результаты его бенчмарков.
Проблемы традиционного str_replace
Большинство других агентов используют формат str_replace, при котором модель выводит пары «старое содержимое» + «новое содержимое». Проблема в следующем:
- Модель склонна ошибаться в пробелах, символах новой строки и кавычках в старом содержимом
- Как только файл изменяется после операции агента, якорь становится недействительным
- Ошибки вызывают множество повторных попыток, расходуя больше токенов
Решение Hashline
Hashline заставляет модельиспользовать хеш содержимого для определения строк, которые нужно изменитьвместо повторного ввода этого содержимого:
# Hashline patch 示例(Agent 内部生成,你不需要手写)
@@{a3f2}
- const result = compute(x)
+ const result = compute(x, options)
@@{b7c1}
- return null
+ return undefined
{a3f2} — это префикс хеша содержимого целевой строки. Если изменения файла приведут к несовпадению хеша, патч будетотклонёнвместо тихого применения не в то место.
Результаты бенчмарков
Измеренные данные из README:
| Модель | Метрика | Эффект |
|---|---|---|
| Grok Code Fast 1 | Успешность редактирования | 6.7% → 68.3% (улучшение в 10 раз) |
| Gemini 3 Flash | в сравнении со str_replace | +5 процентных пунктов, превосходя собственную лучшую реализацию Google |
| Grok 4 Fast | Потребление выходных токенов | Снижено на 61% |
| MiniMax | Процент прохождения | Улучшено 2.1x (веса и промпт полностью не изменялись) |
ast_edit: структурированное переписывание кода
Инструмент редактирования более высокого уровня, чем Hashline; он использует сопоставление с шаблонами ast-grep, за которым следует структурированное переписывание:
# 把所有 console.log(...) 替换掉 ast_edit: console.log($X) → logger.debug($X)
ast_edit сначала возвращаетпредлагаемую (предварительную) карточку; только после того как Агент подтвердит и вызовет resolve, он фактически записывает на диск — атомарная операция, которая либо полностью успешна, либо ничего не меняет.
ast_grep: Структурированный поиск кода
Поддерживает сопоставление синтаксиса Tree-sitter для 50+ языков:
# 找出所有没有 await 的 async 函数调用 ast_grep: "promise.then($X)"
Интеграция LSP: что знает IDE, знает и Агент
omp интегрирует полный клиент LSP (Language Server Protocol), поддерживающий 14 операций.
Настройка сервера LSP
Настройте в .omp/ каталога проекта или через мастер настройки omp:
Примеры
lsp:
servers:
typescript:
command: typescript-language-server
args: ["--stdio"]
rust-analyzer:
command: rust-analyzer
python:
command: pylsp
14 операций LSP
| Действие | Описание |
|---|---|
| diagnostics | Получить ошибки диагностики для файла/рабочей области (как красные волнистые линии в IDE) |
| hover | Получить информацию о типе и комментарии документации для символа |
| определение | Перейти к определению |
| references | Найти все ссылки |
| rename | Переименовать символ (через workspace/willRenameFiles, гарантируя синхронное обновление реэкспортов и barrel-файлов) |
| code_action | Получать и выполнять действия с кодом (например, автоимпорт, исправление ошибок линтера) |
| completion | Получить список автодополнения |
| signature_help | Получить подсказку по сигнатуре функции |
| document_symbols | Получить все символы в файле |
| workspace_symbols | Искать символы по всему рабочему пространству |
| format | Форматировать файл |
| range_format | Форматировать выделенный диапазон |
| implementation | Перейти к реализации интерфейса |
| type_definition | Перейти к определению типа |
Правильный способ переименования
Обычные агенты переименовывают, ища строки и заменяя их одну за другой, что чревато пропусками или ошибочными заменами. omp делает это через протокол LSP:
> 把 formatBytes 函数重命名为 humanizeFileSize
# omp 内部执行:
lsp.references("formatBytes") → 找到 5 处引用,分布在 3 个文件
lsp.rename("formatBytes", "humanizeFileSize") → 通过 LSP workspace/willRenameFiles
search "formatBytes" → 0 matches ✓ 完成
Реэкспорты, barrel-файлы (index.ts) и импорты с псевдонимами корректно обновляются, потому что переименование выполняется через протокол LSP, а не текстовой заменой.
Интеграция с отладчиком (DAP)
omp реализует полноценный клиент DAP (Debug Adapter Protocol), поддерживающий 28 операций отладки.
Поддерживаемые отладчики
| Язык | Отладчик |
|---|---|
| C / C++ / Rust | lldb-dap / codelldb |
| Go | dlv(Delve) |
| Python | debugpy |
| Node.js / TypeScript | встроенный инспектор Node.js |
| Общие | Любой DAP-совместимый отладчик |
Типичный сценарий: определение места сбоя программы на C
> 这个 C 程序一直 segfault,帮我找原因
# omp 内部执行:
debug.launch("lldb-dap", "./build/demo")
debug.continue() # 运行到崩溃
debug.pause()
debug.stackTrace() # 查看调用栈
debug.scopes(frameId) # 查看局部变量
debug.evaluate("*ptr") # 评估表达式
Типичный сценарий: анализ взаимоблокировок сервиса на Go
> Go 服务挂住了,帮我看看
# omp 内部执行:
debug.attach("dlv", pid)
debug.threads() # 列出所有 goroutine
debug.stackTrace(threadId) # 查看挂住的 goroutine 调用栈
Больше не нужно разбрасывать fmt.Println или console.log по всему коду — omp напрямую управляет настоящим отладчиком.
Субагенты: параллельная обработка
Когда задачу можно разделить на взаимно независимые подзадачи, omp использует инструмент task для запуска параллельных субагентов, каждый из которых работает в изолированном рабочем пространстве и возвращает типизированный объект результата.
Механизм изоляции рабочего пространства
omp использует нативные для платформы снимки файловой системы для изоляции рабочих пространств субагентов:
| Операционная система / файловая система | Механизм изоляции |
|---|---|
| macOS(APFS) | Клон APFS (мгновенно, zero copy-on-write) |
| Linux(btrfs/zfs) | reflink |
| Linux(overlayfs) | overlay-монтирование |
| Windows | projfs / rcopy |
Каждый субагент получает независимую копию рабочей области, без взаимных помех и конфликтов слияния.
Примеры использования
> 我有三个微服务:auth-service、api-service、worker-service.
请同时检查它们的依赖有没有已知的安全漏洞,分别出报告。
# omp 内部执行:
task(workers=[
{name: "auth", workdir: "services/auth"},
{name: "api", workdir: "services/api"},
{name: "worker", workdir: "services/worker"}
])
# 三个子 Agent 并行跑,各自输出结构化 JSON:
# { findings: [...], severity: "high", affected: ["[email protected]"] }
# 父 Agent 合并结果,汇总报告
Связь между субагентами (IRC)
Параллельные субагенты могут общаться через инструмент irc, обмениваясь короткими сообщениями для координации работы:
# 子 Agent A:
irc.send("ComponentsExports", {exports: ["Button", "Input"]})
# 子 Agent B 收到消息后调整自己的分析范围
Получение результатов субагентов
Родительский Агент может напрямую обращаться к структурированному выводу субагента, используя синтаксис путей:
# 读取子 Agent findings 的第一条记录的 path 字段 read agent://<subagent-id>/findings.0.path
Hindsight: память между сессиями
Hindsight — это система проектной памяти omp, которая позволяет Агенту сохранять понимание кодовой базы между сессиями.
Как это работает
- retainКогда Агент обнаруживает ценную информацию во время работы, он проактивно вызывает retain, чтобы записать её в банк памяти
- recallПоиск в банке памяти по ключевым словам
- reflectПусть Hindsight синтезирует информацию из банка памяти, чтобы сгенерировать синтетический ответ
- В конце каждой сессии omp автоматически сжимает сессию в «мысленную модель», которая загружается в первом раунде следующей сессии
Область действия
Hindsight — этопроектная— то, что вы узнали в проекте A, не попадёт в проект B. Память хранится в каталоге .omp/ (или шардируется по проектам в ~/.omp/).
Фактические эффекты
При первом использовании omp в проекте вам нужно объяснить структуру проекта. Через некоторое время использования omp сам знает:
- Какой технологический стек использует этот проект
- Распределение ответственности между основными модулями
- Какие рефакторинги были выполнены раньше
- Какие файлы являются "минными полями" (местами, которые часто вызывают проблемы)
Выполнение кода: двойные ядра Python + JavaScript
Большинство инструментов Agent предоставляют только песочницу Python. omp запускает два постоянных ядра, и оба могут обращаться к собственным инструментам Agent.
Ядро Python (eval)
Примеры
import pandas as pd
df = pd.read_csv(tool.read("data/sales.csv")) # Используйте инструмент read Agent для загрузки файлов
print(df.describe())
result = tool.search("revenue", "src/") # Поиск в кодовой базе
Ядро JavaScript (Bun) (eval)
Примеры
const data = tool.read("data/sales.csv") // Также можно вызывать инструменты Agent
const top = data.split('\n').slice(1)
.map(line => line.split(','))
.сортировка((a, b) => +b[2] - +a[2])
.slice(0, 5)
console.table(top)
Два ядра совместно используют Prelude
Два ядра совместно используют prelude (предзагруженный контекст). Вы можете обрабатывать данные на Python, затем строить графики на JS — весь процесс представляет собой непрерывную сессию eval, не выходя из интерфейса инструмента.
Stream Rules: коррекция поведения в реальном времени
Это уникальный механизм коррекции поведения omp в реальном времени, решающий проблему «непослушания модели».
Проблемы традиционных подходов
Запись всех правил в System Prompt обходится в полное количество токенов в каждом диалоге, и модель всё равно может их игнорировать.
Как работают Stream Rules
Правиланеактивныдо появления условия срабатывания:
- Регулярные выражения отслеживают потоковый вывод модели
- При совпадении (на уровне середины токена) немедленно прервать текущий поток
- Внедрить содержимое правила в контекст как системное напоминание
- Сгенерировать заново с той же позиции
- Внедрённые правила переживают сжатие контекста
Примеры
# ~/.omp/agent/rules/no-box-leak.yml
name: box-leak
pattern: "Box::leak"
reminder: |
Не используйте Box::leak в путях кода для продакшена.
Утечки памяти приведут к OOM сервиса при высокой нагрузке.
Используйте Arc<str> или другие подходы со счётчиком ссылок вместо этого.
Эффект: когда модель пишет Box::leak, поток прерывается, правило внедряется, и модель автоматически исправляет на Arc
Быстро создавайте правила с помощью /omfg
omp предоставляет вспомогательную команду, которая позволяет описывать правила на естественном языке, и она генерирует регулярное выражение и файл правил:
/omfg 不要在任何地方用 any 类型,要求用具体的类型定义或 unknown
omp генерирует, проверяет и сохраняет правило; оно вступает в силу в следующий раз.
Маршрутизация моделей: 40+ провайдеров, четыре роли
omp использует роли, а не названия моделей, для распределения работы, достигая «нужная модель для нужной задачи».
Четыре роли моделей
| Роль | Назначение | Флаг CLI | Переменная окружения |
|---|---|---|---|
| default | Общий диалог и генерация кода | Default | — |
| smol | Дешёвое исследование субагентами | --smol | PI_SMOL_MODEL |
| slow | Задачи глубокого рассуждения | --slow | PI_SLOW_MODEL |
| план | Режим планирования | --plan | PI_PLAN_MODEL |
# 启动时指定角色覆盖 $ omp --smol # 整个会话使用 smol 模型(低成本) $ omp --slow # 使用慢速推理模型(高质量) $ omp --plan # 使用计划专用模型
Переключение моделей в сессии
/model # 打开交互式模型选择器 /model claude-sonnet-4.6 # 切换到指定模型 Ctrl+P # 循环切换当前角色的可用模型
Пользовательские провайдеры (~/.omp/agent/models.yml)
Примеры
providers:
my-company-llm:
type: openai-completions
baseUrl: https://llm.internal.company.com/v1
apiKey: "${MY_LLM_KEY}"
models:
- id: gpt-4o
name: Внутренний GPT-4o
Цепочки переключения при сбое
Примеры
retry:
fallbackChains:
default:
- anthropic/claude-sonnet-4.6
- openai/gpt-4o
- google/gemini-2.0-flash
Привязка модели на уровне пути
Примеры
models:
enabledModels:
- path: ~/projects/side-project
models: ["deepseek/deepseek-coder"]
Ротация ключей (балансировка нагрузки между несколькими ключами)
Примеры
providers:
anthropic:
apiKeys:
- "${ANTHROPIC_KEY_1}"
- "${ANTHROPIC_KEY_2}"
- "${ANTHROPIC_KEY_3}"
# Автоматическая ротация; переключение на следующий ключ после превышения лимита одним ключом
Краткая справка по основным слэш-командам
Введите / в поле ввода чата, чтобы вызвать автодополнение команд.
| Команда | Функция |
|---|---|
| /model | Открыть выбор модели |
| /login | Войти в провайдер (OAuth) |
| /resume | Возобновить сеанс из истории |
| /review | Ревью кода для текущей ветки / указанного коммита / незакоммиченных изменений |
| /commit | Умное разделение коммитов |
| /omfg | Создать stream-правила на естественном языке |
| /debug | Открыть инструменты отладки, отчётов и профилирования |
| /hotkeys | Просмотреть все сочетания клавиш |
| /reload-plugins | Горячая перезагрузка плагинов |
| /compact | Вручную сжать контекст (экономия токенов) |
| /? | Показать справку |
/review: Ревью кода с приоритетами
# 审查当前分支 vs main /review # 审查指定 commit /review abc1234 # 审查未提交的改动 /review --unstaged
omp запускает выделенных субагентов-ревьюеров для параллельного сканирования. Каждое замечание сортируется по приоритету P0-P3 с оценкой уверенности. P0 = блокирует релиз, P3 = необязательное улучшение.
/commit: Разделение на атомарные коммиты
$ omp commit
omp читает всё рабочее дерево (git_overview + git_file_diff + git_hunk), разделяя несвязанные изменения на независимые атомарные коммиты, упорядоченные по зависимостям:
- Коммиты с исходным кодом идут перед тестами, документацией и конфигурацией
- Изменения с зависимостями не группируются неправильно
- Циклические зависимости отклоняются; ничего не записывается
- Файлы блокировки, такие как package-lock.json и Cargo.lock, исключаются из анализа
Плагины и расширения
Плагины omp — это модули TypeScript, использующие точно такой же API, как встроенные инструменты, без зарезервированных интерфейсов.
Установка плагинов
$ omp install <plugin-name> # 从 npm 安装 $ omp install github:user/repo # 从 GitHub 安装 $ omp install ./path/to/plugin # 从本地路径安装
Создание плагинов
Вы можете просто поручить omp написать это за вас:
> 给我创建一个插件,添加 /deploy 命令, 自动运行测试、构建、然后 SSH 上传到生产服务器
omp генерирует код плагина; он вступает в силу сразу после того, как вы выполните /reload-plugins.
Горячая перезагрузка
Нет необходимости перезапускать omp после изменения кода плагина:
/reload-plugins
ACP: Использование omp в редакторе Zed
$ omp acp
Подключите omp к редактору Zed через Agent Client Protocol. omp читает буфер, который вы редактируете, записывает файлы через путь сохранения редактора, запускает оболочку в терминале редактора, а деструктивные операции вызывают диалог разрешения.
Миграция из других инструментов
Важное преимущество omp —чтение из коробкиФайлы конфигурации, уже созданные другими инструментами, читаются напрямую, скрипты миграции не требуются:
| Инструмент | Файл конфигурации | Как omp его читает |
|---|---|---|
| Cursor | .cursor/rules/*.mdc | Автоматически наследуется |
| Claude Code | .claude/settings.json、CLAUDE.md | Автоматически наследуется |
| Cline | .clinerules | Автоматически наследуется |
| GitHub Copilot | .github/copilot/instructions.md(applyTo) | Автоматически наследуется |
| Codex | AGENTS.md | Автоматически наследуется |
| Windsurf | .windsurfrules | Автоматически наследуется |
| Gemini CLI | .gemini/ configuration | Автоматически наследуется |
При первом запуске omp сканирует рабочий каталог и автоматически загружает все обнаруженные форматы.
Ресурсы и сообщество
- Веб-сайт:omp.sh
- GitHub:github.com/can1357/oh-my-pi(MIT с открытым исходным кодом)
- Документация по инструментам:omp.sh/docs/tools
- Документация по провайдерам:omp.sh/docs/providers
- Документация SDK:omp.sh/docs/sdk
- Журнал изменений:github.com/can1357/oh-my-pi/CHANGELOG.md
- npm:@oh-my-pi/pi-coding-agent
- Discord:discord.gg/4NMW9cdXZa