Oh My Pi (omp) Erste Schritte Tutorial

Oh My Pi (Befehlszeilenabkürzung omp) ist ein Open-Source-KI-Coding-Agent, der im Terminal läuft, von Can Bölük aus Mario Zechners Pi geforkt und stark erweitert.

Die Kernphilosophie von Oh My Pi ist:Tools sollten nicht nur "verbinden"; sie sollten bis zur Perfektion poliert sein—Jedes Tool ist auf Benchmarks abgestimmt, wobei Edit-Trefferrate, Suchgeschwindigkeit und LSP-Integration alle danach streben, in ihrer Klasse die besten zu sein.


Was ist omp?

omp ist einterminal-firstKI-Coding-Agent. Es hängt nicht von einer IDE ab; es läuft als vollwertige TUI in deinem Terminal und integriert LSP, DAP-Debugger, duale Python/JavaScript-Ausführungskerne, Subagent-Parallelität, sitzungsübergreifenden Speicher und eine Reihe von 32 benchmark-abgestimmten Tools.

Unterschiede zu anderen KI-Coding-Tools

DimensionClaude Code / ähnliche Toolsomp
Bearbeitungsformatstr_replace (fehleranfällig)Hashline (Inhalts-Hash-Anker, resistent gegen Whitespace-Unterschiede)
DateilesenVolltext-DumpStrukturzusammenfassung + bedarfsgesteuerte Erweiterung
LSPKeine oder begrenztVollständige 14 LSP-Operationen (einschließlich Umbenennen, Springen, Code-Aktionen)
DebuggerKeineVollständiges DAP: lldb, dlv, debugpy
SubagentenKeine oder begrenztParallele Subagenten, isolierte Workspaces, typisierte Rückgabewerte
SucheShell-aufgerufenes ripgrepIn-Process-ripgrep, kein fork/exec
VerhaltenskorrekturVerlässt sich auf den PromptStream-Regeln: Regex-Treffer → Injektion mitten im Token → Wiederholung
Sitzungsübergreifendes GedächtnisKeineHindsight-Speicherbank (Projektebene)
CodeausführungPython-SandboxPersistente Python- + Bun-Dual-Kernel, können gegenseitig ihre Agent-Tools aufrufen
Tech-StackReines JS/Python~55,000 Zeilen Rust-Kern + TypeScript

Installation

Dieser Abschnitt behandelt die verschiedenen Möglichkeiten, omp unter macOS, Linux und Windows zu installieren.

macOS / Linux (Empfohlen)

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

Das Installationsskript erkennt automatisch, ob Bun verfügbar ist: Wenn Bun (≥ 1.3.14) vorhanden ist, wird zuerst über Bun installiert; andernfalls wird ein vorkompiliertes Binary heruntergeladen.

Homebrew (macOS / Linux)

$ brew install can1357/tap/omp

Bun (Empfohlen, neueste Version beziehen)

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

Windows(PowerShell)

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

Windows unterstützt die native Ausführung ohne WSL.

Version-Pinning (mise)

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

Installation überprüfen

$ omp --version

Shell-Autovervollständigung

omp generiert Vervollständigungsskripte dynamisch aus CLI-Metadaten, sodass Unterbefehle, Flags und Enum-Werte nie von der tatsächlichen CLI abweichen:

# zsh(加入 ~/.zshrc)
eval "$(omp completions zsh)"

# bash(加入 ~/.bashrc)
eval "$(omp completions bash)"

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

Aus dem Quellcode erstellen

$ 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

Erstkonfiguration: Beim Modellanbieter anmelden

Nach dem ersten Ausführen von omp verwenden Sie /login oder /model, um Ihren KI-Anbieter zu konfigurieren.

Methode 1: OAuth-Ein-Klick-Anmeldung (kein API-Schlüssel erforderlich)

omp unterstützt die Anmeldung bei mehreren Anbietern über OAuth – der einfachste Weg:

/login                  # 打开交互式提供商选择器

Anbieter, die OAuth unterstützen, sind unter anderem: Anthropic, OpenAI Codex, Google Antigravity (Gemini), Perplexity, Cursor, GitHub Copilot, GitLab Duo und mehr.

Methode 2: API-Schlüssel (direkte Anbieterverbindung)

# 在环境变量里设置(推荐写入 ~/.zshrc oder  ~/.bashrc)
export ANTHROPIC_API_KEY="sk-ant-xxxx"
export OPENAI_API_KEY="sk-xxxx"
export GOOGLE_API_KEY="xxxx"

Oder direkt in omp konfigurieren:

/model      # 打开模型选择器,可以在这里配置 Key

Methode 3: Coding-Plan-Abonnement

Wenn du bereits Cursor, GitHub Copilot, Kilo, Kimi Code, MiniMax Coding Plan usw. abonniert hast, kannst du direkt auf dein Abonnement zugreifen:

/login     # 选择对应的 Coding Plan 提供商,OAuth 授权

Methode 4: Lokale Modelle (Ollama / LM Studio)

# 先启动 Ollama
$ ollama serve

# 在 omp 里选择 Ollama 提供商(key 可选)
/model     # 选择 Ollama,指向 http://localhost:11434

Konfigurationspfad

Die gesamte Konfiguration wird im Verzeichnis ~/.omp/ gespeichert:

~/.omp/
  agent/
    settings.yml      # 主配置文件
    models.yml        # 自定义模型/提供商
    keybindings.yml   # 快捷键绑定
    rules/            # 流规则(stream rules)
    skills/           # 技能文档

Erstes Gespräch: TUI-Grundlagen

Dieser Abschnitt stellt die Vollbild-TUI-Oberfläche von omp und grundlegende Interaktionsmethoden vor.

omp starten

# 在项目目录下启动
$ cd ~/your-project
$ omp

Nach dem Start wechselt omp in die Vollbild-TUI (Terminal-Benutzeroberfläche). Tool-Aufrufe werden als Karten dargestellt, und Bearbeitungsvorgänge zeigen eine Vorschau, bevor sie auf die Festplatte geschrieben werden.

Hinweis: omp verwendet das Kitty-Tastaturprotokoll. Es wird empfohlen, es in Terminals auszuführen, die dieses Protokoll unterstützen (Kitty, Ghostty, WezTerm, iTerm2), um die beste Erfahrung zu erzielen.

Grundlegende Interaktion

Geben Sie Ihre Aufgabe ein und drücken Sie die Eingabetaste zum Senden:

> Analyze the directory structure of this project and tell me what the main modules are.

omp ruft automatisch Tools wie read und search auf, um die Codebasis zu durchsuchen, und gibt eine strukturierte Zusammenfassung zurück.

Häufige Tastenbelegungen

TasteFunktion
EnterNachricht senden
Ctrl+J / Shift+EnterZeilenumbruch innerhalb der Nachricht (wird nicht gesendet)
Ctrl+PDurch die verfügbaren Modelle für die aktuelle Rolle wechseln
Shift+Ctrl+PIn umgekehrter Reihenfolge wechseln
Ctrl+TTodo-Panel ein-/ausklappen
Ctrl+CAktuelle Aufgabe unterbrechen
EscAusstehende Bestätigung abbrechen
↑ / ↓Historische Nachrichten / Optionen durchsuchen
?? bei leerer Eingabe einfügen; /hotkeys verwenden, um die Liste der Tastenkürzel anzuzeigen

Einzelausführung (nicht-interaktiver Modus)

# 一次性执行任务并退出
$ omp -p "列出所有 .ts 文件里未使用的 export"

# 管道输入
$ git diff HEAD~1 | omp -p "给这个 diff 写一个精简的 commit message"

Historische Sitzungen fortsetzen

$ omp --resume          # 打开会话选择器(Tab 补全可用)
$ omp --resume <id>     # 直接恢复指定会话

Kern-Tools im Detail erklärt

Die 32 Tools von omp sind unter einem Namespace vereint; read, search und bash sind die drei am häufigsten im Arbeitsalltag verwendeten.

read: Einheitliche Leseschnittstelle

read ist eines von omps Killer-Tools. Es liest nicht nur Dateien – es versteht die Inhaltsstruktur:

# 读文件(返回结构化摘要,而非全文 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

Schlüsseldesign: Für Dateien gibt read eine von Tree-sitter generiertestrukturierte Zusammenfassung(Funktionsnamen, Klassennamen, wichtige Kommentare) zurück, anstatt die gesamte Datei in den Kontext zu laden. Dies spart stark Tokens, während wichtige Informationen erhalten bleiben. Wenn detaillierter Inhalt benötigt wird, ruft der Agent read erneut auf, um bestimmte Abschnitte zu erweitern.

search: In-Process-ripgrep

# 正则搜索(无 fork/exec,直接在进程内跑)
search "useState\(" src/

# 带文件类型过滤
search "TODO:" --type ts

# 在内部 URL 上搜索(如 PR diff)
search "loginUser" pr://can1357/oh-my-pi/1063/diff

edit: Präzises Bearbeiten mit Hashline

Siehe den nächsten Abschnitt für Details. Dies ist eines der technisch anspruchsvollsten Tools von omp.

bash: Persistente Shell-Sitzung

# 执行命令(bash 会话在调用间保持存活)
bash: npm test
bash: git log --oneline -10
bash: cargo build --release

Das bash-Tool von omp bindet die vollständige brush-Shell ein (eine Rust-Implementierung von bash). Anstatt bei jedem Aufruf einen neuen Prozess zu forken, verwaltet es eine persistente Sitzung, in der Umgebungsvariablen und Arbeitsverzeichnis über Aufrufe hinweg erhalten bleiben.

eval: Persistente Kernel für Python + JavaScript

Siehe spätere Abschnitte für Details.

lsp: Vollständige LSP-Operationen

Siehe spätere Abschnitte für Details.

todo: Aufgabenverwaltung

omp verfügt über eine integrierte strukturierte Aufgabenliste, die Phasen und Aufgabenstatusverfolgung unterstützt. Ctrl+T schaltet die Sichtbarkeit des Todo-Panels um.

ask: Strukturierte Fragen

Wenn der Agent eine Benutzerentscheidung benötigt, ruft er ask auf, um eine interaktive Auswahl mit empfohlenen Optionen einzublenden, anstatt Fragen in die Ausgabe zu mischen.


Hashline: Präzisere Dateibearbeitung

Dies ist eine der wichtigsten technischen Innovationen von omp. Dieser Abschnitt stellt die Funktionsweise von Hashline und seine Benchmark-Ergebnisse vor.

Probleme mit herkömmlichem str_replace

Die meisten anderen Agenten verwenden das str_replace-Format, damit das Modell "alten Inhalt" + "neuen Inhalt"-Paare ausgibt. Das Problem ist:

  • Das Modell neigt dazu, Leerzeichen, Zeilenumbrüche und Anführungszeichen im alten Inhalt falsch wiederzugeben
  • Sobald die Datei nach der Operation des Agenten geändert wird, wird der Anker ungültig
  • Fehler verursachen viele Wiederholungsversuche, wodurch mehr Tokens verbraucht werden

Hashlines Lösung

Hashline lässt das Modelleinen Inhalts-Hash verwenden, um die zu ändernden Zeilen zu identifizierenstatt diesen Inhalt erneut einzugeben:

# Hashline patch 示例(Agent 内部生成,你不需要手写)
@@{a3f2}
-  const result = compute(x)
+  const result = compute(x, options)
@@{b7c1}
-  return null
+  return undefined

{a3f2} ist das Hash-Präfix des Inhalts der Zielzeile. Wenn Dateiänderungen dazu führen, dass der Hash nicht mehr übereinstimmt, wird der Patchabgelehnt, anstatt stillschweigend an der falschen Stelle angewendet zu werden.

Benchmark-Ergebnisse

Gemessene Daten aus der README:

ModellMetrikWirkung
Grok Code Fast 1Erfolgsrate bei Bearbeitungen6.7% → 68.3% (10x Verbesserung)
Gemini 3 Flashvs. str_replace+5 Prozentpunkte, womit Googles eigene beste Implementierung übertroffen wird
Grok 4 FastAusgabe-Token-VerbrauchUm 61% reduziert
MiniMaxBestehensrateUm 2.1x verbessert (Gewichte und Prompt vollständig unverändert)

ast_edit: Strukturierte Code-Umschreibung

Ein höherstufiges Bearbeitungswerkzeug im Vergleich zu Hashline; es verwendet ast-grep-Musterabgleich, gefolgt von strukturiertem Umschreiben:

# 把所有 console.log(...) 替换掉
ast_edit: console.log($X) → logger.debug($X)

ast_edit gibt zuerst einevorgeschlagene (Vorschau-)Kartezurück; erst nachdem der Agent bestätigt und resolve aufruft, wird tatsächlich auf die Festplatte geschrieben – eine atomare Operation, die entweder vollständig erfolgreich ist oder nichts ändert.

ast_grep: Strukturierte Codesuche

Unterstützt Tree-sitter-Syntaxabgleich für 50+ Sprachen:

# 找出所有没有 await 的 async 函数调用
ast_grep: "promise.then($X)"

LSP-Integration: Was die IDE weiß, weiß der Agent auch

omp integriert einen vollständigen LSP-Client (Language Server Protocol), der 14 Operationen unterstützt.

LSP-Server konfigurieren

Konfigurieren Sie im .omp/-Ordner des Projektverzeichnisses oder über den Konfigurationsassistenten von omp:

Beispiele

# ~/.omp/agent/settings.yml (Beispielausschnitt)
lsp
:
  servers
:
    typescript
:
      command
: typescript-language-server
      args
: ["--stdio"]
    rust-analyzer
:
      command
: rust-analyzer
    python
:
      command
: pylsp

14 LSP-Operationen

AktionBeschreibung
DiagnoseDiagnosefehler für eine Datei/einen Arbeitsbereich abrufen (wie rote Wellenlinien in der IDE)
hoverTypinformationen und Dokumentationskommentare für ein Symbol abrufen
DefinitionZur Definition springen
ReferenzenAlle Referenzen finden
renameSymbol umbenennen (über workspace/willRenameFiles, wobei sichergestellt wird, dass Re-Exporte und Barrel-Dateien synchron aktualisiert werden)
code_actionCodeaktionen abrufen und ausführen (z. B. Auto-Import, Lint-Fehler beheben)
completionVervollständigungsliste abrufen
signature_helpHilfe zur Funktionssignatur abrufen
document_symbolsAlle Symbole in einer Datei abrufen
workspace_symbolsIm gesamten Workspace nach Symbolen suchen
formatDatei formatieren
range_formatAusgewählten Bereich formatieren
implementationZur Interface-Implementierung springen
type_definitionZur Typdefinition springen

Der richtige Weg zum Umbenennen

Gewöhnliche Agenten benennen um, indem sie nach Zeichenketten suchen und sie einzeln ersetzen, was leicht dazu führt, dass Vorkommen übersehen oder falsch ersetzt werden. omp macht es über das LSP-Protokoll:

> 把 formatBytes 函数重命名为 humanizeFileSize

# omp 内部执行:
lsp.references("formatBytes")   → 找到 5 处引用,分布在 3 个文件
lsp.rename("formatBytes", "humanizeFileSize")  → 通过 LSP workspace/willRenameFiles
search "formatBytes"            → 0 matches  ✓ 完成

Re-Exporte, Barrel-Dateien (index.ts) und Alias-Importe werden alle korrekt aktualisiert, weil das Umbenennen über das LSP-Protokoll statt über Textersetzung erfolgt.


Debugger-Integration (DAP)

omp implementiert einen vollständigen DAP-Client (Debug Adapter Protocol), der 28 Debug-Operationen unterstützt.

Unterstützte Debugger

SpracheDebugger
C / C++ / Rustlldb-dap / codelldb
Godlv(Delve)
Pythondebugpy
Node.js / TypeScriptIntegrierter Inspector von Node.js
AllgemeinJeder DAP-kompatible Debugger

Typisches Szenario: Auffinden eines C-Programmabsturzes

> 这个 C 程序一直 segfault,帮我找原因

# omp 内部执行:
debug.launch("lldb-dap", "./build/demo")
debug.continue()         # 运行到崩溃
debug.pause()
debug.stackTrace()       # 查看调用栈
debug.scopes(frameId)    # 查看局部变量
debug.evaluate("*ptr")   # 评估表达式

Typisches Szenario: Untersuchung von Deadlocks bei Go-Diensten

> Go 服务挂住了,帮我看看

# omp 内部执行:
debug.attach("dlv", pid)
debug.threads()          # 列出所有 goroutine
debug.stackTrace(threadId)  # 查看挂住的 goroutine 调用栈

Kein verstreutes fmt.Println oder console.log mehr im Code – omp steuert direkt einen echten Debugger an.


Subagenten: Parallele Verarbeitung

Wenn eine Aufgabe in voneinander unabhängige Teilaufgaben aufgeteilt werden kann, verwendet omp das task-Tool, um parallele Subagenten zu starten, die jeweils in einem isolierten Arbeitsbereich ausgeführt werden und ein typisiertes Ergebnisobjekt zurückgeben.

Mechanismus zur Isolierung von Arbeitsbereichen

omp verwendet plattformnative Dateisystem-Snapshots, um die Arbeitsbereiche von Subagenten zu isolieren:

Betriebssystem / DateisystemIsolationsmechanismus
macOS(APFS)APFS-Clone (sofort, Zero-Copy-on-Write)
Linux(btrfs/zfs)reflink
Linux(overlayfs)Overlay-Mount
Windowsprojfs / rcopy

Jeder Subagent erhält eine unabhängige Arbeitsbereichskopie, ohne Beeinträchtigung und ohne Merge-Konflikte.

Anwendungsbeispiele

> 我有三个微服务: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 合并结果,汇总报告

Kommunikation zwischen Subagenten (IRC)

Parallele Subagenten können über das irc-Tool mit kurzen Nachrichten kommunizieren, um Arbeit zu koordinieren:

# 子 Agent A:
irc.send("ComponentsExports", {exports: ["Button", "Input"]})

# 子 Agent B 收到消息后调整自己的分析范围

Abrufen von Subagent-Ergebnissen

Der übergeordnete Agent kann direkt auf die strukturierte Ausgabe eines Subagenten zugreifen, indem er die Pfadsyntax verwendet:

# 读取子 Agent findings 的第一条记录的 path 字段
read agent://<subagent-id>/findings.0.path

Hindsight: Sitzungsübergreifendes Gedächtnis

Hindsight ist das projektweite Gedächtnissystem von omp, mit dem der Agent sein Verständnis der Codebasis zwischen Sitzungen behält.

Funktionsweise

  • retainWenn der Agent während des Betriebs wertvolle Informationen entdeckt, ruft er proaktiv retain auf, um in die Speicherbank zu schreiben
  • recallDurchsuche die Speicherbank nach Schlüsselwörtern
  • reflectLasse Hindsight Informationen aus der Speicherbank synthetisieren, um eine synthetische Antwort zu erzeugen
  • Am Ende jeder Sitzung komprimiert omp die Sitzung automatisch in ein "mentales Modell", das in der ersten Runde der nächsten Sitzung geladen wird

Geltungsbereich

Hindsight istprojektweit—was du in Projekt A lernst, sickert nicht in Projekt B durch. Der Speicher wird im Verzeichnis .omp/ abgelegt (oder pro Projekt in ~/.omp/ aufgeteilt).

Tatsächliche Auswirkungen

Wenn du omp zum ersten Mal in einem Projekt verwendest, musst du die Projektstruktur erklären. Nachdem du es eine Weile verwendet hast, kennt omp sie von selbst:

  • Welchen Tech-Stack dieses Projekt verwendet
  • Aufteilung der Zuständigkeiten der Hauptmodule
  • Welche Refactorings wurden zuvor durchgeführt
  • Welche Dateien sind "Minenfelder" (Orte, die oft Probleme verursachen)

Code-Ausführung: duale Kernel für Python + JavaScript

Die meisten Agent-Tools bieten nur eine Python-Sandbox. omp führt zwei persistente Kernel aus, und beide können wiederum die eigenen Tools des Agenten aufrufen.

Python-Kernel (eval)

Beispiele

# Im eval-Tool kann Python omp's tool.* aufrufen
import pandas as pd

df = pd.read_csv(tool.read("data/sales.csv"))  # Verwende das read-Tool des Agenten, um Dateien zu laden
print(df.describe())

result = tool.search("revenue", "src/")  # In der Codebasis suchen

JavaScript-(Bun)-Kernel (eval)

Beispiele

// Innerhalb derselben eval-Sitzung kannst du zum JS-Kernel wechseln
const data = tool.read("data/sales.csv")  // Kann auch Agent-Tools aufrufen
const top = data.split('\n').slice(1)
  .map(line => line.split(','))
  .sortieren((a, b) => +b[2] - +a[2])
  .slice(0, 5)

console.table(top)

Duale Kernel teilen Prelude

Die beiden Kernel teilen ein Prelude (vorgeladener Kontext). Sie können Daten in Python verarbeiten und dann Diagramme in JS generieren – der gesamte Prozess ist eine kontinuierliche Eval-Sitzung, ohne die Tool-Oberfläche zu verlassen.


Stream-Regeln: Echtzeit-Verhaltenskorrektur

Dies ist omps einzigartiger Echtzeit-Verhaltenskorrekturmechanismus, der das Problem löst, dass das Modell nicht gehorcht.

Probleme traditioneller Ansätze

Alle Regeln in den System-Prompt zu schreiben kostet in jeder Konversation die volle Tokenmenge, und das Modell kann sie trotzdem ignorieren.

Wie Stream-Regeln funktionieren

Regeln sindinaktiv,bis die Auslösebedingung erscheint:

  1. Reguläre Ausdrücke überwachen die Streaming-Ausgabe des Modells
  2. Sobald eine Übereinstimmung erkannt wird (auf Mid-Token-Ebene), den aktuellen Stream sofort abbrechen
  3. Den Regelinhalt als Systemerinnerung in den Kontext injizieren
  4. Ab derselben Position neu generieren
  5. Injizierte Regeln überleben die Kontextkompression

Beispiele

# Beispiel: Verwendung von Box::leak verbieten
# ~/.omp/agent/rules/no-box-leak.yml

name
: box-leak
pattern
: "Box::leak"
reminder
: |
Verwende Box::leak nicht in Produktionscodepfaden.
Speicherlecks führen unter hoher Last zu OOM beim Dienst.
Verwende stattdessen Arc<str> oder andere Verfahren mit Referenzzählung.

Wirkung: Wenn das Modell Box::leak schreibt, wird der Stream abgebrochen, die Regel wird injiziert, und das Modell korrigiert automatisch zu Arc, ohne Eingreifen des Benutzers.

Regeln schnell mit /omfg erstellen

omp bietet einen Hilfsbefehl, mit dem du Regeln in natürlicher Sprache beschreiben kannst, und generiert den Regex und die Regeldatei:

/omfg 不要在任何地方用 any 类型,要求用具体的类型定义或 unknown

omp generiert, validiert und speichert die Regel; sie wird beim nächsten Mal wirksam.


Modell-Routing: 40+ Anbieter, vier Rollen

omp verwendet Rollen statt Modellnamen, um Arbeit zu verteilen, und erreicht damit "das richtige Modell für die richtige Aufgabe".

Vier Modellrollen

RolleZweckCLI-FlagUmgebungsvariable
defaultAllgemeine Konversation und CodegenerierungStandard—
smolGünstige Sub-Agent-Erkundung--smolPI_SMOL_MODEL
slowAufgaben zum tiefen Schlussfolgern--slowPI_SLOW_MODEL
PlanPlanungsmodus--planPI_PLAN_MODEL
# 启动时指定角色覆盖
$ omp --smol    # 整个会话使用 smol 模型(低成本)
$ omp --slow    # 使用慢速推理模型(高质量)
$ omp --plan    # 使用计划专用模型

Modelle in einer Sitzung wechseln

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

Benutzerdefinierte Anbieter (~/.omp/agent/models.yml)

Beispiele

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
: Internes GPT-4o

Failover-Ketten

Beispiele

# Wenn Claude auf ein 429-Rate-Limit stößt, automatisch zu GPT wechseln
retry
:
  fallbackChains
:
    default
:
     - anthropic/claude-sonnet-4.6
      - openai/gpt-4o
      - google/gemini-2.0-flash

Modellbindung auf Pfadebene

Beispiele

# Dieses spezifische Repo erzwingt deepseek (geringe Kosten), ohne die globale Konfiguration zu beeinflussen
models
:
  enabledModels
:
    - path
: ~/projects/side-project
      models
: ["deepseek/deepseek-coder"]

Schlüsselrotation (Multi-Schlüssel-Lastverteilung)

Beispiele

span style="color: #0053A6;">
providers:
  anthropic
:
    apiKeys
:
     - "${ANTHROPIC_KEY_1}"
      - "${ANTHROPIC_KEY_2}"
      - "${ANTHROPIC_KEY_3}"
    # Automatische Rotation; zum nächsten Schlüssel wechseln, nachdem ein einzelner Schlüssel das Limit überschritten hat

Kurzübersicht über gängige Slash-Befehle

Geben Sie / in das Chat-Eingabefeld ein, um die Befehlsvervollständigung auszulösen.

BefehlFunktion
/modelModellauswahl öffnen
/loginBeim Anbieter anmelden (OAuth)
/resumeHistorische Sitzung fortsetzen
/reviewCode-Review für aktuellen Branch / angegebenen Commit / nicht committete Änderungen
/commitIntelligente Commit-Aufteilung
/omfgStream-Regeln in natürlicher Sprache erstellen
/debugDebug-/Report-/Profiling-Tools öffnen
/hotkeysAlle Tastaturkürzel anzeigen
/reload-pluginsPlugins per Hot-Reload neu laden
/compactKontext manuell komprimieren (Token sparen)
/?Hilfe anzeigen

/review: Code-Review mit Prioritäten

# 审查当前分支 vs main
/review

# 审查指定 commit
/review abc1234

# 审查未提交的改动
/review --unstaged

omp startet dedizierte Reviewer-Sub-Agenten, um parallel zu scannen. Jedes Problem wird nach P0-P3-Priorität mit einem Konfidenz-Score sortiert. P0 = blockiert Release, P3 = optionale Verbesserung.

/commit: Atomare Commit-Aufteilung

$ omp commit

omp liest den gesamten Arbeitsbaum (git_overview + git_file_diff + git_hunk) und teilt nicht zusammenhängende Änderungen in unabhängige atomare Commits auf, geordnet nach Abhängigkeit:

  • Quellcode-Commits kommen vor Tests, Dokumentation und Konfiguration
  • Änderungen mit Abhängigkeiten werden nicht falsch gruppiert
  • Zirkuläre Abhängigkeiten werden abgelehnt; es wird nichts geschrieben
  • Lockfiles wie package-lock.json und Cargo.lock werden von der Analyse ausgeschlossen

Plugins und Erweiterungen

omp-Plugins sind TypeScript-Module, die genau dieselbe API wie integrierte Tools verwenden, ohne reservierte Schnittstellen.

Plugins installieren

$ omp install &lt;plugin-name&gt;          # 从 npm 安装
$ omp install github:user/repo       # 从 GitHub 安装
$ omp install ./path/to/plugin       # 从本地路径安装

Plugins erstellen

Du kannst omp es einfach für dich schreiben lassen:

> 给我创建一个插件,添加 /deploy 命令,
  自动运行测试、构建、然后 SSH 上传到生产服务器

omp generiert den Plugin-Code; er wird sofort wirksam, nachdem du /reload-plugins ausgeführt hast.

Hot Reload

omp muss nach dem Ändern des Plugin-Codes nicht neu gestartet werden:

/reload-plugins

ACP: omp im Zed-Editor verwenden

$ omp acp

Verbinde omp über das Agent Client Protocol mit dem Zed-Editor. omp liest den Puffer, den du gerade bearbeitest, schreibt Dateien über den Speicherpfad des Editors, startet eine Shell im Terminal des Editors, und destruktive Operationen lösen einen Berechtigungsdialog aus.


Migration von anderen Tools

Ein großer Vorteil von omp istdas sofortige EinlesenBereits von anderen Tools erstellte Konfigurationsdateien werden direkt gelesen, keine Migrationsskripte erforderlich:

ToolKonfigurationsdateiWie omp sie liest
Cursor.cursor/rules/*.mdcAutomatisch übernommen
Claude Code.claude/settings.json、CLAUDE.mdAutomatisch übernommen
Cline.clinerulesAutomatisch übernommen
GitHub Copilot.github/copilot/instructions.md(applyTo)Automatisch übernommen
CodexAGENTS.mdAutomatisch übernommen
Windsurf.windsurfrulesAutomatisch übernommen
Gemini CLI.gemini/ configurationAutomatisch übernommen

Beim ersten Lauf scannt omp das Arbeitsverzeichnis und lädt automatisch alle erkannten Formate.


Ressourcen und Community

Weitere Erweiterungen