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

Консоль платформы

Модуль Control Plane в веб-консоли платформы: обзор, задачи и их карточки, прогоны агентов, согласования, журнал событий, организация и участники. Статья для оператора — что на каком экране и какие действия оттуда доступны. Как консоль устроена и разворачивается, описано в разделе Веб-консоль.

Вход и видимость

Консоль открывается в браузере по адресу платформы (например https://platform.example.com/), вход — по e-mail и паролю через Keycloak. Экраны Control Plane лежат под /<locale>/control-plane/… (ru или en).

Модуль виден, если одновременно:

  • у tenant'а включён feature flag control_plane_console;
  • у пользователя роль org_admin или platform_admin.

Иначе вместо экранов — «Модуль не включён» или «Недостаточно прав».

Собственного credential у консоли нет. Цепочка identity:

sequenceDiagram
    participant B as Браузер
    participant W as platform-web
    participant A as platform-api (шлюз)
    participant I as IAM
    participant C as Control Plane
    B->>W: cookie сессии (Keycloak, PKCE)
    W->>A: Bearer <access token Keycloak><br/>/api/v1/services/control-plane/api/v1/…
    A->>I: federation:exchange → токен audience control-plane
    A->>C: запрос с токеном пользователя
    C-->>B: ответ (права — по binding пользователя)

Что видно и что можно сделать, определяется правами binding вашего principal'а в Control Plane — ровно как в Claude Code. Нет права на отдельный эндпоинт — пустеет одна панель с подписью «нет права …», а не весь экран. Bearer-токен в браузер не попадает.

Навигация

Пункты модуля в боковом меню платформы, в трёх группах:

Группа Экран Путь
Работа Фокус /control-plane/focus
Обзор /control-plane/overview (корень модуля)
Задачи /control-plane/tasks
Согласования /control-plane/approvals
Исполнение Агенты и сессии /control-plane/agents
Журнал событий /control-plane/events
Память контекста /control-plane/memory
Организация Пространства и роли /control-plane/org
Типы задач /control-plane/task-types
Участники и ключи /control-plane/principals

Экраны без пункта меню, открываемые по ссылкам:

Экран Путь
Карточка задачи /control-plane/tasks/<ref> (publicId или id)
Прогон /control-plane/runs/<run-id>
Артефакт на весь экран /control-plane/artifacts/<artifact-id>
Документ /control-plane/documents/<document-id>

Над контентом модуля — шапка с «хлебными крошками», индикатором потока событий и кнопкой «Создать задачу», под ней — бегущая строка последних событий.

Экраны

Фокус

«Что требует вас сегодня»: ваша сессия консоли, ожидающие согласования, упавшие запуски («Запуск упал: <причина>»), истёкшие захваты («задача без исполнителя …») и аренды, которые скоро истекут. Если широкие списки недоступны по правам, экран строится из собственного контекста /harness/context.

Обзор

Сводка: счётчики задач, панель внимания (последние значимые события), активные аренды, последние события и таблица Workspace.

Задачи

Список задач с фильтрами и курсорной пагинацией; фильтры и курсор хранятся в URL.

Возможность Описание
Вид таблица или канбан по статусам (закрытые без результата скрыты, есть «показать»)
Фильтры Workspace (с поддеревом или без), статус/категория, «только доступные к захвату» (/work/available)
Колонки ID, задача, статус, приоритет, тип, исполнитель, захват (аренда, токен), версия, обновлена

Кнопка «Создать задачу» открывает диалог: название, описание, приоритет, тип (из реестра типов), Workspace, исполнитель, срок. Назначение исполнителем агента — способ поставить задачу runner'у с ONLY_ASSIGNED.

Карточка задачи

Одно авторитетное чтение задачи и параллельно всё вокруг неё; каждая дополнительная панель деградирует сама по себе.

Панель Что показывает и позволяет
Шапка Захватить (или перехватить истёкший захват), Запросить отмену текущего запуска, Завершить задачу (если из текущего статуса есть переход к завершению)
Мета версия, эпоха захвата, тип, статус, Workspace, срок; Редактировать: название, описание, приоритет, статус (только по объявленным переходам), исполнитель. Сохранение идёт с If-Match версии; конфликт — «Запись изменил кто-то другой, перечитайте»
Захват состояние (свободна / активен / мой / истёк), держатель, сессия, аренда и последняя активность; продлить, отпустить, перехватить
Согласование approvals задачи: блокирующее или нет, адресат (роль или участник), комментарий; Согласовать / Отклонить для того, кто вправе решать
Требования и claimability почему задачу можно или нельзя взять
Связи parent, зависимости, spawned_by (например задача ревью → исходная)
Прогоны запуски задачи со ссылками на экран прогона
Артефакты commit, report, transcript, документы; клик открывает панель справа, есть переход на весь экран
Комментарии тред задачи: чтение, новый комментарий, правка своего
Прикрепить файл загрузить документ в хранилище платформы и привязать к задаче артефактом document

Захват из консоли

Консоль открывает собственную сессию харнесса (cookie cp_web_session). Захват из консоли — такой же claim, как из Claude Code: пока он ваш, правки уходят с его fencing token; если задачу держит другой участник, сохранение будет отклонено.

Прогон

Экран одного run — главный инструмент наблюдения за агентами.

Блок Содержимое
Шапка попытка, токен, время старта; ссылки на задачу и на «Агенты»
Итоговый ответ final транскрипта или summary артефакта report; «прогон ещё идёт — итога пока нет»
Ход прогона лента транскрипта: сообщения агента, вызовы инструментов с раскрывающимися входом и результатом, статус вызова; число скрытых блоков рассуждений; пометки об обрезке и о непубликуемом выводе
Действия run actions: tool.*, claude-code.turn, статус, старт, длительность, сводка, ссылка
Контрольные точки execution.workspace, claude-code.session и др.
Артефакты прогона отчёт, транскрипт, коммит

Пока прогон жив, экран сам дочитывает actions, артефакты и checkpoints каждые 5 секунд; до публикации транскрипта лента строится из actions. Подробно о содержимом — Трасса прогонов.

Согласования

Список approvals с фильтром по статусу (ожидают, согласованы, отклонены, отменены) и пагинацией. Карточка: блокирующее («задача ждёт решения») или консультативное, задача, адресат, комментарий запроса; поле решения с комментарием. Справа — «Ваши права»: можете ли вы решать (approvals.decide), управлять (approvals.manage), ваши роли.

Здесь же ревьюер решает приёмку задач на код (ревью перед вливанием ветки) — см. Ревью и вливание кода.

Агенты и сессии

Участники-агенты и их сессии: живые и истёкшие (истёкшие подчищает worker), текущая работа каждого (задача, прогон). Отсюда — переход к прогону.

Журнал событий

Журнал доменных событий: хвост (последние 50), страница после известного курсора или от самого старого хранимого события. Курсор идёт только вперёд; режим «следить» — опросом.

Память контекста

Диагностика адаптера контекста и памяти: что ответил эндпоинт диагностики, включая код ответа; действия redrive/rebuild для администраторов операций.

Пространства и роли

Дерево Workspace, роли и их область (Workspace или платформа), скиллы. Управление: создание и правка Workspace, архивирование и перенос, участники Workspace, роли и скиллы.

Типы задач

Реестр типов задач: все версии каждого ключа, число задач на версии, редактор новой версии и вывод версии из употребления (deprecate). Изменение типа — изменение процесса tenant'а.

Участники и ключи

Principals tenant'а (люди, агенты, сервисы), их роли, capabilities и скиллы, API-ключи (выпуск и отзыв там, где legacy-ключи ещё используются).

Документы и артефакты

Артефакт открывается панелью справа (?artifact=<id> в адресе текущего экрана) или на весь экран. Просмотрщик понимает PDF, DOCX, XLSX, CSV, Markdown, JSON, текст и изображения. Документ платформы доступен по /control-plane/documents/<id>. Подробнее — Документы и файлы.

Что консоль делает через API

Браузер никогда не ходит в Control Plane напрямую: мутации идут в маршрут консоли /api/cp/<path>, который пропускает только перечисленные операции (остальное — 404):

Операция Эндпоинт
создать, изменить задачу POST /tasks, PATCH /tasks/{id}
захват, старт run, завершение POST /tasks/{id}:claim, :start-run, :complete
связи, комментарии POST /tasks/{id}/relations, DELETE …/relations/{id}, POST/PATCH …/comments
аренда POST /claims/{id}:heartbeat, :release, :reclaim
прогон POST /runs/{id}:cancel, :fail, POST /runs/{id}/control-messages
approvals POST /approvals, POST /approvals/{id}:approve, :reject, :cancel
администрирование principals, API-ключи, роли, capabilities, скиллы, Workspace, типы задач

Создающие запросы уходят с Idempotency-Key, правка и завершение задачи — с If-Match: "task-<version>".

Типичные проблемы

Симптом Причина
«Модуль не включён» у tenant'а выключен флаг control_plane_console
«Недостаточно прав» нет роли org_admin / platform_admin
панель с подписью «Нет права …» у вашего binding нет соответствующего права Control Plane
выкидывает на страницу входа истекла сессия Keycloak; войдите снова
«Запись изменил кто-то другой» конфликт версии: перечитайте карточку
кнопка «Завершить» неактивна из текущего статуса нет перехода в статус завершения, или gate-approval не решён

Подробнее — Диагностика: панель и Keycloak.

См. также