从哪来 · 为什么 · 怎么做
玖衍 Q2 问「AI 建议能否信任」、Q12 问「提示词工程怎么做」。本节把「信任」从模型参数规模转译为可验收的约束契约。
无约束 LLM 的战场幻觉
早期联调中,放开约束的 LLM 会编造 DB3K 中不存在的平台、把 KYQB 情报坐标漂移数十海里、对同一 fusedId 输出互相矛盾的打击方案。指挥员看到的不是「智能参谋」,而是不可审计的散文——任何一条幻觉进入 Command Mission 都会摧毁复盘链条。
根因不是模型弱,而是缺少对象层 SSOT(fusedId / DBID)与动作层封闭语言(atomic_tasks)的双重约束。
信任 = 约束栈,非参数规模
换 70B 模型不能解决「平台 ID 对不上」——信任来自:① 十种封闭 atomic_task 类型;② ZSSC 条令 whitelist 溯源;③ train 模式自动跑通 vs live 模式强制 HITL;④ 未 strikeReady 的目标双端禁打。
指挥员在 live 模式看到的是带条令出处的建议卡片,不是 ChatGPT 式自由文本。批准/驳回留痕,JUDGE 可复盘。
Prompt 栈顺序与禁令
PromptOps 栈自下而上:L0 fusedId / 坐标 SSOT 注入 → L1 DB3K 平台 whitelist → L2 10 类 atomic_task schema → L3 ZSSC 条令片段 RAG → L4 战区角色 persona → L5 输出 JSON 校验。
硬禁令:禁止 dual-push——同一 plan_id 不得同时向 train executor 与 live pending 队列推送;违反则 verify 红灯。
PromptOps 约束栈分层
任何一层校验失败,atomic_tasks 不得进入 MultiLLMCoordinator 合并队列。LLM 只在上层「填空」,不能改写下层 SSOT。
十类原子任务与条令咬合
为何必须是「十种」而非开放动词
开放自然语言动作(「狠狠打一波」)无法映射到 Command Mission,也无法被 JUDGE 复盘。OpenNexus 将参谋输出约束为十种封闭原子任务:MOVE / PATROL / ATTACK / ESCORT / INTERCEPT / AVOID / RTB / REFUEL / HOLD / FOLLOW。每种附带必填字段:unit_ids、tactic_id(ZSSC 条令编号)、坐标与 reasoning。Schema 校验失败即丢弃,不进入合并器;禁止 STRATEGIC_STRIKE 等复合任务类型。
ZSSC 条令 whitelist 如何溯源
Gradio 参谋前端通过 RAG 检索 ZSSC 条令库,但检索结果必须经过 tactic_whitelist 过滤——只有与当前 opMode、目标类型、武器挂载匹配的条令片段才能进入 L3 层 prompt。输出卡片展示条令编号 + 原文摘录 + 适用条件,指挥员可一键展开出处。这不是「让 LLM 读条令」,而是「让 LLM 在条令围栏内填空」。
live 模式 HITL 与 train 模式对比
train 模式下 atomic_tasks 可自动进入 CMO executor 跑通流程,用于教学与 verify。live 模式下所有打击类任务进入 pending 队列,指挥员必须在 Brain COP 上逐条批准或驳回,驳回理由写入审计日志。HITL 不是 UI 装饰——未批准任务若试图绕过 WPF :5000 写口,Gate 直接拦截。
dual-push 禁令的工程含义
同一 plan_id 若同时出现在 train 自动执行通道与 live pending 队列,会导致「演示态与实战态行为不一致」——复盘时无法判断哪条命令生效。PromptOps 在 L5 层强制 plan_id 全局唯一绑定 opMode,verify 脚本扫描双写即报 FAIL。