Python-kindprocessen met tijdslimiet
Voer vertrouwde Python-tekst tot 4096 tekens uit in een bestaande map met een limiet van 50–5000 ms.
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)| Controleer vóór het toepassen | Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen. |
|---|---|
| Modellen | Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen. |
| Project | Test Unicode, foutcodes en beëindiging van het directe kind, weiger ongeldige limieten zonder isolatie of opruiming van afstammelingen te beloven. |
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)Beoordeel een proceswrapper met behoud van zijn vertrouwensgrens
ChildHarbor is een Windows-programmeerclient met AI om procesbeheercode in een projectgesprek te onderzoeken. Vermeld eerst welke code vertrouwd is om uit te voeren en wat de aanroepende code moet kunnen waarnemen. Laat uw verbonden model de bestaande wrapper inspecteren voordat het wijzigingen voorstelt, zodat het voorstel zowel het doel als de grenzen ervan behoudt.
Een concrete taak is een wrapper voor een vertrouwd Python-kindproces met een bestaande werkmap en een begrensde time-out. Bespreek Unicode-uitvoer, foutieve afsluitingen en wat er gebeurt als het directe kindproces de tijdslimiet overschrijdt. Houd die vereisten gescheiden van beveiligingsisolatie: vertrouwde code accepteren voor uitvoering maakt de wrapper niet tot een sandbox voor willekeurige invoer.
Toets de voorgestelde wijziging aan uw eigen procestestgevallen. Controleer opgevangen uitvoer, afsluitstatus en het time-outpad voor het directe kindproces in uw ontwikkelomgeving. Als afstammende processen van belang zijn, definieer en onderzoek die aanvullende vereiste dan expliciet. Een geslaagde time-outtest voor één kindproces bewijst niet dat een volledige procesboom wordt opgeruimd; behoud dat onderscheid in de beoordeling.
ChildHarbor ondersteunt verbindingen met OpenAI-compatibele of Anthropic-eindpunten, met inloggegevens waar nodig. Een ongefilterd AI-model kan worden geselecteerd waar uw eindpunt het aanbiedt. De server en het model bepalen context, beschikbare hulpmiddelen en beperkingen; het kiezen van een model geeft geen toestemming om niet-vertrouwde code uit te voeren en valideert de voorgestelde wrapper niet.
Vragen voordat u processtartcode wijzigt
Wat moet ik over vertrouwde invoer vermelden?
Benoem wie het script aanlevert en waarom de toepassing het mag uitvoeren. Houd die aanname expliciet in de taak. Als scripts van niet-vertrouwde gebruikers kunnen komen, is het beveiligingsprobleem breder dan een time-out toevoegen aan de bestaande wrapper.
Betekent een time-out dat alle afstammende processen worden beëindigd?
Nee. Beoordeel precies welk proces de implementatie beheerst en test dat gedrag in uw omgeving. Als de toepassing opruiming van de procesboom vereist, maak dat dan een afzonderlijke expliciete vereiste en inspecteer de platformspecifieke implementatie, in plaats van dit uit de afhandeling van directe kindprocessen af te leiden.
Waarom Unicode-uitvoer én foutieve afsluitingen testen?
Ze toetsen verschillende onderdelen van het contract met de aanroepende code. Geef verwachte tekst en afsluitgedrag, zodat het voorstel beide behoudt. Een proces kan correct draaien terwijl uitvoerdecodering of foutrapportage de toepassing toch een onbruikbaar resultaat geeft.
Moet ik elk script uitvoeren dat in het gesprek wordt voorgesteld?
Beoordeel de code en de gevolgen voordat u haar uitvoert. Het werkruimtegesprek kan een voorstel helpen uitleggen, maar de vertrouwensbeslissing ligt bij u. Gebruik passende projecttestgevallen en behandel door het model gegenereerde tekst niet als toestemming om willekeurige bewerkingen uit te voeren.
ChildHarbor · Bijgewerkt 2026-10-25