0a9588abb7
- Add pagination support to findAll (page, limit query params) - Add findByTemplateId method to service - Add GET /by-template/:templateId endpoint to controller - Service already includes CRUD for QuestionBank and QuestionBankItem
832 lines
30 KiB
HTML
832 lines
30 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>军事仿真 AI 原生解决方案</title>
|
||
<style>
|
||
:root {
|
||
--bg: #0f1117;
|
||
--surface: #1a1d27;
|
||
--surface2: #232736;
|
||
--border: #2e3348;
|
||
--text: #e2e4ed;
|
||
--text-dim: #8b8fa3;
|
||
--accent: #6c8cff;
|
||
--accent2: #a78bfa;
|
||
--green: #34d399;
|
||
--orange: #fb923c;
|
||
--red: #f87171;
|
||
--cyan: #22d3ee;
|
||
--yellow: #fbbf24;
|
||
}
|
||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||
body {
|
||
font-family: -apple-system, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||
background: var(--bg);
|
||
color: var(--text);
|
||
line-height: 1.7;
|
||
padding: 0;
|
||
}
|
||
|
||
/* Header */
|
||
.hero {
|
||
background: linear-gradient(135deg, #1e1b4b 0%, #0f172a 50%, #0c1220 100%);
|
||
border-bottom: 1px solid var(--border);
|
||
padding: 80px 40px 60px;
|
||
text-align: center;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
.hero::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: -50%;
|
||
left: -50%;
|
||
width: 200%;
|
||
height: 200%;
|
||
background: radial-gradient(circle at 30% 50%, rgba(108,140,255,0.08) 0%, transparent 50%),
|
||
radial-gradient(circle at 70% 50%, rgba(167,139,250,0.06) 0%, transparent 50%);
|
||
}
|
||
.hero h1 {
|
||
font-size: 2.6em;
|
||
font-weight: 700;
|
||
background: linear-gradient(135deg, var(--accent), var(--accent2));
|
||
-webkit-background-clip: text;
|
||
-webkit-text-fill-color: transparent;
|
||
position: relative;
|
||
margin-bottom: 12px;
|
||
}
|
||
.hero .subtitle {
|
||
color: var(--text-dim);
|
||
font-size: 1.15em;
|
||
position: relative;
|
||
}
|
||
|
||
/* Layout */
|
||
.container {
|
||
max-width: 1200px;
|
||
margin: 0 auto;
|
||
padding: 0 32px;
|
||
}
|
||
|
||
/* Pipeline overview */
|
||
.pipeline {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 0;
|
||
padding: 48px 0 24px;
|
||
flex-wrap: wrap;
|
||
}
|
||
.pipeline-node {
|
||
background: var(--surface);
|
||
border: 1px solid var(--border);
|
||
border-radius: 12px;
|
||
padding: 18px 28px;
|
||
text-align: center;
|
||
min-width: 140px;
|
||
transition: border-color 0.2s;
|
||
}
|
||
.pipeline-node:hover { border-color: var(--accent); }
|
||
.pipeline-node .step-num {
|
||
display: inline-block;
|
||
width: 28px; height: 28px;
|
||
border-radius: 50%;
|
||
background: var(--accent);
|
||
color: #fff;
|
||
font-size: 0.8em;
|
||
font-weight: 700;
|
||
line-height: 28px;
|
||
margin-bottom: 6px;
|
||
}
|
||
.pipeline-node .label { font-weight: 600; font-size: 1em; }
|
||
.pipeline-node .sub { color: var(--text-dim); font-size: 0.82em; }
|
||
.pipeline-arrow {
|
||
color: var(--text-dim);
|
||
font-size: 1.4em;
|
||
padding: 0 8px;
|
||
user-select: none;
|
||
}
|
||
|
||
/* Sections */
|
||
section {
|
||
margin: 48px 0;
|
||
}
|
||
.section-header {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 14px;
|
||
margin-bottom: 24px;
|
||
padding-bottom: 12px;
|
||
border-bottom: 1px solid var(--border);
|
||
}
|
||
.section-header .icon {
|
||
width: 42px; height: 42px;
|
||
border-radius: 10px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 1.3em;
|
||
flex-shrink: 0;
|
||
}
|
||
.section-header h2 {
|
||
font-size: 1.55em;
|
||
font-weight: 700;
|
||
}
|
||
.section-header .tag {
|
||
font-size: 0.78em;
|
||
padding: 3px 10px;
|
||
border-radius: 20px;
|
||
font-weight: 600;
|
||
}
|
||
|
||
/* Cards grid */
|
||
.cards {
|
||
display: grid;
|
||
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
||
gap: 16px;
|
||
}
|
||
.card {
|
||
background: var(--surface);
|
||
border: 1px solid var(--border);
|
||
border-radius: 12px;
|
||
padding: 22px;
|
||
transition: border-color 0.2s, transform 0.15s;
|
||
}
|
||
.card:hover {
|
||
border-color: var(--accent);
|
||
transform: translateY(-2px);
|
||
}
|
||
.card h4 {
|
||
font-size: 0.95em;
|
||
margin-bottom: 6px;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 8px;
|
||
}
|
||
.card p {
|
||
color: var(--text-dim);
|
||
font-size: 0.88em;
|
||
line-height: 1.6;
|
||
}
|
||
|
||
/* Diagram box */
|
||
.diagram-box {
|
||
background: var(--surface2);
|
||
border: 1px solid var(--border);
|
||
border-radius: 12px;
|
||
padding: 32px;
|
||
margin-top: 20px;
|
||
overflow-x: auto;
|
||
}
|
||
.diagram-box pre {
|
||
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;
|
||
font-size: 0.82em;
|
||
line-height: 1.65;
|
||
color: var(--cyan);
|
||
white-space: pre;
|
||
margin: 0;
|
||
}
|
||
|
||
/* Table */
|
||
.data-table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin-top: 16px;
|
||
}
|
||
.data-table th {
|
||
text-align: left;
|
||
padding: 12px 16px;
|
||
background: var(--surface2);
|
||
border-bottom: 1px solid var(--border);
|
||
font-size: 0.85em;
|
||
color: var(--text-dim);
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.5px;
|
||
}
|
||
.data-table td {
|
||
padding: 12px 16px;
|
||
border-bottom: 1px solid var(--border);
|
||
font-size: 0.9em;
|
||
}
|
||
.data-table tr:hover td { background: rgba(108,140,255,0.04); }
|
||
|
||
/* Tags */
|
||
.tag-blue { background: rgba(108,140,255,0.15); color: var(--accent); }
|
||
.tag-purple { background: rgba(167,139,250,0.15); color: var(--accent2); }
|
||
.tag-green { background: rgba(52,211,153,0.15); color: var(--green); }
|
||
.tag-orange { background: rgba(251,146,60,0.15); color: var(--orange); }
|
||
.tag-cyan { background: rgba(34,211,238,0.15); color: var(--cyan); }
|
||
.tag-yellow { background: rgba(251,191,36,0.15); color: var(--yellow); }
|
||
|
||
.icon-blue { background: rgba(108,140,255,0.12); }
|
||
.icon-purple { background: rgba(167,139,250,0.12); }
|
||
.icon-green { background: rgba(52,211,153,0.12); }
|
||
.icon-orange { background: rgba(251,146,60,0.12); }
|
||
.icon-cyan { background: rgba(34,211,238,0.12); }
|
||
.icon-yellow { background: rgba(251,191,36,0.12); }
|
||
.icon-red { background: rgba(248,113,113,0.12); }
|
||
|
||
/* Code block */
|
||
code {
|
||
font-family: "JetBrains Mono", "Fira Code", monospace;
|
||
background: var(--surface2);
|
||
padding: 2px 7px;
|
||
border-radius: 4px;
|
||
font-size: 0.88em;
|
||
color: var(--cyan);
|
||
}
|
||
|
||
/* Callout */
|
||
.callout {
|
||
background: rgba(108,140,255,0.06);
|
||
border-left: 3px solid var(--accent);
|
||
border-radius: 0 10px 10px 0;
|
||
padding: 20px 24px;
|
||
margin-top: 20px;
|
||
}
|
||
.callout strong { color: var(--accent); }
|
||
.callout p { color: var(--text-dim); font-size: 0.92em; margin-top: 6px; }
|
||
|
||
/* Roadmap */
|
||
.roadmap {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 20px;
|
||
margin-top: 16px;
|
||
}
|
||
.roadmap-item {
|
||
background: var(--surface);
|
||
border: 1px solid var(--border);
|
||
border-radius: 12px;
|
||
padding: 24px;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
.roadmap-item::before {
|
||
content: attr(data-phase);
|
||
position: absolute;
|
||
top: 0; left: 0; right: 0;
|
||
height: 3px;
|
||
}
|
||
.roadmap-item h4 {
|
||
font-size: 1.05em;
|
||
margin-bottom: 8px;
|
||
}
|
||
.roadmap-item ul {
|
||
list-style: none;
|
||
padding: 0;
|
||
}
|
||
.roadmap-item li {
|
||
color: var(--text-dim);
|
||
font-size: 0.88em;
|
||
padding: 3px 0;
|
||
padding-left: 16px;
|
||
position: relative;
|
||
}
|
||
.roadmap-item li::before {
|
||
content: '›';
|
||
position: absolute;
|
||
left: 0;
|
||
color: var(--accent);
|
||
font-weight: 700;
|
||
}
|
||
|
||
/* Flow diagram with SVG-like CSS */
|
||
.flow-section {
|
||
background: var(--surface);
|
||
border: 1px solid var(--border);
|
||
border-radius: 12px;
|
||
padding: 28px;
|
||
margin-top: 16px;
|
||
}
|
||
.flow-row {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 12px;
|
||
flex-wrap: wrap;
|
||
}
|
||
.flow-box {
|
||
border-radius: 10px;
|
||
padding: 14px 22px;
|
||
text-align: center;
|
||
font-size: 0.88em;
|
||
font-weight: 600;
|
||
min-width: 120px;
|
||
border: 1px solid var(--border);
|
||
}
|
||
.flow-arrow {
|
||
color: var(--text-dim);
|
||
font-size: 1.2em;
|
||
}
|
||
|
||
/* Footer */
|
||
.footer {
|
||
text-align: center;
|
||
padding: 40px;
|
||
color: var(--text-dim);
|
||
font-size: 0.82em;
|
||
border-top: 1px solid var(--border);
|
||
margin-top: 60px;
|
||
}
|
||
|
||
/* Responsive */
|
||
@media (max-width: 768px) {
|
||
.hero { padding: 48px 20px 36px; }
|
||
.hero h1 { font-size: 1.8em; }
|
||
.container { padding: 0 16px; }
|
||
.pipeline { gap: 4px; }
|
||
.pipeline-node { min-width: 100px; padding: 12px 14px; }
|
||
.pipeline-arrow { font-size: 1em; padding: 0 4px; }
|
||
.roadmap { grid-template-columns: 1fr; }
|
||
.diagram-box pre { font-size: 0.72em; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<!-- Hero -->
|
||
<div class="hero">
|
||
<h1>军事仿真 AI 原生解决方案</h1>
|
||
<div class="subtitle">场景 → 想定 → 方案 → 推演 → 评估 · 端到端闭环智能体系</div>
|
||
</div>
|
||
|
||
<div class="container">
|
||
|
||
<!-- Pipeline Overview -->
|
||
<div class="pipeline">
|
||
<div class="pipeline-node">
|
||
<div class="step-num">1</div>
|
||
<div class="label">场景构建</div>
|
||
<div class="sub">Scene Construction</div>
|
||
</div>
|
||
<span class="pipeline-arrow">→</span>
|
||
<div class="pipeline-node">
|
||
<div class="step-num">2</div>
|
||
<div class="label">想定生成</div>
|
||
<div class="sub">Wargaming Scenario</div>
|
||
</div>
|
||
<span class="pipeline-arrow">→</span>
|
||
<div class="pipeline-node">
|
||
<div class="step-num">3</div>
|
||
<div class="label">方案生成</div>
|
||
<div class="sub">Plan Generation</div>
|
||
</div>
|
||
<span class="pipeline-arrow">→</span>
|
||
<div class="pipeline-node">
|
||
<div class="step-num">4</div>
|
||
<div class="label">仿真推演</div>
|
||
<div class="sub">Simulation Run</div>
|
||
</div>
|
||
<span class="pipeline-arrow">→</span>
|
||
<div class="pipeline-node">
|
||
<div class="step-num">5</div>
|
||
<div class="label">仿真评估</div>
|
||
<div class="sub">Assessment</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- ========== 1. 场景构建 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-blue"> </div>
|
||
<h2>一、场景构建</h2>
|
||
<span class="tag tag-blue">Scene Construction</span>
|
||
</div>
|
||
<p style="color:var(--text-dim);margin-bottom:16px;">构建战场环境,涵盖地理、气象、电磁、基础设施等多维态势。核心目标:<strong>用自然语言快速生成结构化战场场景</strong>。</p>
|
||
|
||
<div class="cards">
|
||
<div class="card">
|
||
<h4><span class="tag tag-blue">NLP</span> 自然语言 → 场景</h4>
|
||
<p>LLM 将 "红蓝双方在东海某海域对峙,气象条件 XX" 解析为结构化场景参数 (JSON / DSL)</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-purple">Vision</span> 地理环境生成</h4>
|
||
<p>多模态模型从卫星图 / 地图自动提取地形特征、道路网络、关键地标</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-green">RAG</span> 场景模板推荐</h4>
|
||
<p>基于历史场景库做 RAG 检索,推荐相似场景作为起点,降低构建成本</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-orange">Validate</span> 一致性校验</h4>
|
||
<p>LLM + 规则引擎联合检查参数矛盾,如海拔与水深冲突、时间线逻辑错误</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="diagram-box">
|
||
<pre>
|
||
[自然语言输入]
|
||
│
|
||
▼
|
||
[场景 DSL 生成器 (LLM)]
|
||
│
|
||
▼
|
||
[场景参数 JSON Schema] ──→ [场景渲染引擎 (3D / GIS)]
|
||
│
|
||
▼
|
||
[一致性校验 (规则 + LLM)]
|
||
│
|
||
▼
|
||
[结构化场景定义]
|
||
</pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ========== 2. 想定生成 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-purple">⚔️</div>
|
||
<h2>二、想定生成</h2>
|
||
<span class="tag tag-purple">Wargaming Scenario</span>
|
||
</div>
|
||
<p style="color:var(--text-dim);margin-bottom:16px;">在场景基础上定义双方作战目标、兵力编成、交战规则 (ROE)、时间线。核心创新:<strong>红蓝对抗博弈 Agent 自动迭代生成想定</strong>。</p>
|
||
|
||
<div class="cards">
|
||
<div class="card">
|
||
<h4><span class="tag tag-blue">Generate</span> 想定自动生成</h4>
|
||
<p>LLM 基于场景 + 作战意图,生成结构化想定:兵力部署、阶段划分、ROE 规则</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-red">Game</span> 对抗性博弈</h4>
|
||
<p>红蓝两个 Agent 各自独立生成意图,通过多轮对抗迭代完善想定</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-green">Review</span> 合理性评估</h4>
|
||
<p>战术知识库 RAG + LLM 审查,标注兵力不足、后勤断链等风险点</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-cyan">Version</span> 版本管理</h4>
|
||
<p>每次修改生成 diff,支持分支 / 合并,类 Git 的想定版本管理</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="diagram-box">
|
||
<pre>
|
||
场景描述 + 红方目标
|
||
│
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ Red Agent (LLM) │ ← 战术知识库 (RAG)
|
||
│ 生成红方兵力部署方案 │
|
||
└───────────┬─────────────┘
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ Blue Agent (LLM) │ ← 战术知识库 (RAG)
|
||
│ 针对红方部署制定对策 │
|
||
└───────────┬─────────────┘
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ Referee Agent │
|
||
│ 平衡性审查 + 冲突标注 │
|
||
└───────────┬─────────────┘
|
||
▼
|
||
最终想定文档
|
||
</pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ========== 3. 方案生成 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-green"> </div>
|
||
<h2>三、方案生成</h2>
|
||
<span class="tag tag-green">Plan Generation</span>
|
||
</div>
|
||
<p style="color:var(--text-dim);margin-bottom:16px;">基于想定为各作战单元生成具体行动计划。核心价值:<strong>多方案并行生成 + 量化比较,突破人工只能覆盖少数方案的局限</strong>。</p>
|
||
|
||
<div class="cards">
|
||
<div class="card">
|
||
<h4><span class="tag tag-blue">Ensemble</span> 多方案并行</h4>
|
||
<p>LLM + 规划算法 (HTN / MCTS) 并行输出 3-5 个差异化方案,覆盖不同战术风格</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-yellow">Score</span> 多维评价打分</h4>
|
||
<p>风险、时效、资源消耗、达成概率等维度自动评分,附 LLM 解释</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-purple">Merge</span> 方案对比与融合</h4>
|
||
<p>LLM 对多方案做优劣势分析,可融合不同方案的优点生成复合方案</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-cyan">HITL</span> 人在回路修正</h4>
|
||
<p>指挥员用自然语言修改方案,LLM 实时调整并反馈级联影响</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="diagram-box">
|
||
<pre>
|
||
想定 + 约束条件
|
||
│
|
||
▼
|
||
┌────────────────────────────────────────┐
|
||
│ Plan Generator Ensemble │
|
||
│ ┌──────────┐ ┌──────────┐ ┌─────────┐│
|
||
│ │ 方案 A │ │ 方案 B │ │ 方案 C ││
|
||
│ │(激进突防) │ │(稳健推进) │ │(迂回包围)││
|
||
│ └─────┬────┘ └─────┬────┘ └────┬────┘│
|
||
│ └────────────┼───────────┘ │
|
||
│ ▼ │
|
||
│ Plan Evaluator │
|
||
│ (多维度打分 + LLM 解释) │
|
||
└─────────────────────┬──────────────────┘
|
||
▼
|
||
排序推荐 + 可视化对比
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="callout">
|
||
<strong>方案 DSL 示例</strong>
|
||
<p>每个方案以结构化 YAML 描述,包含阶段、兵力、行动指令,便于 LLM 生成、校验和推演引擎执行。</p>
|
||
</div>
|
||
|
||
<div class="diagram-box" style="margin-top:12px;">
|
||
<pre>
|
||
plan_id: PLAN-2026-0320-A
|
||
name: "东海封锁作战方案 A — 激进突防"
|
||
phases:
|
||
- phase: 1
|
||
name: "电子压制"
|
||
start_time: T+0
|
||
units: [EW-01, EW-02]
|
||
actions:
|
||
- type: jamming
|
||
target: enemy_radar_net
|
||
power: high
|
||
- phase: 2
|
||
name: "第一波突击"
|
||
start_time: T+00:30
|
||
units: [AIR-01, AIR-02, NAV-01]
|
||
actions:
|
||
- type: strike
|
||
target: port_facility_A
|
||
weapon: cruise_missile
|
||
quantity: 12
|
||
</pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ========== 4. 仿真推演 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-orange"> </div>
|
||
<h2>四、仿真推演</h2>
|
||
<span class="tag tag-orange">Simulation Execution</span>
|
||
</div>
|
||
<p style="color:var(--text-dim);margin-bottom:16px;">按方案驱动各作战单元在仿真环境中执行,产生时序态势数据。核心创新:<strong>每个作战单元挂载 LLM Agent,自主感知-决策-行动</strong>。</p>
|
||
|
||
<div class="cards">
|
||
<div class="card">
|
||
<h4><span class="tag tag-blue">Agent</span> 智能体行为决策</h4>
|
||
<p>每个作战单元挂载 LLM Agent,根据实时态势自主决策,非脚本化行为树</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-green">Adaptive</span> 自适应仿真步长</h4>
|
||
<p>战斗激烈区域用小步长,平静区域用大步长,AI 动态调度提升仿真效率</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-yellow">Inject</span> 意外事件注入</h4>
|
||
<p>LLM 作为 "战局导演",在关键节点注入意外事件,考验方案鲁棒性</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-cyan">Monitor</span> 实时态势理解</h4>
|
||
<p>推演过程中 LLM 持续解读态势,自动生成态势报告与异常告警</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="diagram-box">
|
||
<pre>
|
||
┌──────────────────────────────────────────────────┐
|
||
│ Simulation Engine │
|
||
│ │
|
||
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
|
||
│ │ Unit Agent │ │ Unit Agent │ │ Unit Agent ││
|
||
│ │ (驱逐舰) │ │ (战斗机) │ │ (雷达站) ││
|
||
│ │ │ │ │ │ │ │
|
||
│ │ 观测→推理 │ │ 观测→推理 │ │ 观测→推理 │ │
|
||
│ │ →决策→行动 │ │ →决策→行动 │ │ →决策→行动 │ │
|
||
│ └──────┬─────┘ └──────┬─────┘ └──────┬─────┘ │
|
||
│ └───────────────┼───────────────┘ │
|
||
│ ▼ │
|
||
│ 态势融合与冲突仲裁 │
|
||
│ ▼ │
|
||
│ 仿真时间推进 │
|
||
└──────────────────────────┬─────────────────────────┘
|
||
▼
|
||
时序态势数据流 (SSE)
|
||
</pre>
|
||
</div>
|
||
|
||
<div class="callout">
|
||
<strong>Unit Agent 决策循环</strong>
|
||
<p>每个 Agent 遵循 <code>观测 (Observe) → 推理 (Reason) → 决策 (Decide) → 行动 (Act)</code> 循环,输出可审计的决策链,支持事后复盘分析。</p>
|
||
</div>
|
||
|
||
<div class="diagram-box" style="margin-top:12px;">
|
||
<pre>
|
||
UNIT_AGENT_SYSTEM_PROMPT = """
|
||
你是 {unit_type} {unit_id} 的指挥 AI。
|
||
当前态势:{current_situation}
|
||
你的任务:{mission_objective}
|
||
ROE 规则:{rules_of_engagement}
|
||
可用武器/资源:{available_resources}
|
||
|
||
输出格式:
|
||
1. 态势判断 — 你观察到了什么
|
||
2. 决策依据 — 为什么这么做
|
||
3. 行动指令 — 具体做什么
|
||
4. 预期结果 — 预计产生什么效果
|
||
"""
|
||
</pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ========== 5. 仿真评估 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-yellow"> </div>
|
||
<h2>五、仿真评估</h2>
|
||
<span class="tag tag-yellow">Assessment</span>
|
||
</div>
|
||
<p style="color:var(--text-dim);margin-bottom:16px;">对推演结果进行多维度评估,输出报告,支持方案迭代优化。核心价值:<strong>LLM 自动将海量推演数据转化为可读评估报告 + 可执行的改进建议</strong>。</p>
|
||
|
||
<div class="cards">
|
||
<div class="card">
|
||
<h4><span class="tag tag-blue">Metrics</span> 多维自动评估</h4>
|
||
<p>从推演数据自动计算战损比、时间达成率、资源效率、态势控制面积等指标</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-green">Report</span> 自然语言报告</h4>
|
||
<p>LLM 将指标数据转化为结构化评估报告,含关键节点叙事与图表引用</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-purple">Root Cause</span> 根因分析</h4>
|
||
<p>LLM 分析关键转折点,构建因果链,追溯胜负根本原因</p>
|
||
</div>
|
||
<div class="card">
|
||
<h4><span class="tag tag-orange">Loop</span> 方案迭代闭环</h4>
|
||
<p>基于评估结果自动提出改进建议,闭环反馈至方案生成阶段</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="diagram-box">
|
||
<pre>
|
||
推演时序数据
|
||
│
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ 评估指标计算引擎 │
|
||
│ (战损 / 时间 / 资源 态势)│
|
||
└───────────┬─────────────┘
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ LLM 评估报告生成器 │
|
||
│ 指标 → 叙事 → 图表 → 建议│
|
||
└───────────┬─────────────┘
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ 根因分析 Agent │
|
||
│ 关键节点回溯 + 因果链 │
|
||
└───────────┬─────────────┘
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ 方案优化建议 │
|
||
│ → 反馈至方案生成阶段 │
|
||
└─────────────────────────┘
|
||
</pre>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ========== 端到端架构 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-cyan"> </div>
|
||
<h2>六、端到端闭环架构</h2>
|
||
<span class="tag tag-cyan">Full Loop</span>
|
||
</div>
|
||
|
||
<div class="flow-section">
|
||
<div class="flow-row" style="margin-bottom:20px;">
|
||
<div class="flow-box" style="border-color:var(--accent);background:rgba(108,140,255,0.08);">场景构建<br><small style="color:var(--text-dim)">LLM 解析 + RAG 模板</small></div>
|
||
<span class="flow-arrow">→</span>
|
||
<div class="flow-box" style="border-color:var(--accent2);background:rgba(167,139,250,0.08);">想定生成<br><small style="color:var(--text-dim)">对抗博弈 Agent</small></div>
|
||
<span class="flow-arrow">→</span>
|
||
<div class="flow-box" style="border-color:var(--green);background:rgba(52,211,153,0.08);">方案生成<br><small style="color:var(--text-dim)">多方案并行生成</small></div>
|
||
<span class="flow-arrow">→</span>
|
||
<div class="flow-box" style="border-color:var(--orange);background:rgba(251,146,60,0.08);">仿真推演<br><small style="color:var(--text-dim)">Agent 化推演引擎</small></div>
|
||
<span class="flow-arrow">→</span>
|
||
<div class="flow-box" style="border-color:var(--yellow);background:rgba(251,191,36,0.08);">仿真评估<br><small style="color:var(--text-dim)">LLM 报告 + 根因分析</small></div>
|
||
</div>
|
||
<div style="text-align:center;color:var(--text-dim);font-size:0.88em;">
|
||
<span style="border:1px dashed var(--border);padding:6px 16px;border-radius:20px;"> 闭环迭代:评估结果 → 优化建议 → 回到方案生成</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="callout" style="margin-top:24px;">
|
||
<strong>核心设计哲学</strong>
|
||
<p>让 LLM 承担 <strong>"认知"</strong> 工作(理解、推理、生成、评估),传统算法承担 <strong>"计算"</strong> 工作(物理仿真、路径规划、优化求解),两者通过结构化 DSL 桥接。这一分层保证了 AI 的创造性与仿真的精确性互不干扰。</p>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ========== 技术选型 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-green"> </div>
|
||
<h2>七、关键技术选型</h2>
|
||
<span class="tag tag-green">Tech Stack</span>
|
||
</div>
|
||
|
||
<table class="data-table">
|
||
<thead>
|
||
<tr>
|
||
<th>层级</th>
|
||
<th>技术</th>
|
||
<th>说明</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><span class="tag tag-blue">LLM 编排</span></td>
|
||
<td>LangGraph / 自研 Agent 框架</td>
|
||
<td>管理多 Agent 协作、状态流转、对话历史</td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="tag tag-purple">知识库</span></td>
|
||
<td>Elasticsearch + 向量检索</td>
|
||
<td>作战条令、战术案例、历史战例的 RAG 索引</td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="tag tag-orange">仿真引擎</span></td>
|
||
<td>离散事件仿真 (DES) + Agent 调度</td>
|
||
<td>战场事件驱动,Agent 自主决策,支持多时间尺度</td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="tag tag-green">态势存储</span></td>
|
||
<td>时序 DB (InfluxDB / TDengine)</td>
|
||
<td>高频态势数据写入与时间范围查询</td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="tag tag-cyan">可视化</span></td>
|
||
<td>Cesium (3D GIS) + WebSocket</td>
|
||
<td>实时态势可视化,支持 2D/3D 切换</td>
|
||
</tr>
|
||
<tr>
|
||
<td><span class="tag tag-yellow">方案 DSL</span></td>
|
||
<td>YAML / JSON Schema</td>
|
||
<td>结构化方案描述,便于 LLM 生成、校验和引擎执行</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
|
||
<!-- ========== 落地路径 ========== -->
|
||
<section>
|
||
<div class="section-header">
|
||
<div class="icon icon-red"> </div>
|
||
<h2>八、落地路径</h2>
|
||
<span class="tag tag-orange">Roadmap</span>
|
||
</div>
|
||
|
||
<div class="roadmap">
|
||
<div class="roadmap-item" data-phase="" style="border-top: 3px solid var(--green);">
|
||
<h4 style="color:var(--green);">Phase 1 · MVP</h4>
|
||
<ul>
|
||
<li>跑通场景→想定→单方案→简单推演→评估的最小闭环</li>
|
||
<li>LLM 做自然语言到 DSL 的转换</li>
|
||
<li>基础知识库 RAG 索引(作战条令)</li>
|
||
<li>脚本化仿真引擎 + 基础指标评估</li>
|
||
</ul>
|
||
</div>
|
||
<div class="roadmap-item" data-phase="" style="border-top: 3px solid var(--accent);">
|
||
<h4 style="color:var(--accent);">Phase 2 · 增强</h4>
|
||
<ul>
|
||
<li>引入红蓝对抗博弈 Agent</li>
|
||
<li>多方案并行生成 + 量化对比</li>
|
||
<li>Agent 化推演引擎(自主决策)</li>
|
||
<li>实时态势可视化 + SSE 推送</li>
|
||
</ul>
|
||
</div>
|
||
<div class="roadmap-item" data-phase="" style="border-top: 3px solid var(--accent2);">
|
||
<h4 style="color:var(--accent2);">Phase 3 · 成熟</h4>
|
||
<ul>
|
||
<li>自适应仿真步长 + 异常检测</li>
|
||
<li>方案自动迭代优化(评估→改进闭环)</li>
|
||
<li>跨域多兵种联合作战仿真</li>
|
||
<li>历史战例深度挖掘与战术知识图谱</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
</div>
|
||
|
||
<div class="footer">
|
||
军事仿真 AI 原生解决方案 · 2026-03-20
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|