Qt AFSim雷达态势显控终端-MCP服务功能
·
Qt AFSim雷达态势显控终端-MCP服务功能介绍
概述
Qt AFSim雷达态势显控终端MCP 服务是内置的 Model Context Protocol 服务层,面向 AI 大模型客户端,提供结构化的态势感知、决策辅助与受控执行能力。
服务基于标准 MCP 协议(JSON-RPC 2.0),通过 HTTP POST /message 端口暴露工具(Tools),AI 模型可通过自然语言驱动工具调用,完成从态势感知到武器交战的完整业务闭环。


设计原则
- 只读优先:态势查询、分析类接口均为只读,不影响仿真状态
- 权限分级:所有工具按
read-only/operator/dangerous三级管控 - 高风险两阶段确认:危险操作必须先
prepareAction获取 token,再confirmAction执行 - 结构化输出:所有返回值为结构化 JSON,便于 AI 解析
- 审计可追溯:所有工具调用均记录审计日志,支持事后查询
权限模型
| 权限级别 | 说明 | 典型操作 |
|---|---|---|
read-only |
只读查询,不影响系统状态 | 态势查询、威胁分析、交战建议 |
operator |
操作级,可影响显示和仿真控制 | 地图控制、焦点切换、仿真暂停/恢复 |
dangerous |
高风险,需二次确认 | 武器交战、停止仿真 |
高风险操作两阶段流程
1. dangerous.prepareAction(action, arguments)
→ 服务器生成 UUID token,记录操作参数,设置 60 秒过期时间
→ 返回 token、摘要、过期时间
2. 客户端展示摘要,用户确认
3. dangerous.confirmAction(token)
→ 服务器验证 token 有效性(未过期、未使用)
→ 取出绑定的参数执行操作(参数不可被客户端篡改)
→ token 消费后立即删除(一次性)
token 保护机制:
- UUID 随机生成,不可预测
- 60 秒 TTL,过期自动清除
- 一次性消费,不可重放
- 参数服务器侧绑定,客户端无法在 confirm 时替换目标
工具分组与功能说明
1. 推演状态查询
| 工具 | 权限 | 说明 |
|---|---|---|
simulation.getStatus |
read-only | 获取仿真运行状态(运行中/暂停/停止)、当前时间、倍率 |
simulation.health |
read-only | 健康诊断,返回 DDS 连接、数据流、实体数等系统状态 |
2. 推演控制
| 工具 | 权限 | 说明 |
|---|---|---|
simulation.pause |
operator | 暂停仿真 |
simulation.resume |
operator | 恢复仿真 |
simulation.setRate |
operator | 设置仿真倍率(1–100) |
simulation.setFps |
operator | 设置仿真帧率 |
simulation.start |
operator | 启动仿真任务 |
simulation.stop |
dangerous | 停止仿真(需二次确认) |
3. 实体查询
| 工具 | 权限 | 说明 |
|---|---|---|
entity.list |
read-only | 返回所有实体摘要列表(位置、类型、IFF、速度等) |
entity.ids |
read-only | 返回所有实体名称列表 |
entity.get |
read-only | 按名称查询单个实体完整详情,含传感器、武器、航迹 |
entity.self |
read-only | 返回当前自平台完整详情,含己方雷达航迹列表 |
entity.self 返回的航迹列表(tracks)包含:
trackNumber:整数航迹号(武器交战所需)targetName:目标实体名称iff:敌我识别(foe/friend/unknown/neutral)- 位置、速度、距离变化率等
4. 焦点目标与航迹
| 工具 | 权限 | 说明 |
|---|---|---|
target.focus |
read-only | 获取当前焦点目标详情 |
target.setFocus |
operator | 设置焦点目标(切换当前关注实体) |
track.focus |
read-only | 获取当前焦点航迹详情 |
track.listSelf |
read-only | 返回自平台雷达探测到的所有航迹列表 |
5. 态势感知
| 工具 | 权限 | 说明 |
|---|---|---|
situation.snapshot |
read-only | 返回当前完整战场态势快照(所有实体、航迹、告警) |
situation.delta |
read-only | 返回指定序列号之后的增量态势变化,减少数据量 |
get_battlefield_status |
read-only | 返回敌我友中立四类实体列表及自平台信息(简化格式) |
situation.delta 使用方式:
首次调用 → sinceSequence: 0 → 获取 nextSequence
后续调用 → sinceSequence: <上次 nextSequence> → 仅返回变化部分
6. 事件与告警
| 工具 | 权限 | 说明 |
|---|---|---|
event.listRecent |
read-only | 查询最近 N 条事件(可按时间、类型过滤) |
alert.active |
read-only | 返回当前所有活动告警 |
alert.acknowledge |
operator | 确认/清除指定告警 |
7. 威胁分析
| 工具 | 权限 | 说明 |
|---|---|---|
threat.rank |
read-only | 对当前战场所有敌方目标按威胁程度排序,返回优先级列表 |
threat.summary |
read-only | 返回指定目标的威胁详情(距离、速度、接触时间估算、IFF) |
8. 交战决策辅助
| 工具 | 权限 | 说明 |
|---|---|---|
engagement.precheck |
read-only | 检查对指定目标开火的前提条件(武器就绪、弹药、射程) |
engagement.recommend |
read-only | 为指定航迹推荐最优武器及交战参数 |
engagement.compareOptions |
read-only | 对比多种交战方案的效费比 |
weapon.capability |
read-only | 查询指定武器的性能参数(射程、弹速、类型) |
sensor.coverage |
read-only | 查询指定传感器的探测覆盖范围 |
9. 武器交战执行
| 工具 | 权限 | 说明 |
|---|---|---|
weapon.engage |
dangerous | 高风险武器交战,必须经过二次确认流程 |
fire_weapon |
operator | 直接开火指令(需要 entity_name、weapon、track_number) |
cease_fire |
operator | 停止所有武器交战 |
weapon.engage 参数:
{
"entityId": "blue_1",
"weaponId": "fox3",
"trackNumber": 3
}
注意: trackNumber 为整数航迹号,需从 entity.self 或 track.listSelf 获取,不能直接使用实体名称字符串。
10. 机动控制
| 工具 | 权限 | 说明 |
|---|---|---|
move_unit |
operator | 移动单位到指定经纬度/高度 |
change_speed |
operator | 改变单位速度(米/秒) |
change_heading |
operator | 改变单位航向(度) |
change_altitude |
operator | 改变单位高度(米) |
retreat |
operator | 撤退到安全位置 |
set_defensive_posture |
operator | 进入防御姿态 |
scout_area |
operator | 侦察指定区域 |
loiter |
operator | 在指定位置盘旋 |
return_to_base |
operator | 返回基地 |
evasive_maneuver |
operator | 规避机动 |
11. 地图与视口控制
| 工具 | 权限 | 说明 |
|---|---|---|
map.getViewState |
read-only | 获取当前地图视口状态(中心坐标、缩放级别、雷达环半径) |
map.getDisplayState |
read-only | 获取各图层显示开关状态 |
map.zoomToEntity |
operator | 将地图视口聚焦到指定实体 |
map.setEntityNameVisible |
operator | 切换实体名称显示 |
map.setSpeedLineVisible |
operator | 切换速度线显示 |
map.setHistoryTrackVisible |
operator | 切换历史航迹显示 |
map.setWeaponRangeVisible |
operator | 切换武器射程圈显示 |
map.setSensorCoverageVisible |
operator | 切换传感器覆盖显示 |
map.setEffectCoverageVisible |
operator | 切换效果覆盖显示 |
map.setRelationshipEdgesVisible |
operator | 切换关系线显示 |
viewport.getState |
read-only | 获取视口跟随状态 |
viewport.followTarget |
operator | 设置视口跟随指定目标 |
12. 高风险操作管理
| 工具 | 权限 | 说明 |
|---|---|---|
dangerous.prepareAction |
operator | 为高风险操作生成确认 token,绑定操作参数 |
dangerous.previewAction |
read-only | 预览操作内容(不执行,用于 AI 展示操作摘要) |
dangerous.confirmAction |
operator | 凭 token 确认并执行已准备的高风险操作 |
13. 审计日志
| 工具 | 权限 | 说明 |
|---|---|---|
audit.query |
read-only | 查询工具调用审计日志,支持按工具名、时间、阶段过滤 |
审计日志记录所有工具调用的完整信息,包括 prepare/confirm/execute 三个阶段,用于训练评估和事后复盘。
典型业务流程
AI 自动决策开火流程
1. get_battlefield_status / situation.snapshot
→ 获取当前战场态势,识别威胁目标
2. threat.rank / engagement.precheck
→ 评估威胁优先级,检查开火条件
3. entity.self
→ 获取自平台航迹列表,匹配目标 trackNumber
→ 获取可用武器列表(quantityRemaining > 0)
4. engagement.recommend
→ 获取推荐武器和交战参数
5. dangerous.prepareAction("weapon.engage", {entityId, weaponId, trackNumber})
→ 服务器生成 token,返回操作摘要
6. 客户端展示摘要,等待用户确认(UI 弹窗)
7. dangerous.confirmAction(token)
→ 服务器验证 token,执行武器交战
→ 返回执行结果和时间戳
8. audit.query
→ 可查询本次交战的完整审计记录
态势监控流程
1. situation.snapshot → 获取初始全量态势,记录 nextSequence
2. 定期调用 situation.delta(sinceSequence) → 仅获取变化部分
3. alert.active → 检查活动告警
4. threat.rank → 更新威胁排序
注意事项
-
token 有效期 60 秒:
prepareAction后必须在 60 秒内完成confirmAction,否则 token 过期失效。 -
token 一次性:
confirmAction成功后 token 立即销毁,不可重复使用。 -
武器就绪状态:
isReady: false时武器可能仍在装填,建议优先选择isReady: true的武器。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)