Containerisierung
Pi läuft standardmäßig mit allen Berechtigungen, aber in manchen Fällen möchten Sie mehr Kontrolle darüber haben, in welche Verzeichnisse Pi schreiben kann und welche Zugriffe es hat.
Es gibt zwei allgemeine Optionen. Sie können entweder
- Führen Sie den gesamten
pi-Prozess in einer isolierten Umgebung aus, oder - Führen Sie
piauf dem Host aus und leiten Sie die Tool-Ausführung in eine isolierte Umgebung weiter.
Wählen Sie ein Muster
| Muster | Was ist isoliert | Am besten für | Notizen |
|---|---|---|---|
| Gondolin Erweiterung | Integrierte Tools und ! Befehle |
Lokale Mikro-VM-Isolierung unter Beibehaltung der Authentifizierung auf dem Host | Siehe examples/extensions/gondolin/. |
| Einfach Docker | Gesamter pi-Prozess in einem lokalen Container |
Einfache lokale Isolierung | Anbieter API keys betreten den Container. |
| OpenShell | Gesamter pi-Prozess in einem richtliniengesteuerten sandbox |
Lokal oder remote verwaltet sandbox | Erfordert ein OpenShell Gateway |
Extensions wird überall dort ausgeführt, wo der pi-Prozess ausgeführt wird. Wenn Sie Host pi mit einer Tool-Routing-Erweiterung ausführen, werden andere benutzerdefinierte Erweiterungstools weiterhin auf dem Host ausgeführt, sofern sie ihre Vorgänge nicht ebenfalls delegieren.
Gondolin
Gondolin ist eine lokale Linux-Mikro-VM.
Verwenden Sie example extension, wenn Sie pi auf dem Host möchten, aber alle integrierten Tools an die VM weitergeleitet werden sollen.
Aufstellen:
cp -R packages/coding-agent/examples/extensions/gondolin ~/.pi/agent/extensions/gondolin
cd ~/.pi/agent/extensions/gondolin
npm install --ignore-scriptsFühren Sie das Projekt aus, das Sie bereitstellen möchten:
cd /path/to/project
pi -e ~/.pi/agent/extensions/gondolinDie Erweiterung mountet den Host-CWD bei /workspace in der VM und überschreibt read, write, edit, bash, grep, find und ls.
Benutzerbefehle ! werden ebenfalls an die VM weitergeleitet.
Dateiänderungen unter /workspace werden auf den Host übertragen.
Anforderungen: Node.js >= 23.6.0 für @earendil-works/gondolin, plus QEMU (erfordert die Installation über Ihren Paketmanager).
Einfach Docker
Führen Sie den gesamten pi-Prozess in Docker aus, wenn Sie die einfachste lokale Containergrenze wünschen.
Dockerfile.pi:
FROM node:24-bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends bash ca-certificates git ripgrep \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g --ignore-scripts @earendil-works/pi-coding-agent
WORKDIR /workspace
ENTRYPOINT ["pi"]Erstellen und ausführen:
docker build -t pi-sandbox -f Dockerfile.pi .
docker run --rm -it \
-e ANTHROPIC_API_KEY \
-v "$PWD:/workspace" \
-v pi-agent-home:/root/.pi/agent \
pi-sandboxMit -v "$PWD:/workspace" wird Ihr aktuelles Verzeichnis im Container unter /workspace bereitgestellt, sodass sich Lese- und Schreibvorgänge in /workspace in Docker direkt auf Ihre Hostdateien auswirken, wie im Beispiel Gondolin.
Verwenden Sie ein benanntes Volume für /root/.pi/agent, wenn Sie Container-lokale Einstellungen und Sitzungen wünschen. Durch das Mounten Ihres Hosts ~/.pi/agent werden Host-Authentifizierungs- und Sitzungsdateien für den Container verfügbar gemacht.
OpenShell
Verwenden Sie NVIDIA OpenShell, wenn Sie ein richtliniengesteuertes sandbox mit Dateisystem-, Prozess-, Netzwerk-, Anmeldeinformations- und Rückschlusskontrollen wünschen. OpenShell kann sandboxes über ein lokales Gateway ausführen, das von Docker, Podman oder einer VM-Laufzeit unterstützt wird, oder über ein Remote-Kubernetes-Gateway.
Jeder sandbox erfordert ein aktives Gateway. Registrieren Sie sich und wählen Sie eines aus, bevor Sie ein sandbox erstellen:
openshell gateway add <gateway-url> --name <name>
openshell gateway select <name>Starten Sie pi in einem OpenShell sandbox:
openshell sandbox create --name pi-sandbox --from pi -- piIn diesem Muster läuft der gesamte pi-Prozess innerhalb von sandbox ab.
Integrierte Tools, !-Befehle und Erweiterungstools werden innerhalb der OpenShell-Grenze ausgeführt.
Wenn das Gateway entfernt ist, werden Projektdateien nicht vom Host gebunden, was bedeutet, dass Schreibvorgänge im sandbox nicht auf Ihrem Computer widergespiegelt werden. Klonen Sie das Repository in sandbox oder verwenden Sie OpenShell Dateiübertragungsbefehle:
openshell sandbox upload pi-sandbox ./repo /workspace
openshell sandbox download pi-sandbox /workspace/repo ./repo-outOpenShell-Anbieter können Rohmodell-API keys außerhalb von sandbox behalten.
Wenn das Inferenz-Routing konfiguriert ist, kann Code innerhalb von sandbox https://inference.local aufrufen, und das Gateway fügt die konfigurierten Anbieteranmeldeinformationen stromaufwärts ein.
Konfigurieren Sie Pi, um den entsprechenden OpenAI-kompatiblen oder Anthropic-kompatiblen Endpunkt zu verwenden, wenn Sie möchten, dass der Modellverkehr diese Route verwenden soll.