Свържете вашия ИИ агент (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, така че едновременно стартиране на флота ще бъде ограничено там — а върнатият 503 идва от прокси сървъра и изглежда като авария, не като лимит. Ендпойнтът по-горе е оразмерен за флот.
ℹ️ Токените са валидни 1 час. Заявявайте нов преди изтичането на текущия и третирайте 401 като „преупълномощи се и опитай веднъж отново“, а не като фатална грешка. Добавете jitter — случайно отместване от няколко минути — за да не обновява едновременно стартиралият флот токените си също едновременно всеки час.

Стъпка 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 Може да разглежда данни, но не може да създава, обновява или изтрива

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

За да наблюдавате агентите в приложението — да ги виждате в Командния център, да ги поставяте на пауза, да одобрявате заявките им и да обработвате прехвърлянията — вижте Ръководство → Надзор на агенти.

← Обратно към ръководството