Zum Hauptinhalt springen

Pi 1.0: Das minimale Harness und der Codemode-Trick, der MCP-Token-Wucher behebt

Experte

Pi 1.0 erschien am 1. Oktober 2026 und stand am nächsten Morgen mit über 1.500 Punkten an der Spitze von Hacker News. Der Pitch ist fast aggressiv langweilig: „ein minimales, erweiterbares Agent-Harness, das du zu deinem eigenen machen kannst.“ MIT-Lizenz, TypeScript, ein einziger Terminalbefehl.

Der Pitch verkauft sich zu billig. Unter der TUI liefert Pi die vollständigste Antwort, die bisher jemand auf das Problem veröffentlicht hat, das jedes Agent-Harness im dritten Monat trifft: MCP-Server zerstören dein Kontextfenster, und niemand will es zugeben. Pi hat sich ein Jahr lang öffentlich geweigert, MCP zu unterstützen, und es dann ausgeliefert — indem die Tools gar nicht erst in den Prompt kommen. Der Mechanismus ist dokumentiert, messbar und kopierbar, ganz unabhängig davon, ob du Pi jemals ausführst.

Diese Seite handelt von diesem Mechanismus, den Zahlen dahinter und den drei Designentscheidungen in Pi, die verändern werden, wie du über dein eigenes Harness denkst.

What you'll learn
  • Codemode verstehen: eine QuickJS/WASM-Sandbox, in der verschachtelte Tool-Aufrufe nie in den Kontext des Modells gelangen — nur die Ausgabe des Skripts
  • Pis vier MCP-Expositionsmodi kennenlernen und verstehen, warum der Standard (codemode) dem Modell überhaupt nichts deklariert
  • Die exakten Budgets sehen: 3.000 Token für inline eingebettete Tool-Deklarationen, 20 KB bevor ein MCP-Ergebnis ausgedünnt wird, 1 MiB Bash-Ausgabe, die ein Skript sehen darf und das Modell nicht
  • Den Prompt-Cache-Trick übernehmen: einen geänderten System-Prompt-Abschnitt an das Transkript anhängen, statt Tool-Definitionen zu verändern
  • Die bewussten Auslassungen kennen (keine Sub-Agents, kein Plan-Modus, keine Freigabe pro Aufruf) und die Vertrauenslücke, die die AGENTS.md eines geklonten Repos ohne Rückfrage lädt

Die Kurzfassung in einem Absatz​

Pi ist ein modellagnostischer Terminal-Agent von Earendil (die auch Radius und Lefos bauen). Das Repo — github.com/earendil-works/pi — ist ein TypeScript-Monorepo aus dreizehn Paketen, die du unabhängig voneinander nutzen kannst: eine einheitliche LLM-API über ~30 Provider, ein Agent-Loop, eine TUI-Bibliothek, ein eigenständiger MCP-Client, eine WASM-Sandbox und eine experimentelle Durable Runtime. Es benötigt Node.js 22.19+. Es erscheint bewusst ohne Sub-Agents und ohne Plan-Modus, und es fragt nicht vor jedem Tool-Aufruf um Erlaubnis. Was es stattdessen liefert, ist Context Engineering: codemode, eine JavaScript-Sandbox, für die das Modell Skripte schreibt und in der Tool-Aufrufe außerhalb des Transkripts passieren — nur die destillierte Ausgabe des Skripts kommt zurück.

Warum das zählt, selbst wenn du es nie installierst​

Jedes Harness beginnt gleich. Du fügst drei MCP-Server hinzu, weil sie nützlich aussehen. Jeder davon kippt zwanzig Tool-Definitionen in den System-Prompt. Jetzt bezahlt jeder einzelne Modellaufruf in jeder Session für sechzig Tool-Schemata, von denen die meisten nie aufgerufen werden, und dein Prompt-Cache bricht jedes Mal, wenn ein Server sich neu verbindet und sich die Tool-Liste verschiebt.

AILmanac hat das schon gemessen — siehe Was MCP-Server dich wirklich an Token kosten. Pis Antwort ist strukturell anders als „nutze weniger Server“.

Codemode: der eigentliche Mechanismus​

Das codemode-Tool nimmt rohen JavaScript-Quellcode als Eingabe — kein JSON, keinen eingezäunten Codeblock. Pi führt ihn als Körper einer async-Funktion in einer nach WebAssembly kompilierten QuickJS-VM aus, also funktionieren await und return auf oberster Ebene.

Die einzige Fähigkeit der Sandbox ist das Aufrufen injizierter Tools. Es gibt keine Timer, kein fetch, kein process, kein require, keine Module, kein verschachteltes WebAssembly. (eval und Function funktionieren, erzeugen aber nur weiteren Code innerhalb derselben VM.) Entfernte Bild-URLs werden abgelehnt; nur base64-data:-URLs und Image-Blöcke kommen durch.

Die Konsequenz ist der ganze Punkt:

Verschachtelte Tool-Aufrufe gelangen nie in den LLM-Kontext. Nur die Ausgabe und der Rückgabewert des Skripts.

Ein Skript kann also zehn Tool-Aufrufe parallel ausfächern, 400 KB Ergebnisse auf vier Zeilen herunterfiltern — und das Modell sieht vier Zeilen. Die zehn Aufrufe, ihre Argumente und ihre Rohergebnisse werden nie zu Transkripteinträgen.

Guided walkthrough1 of 5
  1. Innerhalb eines Skripts ist jedes aufrufbare Tool eine Methode auf `tools`. Zeichen, die in einem JavaScript-Identifier nicht erlaubt sind, werden zu Unterstrichen — das MCP-Tool `mcp__dev-radius__search` ist also als `tools.mcp__dev_radius__search` erreichbar. Das Modell braucht diese nicht in seinem Prompt deklariert, um sie aufzurufen.

Codemode ohne jeden MCP-Server aktivieren und ausprobieren

# Pi activates codemode automatically when an MCP server with
# "codemode" exposure connects. To have it always on, add it to
# ~/.pi/agent/settings.json alongside the default tools:
#
#   { "defaultTools": ["+codemode"] }

pi

# Then ask for something that would normally flood the context, e.g.:
#   "Use codemode: run the test suite, and return only the names of
#    failing tests plus the first assertion line of each."
#
# The full test output never becomes a transcript entry.

Die Bash-Zahl, die man sich merken sollte​

Ein direkter bash-Aufruf zeigt dem Modell ein Ergebnis, das bei 2.000 Zeilen oder 50 KB gekappt wird. Aus einem codemode-Skript heraus aufgerufen, löst dasselbe Tool zu einem strukturierten Wert auf, dessen output-Feld bis zu 1 MiB aufnimmt — und wenn es länger ist, behält es die ersten und letzten 512 KiB rund um eine Auslassungsmarkierung, setzt truncated und benennt die vollständige Ausgabe in full_output_path.

Das ist ein 20× größeres Fenster auf die Befehlsausgabe für das Skript, welches dann entscheidet, was das Modell sehen darf. Dasselbe bei MCP: Textergebnisse über 20 KB erreichen das Modell mit entfernter Mitte, rund um eine …N chars truncated…-Markierung, während ein codemode-Skript das komplette CallToolResult inklusive structuredContent und isError erhält.

Die vier Expositionsmodi​

Das ist die Tabelle, die du in deine eigenen Designnotizen kopieren solltest. Jeder MCP-Server in Pi hat eine exposure, und sie entscheidet, wie das Modell die Tools dieses Servers erreichen kann. Jedes Tool wird als mcp__<server>__<tool> registriert.

ExposureWas das Modell siehtWofür du sie nutzt
codemode (Standard)Nichts. Nicht deklariert und nicht einmal in der codemode-Beschreibung aufgeführt. Skripte finden es über searchTools(), describeTool() oder ALL_TOOLS.Allgemeine Server, besonders wenn Skripte Aufrufe kombinieren oder filtern sollen
deferredNichts, bis tool_search für den nächsten Modellaufruf einen Treffer lädt. Danach ist es deklariert und bleibt auf diesem Branch deklariert.Große Server, deren Tools nach der Entdeckung direkt aufgerufen werden sollen
directWie ein eingebautes Tool deklariert und zusätzlich aus codemode aufrufbar.Kleine, häufig genutzte Tool-Sets
hiddenRegistriert, aber nicht erreichbar.Server oder Tools, die unverfügbar bleiben sollen

toolExposure überschreibt die Einstellung auf Serverebene pro Tool. Keys sind exakte Tool-Namen oder *-Muster; exakte Namen schlagen Muster, und unter den Mustern gewinnt der erste Treffer. Ein hidden-Server kann also genau ein Tool freigeben, oder ein deferred-Server kann seine destruktiven Tools unerreichbar halten:

Exposition pro Tool in .pi/mcp.json

{
"mcpServers": {
  "github": {
    "exposure": "deferred",
    "toolExposure": {
      "search_code": "direct",
      "get_*": "codemode",
      "delete_*": "hidden"
    }
  }
}
}

Zwei Details, die man leicht überliest. Erstens sind codemode- und deferred-Tools über beide indirekten Mechanismen erreichbar — Skripte können sie aufrufen und tool_search kann sie laden — und codemode-Aufrufe hängen nicht vom aktiven Tool-Set ab, sie funktionieren also auch nach einem Branch-Wechsel, einem Resume oder einem Fork. Zweitens warnt Pi einmal, wenn weder codemode noch tool_search aktiv ist, denn dann sind deine nicht-direkten Tools einfach nicht aufrufbar.

Der Prompt-Cache-Trick​

Hier kommt die am besten kopierbare Idee dieser Seite.

Pi verbindet beim Start einer Session jeden aktivierten MCP-Server im Hintergrund. Server mit codemode- oder deferred-Tools werden in einem mcp_servers-Abschnitt des System-Prompts aufgeführt — je eine Zeile, aus der konfigurierten description oder, sobald verbunden, aus den eigenen Instructions des Servers.

Dieser Abschnitt ändert sich, während Server sich verbinden. Ein naives Harness würde den System-Prompt oder die Tool-Deklarationen neu schreiben, was jedes dahinterliegende gecachte Präfix invalidiert. Pi macht stattdessen Folgendes:

Es hängt den neuen Abschnitt an die Konversation an, statt die Tool-Deklarationen zu ändern, sodass frühere Nachrichten gecacht bleiben.

Ein geändertes Präfix kostet dich den gesamten Cache. Ein geändertes Suffix kostet dich nichts. Pi verwandelt eine Prompt-Mutation in ein Anhängen an das Transkript — und genau deshalb ist auch die Beschreibung des codemode-Tools selbst so entworfen, dass sie sich während des Verbindens der Server nicht ändert: Tools mit deferred-Exposition sind bewusst nicht darin enthalten.

Der erste Prompt wartet nur bei Servern mit direct-Tools bis zu 10 Sekunden, weil diese in der Anfrage deklariert werden müssen. Auf alles andere wird faul gewartet: Ein Skript wartet auf die Server, die es benennt, und wartet nur dann auf alle, wenn es searchTools() aufruft oder ALL_TOOLS liest.

Wenn du auf Anthropics API baust, gilt dieselbe Argumentation für deine eigenen Präfixe — siehe Prompt Caching und Tool-Änderungen mitten im Gespräch, was genau die Fähigkeit ist, die Pi 1.0 „mid-conversation system messages“ nennt.

Die Budgets, in einer Tabelle​

SacheWertWo
Inline eingebettete Tool-Deklarationen in der codemode-Beschreibung3.000 geschätzte Token (Zeichen ÷ 4); 0 listet nur Namespacescodemode.inlineBudget
Standard-max_output_tokens für die Ausgabe eines Skripts10.000codemode-Optionszeile
Standardanzahl der Ergebnisse von searchTools()8 (BM25-Ranking)codemode-Globals
MCP-Textergebnis, bevor die Mitte entfernt wird20 KBMCP-Tool-Ergebnisse
bash-Ausgabe, die das Modell direkt sieht2.000 Zeilen oder 50 KBeingebautes Tool
bash-Ausgabe, die ein Skript siehtbis zu 1 MiB (erste + letzte 512 KiB, wenn länger)codemode
Ein Store-Wert / alle Store-Werte262.144 / 1.048.576 Zeichen JSONcodemode-Store
Gleichzeitige Classifier- oder Bildmodell-Aufrufe pro Skript4codemode models
MCP-HTTP-Retries bei 408/429/5xx2MCP-Transport
Von Providern akzeptierte Tool-Namenslänge64 Zeichen aus [A-Za-z0-9_-]pi-mcp

Steht codemode.mode auf "only" statt auf dem Standard "on", werden eingebaute Tools und Erweiterungs-Tools dem Modell vollständig verborgen und stattdessen in der codemode-Beschreibung aufgeführt — das Modell erreicht alles über Skripte. Das ist die extremste Version der Idee, und sie ist einen Settings-Key entfernt.

Nicht-LLM-Modelle innerhalb der Sandbox​

Das models-Global in einem codemode-Skript kann Classifier- und Bild-Modelle mit den Credentials der Session ausführen. Chat-Modelle werden aufgeführt, können aber nicht aus einem Skript ausgeführt werden — diese Grenze ist bewusst gesetzt.

Die Classifier-Schnittstelle nimmt ein state-Objekt plus eine Map von Fragen und beantwortet alle in einem Aufruf. Fragen gibt es in drei Formen: choice (ein Label wählen, wobei criteria jedem Label seine Bedeutung zuordnet), score (eine geordnete Skala, beschrieben vom niedrigsten Wert aufwärts) und bool. Antworten kommen mit Wahrscheinlichkeiten und einer Konfidenz zurück, nicht als Prosa.

Das ist dieselbe System-One-/Entscheidungsmodell-Kategorie, die AILmanac in System-One-Entscheidungsmodelle: Jev, Kev und die offenen Klone und Trainiere dein eigenes Entscheidungsmodell behandelt. Pi liefert TypeSafe als erstklassigen Provider mit, und die Docs weisen darauf hin, dass sich Modell-IDs je Provider unterscheiden — typesafe/jev-latest versus openrouter/typesafe/jev-1.13 —, du löst sie also mit models.getAvailableOfType("classifier") auf, statt sie hart zu verdrahten.

Das Muster, das das freischaltet: Dein Frontier-Modell schreibt ein Skript, das 150 Issues von einem MCP-Server zieht, jedes davon mit einem günstigen, kalibrierten Classifier bei vierfacher Parallelität klassifiziert und die sechs zurückgibt, auf die es ankommt. Die 150 Issues berühren den Kontext des teuren Modells nie.

Watch out
  • `classify()` und `generateImages()` werfen bei Provider-Fehlern keine Exception — prüfe `stopReason` und `errorMessage` selbst, sonst behandelst du Fehlschläge stillschweigend als Ergebnisse.
  • Classifier- und Bildnutzung innerhalb eines Skripts wird dem codemode-Tool-Ergebnis hinzugefügt und zählt zu den Session-Kosten. Günstig pro Aufruf heißt nicht kostenlos bei 150 Aufrufen.
  • Bildgenerierung kann Minuten dauern. Ein kurzes `timeout_ms` bei einem Skript, das Bilder generiert, killt es mitten im Flug.

Cache-Warming und die 0,05-$-Regel​

Pi hat eine cacheWarming-Einstellung mit drei Werten — "off", "streaming" (der Standard, Warming während aktiver Läufe) und "idle" (auch zwischen Läufen).

Interessant ist das Gate. Cache-Warming läuft nur, wenn das Modell eine Cache-Lebensdauer deklariert und Pi mindestens 0,05 $ an vermiedenen Cache-Miss-Kosten schätzt. Die Refresh-Nutzung zählt zu den Session-Summen, gelangt aber nicht in den Modellkontext. /session zeigt die nächste Entscheidung, und eine Erweiterung kann sie über einen cache_warming_decision-Hook überschreiben.

Ein hart verdrahteter Dollar-Schwellenwert in einem Open-Source-Harness ist ein ungewöhnlich ehrliches Stück Engineering: Einen Cache zu wärmen ist selbst eine abrechenbare Anfrage, unterhalb eines Break-even ist es also eine Steuer und keine Optimierung. Wenn du deinen eigenen Warming-Loop gebaut und diesen Schwellenwert nie berechnet hast, zahlst du sie wahrscheinlich. Die Ökonomie ist dieselbe wie in Die Ökonomie des Prompt Caching.

Konfiguration — und was ersetzt versus anhängt​

Die Konfiguration auf Nutzerebene liegt im Agent-Verzeichnis, standardmäßig ~/.pi/agent (überschreibbar mit PI_CODING_AGENT_DIR). Die Projektkonfiguration liegt in .pi/ unterhalb des Arbeitsverzeichnisses und wird erst geladen, nachdem Projektvertrauen erteilt wurde.

PfadWas er tut
<agent-dir>/settings.jsonPräferenzen, Standardwerte, Ressourcenpfade, Paketdeklarationen
<agent-dir>/mcp.json, models.json, auth.jsonGlobale MCP-Server, kompatible Endpunkte und Overrides, gespeicherte Credentials
<agent-dir>/SYSTEM.mdErsetzt Pis Standard-System-Prompt
<agent-dir>/APPEND_SYSTEM.mdErgänzt Pis System-Prompt
<agent-dir>/AGENTS.md — oder CLAUDE.mdNutzerinstruktionen, die über Arbeitsverzeichnisse hinweg gelten
<agent-dir>/extensions/, skills/, prompts/, themes/Nutzerressourcen; prompts/ werden zu Slash-Befehlen
.pi/SYSTEM.md, .pi/APPEND_SYSTEM.mdProjektäquivalente; die vertrauenswürdige Projektdatei gewinnt gegenüber der aus dem Agent-Verzeichnis — gleichnamige Dateien werden nicht kombiniert

Zwei Dinge, die man sich einprägen sollte. Pi liest CLAUDE.md als Kontextdatei, ein bestehendes Claude Code-Repo ist also bereits für Pi konfiguriert — der Portabilitätspunkt aus Coding-Agent-CLIs im Vergleich gilt in beide Richtungen. Und AGENTS.override.md ersetzt AGENTS.md oder CLAUDE.md nur im selben Verzeichnis; es unterdrückt keine Kontextdateien, die aus dem Agent-Verzeichnis oder aus übergeordneten Verzeichnissen vererbt werden.

Die eingebauten Tools sind read, bash, powershell, edit, write, grep, find und ls, von denen nur read, bash, edit und write standardmäßig aktiv sind. Die eingebauten Erweiterungen sind builtin:mcp, builtin:llama.cpp, builtin:codemode und builtin:tool-search — beachte, dass llama.cpp ein erstklassiger Built-in ist, lokale Gewichte sind hier also kein nachträglicher Einfall.

Das Sicherheitsmodell, klar ausgesprochen​

Pis eigenes Sicherheitsdokument ist erfrischend direkt, und die drei Sätze unten sind die, die du ernst nehmen solltest, bevor du es auf ein Repo richtest, das du nicht selbst geschrieben hast.

Watch out
  • Pi fragt nicht vor jedem Tool-Aufruf um Erlaubnis. Erweiterungen, Package-Installer und Language-Server laufen als Kindprozesse mit denselben Rechten wie das Konto, das Pi gestartet hat. Erweiterungen sind TypeScript-Module, die in den Pi-Prozess geladen werden — sie sind nicht sandboxed, und die codemode-VM schützt den Ausgabepfad des Modells, nicht deine Maschine.
  • Projektvertrauen ist keine Startgrenze. Pi liest die Projekteinstellung `sessionDir`, bevor es Vertrauen auflöst — Vertrauen zu verweigern kann diesen Lookup also nicht rückgängig machen. Ein leeres `.pi`-Verzeichnis löst überhaupt keine Vertrauensabfrage aus.
  • Das Auffinden von Kontextdateien erfordert kein Projektvertrauen. Die `AGENTS.md` oder `CLAUDE.md` eines geklonten Repos wird ohne Rückfrage in den System-Prompt geladen — und das ist eine Prompt-Injection-Angriffsfläche, keine Konfigurationsbequemlichkeit.
  • Die Docs sagen es unverblümt: Das Transkript zu beobachten, Projektvertrauen zu nutzen und Änderungen zu prüfen, schafft keine Sicherheitsgrenze. Die Grenze ist ein Container, eine VM oder ein dedizierter Betriebssystem-Nutzer.

Wenn dir dieser letzte Punkt neu ist, lies als Nächstes Coding-Agents unter Angriff und Lokale und hybride Agents absichern. Eine kleine Abmilderung, die Pi richtig macht: Der npm-Installationspfad ist als npm install -g --ignore-scripts @earendil-works/pi-coding-agent dokumentiert, und Pi benötigt für eine normale Installation keine Lifecycle-Skripte von Abhängigkeiten.

Was Pi bewusst nicht hat​

FehltPis Position
Sub-AgentsNicht ausgeliefert. Bitte Pi, zu bauen, was du willst, oder installiere ein Paket.
Plan-ModusNicht ausgeliefert.
Freigabeabfragen pro AufrufNicht das Modell. Isolation ist die Grenze, nicht Bestätigungsdialoge.
Eine Abhängigkeit vom offiziellen MCP-SDKpi-mcp ist ein eigenständiger Client ohne Abhängigkeit vom offiziellen SDK oder von anderen pi-Paketen.
Ein offener BeitragstrichterIssues und PRs von neuen Beitragenden werden automatisch geschlossen; Maintainer prüfen geschlossene Einsendungen täglich. Lies zuerst CONTRIBUTING.md.

Die Auslassungen sind das Produkt. Ein Harness, das Features verweigert, bis sie sich beweisen, ist ein Harness, dessen Kontextbudget lesbar bleibt — und das ist dasselbe Argument wie in Warum Agents Token verbrennen, nur durch Subtraktion geführt.

Für den umgekehrten Trade-off — ein Harness, das die Anzahl der Turns statt den Kontext pro Turn optimiert — vergleiche Async-first-Agent-Harnesses, dessen veröffentlichter Terminal-Bench-4.0-Lauf in 28 Turns fertig war, gegenüber Pis 44.

Pi Durable, in einem Atemzug​

@earendil-works/pi-durable ist als experimentell markiert — die API ändert sich ohne Vorankündigung zwischen Releases — und es ist das architektonisch interessanteste Paket im Repo. Konversationen, Modell-Turns, Tool-Aufrufe und dein eigener Zustand werden in den Speicher committet, bevor irgendetwas angezeigt wird; stirbt der Prozess mitten im Turn, nimmt das erneute Öffnen des Speichers dort wieder auf, wo er stehen geblieben ist.

Das Vokabular lohnt sich auch, wenn du es nie installierst: Eine Konversation ist ein Transkript unveränderlicher Entries (pi.user, pi.assistant, pi.tool-result, pi.system, pi.reset); Documents sind typisierter JSON-Zustand, der neben dem Transkript gespeichert wird (pi.agent für Modellentscheidungen, pi.live für die laufende Generierung, pi.inbox für eingereihte Submissions, pi.usage für Ausgaben); ein Task ist eine durable Zustandsmaschine, die bei jedem Schritt einen Checkpoint setzt, sodass pi.generation die pi.tool-Tasks seiner Tool-Aufrufe besitzt und ein neu gestarteter Prozess beim letzten Checkpoint weitermacht. Und das Modell sieht nur die Entries ab dem neuesten Reset — Reset ist ein Transkripteintrag, keine Löschung.

Vergleiche mit Agent-Memory-Architekturen und Langlaufende Agent-Harnesses.

Solltest du wechseln?​

Ehrliche Antwort: wahrscheinlich nicht komplett, und das ist in Ordnung — die Ideen sind das Lieferbare.

  • Probiere Pi, wenn du ein Harness über viele Provider hinweg willst, du lokale Gewichte betreibst (llama.cpp ist eingebaut) oder deine MCP-Oberfläche dein Kontextfenster überwachsen hat.
  • Bleib, wo du bist, wenn du von Sub-Agents, Plan-Modus oder Freigabeabfragen pro Aufruf abhängig bist. Pi hat sie nicht und entschuldigt sich auch nicht dafür.
  • Klaue trotzdem: die Expositionsleiter (codemode / deferred / direct / hidden), den Suffix-Anhänge-Trick für wechselnde Prompt-Abschnitte und einen gemessenen Break-even-Schwellenwert, bevor du überhaupt einen Cache wärmst.

Check yourself

0/6
  1. Was gelangt in Pis codemode aus einem Skript, das zehn Tool-Aufrufe macht, in den Kontext des Modells?
  2. Ein Server ist mit der Standardexposition `codemode` konfiguriert. Was sieht das Modell in seinem Prompt?
  3. Wenn ein MCP-Server sich mitten in der Session verbindet und seine Zusammenfassungszeile sich ändert, was tut Pi, um den Prompt-Cache zu schützen?
  4. Pis Cache-Warming ist an eine bestimmte Bedingung gekoppelt. An welche?
  5. Ein codemode-Skript läuft in einen Timeout, nachdem es sieben seiner zehn Tool-Aufrufe abgeschlossen hat. Wie ist der Zustand des Systems?
  6. Was von diesem wird in Pi OHNE eine Projektvertrauens-Abfrage geladen?
Drücke Enter oder die Leertaste, um die Karte umzudrehen. Nutze die Pfeiltasten links und rechts, um zwischen den Karten zu wechseln.Begriff angezeigt.
1 / 14

Quellen & weiterführende Literatur​

Weiter​