The command sandbox
Bubbles mit dem Werkzeug Run commands können Befehle in deinem Projekt ausführen: Pakete installieren, Builds und Tests laufen lassen. Drei Ebenen entscheiden, was tatsächlich ausgeführt wird.
1. Was eine Bubble überhaupt tun darf
Abschnitt betitelt „1. Was eine Bubble überhaupt tun darf“Jede Rolle besitzt einen festen Satz an Werkzeugen. Ein Coder kann Dateien schreiben und Befehle ausführen; ein Reviewer kann Befehle ausführen, aber keine Dateien schreiben; ein Researcher kann beides nicht. Die Werkzeuge einer integrierten Rolle stehen fest. Um eigene auszuwählen, baust du eine benutzerdefinierte Bubble.
Die Dateiwerkzeuge halten einen Loop stets an seinen Ordner gebunden. Seine Befehle werden vom Betriebssystem nur dann dort festgehalten, wenn Sandbox agent commands eingeschaltet ist (siehe unten). Ohne die Sandbox wird ein Befehl abgelehnt, der eine Datei außerhalb des Ordners benennt. Ein Skript, ein Build oder ein Paketmanager, den ein Befehl startet, kann jedoch weiterhin überall im Projekt schreiben.
2. Die Befehlskontrolle
Abschnitt betitelt „2. Die Befehlskontrolle“Jeder Befehl wird vor der Ausführung gelesen und erhält eine von drei Antworten.
Abgelehnt, immer:
- das direkte Ausführen einer Shell (
bash,sh,cmd,powershell,wsl) und alles, was die Shell selbst verändert; - Fernzugriff (
ssh,scp,rsyncund Ähnliches), das Beenden von Prozessen, das Ändern von Berechtigungen; - destruktives Git (
reset --hard,clean -f, Force-Pushes, interaktive Befehle) und das Veröffentlichen von Paketen; - jegliche Pfade außerhalb des Projekts und Dateien, die wie ein Geheimnis aussehen (
.env, Schlüssel, Zertifikate); - Webadressen, die kein Paketregister, GitHub, Docker Hub oder dein eigener Computer sind;
- alles, was sich nicht beendet, wie ein Dev-Server oder ein Watch-Modus. Solche Dinge gehören in ein Terminal.
Nachfragen, es sei denn, du hast Full Auto eingeschaltet:
- Git-Commits, -Pushes, -Merges, -Rebases, -Checkouts und Ähnliches;
- das Löschen von Dateien innerhalb des Ordners des Loops;
- das Ausführen von Inline-Code (
node -e,python -cund Ähnliches).
Erlaubt: alles andere, wie zum Beispiel npm install oder npm test.
Befehle laufen ohne Umgebungsvariablen, deren Name KEY, SECRET, TOKEN, PASSWORD, CREDENTIAL oder PRIVATE enthält. Ein Befehl erhält zwei Minuten Zeit, beziehungsweise zehn für Paketmanager, Compiler und Testläufer. Wenn die Zeit abläuft, wird der gesamte Prozessbaum gestoppt.
Nachfragen und Full Auto
Abschnitt betitelt „Nachfragen und Full Auto“Wenn ein Befehl deine Zustimmung benötigt, fragt die App: Allow once, Allow always this session (für diese Art von Befehl auf diesem Board, bis der Gateway neu startet) oder Deny. Wenn kein Fenster zum Fragen geöffnet ist oder niemand rechtzeitig antwortet, wird der Befehl abgelehnt.
Full Auto verwandelt jedes „Nachfragen“ in ein „Erlauben“ für ein einzelnes Board. Es ändert nichts anderes: abgelehnte Befehle, Werkzeugberechtigungen und Ordner gelten weiterhin. Es bleibt eingeschaltet, bis du es ausschaltest.
3. Die Sandbox
Abschnitt betitelt „3. Die Sandbox“Die Kontrolle liest einen Befehl und lehnt ab, was sie erkennen kann. Ein Build-Skript oder der Installationsschritt eines Pakets kann dennoch Dateien schreiben, deren Namen in keinem Argument vorkommen. Sandbox agent commands (unter Einstellungen, standardmäßig aus) sorgt dafür, dass auch das Betriebssystem die Ordner durchsetzt:
- das Projekt ist schreibgeschützt, der eigene Ordner des Loops ist beschreibbar, die Ordner anderer Loops darin sind schreibgeschützt und der eigene Ordner der App ist schreibgeschützt;
- es gibt keinen Netzwerkzugriff aus der Sandbox heraus.
| System | Wie |
|---|---|
| Linux | bubblewrap (bwrap) |
| macOS | sandbox-exec |
| Windows | WSL mit bubblewrap (Standard) oder Docker |
Wenn die Sandbox eingeschaltet ist, wird ein Befehl, der nicht in eine Sandbox gepackt werden kann, abgelehnt und niemals ohne sie ausgeführt. Wenn ein Backend nicht bereit ist, zeigt die App unter Einstellungen den einen Schritt zu seiner Behebung an, mitsamt dem exakten Befehl zum Kopieren, zum Beispiel die Installation von bubblewrap innerhalb von WSL.
Perfica installiert niemals eine Sandbox für dich. Das Docker-Bild wird erst heruntergeladen, nachdem du einen Dialog bestätigt hast, der seine Größe angibt.
Das Terminal
Abschnitt betitelt „Das Terminal“Das Terminal-Dock unten in der App ist deine eigene Shell (Bash, PowerShell oder CMD) und nicht die der Agenten. Die Kontrolle greift dort nicht. Run in terminal platziert einen Befehl aus einer Chat-Antwort oder einem Protokolleintrag in der Eingabezeile des Terminal; es drückt niemals von allein die Eingabetaste.
Die Rechtstexte sind auf Englisch und Spanisch verfügbar.