Oh My Pi (omp): руководство по началу работы

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

Основная философия Oh My Pi такова:Инструменты не должны просто "подключаться"; они должны быть отполированы до совершенства—Каждый инструмент настроен по бенчмаркам: точность редактирования, скорость поиска и интеграция с LSP — всё стремится быть лучшим в своём классе.


Что такое omp?

omp — этотерминал-ориентированныйИИ-агент для программирования. Он не зависит ни от какой IDE; он работает как полнофункциональный TUI в вашем терминале, интегрируя LSP, отладчик DAP, двойные исполняющие ядра Python/JavaScript, параллелизм субагентов, память между сессиями и набор из 32 инструментов, настроенных под бенчмарки.

Отличия от других ИИ-инструментов для программирования

ИзмерениеClaude Code / похожие инструментыomp
Формат редактированияstr_replace (подвержен ошибкам)Hashline (якоря хэша содержимого, устойчивы к различиям в пробельных символах)
Чтение файловПолнотекстовый дампСводка структуры + раскрытие по требованию
LSPОтсутствует или ограниченоПолный набор из 14 операций LSP (включая переименование, переход, действия с кодом)
ОтладчикОтсутствуетПолный DAP: lldb, dlv, debugpy
СубагентыОтсутствует или ограниченоПараллельные субагенты, изолированные рабочие пространства, типизированные возвращаемые значения
Поискripgrep, вызываемый через shellripgrep внутри процесса, без 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:

Примеры

# ~/.omp/agent/settings.yml (пример фрагмента)
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++ / Rustlldb-dap / codelldb
Godlv(Delve)
Pythondebugpy
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-монтирование
Windowsprojfs / 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)

Примеры

# В инструменте eval Python может вызывать tool.* из omp
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)

Примеры

// В рамках одной сессии eval можно переключиться на ядро JS
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

Правиланеактивныдо появления условия срабатывания:

  1. Регулярные выражения отслеживают потоковый вывод модели
  2. При совпадении (на уровне середины токена) немедленно прервать текущий поток
  3. Внедрить содержимое правила в контекст как системное напоминание
  4. Сгенерировать заново с той же позиции
  5. Внедрённые правила переживают сжатие контекста

Примеры

# Пример: запретить использование Box::leak
# ~/.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Дешёвое исследование субагентами--smolPI_SMOL_MODEL
slowЗадачи глубокого рассуждения--slowPI_SLOW_MODEL
планРежим планирования--planPI_PLAN_MODEL
# 启动时指定角色覆盖
$ omp --smol    # 整个会话使用 smol 模型(低成本)
$ omp --slow    # 使用慢速推理模型(高质量)
$ omp --plan    # 使用计划专用模型

Переключение моделей в сессии

/model                     # 打开交互式模型选择器
/model claude-sonnet-4.6   # 切换到指定模型
Ctrl+P                     # 循环切换当前角色的可用模型

Пользовательские провайдеры (~/.omp/agent/models.yml)

Примеры

span style="color: #0053A6;">
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

Цепочки переключения при сбое

Примеры

# Когда Claude достигает ограничения частоты запросов 429, автоматически переключаться на GPT
retry
:
  fallbackChains
:
    default
:
     - anthropic/claude-sonnet-4.6
      - openai/gpt-4o
      - google/gemini-2.0-flash

Привязка модели на уровне пути

Примеры

# Этот конкретный репозиторий принудительно использует deepseek (низкая стоимость), не влияя на глобальную конфигурацию
models
:
  enabledModels
:
    - path
: ~/projects/side-project
      models
: ["deepseek/deepseek-coder"]

Ротация ключей (балансировка нагрузки между несколькими ключами)

Примеры

span style="color: #0053A6;">
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 &lt;plugin-name&gt;          # 从 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)Автоматически наследуется
CodexAGENTS.mdАвтоматически наследуется
Windsurf.windsurfrulesАвтоматически наследуется
Gemini CLI.gemini/ configurationАвтоматически наследуется

При первом запуске omp сканирует рабочий каталог и автоматически загружает все обнаруженные форматы.


Ресурсы и сообщество

Другие расширения