Монитор прогона

Окно «эксперименты в работе»: графики, хвост лога, короткий комментарий агента и статус карточек в колонке «в работе». Данные подтягиваются с диска по путям из карточки или отчёта — без отдельного стрима с кластера.

Слот для картинки или видео

Как работает

Монитор показывает карточки канбана в колонке running, у которых заданы подсказки живого просмотра (или уже есть свежие файлы). Подсказки — строки в описании карточки или в отчёте:

live_log: projectcode/runs/train.log
metrics_dir: projectcode/runs/plots
live_note: эпоха 3, loss 0.38
Подсказка Что открывает
live_log: хвост текстового лога (до сотен килобайт / ограниченное число строк)
metrics_dir: картинки из каталога (png/jpg/…), с приоритетом известных имён вроде dashboard.png
live_note: одна строка «что сейчас происходит» в панели комментария

Пути относительные к репозиторию проекта (и при необходимости к соседней папке-родителю). Сервер читает файлы локально и отдаёт снимок по HTTP; клиент опрашивает примерно раз в три секунды.

Карточка остаётся в мониторе, пока она в running и есть подсказки или признаки активности (лог/картинки обновлялись недавно, или есть непустой live_note). Закреплённая карточка (ту, с которой открыли окно) не выкидывается, пока модальное окно открыто.

Монитор не двигает колонки и не пишет отчёт — только читает. Колонки и §3 отчёта ведут сценарии выполнения карточки.

Как человек работает в интерфейсе

  1. Откройте канбан метода. У карточки в running (и при наличии подсказок) — кнопка «Live монитор» (иконка глаза).
  2. Откроется модальное окно «Эксперименты в работе»: сверху вкладки карточек (если несколько в работе, в т.ч. из разных проектов лаборатории), справа/слева навигация разделов.
  3. Разделы: - Графики — сетка изображений из metrics_dir; клик увеличивает; - Коммент модели — текст live_note; - Логи — хвост live_log, прокрутка к концу; - Статус — колонка, подзадачи из чеклиста, флаги «настроено / файл есть», время опроса.
  4. Переключение вкладок карточек не закрывает окно; статусная строка показывает, когда снимок обновился.
  5. На карте лаборатории у методов с прогонами может быть наложение статуса активности (кто крутит карточки в «в работе») — соседний сигнал к тому же состоянию канбана, не замена монитору.

В Hub тот же API живого снимка доступен в режиме только чтения (если смонтированы пути); запись подсказок — локально.

Какие сценарии для агента подключаются

Сценарий (skill) Роль относительно монитора
koi-execute-card При старте пишет live_log / metrics_dir / live_note; на вехах обновляет note и галочки §3. Без этих строк монитор пустой.
koi-card-autoresearch Долгий прогон: исследователь держит пульс и live_note, менеджер заранее проектирует live-вид; дебаггер смотрит лог по live_log.
koi-grill-experiment На этапе постановки фиксирует, куда пойдут логи и графики (чтобы потом было что указать в подсказках).

Отдельного скилла «только монитор» нет: это экран над файлами, которые агент обязан обновлять во время running.

Как устроено технически

Подсказки и снимок

Парсинг строк: koi/projects/live_artifacts.py (parse_live_hints, build_live_snapshot, is_live_active, хвост лога, список картинок, разбор - [ ] / - [x]). Активность по умолчанию — обновления за последние 30 минут (или running + настроенные пути).

Опционально рядом по стилю: строка compute_cost: (учёт GPU/wall) — koi/projects/compute_cost.py; в панелях монитора это не главный раздел.

API

  • GET …/boards/{board}/cards/{card}/live?tail_lines=… — снимок одной карточки;
  • GET …/projects/{id}/kanban/live-monitor — список кандидатов для монитора;
  • GET …/projects/{id}/live/file?path=… — отдать файл (картинка) из разрешённых корней.

Клиент: web/card-live.js (опрос, вкладки, панели), вызовы в web/api.js, кнопка на карточке и сиды running из лаборатории в web/app.js. Разметка окна: #card-live-modal в web/index.html.

Ограничения

  • Нет push с remote GPU: агент или ваш пайплайн должен писать лог/png на диск, видимый локальному ResearcherOS (или синхронизировать туда).
  • Пути вне репо и родителя репо отклоняются.
  • Лимиты: размер хвоста лога, число строк, число картинок (см. константы в live_artifacts.py).

Связанные страницы

Текст: content/monitor.md. Медиа: media/monitor-hero.*.