Kshana для IDE JetBrains
Install: Kshana — симулятор PNT в JetBrains Marketplace — или, в любой IDE JetBrains, Settings → Plugins → Marketplace → найдите «Kshana».
Нативный плагин, запускающий симулятор устойчивости PNT Kshana изнутри любой IDE JetBrains (IntelliJ IDEA, CLion, RustRover, PyCharm, …). Щёлкните правой кнопкой по сценарию .toml → Run Kshana Scenario; показатели качества и JSON результата выводятся потоком в окно инструментов Kshana.
Дополняет сервер MCP (который даёт AI Assistant от JetBrains доступ к Kshana): этот плагин — путь для человека, с помощью мыши.
Что делает#
- Действие Run Kshana Scenario для любого
.toml(контекстные меню редактора и представления проекта) — запускаетkshana <file>и показывает вывод в окне инструментов Kshana. - Assess Receiver Trust для сценария
receiver-trust.toml(kshana receiver-trust): временная шкала доверия с оценкой от 0 до 100 и причинами для судна. Программное обеспечение консультативного характера, не навигационное оборудование с утверждённым типом (IEC 61108, IEC 61162): ответственность за судовождение остаётся на операторе. - Generate Training NMEA для
nmea-scenario.toml(kshana nmea-scenario): синтетический мостиковый NMEA и журнал инструктора, записываемые рядом со сценарием. Только текст; для тренировки, но не для действующих навигационных систем судна. - Build Interference Map для ADS-B или AIS
.csv(представление проекта; спрашивает, какой это утверждённый набор данных) и Route Exposure для файла маршрута (спрашивает папку с картами). Деградировавшая ячейка не указывает на помехи как на причину; это не прогноз. - Export Test-Bench Files для сценария
.toml(kshana bench-export): движение аппарата, NMEA и размеченные события для лабораторного имитатора GNSS, записываемые рядом со сценарием. Сигнал не записывается; запускайте имитатор только там, где это разрешено. - Build Compliance Report для результата прогона
.json(kshana compliance-report) и Tools → Show Compliance Mapping (kshana compliance-report --mapping): сопоставление с публичной рамкой, показанное с собственным утверждением движка слово в слово. - Verify Evidence Pack для папки пакета доказательств (представление проекта;
kshana evidence verify): запрашивает открытый ключ подписанта (64 шестнадцатеричных цифр или файл.pub; всегда закреплённый, плагин никогда не принимает незакреплённого подписанта) и, по желанию, полный журнал сессии. Как проверенный читается только проверенный результат; целый пакет с незакреплённым подписантом читается как «NOT VERIFIED». - Render Trust Telemetry для результата
receiver-trust.json(kshana trust-telemetry --result): текст Prometheus, события syslog CEF/LEEF или строки MQTT для Home Assistant выводятся в окно Kshana. Ничего не отправляется и не раздаётся; работающие экспортёры остаются в командной строке. - Fit Sensor Parameters from IMU Log для неподвижного IMU
.csv(kshana imu-fit): параметры акселерометра и гироскопа сценариевhybridиfusion, подогнанные по девиации Аллана, выводятся в окно Kshana в виде таблицы[accel_classical]. Ничего не записывается; подгонка — MODELLED. - Validate Scenario (
kshana --validate), List Scenario Kinds (меню Tools;kshana kinds) и Assess Receiver Stream (сессия судна.tomlплюс выбранный вами сохранённый журнал NMEA;kshana receiver-trust live --file, оценивается один раз, без сокета и без шлюза). - Insert Example Scenario (папка в представлении проекта или меню Tools;
kshana example): выберите поставляемый сценарий, и он будет записан как новый.toml(никогда поверх файла). Export Scenario для.toml(SP3, OMM, OEM, CZML, KML, GeoJSON, STK, SigMF; только имитированный вывод), Animate Scenario (HTML или SVG, открывается в браузере) и Import Route для маршрута.geojson(спрашивает, для какого сценария). - Create Evidence Pack для сессии доверия к приёмнику
.toml(kshana receiver-trust evidence): запрашивает окно, уже имеющийся у вас файл ключа подписи и выходную папку. Плагин никогда не создаёт, не читает и не хранит ключ (kshana evidence keygenостаётся в командной строке). Attach Timestamp для папки пакета (kshana evidence attach-timestamp): Kshana не проверяет подпись службы меток времени; запуститеopenssl ts -verifyсамостоятельно. - По-прежнему только в командной строке: команды IQ,
evidence keygenиreceiver-trust live. - Нижнее окно инструментов Kshana, содержащее консоль запуска.
- Не входят в плагин:
kshana receiver-trust live(долго работающий потоковый процесс со шлюзом и необязательным слушателем TCP) иkshana trust-telemetryостаются в командной строке, потому что действие IDE выполняет команду до конца и показывает её вывод; см.docs/MARITIME-TRUST.md. - Settings → Tools → Kshana, чтобы указать двоичный файл
kshana(пусто → определяется изPATH; установка с помощьюcargo install kshana).
Плагин чисто платформенный (без зависимостей от конкретных языков), поэтому загружается в каждой IDE JetBrains сборки 243 (2024,3) и новее.
Сборка и запуск#
Требуются JDK 17+ (сборка закрепляет JDK 21) и входящая в состав обёртка Gradle.
cd ide/jetbrains
./gradlew test # unit tests (pure CLI helpers)
./gradlew buildPlugin # assembles build/distributions/kshana-jetbrains-<version>.zip
./gradlew runIde # launches a sandbox IDE with the plugin loaded
./gradlew verifyPlugin # JetBrains plugin-verifier compatibility check (downloads IDEs)
verifyPlugin по умолчанию проверяет since-build, 2024,3. Чтобы проверить другие линейки, перечислите их как TYPE:VERSION (каждая IDE — это загрузка около 1 ГБ):
KSHANA_VERIFY_IDES="IC:2024.3,IC:2025.2,IU:2026.2.3,IU:263.6259.32" ./gradlew verifyPlugin
Плагин не использует устаревший или планируемый к удалению API платформы ни в одной из них; так и следует оставить (диалог выбора вызывается через KshanaChooser, а не Messages.showChooseDialog).
Установите собранный zip через Settings → Plugins → ⚙ → Install Plugin from Disk….
Структура#
build.gradle.kts / settings.gradle.kts / gradle.properties build config (IntelliJ Platform Gradle Plugin 2.x)
src/main/kotlin/dev/kshana/ide/
KshanaCli.kt pure binary-resolution + command helpers (unit-tested)
KshanaSettings.kt persisted binary-path setting (app service)
KshanaConsole.kt per-project output console (project service)
KshanaToolWindowFactory.kt the "Kshana" tool window
RunScenarioAction.kt the Run-scenario action
KshanaRunner.kt runs one command in the background into the tool window
MarineActions.kt receiver trust, training NMEA, interference map, route exposure
KshanaConfigurable.kt Settings → Tools → Kshana
src/main/resources/META-INF/plugin.xml plugin descriptor
src/test/kotlin/.../KshanaCliTest.kt unit tests
Изоляция#
Как и mcp/ и xval/, это отдельный проект Gradle, исключённый из опубликованного крейта kshana (/ide в exclude пакета); его выходные файлы сборки игнорируются в git.
Лицензия: AGPL-3.0-only (или коммерческая лицензия от Ashforde OÜ — см. LICENSING.md в репозитории).