Skip to content

pi Architektur-Überblick

源码版本v0.73.1

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

Paketnpm-NameRolle
ai@mariozechner/pi-aiEinheitliche LLM-API, 9 eingebaute Provider, automatische Modellermittlung
agent@mariozechner/pi-agent-coreAllgemeiner Agent, doppelte while-Schleife + Werkzeugaussführung
coding-agent@mariozechner/pi-coding-agentCoding-Assistent-CLI, read/bash/edit/write-Werkzeuge + Sitzungsverwaltung
tui@mariozechner/pi-tuiTerminal-UI-Bibliothek, differentielles Rendering (differential rendering) + synchrone Ausgabe
web-ui@mariozechner/pi-web-uiWeb-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/streamSimple zusammen und verteilt anhand von model.api über eine Registrierung (registry). Siehe Streaming-Fassade stream.
  • pi-agent-core: die Agent-Klasse hält den Zustand, runLoop behandelt außen Einschübe/Warteschlange, innen Werkzeugaufrufe; streaming + Werkzeugschleife. Siehe Doppelte while-Hauptschleife.
  • pi-coding-agent: wickelt um Agent herum eine AgentSession ein, 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 via createStreamFn einen CORS-Proxy um streamSimple. 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-agent ist die obere Anwendungsschicht; die darunterliegenden pi-ai und pi-agent-core sind allgemeine Infrastruktur und eigenständig nutzbar.
  • „Die UI-Schicht rendert nur": Web und Terminal-UI beteiligen sich am Streaming — das Web ersetzt Agent.streamFn und 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.