Тактичні оператори, що використовують CloudTAK — браузерний фронтенд до TAK Server — стикаються з постійною точкою тертя: розривом між усвідомленням того, що їм потрібно зробити, і завершенням дії в інтерфейсі. Розміщення маркера контакту потребує довгого натискання, вибору меню, вибору типу CoT, діалогу введення координат, поля позивного та підтверджувального дотику. У спокійних умовах за столом це займає п'ятнадцять-двадцять секунд. Під тиском часу, у рукавицях, у машині на ґрунтовій дорозі ця послідовність розпадається. Кроки пропускаються. Координати вводяться неправильно. Маркери опиняються на неправильній сітці. Наслідок — не лише витрачений час, а деградована загальна оперативна картина, за якою навігує весь підрозділ.

TAKpilot — це ШІ-чат-копілот, вбудований безпосередньо в CloudTAK, що усуває навігацію меню як основний режим взаємодії. Оператори вводять — або диктують — те, що їм потрібно: «розмісти ворожий піхотний контакт на 37U DP 12345 67890, позивний CONTACT-7». TAKpilot перекладає фразу у структурований виклик TAK API, виконує його та показує оператору картку в реальному часі, що підтверджує дію та її результат. Маркер на карті менш ніж за дві секунди. Без меню, без діалогів вибору, без пошуку формату координат.

Ця стаття охоплює, як TAKpilot працює на практиці: модель природномовних команд, підтвердження символів MIL-STD-2525/APP-6, зорову та файлову розвідку, потокові картки інструментів, шлюз безпеки підтвердження/відмови та оперативне розгортання продукту зі Збройними силами України.

Проблема навігації меню в CloudTAK під тиском часу

Структура меню CloudTAK відображає широту того, що може робити TAK Server. Ця широта є водночас перевагою спроможності та джерелом когнітивного навантаження. Той самий оператор, що може вільно навігувати CloudTAK під час сесії планування за столом, стає схильним до помилок, коли оперативний темп зростає. Дослідження в галузі тактичних людських факторів послідовно оцінюють накладні витрати навігації UI у 30–40 відсотків загального часу управління COP для досвідчених операторів — не тому, що програмне забезпечення погано спроектоване, а тому, що жодна деревоподібна система меню не відповідає швидкості природного мовлення для рутинних команд.

Проблема накопичується за типами операцій. Підписка на новий канал даних потребує навігації до панелі управління каналами, пошуку потрібного каналу в списку, що може містити десятки записів, та натискання «підписатися». Зміна пріоритету місії потребує відкриття місії, натискання «редагувати», прокручування до поля пріоритету, зміни значення та збереження. Кожна з них — це багатокрокова UI-транзакція. Протягом чотиригодинного оперативного періоду активний оператор може виконати шістдесят-вісімдесят таких транзакцій. Сукупна вартість навігації значна — і вона безпосередньо конкурує з часом, який оператор має витрачати на читання та інтерпретацію картини, а не на управління нею.

Ключова думка: Вузьке місце — не навичка оператора чи якість програмного забезпечення, а структурна невідповідність між ієрархічною системою меню та оперативним темпом, з яким тактичні рішення мають перекладатися в оновлення COP. Природна мова вирішує цю невідповідність, відповідаючи швидкості та формі наявного когнітивного виходу оператора.

Як природна мова усуває накладні витрати навігації

Модель команд TAKpilot побудована на виклику функцій LLM. Кожна операція CloudTAK, надана бібліотекою інструментів TAKpilot, визначена як JSON-схема: назва функції, опис простою мовою того, що робить функція, та типізований набір параметрів з обмеженнями валідації. Коли оператор надсилає повідомлення, модель отримує його разом із повною бібліотекою інструментів і обирає відповідну функцію — або послідовність функцій — та заповнює параметри з природномовного вводу.

Репрезентативні природномовні команди та те, що вони виконують:

  • «Розмісти ворожу бронемашину на сітці 37U DP 88800 44400, позивний T-72-ALPHA» — розв'язує «ворожу бронемашину» у правильний рядок типу CoT MIL-STD-2525, викликає place_marker із сіткою MGRS та позивним.
  • «Перелічи всі активні місії в секторі BRAVO» — викликає list_missions із фільтром за сектором, повертає відформатовану таблицю назв місій, пріоритетів, призначених позивних та позначок часу останньої зміни.
  • «Підпиши мене на канал DELTA і відпиши від каналу ECHO» — об'єднує в ланцюжок виклики subscribe_channel та unsubscribe_channel, виконуючи обидва та звітуючи результати в одній картці відповіді.
  • «Створи логістичну місію для 3-го взводу, пріоритет URGENT, на сітці 37U DP 55555 44444, признач LOG-1» — викликає create_mission із категорією, пріоритетом, місцеположенням та виконавцем в одному структурованому виклику.
  • «Яка остання повідомлена позиція EAGLE-1?» — викликає query_track для EAGLE-1 і повертає сітку, курс, швидкість та позначку часу.

Модель обробляє природномовну неоднозначність в описах підрозділів — «ворожа піхота», «дружня логістична вантажівка», «ворожий BTR» — і відображає їх у правильні рядки типу CoT із таксономії символів MIL-STD-2525C/APP-6, не вимагаючи від оператора знати код типу. Якщо фраза справді неоднозначна (кілька правдоподібних типів CoT), TAKpilot ставить одне уточнювальне запитання, а не вгадує.

Підтвердження символів MIL-STD-2525 / APP-6

Один із найризикованіших моментів в управлінні картою природною мовою — розміщення контакту з неправильною належністю або типом підрозділу. Розміщення символу ворожого підрозділу на сітці, де діє дружній підрозділ — навіть тимчасово — може спричинити помилку керування вогнем. TAKpilot вирішує це через крок підтвердження символу, окремий від шлюзу підтвердження/відмови, що використовується для деструктивних операцій.

Коли модель розв'язує природномовний опис підрозділу у рядок типу CoT, TAKpilot відображає відповідний SVG-символ NATO вбудовано в чат — реальну іконку, яку маркер відображатиме на карті — поряд із розв'язаною назвою типу простою мовою: «Я розміщу ворожу наземну механізовану піхоту [іконка символу] на 37U DP 12345 67890. Підтвердити?» Оператор бачить точний символ перед тим, як щось записується на карту. Неправильно прочитані належності — «дружній», почутий як «ворожий» у диктованій команді — перехоплюються на цьому кроці, а не виявляються, коли неправильний символ з'являється на живій COP.

Це підтвердження легке: одне натискання кнопки або слово «так» у наступному повідомленні. Воно додає менш ніж дві секунди до процесу розміщення та усуває клас помилок, де природномовна неоднозначність продукує правильно виконане, але семантично неправильне оновлення карти.

Зорова та файлова розвідка

Значний обсяг тактичної інформації досягає операторів у вигляді зображень: фотографії намальованих від руки ескізів, скановані донесення про обстановку, PDF-накладання, поширені електронною поштою чи месенджерами. Ручне повторне введення цієї інформації в CloudTAK — це трудомістке завдання транскрипції з високим рівнем помилок для сіткових посилань та символів підрозділів. Зоровий конвеєр TAKpilot автоматизує цей перенос.

Оператори прикріплюють PNG, JPG або PDF до чату та надсилають команду на зразок «обробити цей SITREP» або «вилучи всі контакти з цього ескізу». TAKpilot передає файл моделі зі зоровою спроможністю — Claude Sonnet або Opus залежно від конфігурації сесії — зі структурованим запитом на вилучення. Модель ідентифікує кожну релевантну для карти сутність на зображенні: сіткові посилання MGRS, позивні, символи типів підрозділів (прочитані з конвенцій ескізів MIL-STD-2525 або APP-6), лінії пеленгу, фазові лінії, вільнотекстові анотації та межі зон заборони вогню. Вивід — структурований JSON-масив.

TAKpilot представляє вилучені сутності в картці підтвердження перед будь-яким записом на карту: «Я знайшов 6 сутностей у вашому SITREP. Сутність 1: ворожий механізований взвод на 37U DP 12345 67890 (достовірність 0.94) [символ]. Сутність 2: дружній спостережний пост на 37U DP 11111 22222 (достовірність 0.88) [символ]…» Оператор переглядає, виправляє будь-які неправильно прочитані сітки, скасовує вибір будь-якої сутності, яку не хоче розміщувати, та підтверджує. Потім TAKpilot виконує розміщення паралельно. SITREP із шести сутностей, що потребував би чотирьох-шести хвилин ручного введення даних ATAK, опиняється на карті менш ніж за тридцять секунд від підтвердження.

Ключова думка: Конвеєр OCR не потрібен — зорова модель читає зображення безпосередньо, включно з намальованими від руки символами та нестандартними стилями анотацій, які провалили б традиційний підхід вилучення на основі OCR-плюс-регулярні-вирази. Вбудована зорова модель обробляє PNG, JPG та PDF без додаткової інфраструктури попередньої обробки.

Застосовуються пороги достовірності: сутності нижче 0.70 достовірності явно позначаються, і оператор має вручну підтвердити їх сітки перед розміщенням. TAKpilot не розміщує мовчки сутності з низькою достовірністю — валідація видима оператору, а не прихована в автоматизованому конвеєрі.

Потокові картки інструментів: журнал аудиту в реальному часі

Кожна дія, яку виконує TAKpilot, видима оператору в реальному часі через потокові картки інструментів — складані панелі, що з'являються в чаті в міру ініціювання та завершення кожного виклику функції. Картка інструменту показує назву функції, вхідні параметри як структурований JSON, час виконання в мілісекундах та HTTP-статус відповіді від CloudTAK. Для багатокрокових операцій кожен крок генерує власну картку, що з'являється послідовно в міру виконання ланцюга.

Ця прозорість слугує двом цілям. По-перше, вона дає операторам негайне підтвердження, що те, що вони мали на увазі, є тим, що TAKpilot виконав — вони можуть прочитати JSON параметрів та перевірити сітку, позивний і тип CoT перед тим, як подивитися на карту. По-друге, вона забезпечує повний журнал аудиту з позначками часу, що зберігається в історії сесії чату. Аналіз після дій може реконструювати точно те, що було розміщено, коли, яким оператором, з яким природномовним вводом і з якою затримкою виконання. Формат запису журналу — «user: sgt_kovalenko via TAKpilot — action: create_mission — input: 'create logistics mission for 3rd Platoon URGENT'» — зберігає атрибуцію оператора наскрізно, відрізняючи дії з допомогою ШІ від прямих дій в UI CloudTAK.

Шлюз підтвердження/відмови для деструктивних операцій

TAKpilot класифікує всі операції CloudTAK на два класи: адитивні (розміщення маркера, створення місії, підписка на канал, створення пакета даних) та деструктивні (видалення місії, усунення треку, очищення каналу, видалення пакета даних). Адитивні операції виконуються одразу після підтвердження символу, де застосовно — оператор може скасувати їх наступною командою, яка сама проходить через деструктивний шлюз. Деструктивні операції перехоплюються перед виконанням і потребують явної авторизації оператора.

Шлюз підтвердження відображає повний обсяг очікуваної деструктивної дії: для команди «видалити всі місії в секторі ALPHA» оператор бачить список кожної місії, що буде видалена, відображений з її символом NATO, назвою місії, призначеним позивним, пріоритетом та позначкою часу останньої зміни. Список — це не абстрактна кількість, а реальні записи, відображені тією самою візуальною мовою, яку оператор використовує на карті. Оператори розпізнають власні дані місій швидше у форматі з анотацією символами, ніж у звичайному текстовому списку, що зменшує когнітивне навантаження рішення про підтвердження та знижує рівень хибних підтверджень.

Виконання потребує або введення «confirm» у чаті, або натискання явної кнопки підтвердження в картці шлюзу. Закриття картки або надсилання іншого повідомлення скасовує очікувану операцію. Шлюз не має тайм-ауту — якщо оператор не підтверджує, операція ніколи не виконується, незалежно від того, як ШІ інтерпретував початкову команду.

Ключова думка: TAK Server не має рідного скасування для більшості операцій з даними. Пакетне видалення, виконане без підтвердження, не має шляху відновлення поза відновленням з резервної копії бази даних. Шлюз підтвердження/відмови — це не перевага UX, а жорстка вимога оперативної безпеки для системи, де ШІ генерує структуровані виклики API з природномовного вводу, який може бути неоднозначним, неправильно почутим або надісланим помилково.

Оперативне розгортання зі Збройними силами України

TAKpilot оперативно розгорнутий з підрозділами Збройних сил України, що використовують CloudTAK для управління COP. Контекст розгортання забезпечує конкретну перевірку основних тверджень продукту в умовах — тиск часу, стрес зв'язку, багатоплатформна робота через ATAK Android, WinTAK та CloudTAK — які не можна повністю відтворити в навчальному середовищі.

Основна оперативна користь, повідомлена розгорнутими підрозділами, — це скорочення часу до карти для інформації SITREP, отриманої від передових спостерігачів. Усні SITREP по радіо транскрибуються безпосередньо в чат TAKpilot; зображувальні SITREP обробляються через зоровий конвеєр. В обох випадках інформація досягає COP швидше, ніж за ручного введення, а шлюз підтвердження перехоплює помилки транскрипції перед тим, як вони стають помилками карти. Підрозділи також повідомляють про використання TAKpilot для управління підписками на канали — особливо коли оперативні зони відповідальності змінюються і операторам потрібно швидко переналаштувати свій набір каналів.

Розгортання також валідувало модель-агностичну архітектуру. Українські підрозділи, що працюють у районах із надійною зв'язністю, використовують Claude Sonnet через Anthropic API. Підрозділи на передових граничних позиціях без надійної інтернет-зв'язності тестували локально розміщені моделі Llama 3.3 та Qwen 2.5 на тактичному обладнанні. Перемикання між бекендами моделей — це зміна конфігурації, а не повторне розгортання системи — сервіс TAKpilot перезапускається, вказуючи на іншу кінцеву точку моделі, і продовжує працювати з тією самою бібліотекою інструментів та поведінкою підтвердження.

Архітектура з відкритим кодом та розгортання

TAKpilot випущений під AGPL-3.0. Повний вихідний код — сервіс Node.js, розширення UI CloudTAK, визначення бібліотеки інструментів, конфігурація моделі та документація з розгортання — доступний під ліцензією AGPL-3.0. Ліцензія AGPL забезпечує, що будь-які модифікації, розгорнуті як сервіс, залишаються відкритими, що узгоджується з призначеною роллю продукту в оборонних екосистемах, де сумісність та придатність до аудиту є інституційними вимогами.

Модель-агностичний дизайн реалізований через рівень абстракції OpenAI-сумісної кінцевої точки. Будь-яка модель, що реалізує API chat completions OpenAI з викликом функцій — моделі Anthropic через їх кінцеву точку сумісності, локально розміщені моделі, що обслуговуються Ollama або vLLM, або моделі, розміщені на AWS Bedrock чи Google Vertex AI — може бути налаштована як бекенд TAKpilot без змін коду. Це уможливлює розгортання з фізичним розривом мережі в секретних мережах, де дані не можуть залишати анклав, для запуску TAKpilot з локально розміщеною моделлю, зберігаючи паритет функцій із хмарно-підключеними конфігураціями.

Для підрозділів партнерів NATO та оборонних інтеграторів, що будують на основі екосистеми TAK, відкритий код TAKpilot забезпечує відправну точку для власних бібліотек інструментів — додаткових дієслів CloudTAK API, інтеграції із зовнішніми сенсорними потоками або автоматизації робочих процесів, специфічних для підрозділу. Формат визначення інструменту — стандартна JSON-схема; додавання нової можливості потребує визначення схеми та реалізації обробника виконання. Комерційна підтримка, розробка власної інтеграції та навчання операторів доступні від Corvus Intelligence на corvusintell.com/takpilot.

Як розгорнути TAKpilot поряд з CloudTAK

Наступні кроки підсумовують процес розгортання для стандартної інсталяції CloudTAK. Повна документація знаходиться у README репозиторію та каталозі docs/.

  1. Отримайте пакет дистрибуції — отримайте пакет дистрибуції TAKpilot і розпакуйте його на хост CloudTAK. Перевірте Node.js 20 LTS. Запустіть npm install.
  2. Налаштуйте бекенд моделі — скопіюйте .env.example в .env. Встановіть ваш ключ Anthropic API та MODEL=claude-sonnet-4-6 для хмарного розгортання, або встановіть OPENAI_BASE_URL на локальну кінцеву точку інференсу для роботи з фізичним розривом мережі.
  3. Вкажіть на CloudTAK — встановіть CLOUDTAK_BASE_URL на ваш екземпляр CloudTAK. Сервісний акаунт не потрібен — TAKpilot використовує токен сесії оператора для всіх викликів API.
  4. Запустіть сервісnpm start. Перевірте CloudTAK connection verified у журналі запуску.
  5. Впровадьте панель чату — дотримуйтесь docs/cloudtak-integration.md, щоб додати бічну панель TAKpilot до UI CloudTAK. Значок чату з'являється на панелі інструментів після впровадження.
  6. Перевірте тестовою командою — увійдіть до CloudTAK, відкрийте панель TAKpilot та надішліть "list all active missions". Підтвердьте, що картка інструменту з'являється і результати повертаються правильно.
  7. Налаштуйте шлюз підтвердження/відмови та модель за вузлом — перегляньте config/gates.json, підтвердьте, що деструктивні операції шлюзуються, та встановіть відповідну модель для кожного типу вузла у СОП вашого підрозділу.

Часті запитання

+Які операції CloudTAK можна виконувати через чат-інтерфейс TAKpilot?

TAKpilot надає основні оперативні дієслова CloudTAK через природну мову: розміщення та оновлення маркерів на карті із символікою MIL-STD-2525/APP-6, створення та закриття місій із категорією та пріоритетом, перелік активних треків із опціональним фільтруванням за сектором, підписка та відписка від каналів даних, створення та поширення пакетів даних, а також запит статусу підрозділу та останньо відомих позицій. Складні багатокрокові операції — наприклад, створення місії CAS та одночасне сповіщення каналу — виконуються як ланцюжкові виклики інструментів, кожен видимий як окрема картка в чаті.

+Як TAKpilot обробляє неоднозначні або недостатньо визначені команди?

Коли команда неоднозначна — наприклад, «розмістити контакт у Альфа» без точної сітки — TAKpilot ставить уточнювальне запитання перед генеруванням будь-якого виклику інструменту. Модель спонукається запитувати лише відсутню інформацію, необхідну для завершення операції, а не робити припущення про координати, типи підрозділів чи позивні. Якщо модель усе ж генерує виклик інструменту з неповними параметрами, рівень валідації відхиляє його та повторно запитує, замість виконання зі значеннями за замовчуванням, які могли б розмістити об'єкти неправильно на карті.

+Що відбувається, якщо ШІ робить помилку — чи можна її виправити?

Адитивні операції — розміщення маркера, створення місії — можна негайно скасувати наступною командою: «прибери маркер, який я щойно розмістив» або «видали місію, яку ми щойно створили». TAKpilot перекладає ці команди скасування у відповідні виклики інструментів видалення, які проходять через стандартне підтвердження підтвердження/відмови для деструктивних операцій. Деструктивні операції завжди шлюзуються перед виконанням, тому помилки цього класу перехоплюються до того, як вони спричинять втрату даних. Потокова картка інструменту для кожної дії показує точно те, що було виконано, забезпечуючи читабельний оператором журнал аудиту для аналізу після дій.

+Чи приватні дані оператора — чи надсилає TAKpilot дані карти зовнішнім ШІ-провайдерам?

TAKpilot надсилає ШІ-моделі лише природномовне повідомлення оператора та структурований результат виклику інструменту — він не передає сирі дані карти, списки треків чи записи місій зовнішнім провайдерам. Модель отримує історію розмови та схеми доступних інструментів; фактичні дані COP отримуються рівнем виконання TAKpilot після того, як модель обирає інструмент, і лише результат виконання подається назад у розмову. Завантажені файли обробляються один раз, їх вилучені структуровані дані додаються до контексту, а сирий файл видаляється негайно. Для розгортань із фізичним розривом мережі локально розміщені моделі забезпечують, що жодні дані не залишають мережу.

+Як TAKpilot розгортається поряд з наявною інсталяцією CloudTAK?

TAKpilot працює як сервіс Node.js на тому самому хості або сегменті LAN, що й CloudTAK. Він підключається до наявного REST API CloudTAK за допомогою облікових даних сесії оператора — без нових портів TAK Server, без змін федерації, без модифікацій схеми бази даних. Розгортання передбачає клонування репозиторію AGPL-3.0, налаштування ключа API моделі (або локальної кінцевої точки моделі) та спрямування TAKpilot на базову URL CloudTAK. UI CloudTAK розширюється панеллю чату, яка спілкується з сервісом TAKpilot через WebSocket.