Машинный перевод, не проверенный носителем языка. Эталоном служит английская версия.

API и интеграцииПравить на GitHubИсточник: docs/AGENTS.md

Использование Kshana из ИИ-агента

Для агента (или человека, который им управляет): какой инструмент вызывать для какого вопроса, что инструменты сделают и чего не сделают и что сохранять с каждым ответом. Поверхности и ячейки, недоступные на данной поверхности: SURFACES.md.

Подключение#

npx -y kshana-mcp@0.37.0            # or: uvx kshana-mcp==0.37.0, brew, scoop, winget, cargo, docker

Фрагмент с названиями сторонних ИИ-клиентов здесь опущен; он есть в docs/AGENTS.md на GitHub.

Правило для каждого ответа#

Запускайте движок; не угадывайте числа. Сообщайте то, что вернул инструмент, с единицей и уровнем доказательств (VALIDATED по внешнему оракулу или MODELLED), сценарием, начальным значением (seed) и версией движка, чтобы прогон можно было повторить. Сохраняйте с каждым результатом его собственные оговорки.

Какой инструмент для какого вопроса#

Вопрос Инструмент (MCP) Слэш-команда
Запустить или объяснить сценарий PNT (орбиты, GNSS, синхронизация времени, комплексирование, Луна, оптические линии связи, ...) list_scenario_kinds, list_example_scenarios, get_example_scenario, validate_scenario, run_scenario, report_scenario, animate_scenario, export_sp3, export_omm, export_oem, export_interop, list_export_formats, export_table_csv /kshana-run
Заслуживал ли доверия этот журнал приёмника или NMEA судна и когда это прекратилось? assess_receiver_log (любой формат журнала), assess_vessel_log (NMEA судна, пакетно), assess_vessel_stream (ограниченный фрагмент) /kshana-assess-receiver
Мне нужен синтетический NMEA с событием подавления, увода, подмены времени или повтора для обучения generate_training_nmea /kshana-training-scenario
Показать оценку доверия судна в форматах мониторинга или SIEM (Prometheus, CEF, LEEF, OTLP) trust_telemetry /kshana-trust-telemetry
Оценить журнал приёмника по опубликованному расписанию Jammertest (задержка обнаружения, пропуски обнаружения, ложные тревоги, время восстановления) или превратить этот план в события jammertest_score, jammertest_import /kshana-jammertest
Составить защищённую от подделки запись того, что движок сообщил об окне журнала судна, или проверить такую запись create_evidence_pack, verify_evidence_pack, attach_evidence_timestamp /kshana-evidence-pack
Навигационные данные каких спутников Galileo этот приёмник передаёт с аутентификацией (OSNMA)? нет: в MCP отсутствует. Используйте kshana osnma verify (CLI), kshana.osnma_verify (Python) или osnma_verify (WASM, карточка OSNMA в Studio) не является слэш-командой
Мне нужны движение транспортного средства и моменты событий сценария, чтобы воспроизвести их на лабораторном имитаторе GNSS export_test_bench /kshana-bench-export
Какие строки требований публичной рамочной программы эти прогоны подкрепляют доказательствами и в чём разрыв? compliance_report (по тексту результата), compliance_mapping (таблицы, без прогонов) /kshana-compliance-report
Выполнить оцениваемый пакет стандартов (тестовые профили DHS RPCF, IMO MSC.1/Circ.1575, ICAO Doc 9849, приложение F) по порогам, заданным до прогона? list_standards_packs, run_standards_pack (передайте отчёт в compliance_report, чтобы получить строки)
Проверить расширенный прямой сигнал LunaNet (коды, SB1, формат кадра) по LNIS V5 / LSIS-AFS V1.0 или проверить поток символов? lunanet_afs_check (спецификация mode, символы или генерация); LDPC и CRC-24Q подкадров с 2 по 4 не проверяются
Связать лабораторный прогон (сценарий, заявленные условия испытаний, журнал приёмника, оценка) в одном подписанном пакете? create_round_trip_pack после export_test_bench (docs/spec/TEST-CONDITIONS.md)
Оценить заявку по обнаружению или по holdover относительно файла истины kshana-bench либо отобразить файлы результатов как страницу таблицы лидеров? score_benchmark, render_leaderboard —
Мне нужен сценарий, в котором выполняется полёт по маршруту GeoJSON (terrain-nav, terrain-slam, gravity-map, combined-altpnt) import_route /kshana-import-route
Какие спутники видит пользователь на улице, в гавани, в фьорде или на контейнерном терминале, каковы DOP и эллипс ошибок? sky_geometry (запрос или skyline_preset); раздел [skyline] сценария через run_scenario (для orbit и integrity нужен user_site) /kshana-run
Где GNSS выглядел ухудшенным и какая часть этого маршрута проходит в такой зоне? build_interference_map, затем route_exposure /kshana-interference-map
Записи IQ GNSS (сцена, захват, сопровождение, входной тракт, кампании) сначала iq_signals, затем инструменты iq_* /kshana-iq

Навыки vessel-receiver-trust, training-nmea-scenario, trust-telemetry, compliance-mapping, test-bench-export, gnss-iq и interference-map-route-exposure содержат приведённые ниже правила для агентов, которые загружают навыки.

Чего каждый инструмент не делает#

  • Читать или записывать файлы. Содержимое передаётся в самом запросе: входные данные — это текст в запросе объёмом не более 4 МиБ, а поле сценария, указывающее на файл, отклоняется. Только инструменты iq_* обращаются к папке, и только к той, что задана в KSHANA_MCP_IQ_DIR, причём каждый путь ограничен ею.
  • Проверять OSNMA. Инструмента MCP для этого нет: входные данные — длинный необработанный поток приёмника (страницы I/NAV или захват UBX), что подходит для CLI и Python, а инструмент, принимающий такой поток, добавил бы большую поверхность для ввода без пользы. Направьте пользователя к kshana osnma verify <file> --public-key ... --json (или к Python osnma_verify). Что бы ни говорил его вывод, приводите консультативное уведомление дословно: это только статус аутентификации, не служба целостности навигации, не навигационное оборудование с утверждённым типом и не заявление об эффективности защиты от спуфинга; результат имеет смысл только при наличии корня Меркла или открытого ключа, полученного пользователем другим путём.
  • Запускать процесс. receiver-trust live как работающий поток (с шлюзом и --listen), экспортёры телеметрии (trust-telemetry: Prometheus, syslog, OTLP) и потоковая передача тренировочных NMEA на адрес доступны только из командной строки. assess_vessel_stream оценивает фрагмент тем же движком и ничего не пишет в порт. Инструменты для фрагментов возвращают живой JSON-lines схемы 1,3 (утверждение advisory и geometry спутников в каждую эпоху, class для каждого вывода); CSV прогона по судну начинается со строки комментария # с тем же утверждением, поэтому читайте его с параметром комментариев. --udp и --listen tcp: привязываются к адресу loopback, если не указано иное.
  • Записывать сигнал. export_test_bench возвращает движение транспортного средства и размеченные интервалы событий в виде текста; ничто из возвращаемого им не является радиочастотным сигналом или сигналом в основной полосе, не моделирует и не формирует его, а событие не является рецептом создания помех. Передавайте его notice вместе с файлами; имитатор и его оператор отвечают за то, чтобы запускать их только там, где это разрешено.
  • Утверждать больше, чем говорит сопоставление. compliance_report указывает, какие строки рамочной программы набор прогонов подкрепляет доказательствами, с разрывом по каждой строке. Он никогда не утверждает, что рамочная программа выполнена или что изделие оценено либо одобрено; приводите его statement дословно и говорите «подкрепляет доказательствами», ничего более сильного. Он читает текст результатов и сценариев, который вы передаёте, но никогда не путь.
  • Загружать данные. Загрузка полигонов суши доступна только из командной строки и требует --allow-network. При необходимости передайте файл суши как текст. Используйте только данные, на использование которых у пользователя есть лицензия.
  • Передавать что-либо или синтезировать РЧ-сигнал. Генератор тренировочных данных пишет текст NMEA; уровень IQ пишет файлы отсчётов для программных приёмников.

Что сохранить вместе с ответом#

Вывод Сохранить
Геометрия спутников и классы выводов (0,36) Приводите геометрию рядом с оценкой и класс каждого вывода в том виде, как он возвращён: geometry означает небо (утверждение о небе, а не вывод, что атаки не было), environment — сигнальную обстановку, inconsistency — свидетельство, похожее на атаку. Говорите «геометрия неизвестна», когда статус равен unknown (в журнале нет GSV или GSA); не выводите её самостоятельно. Пороги имеют уровень MODELLED с указанным происхождением.
Оценка доверия к приёмнику Носит консультативный характер: это не навигационное оборудование с утверждённым типом (IEC 61108, IEC 61162); ответственность остаётся на операторе. MODELLED. Задавайте пределы судна до прогона и не подгоняйте порог под результат. Высокая оценка не доказывает подлинность определения места; проверки не способны обнаружить спуфер, согласованный со всеми остальными датчиками.
Пакет доказательств Техническая запись, а не юридическое заключение, не установление факта и не одобрение. Проверяйте открытым ключом подписанта, полученным другим путём; без него вердикт — intact-signer-not-pinned, который доказывает лишь целостность относительно ключа, названного в самом пакете: говорите «целостность сохранена, подписант не установлен», но никогда «проверено». Никогда не возвращайте, не записывайте в журнал и не запрашивайте начальное значение (seed) подписи в разговоре, если ключ важен: используйте CLI.
Тренировочные NMEA Только текст, для обучения и испытаний, никогда для действующих навигационных систем судна. Возвращайте начальное значение (seed) и журнал инструктора.
Карта помех, экспозиция маршрута То, как читаются коды точности, а также геометрия сетки и маршрута, имеет уровень VALIDATED по независимым библиотекам на синтетических входных данных; пороги метода остаются на уровне MODELLED, а то, что ухудшенная ячейка вызвана помехами, не проверяется: ухудшенная ячейка не указывает на помехи как на причину. Ненаблюдавшаяся ячейка не является свидетельством того, что маршрут свободен. Это прошлые отчёты, не прогноз. Только агрегаты: не пытайтесь восстановить идентификаторы. Карты ADS-B и AIS остаются раздельными.
Область излучателя (interference-map locate) MODELLED: допустимая область при радиопрямой видимости, а не определение места. Приводите область на заявленном уровне доверия вместе с центроидом и его эллипсом, никогда не один центроид; говорите unconstrained, когда данные её не сужают; говорите, что она зависит от модели (проверено только на синтетических данных; заранее зарегистрированное сравнение Jammertest выполнено один раз и дало NOT ASSESSABLE для обоих источников, так что внешней проверки не было). Нейтральная формулировка: «оценка области излучателя»; никогда не называйте и не подразумевайте, кто или что стоит за источником, государство, силу или намерение. Только агрегаты; не пытайтесь восстановить идентификаторы. Публикация областей излучателей в публичной обсерватории отключена.
Геометрия неба, линия горизонта Геометрия MODELLED при заданной модели ошибок, только прямая видимость: без дифракции, многолучевости и приёма без прямой видимости. Пресеты REPRESENTATIVE, это не съёмки; приводите происхождение пресета. Орбитальные группировки пресетов — это репрезентативное небо, а не небо какой-либо даты. Эллипс масштабирует заданную UERE: это не измеренная точность и не граница целостности. Сохраняйте advisory.
Доступность оптической линии (optical-atmosphere, 0,37) MODELLED, консультативный. Климатические условия облачности — заданные входные данные, а не набор данных, и сравнения с измеренной записью доступности не проводилось: говорите «при этих допущениях», но никогда «доступность в этом месте». Приводите потолок места (availability_ceiling_pct: то, что не поднимает никакой запас) рядом с его доступностью и указывайте, какие выигрыши методов являются входными данными (Kshana не моделирует контур адаптивной оптики). Численные результаты сверены с независимой программой, которая проверяет реализацию формул, а не атмосферу.
Проверка holdover (holdover-test, 0,38) MODELLED, консультативный. Говорите «измерено относительно маски», но никогда не говорите, что часы или система удовлетворяют Рекомендации или одобрены по ней. Два момента времени (GNSS отключён, GNSS восстановлен) — это заявление оператора: Kshana ничего не отключал и не восстанавливал и не может их проверить, поэтому приводите их как заявленные. Маска, для которой запись слишком коротка, получает статус INCOMPLETE, но никогда не «пройдено». Журнал сервопривода (linuxptp, chrony) — это ошибка под управлением сервопривода, а не независимое измерение относительно UTC; указывайте, из какой записи взяты значения. См. docs/TIMING-HIL.md.
Любой результат сценария Указанные в нём figure_tiers или label и строка происхождения.

Границы#

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