pi Architektur-Überblick
badlogic/pi-mono ist ein TypeScript-Monorepo, das mit fünf npm-Paketen einen ganzen Stapel aufbaut: „einheitliche LLM-API → allgemeiner Agent → Coding-Assistent → Terminal/Web-UI". Diese Seite gibt eine Übersicht; jede Folgepage zerlegt eine Schicht.
Die fünf Pakete
| Paket | npm-Name | Rolle |
|---|---|---|
ai | @mariozechner/pi-ai | Einheitliche LLM-API, 9 eingebaute Provider, automatische Modellermittlung |
agent | @mariozechner/pi-agent-core | Allgemeiner Agent, doppelte while-Schleife + Werkzeugaussführung |
coding-agent | @mariozechner/pi-coding-agent | Coding-Assistent-CLI, read/bash/edit/write-Werkzeuge + Sitzungsverwaltung |
tui | @mariozechner/pi-tui | Terminal-UI-Bibliothek, differentielles Rendering (differential rendering) + synchrone Ausgabe |
web-ui | @mariozechner/pi-web-ui | Web-Chat-Komponenten, Lit Web Components |
Quellcode-Verzeichnis: packages/
Schichtung
Jede Schicht in einem Satz
- pi-ai: fasst 9 LLM-Anbieter (Anthropic, OpenAI, Google, Bedrock ...) in den zwei Funktionen
stream/streamSimplezusammen und verteilt anhand vonmodel.apiüber eine Registrierung (registry). Siehe Streaming-Fassade stream. - pi-agent-core: die
Agent-Klasse hält den Zustand,runLoopbehandelt außen Einschübe/Warteschlange, innen Werkzeugaufrufe; streaming + Werkzeugschleife. Siehe Doppelte while-Hauptschleife. - pi-coding-agent: wickelt um
Agentherum eineAgentSessionein, ergänzt Werkzeuge, System-Prompts, Sitzungspersistenz und drei Betriebsmodi. Siehe AgentSession-Orchestrierungsschicht. - pi-tui: differentielles Rendering (differential rendering) + synchrone Ausgabe via DECSET 2026, verhindert Terminal-Flackern. Siehe TUI-Klasse mit differentiellem Rendering.
- pi-web-ui: Lit-Komponenten besitzen eine eigene
Agent-Instanz und wickeln viacreateStreamFneinen CORS-Proxy umstreamSimple. Siehe AgentInterface als Sitzungshost.
Schichtungs-Motivation
Warum nicht ein großes Paket? Weil die Konsumenten je Schicht verschieden sind: Webkomponenten dürfen nicht von Nodes fs abhängen, Terminal-UI sollte nicht das IndexedDB des Webs mitschleppen, der allgemeine Agent sollte nichts von „Coding" wissen. Mit der Schichtung kann das Web direkt pi-agent-core + pi-ai nehmen und selbst einen Agent laufen lassen, ohne die Werkzeuge des Coding-Assistenten; die Coding-CLI kann ihre UI tauschen (tui- oder rpc-Modus), ohne die Orchestrierung anzufassen. pi-ai ist ein eigenes Paket, damit jedes Projekt die einheitliche LLM-API direkt nutzen kann, ohne an das Agent-Konzept gebunden zu sein.
Häufige Missverständnisse
- „pi ist ein Coding-Agent": ungenau.
pi-coding-agentist die obere Anwendungsschicht; die darunterliegendenpi-aiundpi-agent-coresind allgemeine Infrastruktur und eigenständig nutzbar. - „Die UI-Schicht rendert nur": Web und Terminal-UI beteiligen sich am Streaming — das Web ersetzt
Agent.streamFnund injiziert einen CORS-Proxy, das Terminal abonniert Events und entscheidet, wann neu gezeichnet wird.
Empfohlene Lesereihenfolge
Zuerst Streaming-Fassade stream verstehen, um zu sehen, wie ein LLM aufgerufen wird, dann Doppelte while-Hauptschleife für die Werkzeugschleife, danach AgentSession-Orchestrierungsschicht, wie der Coding-Assistent verdrahtet wird, und schließlich je nach Interesse pi-tui oder pi-web-ui.