Files
nanobot-runtime/results/2026-06-16_pi-coding-agent-vs-oh-my-pi-comparison.md
2026-06-24 08:11:12 +02:00

220 lines
9.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Srovnání: pi-coding-agent vs oh-my-pi
**Datum:** 2026-06-16
---
## 1. Základní identita a vztah
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Autor** | Mario Zechner (@badlogic) | Can Bölük (@can1357) |
| **Filozofie** | Minimalismus — „harness, ne produkt“ | „Batteries included“ fork pi s agresivními vylepšeními |
| **Vztah** | Upstream originál | Fork pi-mono (~1300 commitů navíc) |
| **GitHub stars** | ~2.1k (pi-mono) | ~7.2k |
| **Balíček npm** | `@earendil-works/pi-coding-agent` | `@oh-my-pi/pi-coding-agent` |
| **Web** | https://pi.dev/ | https://omp.sh/ |
oh-my-pi vzešel z pi jako „hobby harness“, kde autor experimentoval s inkrementálními vylepšeními. Postupem času se vyvinul v plnohodnotnou alternativu s vlastním ekosystémem.
---
## 2. Architektura a technický stack
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Jazyk** | TypeScript (Node.js/Bun) | TypeScript + Rust (N-API) |
| **Monorepo** | Ano — `packages/ai`, `agent`, `coding-agent`, `tui` | Ano, ale Rust komponenty pro výkon |
| **TUI engine** | Vlastní diferenciální renderer (`pi-tui`) | Vlastní, pravděpodobně rozšířený |
| **LSP integrace** | Nepřítomná nativně | **Nativní LSP wiring** — agent „vidí“ IDE |
| **Provider abstrakce** | `@pi-ai` — unified LLM API | Zděděno z pi, rozšířeno |
| **Podporované runtime** | Node.js, Bun | Node.js, Bun |
Klíčový rozdíl: oh-my-pi embeduje Rust přes N-API pro operace, kde spawning externích procesů (např. `rg`) „cítí špatně“. Pi zůstává čistě TypeScript.
---
## 3. Edit tool — největší technický rozdíl
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Formát editace** | `str_replace` — najdi přesný text, nahraď | **Hash-anchored edits (Hashline)** |
| **Princip** | Model musí reprodukovat každý znak včetně whitespace | Každý řádek souboru má 2-3 znakový hash; model referencuje hashe |
| **Fail rate (benchmark)** | Závisí na modelu — typicky 20-50% | Výrazně nižší — viz benchmark níže |
| **Token efektivita** | Standardní | ~20-60% méně output tokenů (podle modelu) |
| **Ochrana integrity** | Žádná — při mismatchi se edit aplikuje chybně nebo selže | Hash mismatch = odmítnutí editu před poškozením souboru |
### Benchmark výsledky (React edit benchmark, 180 úkolů × 3 běhy)
| Model | Patch | Replace | Hashline | Hashline v2 | Zlepšení vs Replace |
|---|---|---|---|---|---|
| Gemini 3 Flash | 73.3% | 70.0% | 78.3% | **81.3%** | +11.3pp |
| Claude Haiku 4.5 | 63.3% | 65.0% | 68.3% | **76.3%** | +11.3pp |
| Claude Sonnet 4.5 | 65.6% | 76.7% | 78.3% | **80.0%** | +3.3pp |
| GPT-5.1 Codex Mini | 57.2% | 73.3% | 60.0% | **77.5%** | +4.2pp |
| Grok Code Fast 1 | 6.7% | 66.7% | 68.3% | **71.3%** | +4.6pp |
| MiniMax M2.1 | 23.3% | 55.0% | 55.0% | **65.0%** | +10.0pp |
| GLM-4.7 | 51.7% | 66.7% | 71.7% | **75.0%** | +8.3pp |
| Kimi K2.5 | 66.7% | 71.7% | **76.7%** | — | +5.0pp |
**Hashline porazil Patch u 14/16 modelů.** Nejslabší modely profitovaly nejvíc — Grok Code Fast 1 z 6.7% na 68.3% (10× zlepšení).
---
## 4. Vestavěné funkce
| Funkce | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Sub-agents** | ❌ (pouze přes extension) | ✅ Nativní |
| **Plan mode** | ❌ (pouze přes extension) | ✅ Nativní |
| **Permission gates** | ❌ (pouze přes extension) | ✅ Nativní |
| **LSP integrace** | ❌ | ✅ |
| **Browser tools** | ❌ (pouze přes extension) | ✅ |
| **Python REPL** | ❌ | ✅ |
| **Commit tool** | ❌ | ✅ (conventional commits) |
| **Session management** | ✅ Stromová historie | ✅ + rozšířená |
| **Stealth mode** | ❌ | ✅ (impersonuje Claude Code pro rate-limit bypass) |
| **MCP integrace** | ✅ Přes extension | ✅ |
| **Sandboxing** | Přes extension/Gondolin/Docker | Přes extension |
| **SSH execution** | Přes extension | ? |
Pi filozofie: „Nepotřebuješ to? Nevidíš to. Potřebuješ to? Nainstaluj extension nebo si to nech postavit.“
oh-my-pi filozofie: „Všechno důležité je tam hned.“
---
## 5. Provider a model podpora
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Počet providerů** | 15+ | Zděděno z pi, pravděpodobně stejné |
| **Seznam** | Anthropic, OpenAI, Google, Azure, Bedrock, Mistral, Groq, Cerebras, xAI, Hugging Face, Kimi, MiniMax, OpenRouter, Ollama, … | Stejný základ |
| **Mid-session switch** | ✅ `/model` nebo `Ctrl+L` | ✅ |
| **Favorites cycling** | ✅ `Ctrl+P` | ? |
| **Custom providers** | ✅ Via `models.json` nebo extension | ✅ |
---
## 6. Extensibilita a ekosystém
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Extension systém** | TypeScript moduly — plný přístup k tools, commands, TUI, events | Zděděno z pi, rozšířeno |
| **Skills** | ✅ On-demand capability balíčky | Zděděno |
| **Prompt templates** | ✅ Markdown soubory, `/name` pro expanzi | Zděděno |
| **Themes** | ✅ | Zděděno |
| **Package registry** | https://pi.dev/packages — npm i git | ? |
| **Příklady extensions** | 50+ oficiálních (subagent, plan-mode, permission-gate, SSH, sandbox, MCP, …) | Vlastní sada |
| **Self-modifikace** | ✅ „Ask Pi to build it for you“ | ✅ |
Pi má robustnější dokumentovaný ekosystém. oh-my-pi je spíše „one-man show“ s forkem, kde autor přidává co potřebuje.
---
## 7. Context engineering
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **System prompt** | Minimální — token efficient | Zděděno, možná rozšířeno |
| **AGENTS.md** | ✅ Načítá z `~/.pi/agent/`, parent dirs, cwd | ✅ |
| **SYSTEM.md** | ✅ Per-project override/append | ✅ |
| **Compaction** | ✅ Auto-summarize, plně customizable via extension | Zděděno |
| **Progressive disclosure** | ✅ Skills se loadují on-demand | Zděděno |
| **Dynamic context** | ✅ Extensions mohou injectovat zprávy, filtrovat historii, RAG | Zděděno |
| **Prompt cache friendly** | ✅ Minimal system prompt + on-demand skills | Zděděno |
---
## 8. UX a interakce
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Steering** | `Enter` — interrupt current tool, `Alt+Enter` — queue follow-up | Zděděno |
| **Módy** | Interactive, Print/JSON, RPC, SDK | Primárně interactive |
| **Historie** | Stromová — `/tree` pro navigaci, branching | Zděděno |
| **Export** | ✅ HTML (`/export`), GitHub gist (`/share`) | ? |
| **Reload** | ✅ `/reload` po self-modifikaci | ? |
| **IDE integrace** | ❌ Pure terminal | ✅ Editor-drivable agent (Zed, …) |
---
## 9. Bezpečnost a izolace
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Built-in permissions** | ❌ Žádné — běží jako uživatel | ❌ Žádné |
| **Containerization docs** | ✅ Gondolin (micro-VM), Docker, OpenShell | ? |
| **Path protection** | Přes extension | ? |
| **Sandboxing** | Přes extension | Přes extension |
Obě nástroje vyžadují externí sandboxing pro bezpečné použití s nedůvěryhodným kódem.
---
## 10. Výkon a benchmarky
| Metrika | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **Edit success rate** | Závisí na modelu a formátu | **+3-41pp vyšší** díky Hashline |
| **Output token usage** | Standardní | **-17-61%** méně (podle modelu) |
| **Retry loops** | Časté při Patch/Replace selhání | Výrazně méně |
| **Speed (harness overhead)** | Čistý TS | TS + Rust N-API pro heavy ops |
Klíčové zjištění z benchmarku: **+8% u Gemini 3 Flash je větší zlepšení než většina model upgrades** — a stálo to nulu tréninkového compute.
---
## 11. Komunita a governance
| | **pi-coding-agent** | **oh-my-pi** |
|---|---|---|
| **License** | MIT | MIT |
| **Contributing** | Auto-close nových issues/PRs — maintainer review denně | Otevřenější? |
| **Discord** | ✅ Aktivní | ? |
| **Session sharing** | ✅ Hugging Face dataset (`pi-share-hf`) | ? |
| **Supply-chain** | Aggressive pinning, audit, shrinkwrap | ? |
| **Auto-updates** | `pi update --self` | ? |
Pi má rigidnější governance model — nové PRs se automaticky zavírají. oh-my-pi je osobní projekt jednoho autora.
---
## 12. Kdy použít co
### pi-coding-agent
- Chceš **minimalistický harness**, který se přizpůsobí tvému workflow
- Potřebuješ **maximální customizaci** — vlastní extensions, skills, prompts
- Pracuješ s **více projekty** a chceš sdílet konfiguraci via AGENTS.md
- Chceš **čistý TypeScript** stack bez nativních závislostí
- Potřebuješ **SDK/RPC** pro embedding do vlastních aplikací
- Ceníš si **dobře dokumentovaného ekosystému** a package registry
### oh-my-pi
- Chceš **„batteries included“** — LSP, subagents, browser, Python hned po instalaci
- Hledáš **nejvyšší edit success rate** — Hashline je měřitelně lepší
- Chceš **nižší token consumption** (levnější API bills)
- Potřebuješ **IDE integraci** — editor-drivable agent
- Preferuješ **agresivní optimalizace** nad minimalistickou čistotou
- Nevadí ti **Rust N-API dependency** a potenciálně rychlejší breaking changes
---
## 13. Filozofický rozdíl
**Pi:** „Model je důležitý, ale harness je most. My ti dáme most, postav si po něm co chceš.“
**oh-my-pi:** „Most je polovina problému. Druhá polovina je, že most musí být tak dobrý, že i slabý model přejde.“
Autor oh-my-pi argumentuje, že vendor-lock harnessů (Claude Code, Codex) je škodlivý — žádný vendor neoptimalizuje pro konkurenční modely. Open-source harness může tunovat pro všechny. Pi poskytuje platformu pro tuto filosofii; oh-my-pi ji realizuje konkrétními technickými inovacemi.
---
## Zdroje
- https://pi.dev/
- https://github.com/earendil-works/pi
- https://github.com/can1357/oh-my-pi
- https://blog.can.ac/2026/02/12/the-harness-problem/
- https://pyshine.com/Oh-My-Pi-AI-Coding-Agent-Terminal/
- https://www.implicator.ai/pi-is-not-a-claude-code-rival-it-is-a-harness-rebellion/