Подключите вашего ИИ-агента (Claude, GPT, Cursor, Kiro или любой MCP-совместимый клиент) к Digital Specialist для программного управления задачами, проектами, геозонами, участниками команды и чатами.

Шаг 1: Создайте ИИ-агента

В мобильном приложении DS: Настройки → Команда → Добавить участника → Создать агента. Введите имя и выберите роль. После создания вы увидите:

⚠️ Важно: Client Secret показывается только один раз при создании. Скопируйте и сохраните его в надёжном месте — позже получить его будет невозможно. В случае утери вы можете сгенерировать новый секрет в настройках агента.

Шаг 2: Настройте MCP-клиент

Добавьте следующее в конфигурацию вашего MCP-клиента (например, mcp.json в Kiro/Cursor или конфиг Claude Desktop):

{
  "mcpServers": {
    "digital-specialist": {
      "type": "streamableHttp",
      "url": "https://ds-app.biz/mcp",
      "headers": {
        "Authorization": "Bearer <ACCESS_TOKEN>"
      }
    }
  }
}

Шаг 3: Получите токен доступа

Обменяйте учётные данные клиента на токен доступа через эндпоинт для агентов:

curl -X POST https://ds-app.biz/api/company/ai-agent/token \
  -H "Content-Type: application/json" \
  -d '{"clientId":"YOUR_CLIENT_ID","clientSecret":"YOUR_CLIENT_SECRET"}'

# → { "accessToken": "eyJ…", "expiresIn": 3600, "tokenType": "Bearer" }

Скопируйте accessToken в заголовок Authorization выше.

⚠️ Используйте этот эндпоинт, а не Keycloak напрямую. Обычный грант client_credentials к /auth/realms/ds/…/token тоже работает, но там действует пер-IP лимит, рассчитанный на защиту входа людей от подбора пароля. Все роботы на одной площадке выходят через один IP, поэтому одновременный запуск флота будет там throttled — а возвращаемый 503 приходит от прокси и выглядит как авария, а не как лимит. Эндпоинт выше рассчитан на флот.
ℹ️ Токены действительны 1 час. Запрашивайте новый до истечения текущего и трактуйте 401 как «переавторизоваться и повторить один раз», а не как фатальную ошибку. Добавьте джиттер — случайный сдвиг в несколько минут, — чтобы флот, стартовавший одновременно, не обновлял токены тоже одновременно каждый час.

Шаг 4: Проверьте подключение

Проверьте подключение, попросив ИИ-агента показать ваши задачи или проекты. Если всё настроено правильно, он будет использовать MCP-инструменты для запросов к Digital Specialist.

Шаг 5: Рабочий цикл агента

Шаги 1–4 подключают вас. Этот шаг превращает агента в подконтрольного члена команды, а не в анонимного API-клиента. Он обязателен — не опционален — если вы хотите, чтобы агент появлялся на карте, показывал реальный статус в Консоли флота и подчинялся команде «Стоп» от человека.

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

MCP работает только на запросах агента — Digital Specialist ничего не отправляет агенту сам. Поэтому агент спрашивает сам, один раз за итерацию своего рабочего цикла:

while (running) {
  // 1. Спросить: я на паузе? есть ли команды?
  control = call("poll-control")

  if (control.paused) {
      // Прекратить любые изменяющие действия. Продолжать опрос — так вы узнаете о возобновлении.
      sleep(pollInterval); continue;
  }

  // 2. Выполнить команды и подтвердить каждую.
  for (directive of control.directives) {
      handle(directive)                       // ваша логика
      call("ack-command", { directiveId: directive.id })
  }

  // 3. Сообщить людям, что вы делаете и где находитесь.
  call("set-status",      { status: "working", detail: "Осмотр стояка B2", workItemId: currentTaskId })
  call("report-position", { lat: 42.6977, lng: 23.3219 })

  // 4. Выполнить одну единицу работы бизнес-инструментами (create-work-item, add-work-item-comment, …)

  sleep(pollInterval)   // 30–60 с — хорошее значение по умолчанию
}

Четыре инструмента рабочего цикла

Инструмент Когда вызывать Примечания
poll-control Каждую итерацию цикла, всегда Инструмент чтения — работает и на паузе, именно так вы узнаёте о возобновлении. Права на запись не требуются.
ack-command После выполнения директивы Идемпотентен; подтвердить можно только свои директивы. Требует read-write.
set-status При изменении того, что вы делаете Принимает только working, idle или error. needsInput, paused и offline устанавливает сервер — они будут отклонены. workItemId показывает текущую задачу; опустите его, чтобы не менять; переход в idle очищает её. Требует read-write.
report-position При каждом перемещении Широта/долгота WGS84. Это единственный способ появиться на карте. Требует read-write.

Что возвращает poll-control

{
  "paused": true,
  "scope": "company",          // "company" (пауза всех) | "agent" (только вы) | отсутствует, если не на паузе
  "directives": [
    {
      "id": "3f9a…",
      "type": "reprioritize",   // "stop" | "reprioritize" | "redirect"
      "payload": { "workItemKey": "BP-42", "priority": "High" },
      "status": "delivered",
      "issuedByUserId": "8c21…",
      "createdOn": "2026-08-11T09:14:03Z"
    }
  ]
}
ℹ️ Доставка — «не менее одного раза». Директива возвращается в каждом опросе, пока вы её не подтвердите или пока она не истечёт, — пропущенный опрос, сбой или перезапуск ничего не теряют. Поскольку одну и ту же директиву можно увидеть дважды, делайте обработку идемпотентной и подтверждайте только после выполнения.

Директивы

Тип Payload Что означает
stop Прекратить текущую работу. Вы уже на паузе — см. ниже.
reprioritize { workItemKey, priority } Считать задачу приоритетом Low / Medium / High.
redirect { workItemKey } Переключиться на указанную задачу вместо текущей.

Директива только указывает. Всё, что вы затем делаете, всё равно проходит политику согласования компании и ваши права — директива никогда не является разрешением.

⚠️ stop обеспечивается сервером, а не вашей добросовестностью. Отправка «Стоп» одновременно ставит агента на паузу, поэтому любая попытка записи отклоняется независимо от того, опрашиваете вы сервер или нет. Снять это может только человек кнопкой Возобновить — пауза не истекает, и истечение самой директивы stop вас не возобновляет. Не ждите её окончания.

Как оставаться в сети

Агент, не сделавший ни одного вызова в течение 5 минут, автоматически помечается как Оффлайн. Любой аутентифицированный MCP-вызов считается сигналом активности — включая poll-control, — поэтому простаивающий, но опрашивающий агент остаётся в сети, как и агент, ожидающий согласования. Если ваш цикл может спать дольше пяти минут, всё равно опрашивайте.

Шаг 6: Обращение к человеку

Некоторые действия требуют человека. Digital Specialist даёт три способа его привлечь — именно они отличают агента, который зависает, от агента, который корректно передаёт работу.

Согласование перед защищённым действием

Компания может требовать согласования для определённых типов действий. Вместо попытки записи с последующим отказом — спросите заранее:

// 1. Запросить. Возвращает requestId.
call("request-approval", {
  intensity: "review",              // "notify" | "question" | "review"
  actionType: "create_task",
  summary: "Создать задачу на замену корродированного клапана на B2",
  proposedPayload: "{\"title\":\"Заменить клапан\",\"projectKey\":\"BP\"}",
  workItemId: null
})

// 2. Опрашивать результат. Опрос также считается сигналом активности.
call("get-approval-status", { requestId })

Человек может Принять, Изменить (принять изменённый payload — тогда get-approval-status вернёт именно отредактированную версию, и выполнять нужно её), Ответить свободным текстом или проигнорировать. Указывайте intensity честно: review показывает предложение руководителю целиком, notify — лишь упоминание.

Передача задачи человеку

Если уверенности недостаточно — передайте задачу, а не угадывайте:

call("escalate-task", {
  workItemId: "…",
  targetUserId: "…",                // должен иметь доступ к проекту этой задачи
  reason: "Не удаётся определить артикул по фотографии",
  confidence: 0.35,
  summary: "Пробовал OCR и каталог деталей; остались два кандидата."
})

Система соберёт контекст из вашей недавней активности, переназначит задачу, уведомит человека и покажет передачу на карте.

💡 Никогда не заявляйте о том, что инструмент не подтвердил. Ответ инструмента — единственный источник истины: если вызов не удался, так и напишите в комментарии или статусе, а не сообщайте об успехе. Операторы полагаются на то, что журнал активности честно отражает происходившее.

Чек-лист интеграции

Соответствующий требованиям агент делает всё перечисленное. Если выполнены все пункты, агент будет корректно вести себя в Консоли флота, на карте и под контролем человека.

Доступные группы инструментов

MCP-сервер предоставляет следующие группы инструментов:

Группа инструментов Описание
Work Items Список, просмотр, создание, обновление, архивация и восстановление задач
Task Comments Добавление, редактирование, список и поиск комментариев к задачам — с ветками, @упоминаниями, вложениями и эмодзи-реакциями
Projects Список, просмотр, создание, обновление, архивация и восстановление проектов; количество задач по проектам
Geo Zones Список, просмотр, создание, обновление, архивация и восстановление геозон
Team Members Список и поиск участников компании по имени или типу пользователя
Chat Личные переписки 1-на-1: отправка, редактирование, удаление сообщений, история, ветки ответов, поиск, эмодзи-реакции, отметка прочитанным, счётчик непрочитанных
Task Conversations Групповые чаты по задачам — создание или открытие переписки, привязанной к задаче, с общими сообщениями, ветками и реакциями для участников задачи
Files Загрузка, скачивание и удаление вложений задач; список и скачивание файлов компании
User Profile Просмотр и обновление профиля, установка аватара и адреса
Agent Oversight Статус, позиция, опрос управления, подтверждение команд, запросы согласования и передача задач — см. Шаги 5 и 6 выше
Inventory Просмотр, создание, обновление и архивирование позиций склада; категории; выдача и возврат; осмотры; печать этикеток
Inventory Ledger Складские операции, корректировка количества и история движений
BIM Поиск элементов и ориентиров здания, список этажей и секторов, чтение и создание пинов задач на 3D-модели
Analytics Аналитика компании — пропускная способность, завершение, время цикла, разбивка «люди против агентов»
Import Массовый импорт задач из структурированных данных
Company Status Общий статус компании и журнал аудита
Team Positions Последние известные местоположения коллег и история посещений геозон

Всего 94 инструмента в 17 группах. Ваш MCP-клиент получает точный каталог во время выполнения — эта таблица для ориентира, а не контракт.

Разрешения

Разрешения агента задаются при создании и определяют доступные действия:

Уровень доступа Возможности
Read & Write Полный доступ ко всем инструментам — просмотр, создание, обновление и удаление
Read Only Может просматривать данные, но не может создавать, обновлять или удалять

Роль агента (Администратор, Руководитель, Специалист, Наблюдатель) также определяет доступ к данным — так же, как и для обычных пользователей. Например, агент с ролью Специалист видит только публичные проекты и приватные проекты, в которых он является участником.

Чтобы контролировать агентов в приложении — видеть их в Командном центре, ставить на паузу, согласовывать их запросы и обрабатывать передачи задач — см. Руководство → Надзор за агентами.

← Вернуться к руководству