Plugin guides
Плагин Workboard
Плагин Workboard добавляет необязательную доску в стиле Kanban в интерфейс управления: рабочие карточки подходящего для агентов размера, назначение агентам и ссылки из карточки на связанную задачу, запуск и сеанс панели управления.
Workboard намеренно сделан компактным: он отслеживает локальную операционную работу одного OpenClaw Gateway. Он не заменяет GitHub Issues, Linear, Jira и другие командные системы управления проектами.
Включение
Workboard входит в комплект поставки, но по умолчанию отключён:
- Откройте Плагины в интерфейсе управления или перейдите по пути
/settings/pluginsотносительно настроенного базового пути интерфейса управления. Например, для базового пути/openclawиспользуется/openclaw/settings/plugins. - Найдите Workboard и выберите Включить. Поскольку Workboard входит в состав OpenClaw, действие Установить не требуется.
- Если интерфейс сообщает, что требуется перезапуск, перезапустите Gateway.
Вкладка Workboard появляется в навигации панели управления после загрузки среды выполнения плагина.
Пока плагин отключён, вкладка остаётся скрытой в навигации. При прямом открытии
маршрута /workboard, когда плагин отключён или заблокирован параметрами
plugins.allow/plugins.deny, вместо данных карточек отображается состояние
недоступности плагина.
Эквивалентный рабочий процесс в CLI:
openclaw plugins enable workboardopenclaw gateway restartopenclaw dashboardКонфигурация
У Workboard нет конфигурации, специфичной для плагина. Включайте и отключайте его с помощью стандартной записи плагина:
{ plugins: { entries: { workboard: { enabled: true, config: {}, }, }, },}openclaw plugins disable workboardopenclaw gateway restartПоля карточки
| Поле | Значения |
|---|---|
status |
triage, backlog, todo, scheduled, ready, running, review, blocked, done |
priority |
low, normal, high, urgent |
labels |
строки в свободной форме |
agentId |
необязательный назначенный агент |
| связанные ссылки | необязательные ссылки на задачу, запуск, сеанс или исходный URL |
execution |
необязательные метаданные запуска Codex/Claude, начатого из карточки (движок, режим, модель, сеанс, идентификатор запуска, состояние) |
Карточки также содержат компактные метаданные попыток, комментариев, ссылок, подтверждений,
артефактов, настроек автоматизации, вложений, журналов исполнителей, состояния протокола
исполнителей, заявок, диагностики, уведомлений, идентификатора шаблона, состояния архива и
обнаружения устаревших сеансов, а также список недавних событий (created, edited,
moved, linked, specified, decomposed, claimed, heartbeat,
execution_updated, attempt_started, attempt_updated, comment_added,
link_added, proof_added, artifact_added, attachment_added,
diagnostic, notification, dispatch, orchestration,
protocol_violation, archived, unarchived, stale). Эти метаданные позволяют
оператору увидеть, как карточка перемещалась по доске, не открывая связанный
сеанс; это локальный операционный контекст, а не замена расшифровкам
сеансов или истории задач GitHub.
Карточки хранятся в собственном состоянии Gateway плагина и перемещаются вместе с остальным состоянием OpenClaw этого Gateway (см. Хранилище).
Запуск работы из карточки
Из несвязанных карточек можно запускать работу напрямую:
- Запустить Codex / Запустить Claude запускает отслеживаемый как задача агентский запуск с
явно заданным движком, отправляет запрос карточки и помечает карточку как
running. Запуски Codex используютopenai/gpt-5.6-sol; запуски Claude используютanthropic/claude-sonnet-4-6. - Открыть Codex / Открыть Claude создаёт связанный сеанс панели управления без отправки запроса карточки или перемещения карточки — для ручной работы, которая остаётся привязанной к доске.
Автономные запуски используют путь агентского запуска с отслеживанием задач в Gateway (агент и модель по умолчанию, если Codex/Claude не выбран явно); затем Workboard связывает полученную задачу, идентификатор запуска и ключ сеанса с карточкой. Для каждого связанного выполнения также записывается сводка попытки (движок, режим, модель, идентификатор запуска, временные метки, состояние, скользящее число сбоев), чтобы повторяющиеся сбои оставались видимыми.
Панель управления обновляет состояние задачи из реестра задач Gateway, сопоставляя
задачи с карточками по идентификатору задачи, идентификатору запуска или ключу связанного сеанса. Задача
в очереди или в процессе выполнения поддерживает активность жизненного цикла карточки; завершённая, неудачная, превысившая
время ожидания или отменённая задача переводит карточку к состоянию review или blocked по тому же правилу
синхронизации, что и связанные сеансы (см. Синхронизация жизненного цикла сеанса).
Инструменты агента
| Инструмент | Назначение |
|---|---|
workboard_list |
Вывести компактные карточки с состоянием назначения/диагностики; необязательный фильтр по доске. |
workboard_read |
Вернуть одну карточку и ограниченный контекст исполнителя (заметки, попытки, комментарии, ссылки, подтверждения, артефакты, результаты родительских карточек, недавнюю работу назначенного исполнителя, активную диагностику). |
workboard_create |
Создать карточку с необязательными родительскими карточками, арендатором, Skills, доской, метаданными рабочего пространства, ключом идемпотентности, ограничением времени выполнения и бюджетом повторных попыток. |
workboard_link |
Связать родительскую карточку с дочерней. Дочерние карточки остаются в состоянии todo, пока каждая родительская карточка не достигнет состояния done, после чего повышение при диспетчеризации переводит их в состояние ready. |
workboard_claim |
Назначить карточку вызывающему агенту; переводит backlog/todo/ready в running. |
workboard_heartbeat |
Обновить Heartbeat назначения во время длительного выполнения. |
workboard_release |
Освободить назначение после завершения, приостановки или передачи; может перевести карточку в следующий статус. |
workboard_complete / workboard_block |
Структурированные инструменты жизненного цикла для итоговых сводок, подтверждений, артефактов и манифестов созданных карточек (должны ссылаться на карточки, связанные с завершённой карточкой) либо причин блокировки. |
workboard_attachment_add / workboard_attachment_read / workboard_attachment_delete |
Хранить небольшие вложения карточек в состоянии плагина SQLite, индексировать их в карточке и предоставлять в контексте исполнителя. |
workboard_worker_log / workboard_protocol_violation |
Записывать строки журнала исполнителя и блокировать карточку, если автоматический исполнитель останавливается без вызова workboard_complete/workboard_block. |
workboard_board_create / workboard_board_archive / workboard_board_delete |
Управлять сохраняемыми метаданными доски (отображаемым именем, описанием, состоянием архивации, рабочим пространством по умолчанию). |
workboard_runs |
Вернуть сохраняемую историю попыток выполнения для карточки. |
workboard_specify |
Преобразовать черновую карточку разбора/очереди задач в уточнённую карточку todo; записать сводку спецификации в карточке. |
workboard_decompose |
Разделить родительскую карточку оркестрации на связанные дочерние карточки с наследованием метаданных доски/арендатора; может завершить родительскую карточку с манифестом созданных карточек. |
workboard_notify_subscribe / workboard_notify_list / workboard_notify_events / workboard_notify_advance / workboard_notify_unsubscribe |
Управлять подписками на уведомления. Чтение событий допускает безопасное повторное воспроизведение; advance перемещает сохраняемый курсор, чтобы вызывающие стороны могли продолжить работу без потери или повторного чтения событий завершённых, неуспешных или устаревших карточек. |
workboard_boards / workboard_stats |
Просматривать пространства имён доски и статистику очереди. |
workboard_promote / workboard_reassign / workboard_reclaim |
Восстанавливать или передавать зависшую работу. |
workboard_comment / workboard_proof |
Добавлять заметки о передаче или прикреплять ссылки на подтверждения/артефакты. |
workboard_unblock |
Возвращать заблокированную работу в состояние todo. |
workboard_dispatch |
Запускать повышение зависимостей или очистку устаревших назначений. |
Назначенные карточки отклоняют изменения через инструменты агента от других агентов, если вызывающая сторона
не владеет токеном назначения, возвращённым workboard_claim. В каждой карточке, возвращаемой
инструментом агента или вызовом RPC Gateway, значение metadata.claim.token скрывается как [redacted]
(сам токен возвращается однократно на верхнем уровне только из workboard_claim),
поэтому операторы панели управления и другие агенты могут просматривать состояние назначения, никогда
не получая пригодный для использования токен. Восстановление выполняется через
workboard_promote/workboard_reassign/workboard_reclaim, для которых
токен не требуется.
Диспетчеризация
Диспетчеризация выполняется локально в Gateway: она не запускает произвольные процессы ОС. Выполнение по-прежнему обеспечивают обычные сеансы субагентов OpenClaw. Один проход диспетчеризации:
- Повышает карточки с готовыми зависимостями.
- Записывает метаданные диспетчеризации в готовые карточки.
- Блокирует истёкшие назначения или выполнения с превышенным временем ожидания.
- Помечает настроенные на доске карточки разбора как кандидаты на оркестрацию.
- Назначает небольшую группу готовых карточек и запускает выполнения исполнителей через среду выполнения субагентов Gateway.
Исполнители получают ограниченный контекст карточки и токен назначения, необходимый для отправки Heartbeat, завершения или блокировки карточки через инструменты Workboard.
Выбор исполнителей
Каждый проход по умолчанию запускает не более 3 исполнителей. Готовые карточки упорядочиваются по
приоритету, затем по позиции, затем по времени создания. За один проход запускается только одна карточка для каждого
владельца/агента; владельцы, у которых на доске уже выполняется работа или работа находится на проверке,
пропускаются. Архивные карточки, карточки с активным назначением и карточки не в статусе ready
никогда не выбираются для запуска исполнителей (при этом на них по-прежнему может влиять
часть диспетчеризации, работающая с данными: очистка устаревших назначений, повышение зависимостей, очистка
по превышению времени ожидания).
Ключи сеансов определяются детерминированно для каждой доски/карточки, поэтому повторные диспетчеризации направляют работу обратно в тот же канал исполнителя, а не создают несвязанные сеансы:
- Назначенные карточки:
agent:<agentId>:subagent:workboard-<boardId>-<cardId> - Неназначенные карточки:
subagent:workboard-<boardId>-<cardId>(Gateway определяет настроенного агента по умолчанию)
Если исполнителя невозможно запустить после назначения карточки, Workboard блокирует карточку, снимает назначение, записывает ошибку запуска выполнения и добавляет строку журнала исполнителя, доступную в панели управления, JSON CLI, инструментах агента и диагностике карточки.
Точки входа
- Действие диспетчеризации в панели управления
openclaw workboard dispatch/workboard dispatchв канале с поддержкой команд
Все три используют среду выполнения субагентов Gateway, когда Gateway доступен. В
CLI предусмотрен один резервный вариант для оператора: если вызов Gateway завершается ошибкой
подключения/недоступности (или ошибкой unknown method для старых
версий Gateway), при этом не задана явная цель --url/--token и не применяется настроенный удалённый
Gateway (OPENCLAW_GATEWAY_URL или gateway.mode: remote), CLI выполняет
диспетчеризацию только данных для локального состояния SQLite — он может повышать зависимости,
очищать устаревшие назначения и блокировать выполнения с превышенным временем ожидания, но не может запускать исполнителей. Ошибки
аутентификации, разрешений и проверки от доступного Gateway не считаются
недоступностью; они отображаются как ошибки команды, как и любая ошибка Gateway,
если была задана явная цель --url/--token.
В метаданных доски можно задать autoDecompose, autoDecomposePerDispatch,
defaultAssignee и orchestratorProfile. OpenClaw записывает это намерение и
предоставляет его в контексте исполнителя; фактическое создание спецификации/декомпозиция по-прежнему выполняется
через обычные инструменты Workboard.
CLI и команда с косой чертой
openclaw workboard list [--board <id>] [--status <status>] [--include-archived] [--json]openclaw workboard create "Исправить жизненный цикл устаревшей карточки" --priority high --labels bug,workboardopenclaw workboard show <card-id> [--json]openclaw workboard dispatch [--board <id>] [--json]Текстовый вывод list по умолчанию скрывает архивные карточки (--include-archived
переопределяет это поведение); --json всегда включает архивные карточки в соответствии с контрактом
полной карточки, используемым существующими скриптами. show принимает однозначный префикс идентификатора.
list, create и show всегда читают/записывают локальное состояние плагина напрямую.
Только dispatch вызывает работающий Gateway с описанным выше резервным вариантом.
Полное описание флагов, вывода JSON, резервного поведения Gateway, обработки префиксов идентификаторов, правил выбора при диспетчеризации и устранения неполадок см. в разделе CLI Workboard.
/workboard list, /workboard show <card-id>, /workboard create <title>
и /workboard dispatch соответствуют CLI. Операции просмотра списка и сведений
доступны любому авторизованному отправителю команд. Для создания и диспетчеризации
в чатах требуется статус владельца, а для клиента Gateway — operator.write/operator.admin.
Синхронизация жизненного цикла сеанса
Карточки можно связать с существующим сеансом панели управления или с сеансом, созданным при запуске работы из карточки. В связанных карточках жизненный цикл сеанса отображается непосредственно в карточке: выполняется, устарел, связан и бездействует, завершён, завершился с ошибкой или отсутствует. Существующий сеанс также можно добавить со вкладки Sessions с помощью Add to Workboard; карточка будет связана с этим сеансом, получит заголовок из метки сеанса или последнего запроса пользователя, а в заметки будут добавлены последний запрос пользователя и, при наличии, последний ответ ассистента.
Если связанный сеанс пропадает, карточка сохраняет связь для контекста
и по-прежнему предоставляет элементы управления запуском, позволяющие
перезапустить работу в новом сеансе. Если активный связанный сеанс перестаёт
сообщать о недавней активности, Workboard помечает карточку как
stale и сохраняет это значение в метаданных, пока оно не будет
сброшено жизненным циклом.
Пока карточка находится в активном рабочем состоянии, Workboard отслеживает связанный сеанс:
| Состояние связанного сеанса | Статус карточки |
|---|---|
| активен | running |
| завершён | review |
| ошибка, принудительная остановка, истечение времени ожидания или прерывание | blocked |
Состояния ручной проверки имеют приоритет. Перемещение карточки в review, blocked или done
останавливает её автоматическую синхронизацию, пока вы не вернёте её в todo или running.
При запуске карточки используются обычные сеансы Gateway; Workboard хранит
только метаданные и связи карточки. Расшифровка беседы, выбор модели и жизненный
цикл выполнения остаются в ведении стандартной системы сеансов. Чтобы прервать
активное выполнение, используйте Stop в активной связанной карточке — Workboard
пометит её как blocked, чтобы она оставалась видимой для последующих действий.
Новые карточки можно создавать из шаблонов Workboard (bugfix, docs, release,
pr_review, plugin). Шаблоны предварительно заполняют заголовок, заметки, метки и приоритет;
идентификатор шаблона сохраняется в метаданных карточки.
Рабочий процесс в панели управления
- Откройте вкладку Workboard в Control UI.
- Создайте карточку, указав заголовок, заметки, приоритет, метки, необязательного агента и необязательный связанный сеанс, либо откройте Sessions и выберите Add to Workboard для существующего сеанса.
- Перетаскивайте карточку между столбцами либо сфокусируйтесь на её компактном элементе управления статусом и используйте меню или ArrowLeft/ArrowRight.
- Запустите работу из карточки, чтобы создать или повторно использовать сеанс панели управления.
- Открывайте связанный сеанс из карточки, пока агент работает.
- Позвольте синхронизации жизненного цикла переместить выполняемую работу в
review/blocked, а затем вручную переместите карточку вdoneпосле принятия результата.
Диагностика
Диагностика вычисляется на основе локальных метаданных карточек. Встроенные проверки выявляют:
| Тип | Условие |
|---|---|
stranded_ready |
Назначенная карточка todo/backlog/ready не обновлялась более 1 часа. |
running_without_heartbeat |
Карточка running не получала Heartbeat заявки или обновление выполнения более 20 минут. |
blocked_too_long |
Карточка blocked не обновлялась более 24 часов. |
repeated_failures |
Число отслеживаемых сбоев карточки достигло 2 или более. |
missing_proof |
У карточки done отсутствуют подтверждения, артефакты и вложения. |
orphaned_session |
У карточки running есть sessionKey, но отсутствуют метаданные execution. |
Разрешения
Методы RPC Gateway находятся в пространстве workboard.*:
| Область | Методы |
|---|---|
operator.read |
cards.list, cards.export, cards.diagnostics, просмотр списка и получение вложений, чтение событий уведомлений, boards.list, cards.stats, cards.runs |
operator.write |
cards.diagnostics.refresh, создание/обновление/перемещение/удаление/комментирование/связывание/связывание зависимости/подтверждение/артефакт, добавление/удаление вложений, журнал исполнителя, нарушение протокола, получение заявки/Heartbeat/освобождение/повышение/переназначение/повторное получение/завершение/блокировка/разблокировка, cards.dispatch, cards.bulk, архивирование, boards.upsert/archive/delete, cards.specify/decompose, подписка на уведомления/удаление/продвижение |
Ни один метод RPC не требует operator.admin. Браузеры, подключённые
с доступом оператора только для чтения, могут просматривать доску, но не могут
изменять карточки.
Хранилище
Workboard хранит постоянные данные в принадлежащей плагину реляционной базе данных SQLite в каталоге состояния OpenClaw: доски, карточки, метки, события жизненного цикла, попытки выполнения, комментарии, связи зависимостей, подтверждения, ссылки на артефакты, метаданные и двоичные данные вложений, диагностика, уведомления, журналы исполнителей, состояние протокола и подписки хранятся в таблицах Workboard (а не в записях хранилища ключей и значений плагина). Экспорт карточки сохраняет историю доски, не встраивая содержимое двоичных данных вложений.
В установках, где Workboard использовался в выпуске .28, можно
запустить openclaw doctor --fix, чтобы перенести поставлявшиеся устаревшие
пространства состояний плагина (workboard.cards, workboard.boards,
workboard.notify и, при наличии, workboard.attachments) в реляционную базу данных.
Устранение неполадок
На вкладке указано, что Workboard недоступен
openclaw plugins inspect workboard --runtime --jsonЕсли настроен plugins.allow, добавьте в него workboard. Если
plugins.deny содержит workboard, удалите это значение перед
включением плагина.
Карточки не сохраняются
Убедитесь, что подключение браузера имеет доступ operator.write. Сеансы
оператора только для чтения могут просматривать список карточек, но не могут
создавать, редактировать, перемещать или удалять их.
При запуске карточки не открывается ожидаемый сеанс
Проверьте идентификатор агента и связанный сеанс карточки, затем откройте Sessions или Chat, чтобы проверить фактическое состояние выполнения.
Диспетчеризация не запускает исполнителя
Убедитесь, что существует хотя бы одна карточка ready без активной заявки:
openclaw workboard list --status readyЕсли CLI сообщает о диспетчеризации только данных, запустите или перезапустите Gateway и повторите попытку — диспетчеризация только данных обновляет локальное состояние доски, но не может запускать процессы исполнителей субагентов. Карточки также могут пропускаться, если другая карточка того же владельца или агента уже выполняется либо ожидает проверки; завершите, заблокируйте или освободите эту активную работу, прежде чем диспетчеризировать дополнительные задачи для того же владельца.