Консоль платформы¶
Модуль 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.