CChildHarbor
Робоче середовище з ШІ для коду

Дочірні процеси Python з обмеженням часу

Запустіть довірений текст Python до 4096 символів у наявному каталозі з тайм-аутом 50–5000 мс.

● ● ●ChildHarbor●
Сценарії · Дочірні процеси Python з обмеженням часу ×
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)
✳Дочірні процеси Python з обмеженням часу
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
Перевірте перед застосуваннямПорівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.
МоделіНалаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.
ПроєктПеревірте Unicode, помилкове завершення й зупинку безпосереднього дочірнього процесу, відхиляйте хибні межі без обіцянки ізоляції чи зупинки нащадків.
Сценарії

Дочірні процеси Python з обмеженням часу

Сценарії ↗
Сценарії
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)
Робоче середовище з ШІ для коду

Перевіряйте обгортку процесу зі збереженням межі довіри

ChildHarbor — клієнт програмування з ШІ для Windows, що дає змогу досліджувати код керування процесами в обговоренні проєкту. Почніть із визначення коду, якому довірено виконання, і того, що має спостерігати код виклику. Попросіть підключену модель перевірити наявну обгортку перед пропозицією змін, щоб зберегти і її призначення, і обмеження.

Конкретне завдання — обгортка довіреного дочірнього процесу Python із наявним робочим каталогом та обмеженим часом очікування. Обговоріть виведення Unicode, завершення з помилкою й поведінку, коли безпосередній дочірній процес перевищує час. Відокремлюйте ці вимоги від ізоляції безпеки: прийняття довіреного коду для виконання не робить обгортку пісочницею для довільних вхідних даних.

Перевірте запропоновану правку власними тестовими процесами. Перевірте захоплений вивід, статус завершення й шлях тайм-ауту безпосереднього дочірнього процесу у своєму середовищі розробки. Якщо процеси-нащадки важливі, явно визначте й дослідіть цю додаткову вимогу. Успішний тест тайм-ауту одного дочірнього процесу не доводить очищення всього дерева процесів, тому зберігайте цю різницю під час перевірки.

ChildHarbor підтримує підключення до сумісних з OpenAI або Anthropic кінцевих точок з обліковими даними за потреби. Нефільтровану модель ШІ можна вибрати там, де кінцева точка її надає. Сервер і модель визначають контекст, доступні інструменти й обмеження; вибір моделі не дозволяє запускати недовірений код і не підтверджує правильності запропонованої обгортки.

Питання перед зміною коду запуску процесів

Що зазначити про довірені вхідні дані?

Визначте, хто надає скрипт і чому застосунок дозволяє його виконувати. Залишайте це припущення явним у завданні. Якщо скрипти можуть надходити від недовірених користувачів, проблема безпеки ширша за додавання тайм-ауту до наявної обгортки.

Чи означає тайм-аут завершення всіх нащадків?

Ні. Перевірте, яким саме процесом керує реалізація, і протестуйте цю поведінку у своєму середовищі. Якщо застосунку потрібне очищення дерева процесів, зробіть це окремою явною вимогою й перевірте платформну реалізацію замість висновку з обробки безпосереднього дочірнього процесу.

Навіщо тестувати вивід Unicode разом із завершенням з помилкою?

Вони перевіряють різні частини контракту обгортки з кодом виклику. Додайте очікуваний текст і поведінку завершення, щоб пропозиція зберігала обидва аспекти. Процес може виконуватися правильно, а декодування виводу або повідомлення про помилки все одно даватимуть непридатний для застосунку результат.

Чи слід виконувати кожен скрипт, запропонований в обговоренні?

Перевірте код і його наслідки перед запуском. Обговорення в середовищі може допомогти пояснити пропозицію, але рішення про довіру належить вам. Використовуйте належні тестові приклади проєкту й не трактуйте згенерований моделлю текст як дозвіл виконувати довільні операції.

Завантажити для Windows ↗

ChildHarbor · Оновлено 2026-10-25