FIELD GUIDE / ПРАКТИКА

Первая миссия.
Проверяемый результат.

Установите reference-зависимости, исполните готовый сценарий и посмотрите, что агент сделал, сколько ресурсов потратил и какие заявки действительно закрыл.

01 / INSTALLATION

Начните из checkout проекта

Команды ниже выполняются в корне репозитория space-env после его получения из канала распространения проекта. Python ≥ 3.10. Extra reference добавляет SciPy и PyERFA; для multi-agent адаптера потребуется PettingZoo.

TERMINAL / PROJECT ROOT
python -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[reference,marl,coverage]'

Windows: активация окружения выполняется через .venv\Scripts\activate. Для необязательных отраслевых интеграций существуют отдельные extras; установка integration-пакета сама по себе не включает его во все reference-сценарии.

02 / END-TO-END EXAMPLE

EO → CPU → ISL → Ground ACK

Готовый пример строит три аппарата и две заявки: съёмка, onboard processing, межспутниковая передача и наземное подтверждение. Проверяет совместимость native SDK, Gym, tools и CLI-плана. Это синтетическая инженерная миссия, не запись реального полёта.

TERMINAL / PROJECT ROOT
python examples/agent_task/demo.py /tmp/task-demo nominal
python examples/agent_task/demo.py /tmp/task-reroute reroute
python examples/agent_task/demo.py /tmp/task-loss loss
python examples/agent_task/demo.py /tmp/task-ttl ttl
ОЖИДАЕМОЕ ПОВЕДЕНИЕ ПРИМЕРА

Nominal / reroute / ACK-loss: 2/2 заявки.
TTL: 1/2 — намеренно отрицательный сценарий.

В output-директории появятся scenario/task/plan, промежуточные checkpoints, итоговый episode и RL/SFT JSONL. Полный episode — privileged trainer artifact: его нельзя передавать политике вместо observation.

03 / PYTHON API

Явно задавайте мир и задачу

Следующий пример читает файлы, созданные предыдущей командой. Baseline получает только causal PlanningInput; окончательный допуск и продвижение времени выполняет TaskSession.

PYTHON / TASK SESSION
import json
from pathlib import Path
from space_env.tasks import TaskSession
from space_env.planning import BaselinePolicy, make_input

root = Path('/tmp/task-demo')
scenario = json.loads((root / 'scenario.json').read_text())
task = json.loads((root / 'task.json').read_text())
session = TaskSession(scenario, task)
policy = BaselinePolicy({'name': 'route_aware_rolling'})

decision = policy.decide(make_input(session))
transition = session.step(
    choices={'@central': decision['action_ids']},
    expected_revision=session.revision,
    idempotency_key='first-decision',
)
print(transition['feedback'])

Для Gymnasium создайте MissionTaskEnv(scenario, task). Его action space определяется каталогом задачи. Случайное sampling без корректного использования masks не гарантирует допустимый совместный batch. Готовый demo показывает соответствие между action IDs и числовыми индексами.

04 / REPLAY & DATA

Сначала проверить, затем экспортировать

TERMINAL / NATIVE EPISODE
space-env task-replay /tmp/task-demo/episode.json
space-env task-export /tmp/task-demo/episode.json \
  /tmp/task-demo/verified-sft.jsonl --format sft

# Новый atomic RL/SFT bundle из отдельного примера:
python examples/scaling/verified_export.py /tmp/verified-bundle

Для bundle выберите ещё не существующую output-директорию. Replay проверяет guarded native execution; source/dependency mismatch не обходится ради получения данных. SFT-примеры сохраняют provenance teacher, а не автоматически получают статус экспертных.

Нужен baseline вместо готового плана?

TERMINAL / PLANNING
python examples/planning/demo.py /tmp/planning nominal
python examples/planning/benchmark_demo.py /tmp/planning-benchmark
space-env planning-verify-evaluation \
  /tmp/planning-benchmark/evaluation.json

Benchmark-demo намеренно включает недостижимый кейс: teacher gates могут завершиться неуспехом при корректном исполнении и replay. Не смешивайте «сценарий выполнился» и «политика пригодна как teacher».

05 / LOCAL MISSION CONTROL

Посмотреть на работающую миссию

TERMINAL / LOCAL SERVER
python -m space_env.api.server
# Затем откройте http://127.0.0.1:8766/operator

Статический сайт, который вы сейчас читаете, не исполняет Python backend. Mission Control запускается отдельно на вашей машине. Его 3D/2D-проекции показывают текущую native-навигацию и уже наблюдённые трассы; будущие орбиты по этим линиям не прогнозируются.

Connection file

Повторное подключение

Сохраните доступ через явную кнопку в UI и импортируйте файл после рестарта. Он содержит bearer-секреты: не публикуйте его и не добавляйте в dataset.

Portable archive

Перенос истории

Secret-free checkpoint, наблюдённые кадры и controller history. Импорт проверяет replay и создаёт новый ID и capabilities.

SQLite / WAL

Постоянное состояние

По умолчанию .space-env/operator.sqlite3; путь меняется через SPACE_ENV_OPERATOR_DB. Подтверждение мутации выдаётся после commit.

Локальный OS-owner recovery доступен через python -m space_env.api.operator_recovery. Это ротация credentials и control epoch, а не публичный HTTP-сброс доступа. Порядок и ограничения описаны в контракте.

Интерактивный профиль

До 8 живых сессий, 16 аппаратов и 256 решений/шаблонов; до 257 навигационных кадров, 8 МиБ HTTP input. Эти ограничения пульта нельзя трактовать как общие максимумы всей библиотеки.

06 / IMPLEMENTATION REFERENCES

Не прячем детали за красивой картинкой

Ниже — локальные копии контрактов реализации на срезе v0.134.0. Они поставляются вместе с сайтом: ссылки работают и при размещении в подпапке. Формат — Markdown; браузер может показать исходный текст или предложить скачать файл.

07 / DEVELOPMENT BOUNDARY

Что развивается дальше

Текущая основа уже позволяет строить и исполнять разнообразные инженерные задачи. Следующие направления — отдельные работы, а не скрытые обещания существующих возможностей.

  1. Независимая физическая валидация

    Эталонные инструменты, реальные ряды, аппаратная калибровка и измеренные границы погрешности.

  2. Крупные и длительные миссии

    Квалификация latency, throughput, памяти, рестарта и replay на зафиксированных сценариях и оборудовании.

  3. Эксплуатационный контур

    Streaming artifacts, event cursors, retention/backup, worker lifecycle, квоты, мониторинг и многоарендное развёртывание.

  4. Отраслевой AI-бенчмарк

    Зафиксированные splits, baseline/learned policies, OOD-задачи и пилотные сценарии с независимой оценкой.

08 / FAQ

Важные различия

Это универсальный цифровой двойник любого спутника?

Нет. Это настраиваемый набор инженерных профилей. Реалистичность конкретного аппарата зависит от выбранных механик, введённых параметров и их независимой проверки. Произвольная высокоточная модель всей космической техники не заявляется.

Можно обучать LLM-агентов, RL и multi-agent модели?

Да: structured TaskTools, Gymnasium и optional PettingZoo используют task-runtime. Поддерживаются RL/SFT-экспорты. Интеграцию конкретного training stack, LLM и quality gates нужно настроить под задачу.

Планировщик знает, что произойдёт в будущем?

Baseline-слой использует causal PlanningInput. Route-aware rolling рассматривает текущие совместимые действия с bounded search; не является глобальным оптимизатором всей будущей миссии.

Почему отрицательные сценарии остаются в данных?

Outage, потеря ACK, исчерпание памяти и TTL — часть задачи. Отбрасывание всех неуспешных эпизодов меняет распределение и может научить политику работать только в лёгких условиях.

Можно управлять настоящими аппаратами из этого сайта?

Нет. Этот сайт — описание проекта и учебная визуализация. Даже локальный Mission Control управляет моделируемой миссией, а не реальным полётом.

Доказано ли превосходство над другими симуляторами?

Нет. Для такого утверждения нужен независимый сравнительный benchmark с одинаковыми сценариями, допусками, ресурсами и метриками. Здесь публикуются конкретные механики, контракты и внутренние результаты проверки.