Перейти к содержанию

Опорный пакет

В репозитории теперь есть небольшой исполняемый каркас: agent_runtime_ref.

Его задача не в том, чтобы стать промышленным фреймворком. Он нужен как минимальная кодовая опора для части VII книги.

Что внутри

  • runtime.py Основной AgentRuntime, который собирает контекст запуска, извлечение контекста, шаг модели, выполнение инструментов и хук фонового обновления.
  • policy.py Небольшой движок политик со структурированными решениями.
  • catalog.py Реестр возможностей с описанием эксплуатационной семантики.
  • config.py Загрузчик YAML для политик, каталога возможностей и политики выкладки.
  • memory.py Типизированные записи памяти, извлечение контекста и in-memory-хранилище с изоляцией по тенантам.
  • background.py Фоновый контур обслуживания для постоянных записей в память и уплотнения.
  • execution.py Простой вызов возможностей через выполнение, учитывающее контракт.
  • telemetry.py In-memory-эмиттер телеметрии для структурированных событий и спанов.
  • rollout.py Минимальный шлюз проверки готовности перед выкладкой.

Как запустить

.venv/bin/python -m agent_runtime_ref

Ожидаемый результат:

{"result": "Ticket request accepted and ready for follow-up.", "status": "success", "events": 9, "memory_records": 4, "config_dir": ".../agent_runtime_ref/configs"}

Явный запуск рантайма через подкоманду:

.venv/bin/python -m agent_runtime_ref simulate-run

Просмотр записей памяти:

.venv/bin/python -m agent_runtime_ref inspect-memory --memory-class profile

Вывод структурированных событий для одного запуска:

.venv/bin/python -m agent_runtime_ref dump-events --user-input "Please open a ticket for this issue."

Проверка политики выкладки с переопределением сигналов:

.venv/bin/python -m agent_runtime_ref check-rollout --signal offline_eval_pass=false

Запрос, который действительно читает профильную память:

.venv/bin/python -m agent_runtime_ref simulate-run --user-input "What language preference do you remember?"

Как проверить

uv run ruff check .
uv run ty check
.venv/bin/python -m unittest discover -s tests

Примерные конфиги

В configs лежат четыре стартовых файла:

Теперь это уже не просто статические примеры. config.py умеет загружать эти YAML-файлы в рантайм, движок политик, хранилище памяти и политику выкладки, поэтому пакет стал ближе к реальному эксплуатационному каркасу.

Почему это полезно

Книга теперь опирается не только на текстовые объяснения, но и на реальный кодовый каркас:

  • легче обсуждать архитектуру на уровне файлов и контрактов;
  • легче расширять пакет следующими примерами;
  • легче перейти от главы к исполняемому прототипу;
  • легче показать путь, управляемый конфигурацией, а не только жестко зашитое демо;
  • легче связать эталонный рантайм с главами про память, извлечение контекста и фоновые обновления.

Отдельно полезно то, что теперь package можно не только запускать, но и инспектировать снаружи:

  • inspect-memory показывает исходно загруженную память и фильтрацию по tenant и memory_class;
  • dump-events показывает структурированную трассу одного запуска без чтения исходников.