从AI智能体使用Kshana
面向智能体(或指挥智能体的人):什么问题调用哪个工具,这些工具会做什么、不会做什么,以及每个回答须附带保留什么。各入口,以及在某个入口上不可用的单元:SURFACES.md。
连接#
npx -y kshana-mcp@0.37.0 # or: uvx kshana-mcp==0.37.0, brew, scoop, winget, cargo, docker
此处省略了一段提及第三方AI客户端的内容;它见于GitHub上的docs/AGENTS.md。
适用于每个回答的规则#
运行引擎;不要猜数字。报告工具返回的内容时,须附带其单位和证据等级(对照外部参考基准的VALIDATED,或MODELLED)、场景、随机种子和引擎版本,使运行可以重复。每个结果自身的注意事项须与它一并保留。
什么问题用哪个工具#
| 问题 | 工具(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 |
| 我需要带有压制干扰(jamming)、阻力关闭、时间欺骗或重放事件的合成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(命令行)、kshana.osnma_verify(Python)或osnma_verify(WASM,Studio的OSNMA卡片) |
不是斜杠命令 |
| 我需要某个场景的载体运动和事件时间,以便在实验室GNSS模拟器中回放 | export_test_bench |
/kshana-bench-export |
| 这些运行为公开框架中的哪些要求行提供证据支持(supports evidence for),差距是什么? | 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以得到各要求行) |
|
| 对照LNIS V5 / LSIS-AFS V1.0检查LunaNet增强前向信号(码、SB1、帧格式),或检查一个符号流? | lunanet_afs_check(mode为spec、symbols或generate);子帧2至4的LDPC和CRC-24Q未经核验 |
|
| 把一次实验室运行(场景、已声明的测试条件、接收机日志、评分)关联到一个带签名的包中? | 在export_test_bench之后使用create_round_trip_pack(docs/spec/TEST-CONDITIONS.md) |
|
| 对照kshana-bench真值文件为检测或守时(holdover)提交结果评分,或把结果文件渲染为排行榜页面? | score_benchmark, render_leaderboard |
— |
| 我需要让一个场景沿GeoJSON路线飞行(terrain-nav、terrain-slam、gravity-map、combined-altpnt) | import_route |
/kshana-import-route |
| 位于街道、港口、峡湾或集装箱码头的用户能看到哪些卫星,DOP和误差椭圆是多少? | sky_geometry(一个请求,或一个skyline_preset);通过run_scenario使用场景的[skyline]部分(orbit和integrity需要user_site) |
/kshana-run |
| GNSS在哪些地方表现出降级,这条路线有多少处于其中? | build_interference_map,然后route_exposure |
/kshana-interference-map |
| GNSS IQ记录(场景、捕获、跟踪、前端、测评活动) | 先用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 MiB,场景中指向文件的字段会被拒绝。只有
iq_*工具会访问文件夹,而且只访问KSHANA_MCP_IQ_DIR所指定的那一个,所有路径都限制在其中。 - 核验OSNMA。没有MCP工具:输入是很长的原始接收机数据流(I/NAV页或UBX捕获),适合用命令行和Python处理,而接受这类输入的工具会白白增加大输入的攻击面。请让用户使用
kshana osnma verify <file> --public-key ... --json(或Python的osnma_verify)。无论其输出怎么说,都要原样附上咨询性声明:仅为认证状态,不是导航完好性服务,不是经型式认可的导航设备,也不声称具有任何抗欺骗性能;只有在用户通过其他途径获得Merkle根或公钥时,结果才有意义。 - 运行进程。 把
receiver-trust live作为持续运行的数据流(带门限和--listen)、遥测导出器(trust-telemetry:Prometheus、syslog、OTLP)以及向某个地址流式发送训练NMEA,都只能通过命令行完成。assess_vessel_stream用同一引擎为一段摘录评分,且不写入任何端口。摘录工具返回实时JSON-lines模式1.3(每个历元都带有advisory声明和卫星geometry,每项扣分都带有class);船舶运行的CSV以带有同一声明的#注释行开头,因此读取时请使用注释选项。除非另有指定,--udp和--listen tcp:绑定环回地址。 - 写出信号。
export_test_bench以文本形式返回载体运动和带标签的事件区间;它返回的任何内容都不是、不模拟也不驱动射频或基带信号,事件也不是产生干扰的配方。请连同这些文件一并给出其notice;模拟器及其操作人员有责任只在获得授权的地方运行它们。 - 说得比映射所说的更多。
compliance_report说明一组运行为哪些框架要求行提供证据支持(supports evidence for),并附每一行的差距。它从不说某个框架已被满足,也不说某个产品已被评级或认可;请原样附上其statement,并说“为……提供证据支持(supports evidence for)”,不要说得更强。它读取你传入的结果和场景文本,从不读取路径。 - 获取数据。陆地多边形的下载只能通过命令行,并且需要
--allow-network。如有需要,以文本形式传入陆地文件。只使用用户获准使用的数据。 - 发射任何东西或合成射频。训练生成器写出NMEA文本;IQ层写出供软件接收机使用的采样文件。
随答案应保留的内容#
| 输出 | 保留 |
|---|---|
| 卫星几何与扣分类别(0.36) | 将几何与评分并列报告,并按返回结果报告每项扣分的类别:geometry指天空(是关于天空的说明,不是认定没有发生攻击的结论),environment指信号环境,inconsistency指类似攻击的证据。当状态为unknown(日志中没有GSV或GSA)时,说“几何未知”;不要自行推断。阈值为MODELLED,并注明来源。 |
| 接收机信任度评分 | 咨询性(仅供参考):不是经型式认可的导航设备(IEC 61108、IEC 61162);操作人员仍须负责。MODELLED。运行前先声明船舶的限值,不要为迁就某个结果而调整阈值。高分不能证明定位是真实的;这些检查无法发现与所有其他传感器都一致的欺骗源。 |
| 证据包 | 这是一份技术记录,不是法律意见、事实认定或批准。请用通过其他途径获得的签名者公钥进行核验;没有公钥时,结论为intact-signer-not-pinned,它只证明相对于证据包自己指明的密钥而言是完整的:应说“完整,但未确立签名者”,绝不能说“已核验”。如果密钥重要,切勿在对话中返回、记录或索要签名种子:请使用命令行。 |
| 训练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是分析与训练工具,不是飞行或导航产品。