Att använda Kshana från en AI-agent
För en agent (eller den som styr en): vilket verktyg som ska anropas för vilken fråga, vad verktygen gör och inte gör, och vad som ska följa med varje svar. Ytor och de celler som inte är tillgängliga på en viss yta: SURFACES.md.
Anslut#
npx -y kshana-mcp@0.37.0 # or: uvx kshana-mcp==0.37.0, brew, scoop, winget, cargo, docker
Ett stycke som nämner AI-klienter från tredje part är utelämnat här; det finns i docs/AGENTS.md på GitHub.
Regeln för varje svar#
Kör motorn; gissa inte talen. Rapportera vad ett verktyg returnerade med dess enhet och dess evidensnivå (VALIDATED mot en extern oberoende referens, eller MODELLED), scenariot, fröet och motorversionen, så att körningen kan upprepas. Behåll varje resultats egna förbehåll tillsammans med det.
Vilket verktyg för vilken fråga#
| Frågan | Verktyg (MCP) | Snedstreckskommando |
|---|---|---|
| Köra eller förklara ett PNT-scenario (banor, GNSS, tidssynkronisering, fusion, lunar, optiska länkar, ...) | 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 |
| Var den här mottagarloggen, eller det här fartygets NMEA, tillförlitlig, och när slutade den vara det? | assess_receiver_log (valfritt loggformat), assess_vessel_log (fartygs-NMEA, batch), assess_vessel_stream (begränsat utdrag) |
/kshana-assess-receiver |
| Jag behöver syntetisk NMEA med en jamming-, drag-off-, tidsspoofing- eller replay-händelse för träning | generate_training_nmea |
/kshana-training-scenario |
| Visa ett fartygs förtroendepoäng i övervaknings- eller SIEM-format (Prometheus, CEF, LEEF, OTLP) | trust_telemetry |
/kshana-trust-telemetry |
| Poängsätta en mottagarlogg mot det publicerade Jammertest-schemat (detektionsfördröjning, missade larm, falsklarm, tid till återhämtning), eller omvandla den planen till händelser | jammertest_score, jammertest_import |
/kshana-jammertest |
| Göra en manipuleringssäker post över vad motorn sade om ett fönster av ett fartygs logg, eller kontrollera en | create_evidence_pack, verify_evidence_pack, attach_evidence_timestamp |
/kshana-evidence-pack |
| Vilka Galileo-satelliters navigeringsdata autentiserar den här mottagarströmmen (OSNMA)? | ingen: finns inte på MCP. Använd kshana osnma verify (CLI), kshana.osnma_verify (Python) eller osnma_verify (WASM, OSNMA-kortet i Studio) |
inte ett snedstreckskommando |
| Jag behöver ett scenarios fordonsrörelse och händelsetider för att spela upp dem genom en GNSS-simulator i laboratorium | export_test_bench |
/kshana-bench-export |
| Vilka kravrader i offentliga ramverk ger de här körningarna belägg för, och vad är luckan? | compliance_report (från resultattext), compliance_mapping (tabellerna, inga körningar) |
/kshana-compliance-report |
| Köra ett poängsatt standardpaket (DHS RPCF-testprofiler, IMO MSC.1/Circ.1575, ICAO Doc 9849 Appendix F) mot trösklar som angetts före körningen? | list_standards_packs, run_standards_pack (ge rapporten till compliance_report för raderna) |
|
| Kontrollera LunaNet Augmented Forward Signal (koder, SB1, ramformat) mot LNIS V5 / LSIS-AFS V1.0, eller kontrollera en symbolström? | lunanet_afs_check (mode spec, symbols eller generate); LDPC och CRC-24Q för delramarna 2 till 4 är inte verifierade |
|
| Länka en laboratoriekörning (scenario, angivna testvillkor, mottagarlogg, poäng) i ett signerat paket? | create_round_trip_pack efter export_test_bench (docs/spec/TEST-CONDITIONS.md) |
|
| Poängsätta en detektions- eller holdover-inlämning mot en kshana-bench-referensfil, eller rendera resultatfiler som resultattavlan? | score_benchmark, render_leaderboard |
— |
| Jag behöver ett scenario som flyger en GeoJSON-rutt (terrain-nav, terrain-slam, gravity-map, combined-altpnt) | import_route |
/kshana-import-route |
| Vilka satelliter ser en användare på en gata, i en hamn, i en fjord eller på en containerterminal, och vad är DOP och felellipsen? | sky_geometry (en begäran, eller en skyline_preset); ett scenarios [skyline]-avsnitt genom run_scenario (orbit och integrity kräver user_site) |
/kshana-run |
| Var har GNSS sett försämrat ut, och hur mycket av den här rutten ligger i det? | build_interference_map, sedan route_exposure |
/kshana-interference-map |
| GNSS-IQ-inspelningar (scen, förvärv, spårning, front-end, kampanjer) | iq_signals först, sedan verktygen iq_* |
/kshana-iq |
Skills vessel-receiver-trust, training-nmea-scenario, trust-telemetry, compliance-mapping, test-bench-export, gnss-iq och interference-map-route-exposure innehåller reglerna nedan för agenter som läser in skills.
Vad varje verktyg inte gör#
- Läsa eller skriva filer. Innehållet är inline: indata är text i begäran, begränsad till 4 MiB, och ett scenariofält som anger en fil avvisas. Endast verktygen
iq_*rör en mapp, och endast den somKSHANA_MCP_IQ_DIRanger, med varje sökväg begränsad till den. - Verifiera OSNMA. Det finns inget MCP-verktyg: indata är en lång rå mottagarström (I/NAV-sidor eller en UBX-inspelning), vilket passar CLI och Python, och ett verktyg som tog en sådan skulle lägga till en stor indatayta utan nytta. Hänvisa användaren till
kshana osnma verify <file> --public-key ... --json(eller Pythonosnma_verify). Vad utdata än säger, för det rådgivande meddelandet vidare ordagrant: endast autentiseringsstatus, inte en integritetstjänst för navigering, inte typgodkänd navigationsutrustning och inget påstående om prestanda mot spoofing; ett resultat är meningsfullt först med en Merkle-rot eller en publik nyckel som användaren har fått på annat sätt. - Köra en process.
receiver-trust livesom en körande ström (med en gate och--listen), telemetriexportörerna (trust-telemetry: Prometheus, syslog, OTLP) och strömning av tränings-NMEA till en adress finns bara på kommandoraden.assess_vessel_streampoängsätter ett utdrag med samma motor och skriver till ingen port. Utdragsverktygen returnerar levande JSON-rader enligt schema 1,3 (ettadvisory-påstående och satellitensgeometryför varje epok, enclassför varje slutledning); ett fartygskörnings CSV börjar med en kommentarsrad#som bär samma påstående, så läs den med ett kommentarsalternativ.--udpoch--listen tcp:binder loopback-adressen om inget annat anges. - Skriva en signal.
export_test_benchreturnerar fordonsrörelse och märkta händelseintervall som text; ingenting det returnerar är, modellerar eller styr en radiofrekvens- eller basbandssignal, och en händelse är inte ett recept för att framställa störning. Ange dessnoticetillsammans med filerna; simulatorn och dess operatör ansvarar för att köra dem endast där det är tillåtet. - Säga mer än kartläggningen säger.
compliance_reportanger vilka ramverksrader en uppsättning körningar ger belägg för, med varje rads lucka. Det säger aldrig att ett ramverk är uppfyllt eller att en produkt är betygsatt eller godkänd; för dessstatementvidare ordagrant och säg "ger belägg för", inget starkare. Det läser resultat- och scenariotext som du skickar in, aldrig en sökväg. - Hämta data. Nedladdningen av landpolygoner finns bara på kommandoraden och kräver
--allow-network. Skicka landfilen, om den önskas, som text. Använd bara data som användaren har licens att använda. - Sända något eller syntetisera RF. Träningsgeneratorn skriver NMEA-text; IQ-lagret skriver samplingsfiler för mottagare i programvara.
Vad som ska följa med svaret#
| Utdata | Behåll |
|---|---|
| Satellitgeometri och slutledningsklasser (0,36) | Rapportera geometrin vid sidan av poängen och varje slutlednings klass som returnerad: geometry betyder himlen (ett påstående om himlen, inte ett konstaterande att inget angrepp inträffade), environment signalmiljön, inconsistency angreppsliknande belägg. Säg "geometri okänd" när statusen är unknown (ingen GSV eller GSA i loggen); dra ingen slutsats om en. Trösklarna är MODELLED med angiven proveniens. |
| Förtroendepoäng för mottagare | Rådgivande: inte typgodkänd navigationsutrustning (IEC 61108, IEC 61162); operatören är fortsatt ansvarig. MODELLED. Ange fartygets gränser före körningen och trimma inte en tröskel efter ett resultat. En hög poäng är inte bevis för en äkta positionsbestämning; kontrollerna kan inte se en spoofer som är konsekvent med alla andra sensorer. |
| Bevispaket | En teknisk post, inte ett juridiskt utlåtande, ett konstaterande av fakta eller ett godkännande. Verifiera med signerarens publika nyckel som du fått på annat sätt; utan den är utlåtandet intact-signer-not-pinned, vilket bara bevisar integritet mot den nyckel som paketet självt anger: säg "intakt, signerare inte fastställd", aldrig "verified". Returnera, logga eller be aldrig om ett signeringsfrö i en konversation om nyckeln spelar roll: använd CLI. |
| Tränings-NMEA | Endast text, för träning och test, aldrig för ett fartygs levande navigationssystem. Returnera fröet och instruktörsloggen. |
| Störningskarta, ruttexponering | Hur noggrannhetskoderna läses samt rutnätets och ruttens geometri är VALIDATED mot oberoende bibliotek på syntetiska indata; metodens trösklar förblir MODELLED, och att en försämrad cell är störning är inte kontrollerat: en försämrad cell visar inte att störning är orsaken. En cell som inte observerats är inte belägg för en fri rutt. Tidigare rapporter, inte en prognos. Endast aggregat: försök inte återskapa identifierare. ADS-B- och AIS-kartor hålls åtskilda. |
Sändarområde (interference-map locate) |
MODELLED: ett möjligt område under radiosikt, inte en positionsbestämning. Redovisa området med sin angivna konfidensnivå tillsammans med tyngdpunkten och dess ellips, aldrig tyngdpunkten ensam; ange unconstrained när data inte avgränsar det; ange att det är villkorat av modellen (kontrollerat enbart på syntetiska data; den förhandsregistrerade Jammertest-jämförelsen kördes en gång och kunde NOT ASSESSABLE för båda källorna, så ingenting testades externt). Neutral formulering: "uppskattat sändarområde"; namnge eller antyd aldrig vem eller vad som står bakom en källa, en stat, en styrka eller en avsikt. Endast aggregerat; försök inte återskapa identifierare. Publicering av sändarområden i det publika observatoriet är avstängd. |
| Himmelsgeometri, horisontlinje | MODELLED geometri under en angiven felmodell, endast sikt: ingen diffraktion, flervägsfel eller mottagning utan sikt. Förinställningarna är REPRESENTATIVE, inte uppmätningar; för med förinställningens proveniens. Förinställda konstellationer är en representativ himmel, inte himlen för ett visst datum. Ellipsen skalar en angiven UERE: inte en uppmätt noggrannhet och inte en integritetsgräns. Behåll advisory. |
Tillgänglighet för optiska länkar (optical-atmosphere, 0,37) |
MODELLED, rådgivande. Molnklimaten är angivna indata, inte en datamängd, och ingen uppmätt tillgänglighetsregistrering har jämförts: säg "under dessa antaganden", aldrig "tillgängligheten på den platsen". Behåll platsens tak (availability_ceiling_pct: vad ingen marginal lyfter) vid sidan av dess tillgänglighet, och säg vilka teknikvinster som är indata (Kshana modellerar ingen adaptiv optikslinga). Numeriken är kontrollerad mot ett oberoende program, vilket kontrollerar implementationen av formlerna och inte atmosfären. |
Holdover-test (holdover-test, 0,38) |
MODELLED, rådgivande. Säg "mätt mot masken", aldrig att en klocka eller ett system klarar eller är godkänt mot en rekommendation. De två tidpunkterna (GNSS borttaget, GNSS återställt) är operatörens uppgift: Kshana tog inte bort eller återställde något och kan inte verifiera dem, så citera dem som angivna. En mask som registreringen är för kort för är INCOMPLETE, aldrig ett godkänt resultat. En servologg (linuxptp, chrony) är felet under servostyrning, inte en oberoende mätning mot UTC; säg vilken registrering talen kommer från. Se docs/TIMING-HIL.md. |
| Vilket scenarioresultat som helst | figure_tiers eller label det anger, och proveniensraden. |
Gränser#
Använd syntetiska data eller användarens egna. Nämn inte personer, fartyg eller organisationer i utdata som inte fanns i användarens indata. Kshana är ett analys- och träningsverktyg, inte en flyg- eller navigeringsprodukt.