Python-Kindprozesse mit Zeitlimit
Führe vertrauenswürdigen Python-Text bis 4096 Zeichen in einem vorhandenen Verzeichnis mit 50–5000 ms Zeitlimit aus.
import math, os, subprocess, sys
from pathlib import Path
def run_trusted_python(script, seconds, folder):
if type(script) is not str or len(script) > 4096:
raise ValueError("child.script")
if type(seconds) not in (int, float) or not .05 <= seconds <= 5 or not math.isfinite(seconds):
raise ValueError("child.timeout")
if not isinstance(folder, (str, Path)) or not Path(folder).is_dir():
raise ValueError("child.folder")
return subprocess.run([sys.executable, "-I", "-S", "-X", "utf8", "-c", script],
cwd=folder, timeout=seconds, capture_output=True, text=True,
encoding="utf-8", check=False,
creationflags=subprocess.CREATE_NO_WINDOW if os.name == "nt" else 0)| Vor dem Anwenden prüfen | Vergleichen Sie das tatsächliche Verhalten mit dem erwarteten Ergebnis. Klären Sie fehlgeschlagene Prüfungen vor weiteren Änderungen. |
|---|---|
| Modelle | Richten Sie einen OpenAI-kompatiblen oder Anthropic-Endpunkt mit Basis-URL und gegebenenfalls API-Schlüssel ein. Testen Sie die Verbindung. Ein lokaler Modellserver muss laufen; entfernte Werkzeuge können Daten separat übertragen. |
| Projekt | Teste Unicode, Fehlercodes und Beenden des direkten Kindes, lehne ungültige Limits ab und verspreche keine Sandbox oder Nachkommenbereinigung. |
import math, os, subprocess, sys
from pathlib import Path
def run_trusted_python(script, seconds, folder):
if type(script) is not str or len(script) > 4096:
raise ValueError("child.script")
if type(seconds) not in (int, float) or not .05 <= seconds <= 5 or not math.isfinite(seconds):
raise ValueError("child.timeout")
if not isinstance(folder, (str, Path)) or not Path(folder).is_dir():
raise ValueError("child.folder")
return subprocess.run([sys.executable, "-I", "-S", "-X", "utf8", "-c", script],
cwd=folder, timeout=seconds, capture_output=True, text=True,
encoding="utf-8", check=False,
creationflags=subprocess.CREATE_NO_WINDOW if os.name == "nt" else 0)Einen Prozess-Wrapper unter Wahrung seiner Vertrauensgrenze prüfen
ChildHarbor ist ein KI-Programmierclient für Windows zur Untersuchung von Prozessverwaltungscode im Projektgespräch. Legen Sie zunächst fest, welcher Code ausgeführt werden darf, weil er vertrauenswürdig ist, und was der Aufrufer beobachten muss. Lassen Sie Ihr verbundenes Modell den bestehenden Wrapper vor Änderungsvorschlägen prüfen, damit der Vorschlag sowohl dessen Zweck als auch Grenzen bewahrt.
Eine konkrete Aufgabe ist ein Wrapper für vertrauenswürdige Python-Kindprozesse mit vorhandenem Arbeitsverzeichnis und begrenztem Zeitlimit. Besprechen Sie Unicode-Ausgabe, fehlerhafte Beendigungen und das Verhalten beim Überschreiten des Zeitlimits durch den direkten Kindprozess. Trennen Sie diese Anforderungen von Sicherheitsisolierung: Vertrauenswürdigen Code zur Ausführung anzunehmen macht den Wrapper nicht zu einer Sandbox für beliebige Eingaben.
Prüfen Sie die vorgeschlagene Änderung anhand Ihrer eigenen Prozesstestfälle. Kontrollieren Sie erfasste Ausgabe, Exit-Status und den Zeitüberschreitungspfad des direkten Kindprozesses in Ihrer Entwicklungsumgebung. Sind Nachfolgeprozesse relevant, definieren und untersuchen Sie diese Zusatzanforderung ausdrücklich. Ein erfolgreicher Zeitlimittest eines Kindprozesses belegt nicht, dass ein gesamter Prozessbaum bereinigt wird; behalten Sie diese Unterscheidung in der Prüfung bei.
ChildHarbor unterstützt Verbindungen zu OpenAI-kompatiblen oder Anthropic-Endpunkten, bei Bedarf mit Zugangsdaten. Ein ungefiltertes KI-Modell kann gewählt werden, wenn Ihr Endpunkt es bereitstellt. Server und Modell bestimmen Kontext, verfügbare Werkzeuge und Einschränkungen; die Modellwahl autorisiert weder die Ausführung nicht vertrauenswürdigen Codes noch validiert sie den vorgeschlagenen Wrapper.
Fragen vor Änderungen am Prozessstartcode
Was sollte ich zu vertrauenswürdigen Eingaben sagen?
Benennen Sie, wer das Skript liefert und warum die Anwendung dessen Ausführung erlaubt. Halten Sie diese Annahme in der Aufgabe ausdrücklich fest. Können Skripte von nicht vertrauenswürdigen Nutzern stammen, ist das Sicherheitsproblem umfassender als das Hinzufügen eines Zeitlimits zum bestehenden Wrapper.
Bedeutet ein Zeitlimit, dass alle Nachfolgeprozesse beendet werden?
Nein. Prüfen Sie genau, welchen Prozess die Implementierung kontrolliert, und testen Sie dieses Verhalten in Ihrer Umgebung. Benötigt die Anwendung die Bereinigung eines Prozessbaums, definieren Sie dies als gesonderte ausdrückliche Anforderung und prüfen Sie die plattformspezifische Implementierung, statt es aus der Behandlung direkter Kindprozesse abzuleiten.
Warum Unicode-Ausgabe neben fehlerhaften Beendigungen testen?
Sie beanspruchen unterschiedliche Teile des Vertrags mit dem Aufrufer. Geben Sie erwarteten Text und Beendigungsverhalten an, damit der Vorschlag beides bewahrt. Ein Prozess kann korrekt laufen, während Ausgabedekodierung oder Fehlermeldung der Anwendung dennoch ein unbrauchbares Ergebnis liefern.
Soll ich jedes im Gespräch vorgeschlagene Skript ausführen?
Prüfen Sie Code und Auswirkungen vor der Ausführung. Das Gespräch im Arbeitsbereich kann einen Vorschlag erklären helfen, aber die Vertrauensentscheidung liegt bei Ihnen. Nutzen Sie geeignete Projekttestfälle und behandeln Sie modellgenerierten Text nicht als Autorisierung beliebiger Operationen.
ChildHarbor · Aktualisiert 2026-10-25