Blade COA 最小部署决策记录
目标是在不降低演示质量的前提下,把当前多服务 COA 演示收敛为更小、更可交付的部署形态。
最新复核:真实 BA + qwen 链路已通过 5 分钟验收
结论更新:
默认部署形态仍应收敛为 BA + COA。先前记录的 0.8 秒
不能作为验收证据,因为当时没有完成真实大模型链路;本次已重新通过 BA Socket.IO
chat:send 触发 AOC role,由 qwen3.6-122b-int4 生成 Bash 工具调用,
COA 侧在 COA_REQUIRE_LLM=1 下完成 F-1 到 F-7。
当前判定:
通过
BA 工具输出 RUN_DONE elapsed_sec=162;COA 服务记录
AUTO-20260710005412-27F209 从 2026-07-10T00:54:12.561Z
到 2026-07-10T00:56:49.038Z,约 156.5 秒,低于 5 分钟。
最终 status=completed、last_step=f7_decision、last_error_code=null。
目标形态:
P0 路径通过本地 solution 的 AOC 单角色和
auto_plan_full 单技能触发,COA backend 负责 F-1 到 F-7 状态推进、SQLite 写入、
3D artifact 与 quick-blast 兼容 API。默认不再暴露旧 model-registry:8050、
MySQL-only、旧 GIS、mss-studio、guacamole、stand-trans-viewer 或 replay 工具作为用户路径。
代码落点:
分支 ly/nzh-fix。在原 b2904bf3 基础上,本次补充了 COA 严格 LLM 模式:
fires_core_generator、mission_aux_generator、
coa_strategy_engine、fires_plan_auto_service 和
coa_candidate_builder 在 COA_REQUIRE_LLM=1 时不再静默跳过或回退。
同时对 qwen OpenAI-compatible 请求默认关闭 thinking,并强制候选评分逐项覆盖所有
option_key,避免漏评 s6/s8 后被误当作成功。
复核验证
- 默认 compose 服务:
blade-agent、coa-service。 - BA 健康检查:
{"status":"ok"};BA 容器已改用有效 qwen 网关凭证。 - BA Socket.IO:
session:subscribe返回is_running=true,chat:send被接受。 - BA 模型证据:会话历史中两轮 assistant 均有 token usage;首轮生成唯一
Bash工具调用,次轮提交结果。 - COA 模型证据:日志含多条
[llm-usage] model=qwen3.6-122b-int4,候选评分也由 qwen 输出。 - 严格模式证据:本次日志未出现
fallback或“兜底”;仅有一次 JSON parse retry,未使用补分或回退结果。 - 3D artifact:
/api/v1/artifacts/stand_trans/scn_persian_targeting_demo/persian_targeting_demo.glb返回200 OK,content-type: model/gltf-binary。 - 可见 solution/docs 扫描:无旧
8050、model-registry、MySQL、旧 GIS、guacamole、stand-trans-viewer、pending/deleted/stub 用户指令。
P0 快速规划复核
- 触发方式:BA 会话
2026-0710-0053-pblbncqt通过 Socket.IOchat:send触发 AOC role。 - COA auto-run:
AUTO-20260710005412-27F209,mode=fast。 - BA 工具输出:
RUN_START_UTC=2026-07-10T00:54:12Z,RUN_DONE elapsed_sec=162。 - COA 服务耗时:
00:54:12.561Z到00:56:49.038Z,约156.5s。 - 完成步骤:
f1_receive、f2_analyze、f3_threat_intel、f4_weaponeer、f5_plan、f6_wargame、f7_decision。
| 验收项 | 结果 | 证据 |
|---|---|---|
| F-1~F-7 数据闭环 | 通过 |
真实 BA + qwen + COA 严格路径已完成;BA 工具耗时 162s,
COA auto-run 服务端耗时约 156.5s。
|
| 无回退严格模式 | 通过 |
COA_REQUIRE_LLM=1 已覆盖 F-1~F-7 生成、COA 策略生成、auto-run 捕获分支和
coa_candidate_builder 评分。本次完成日志未出现 fallback 或“兜底”。
|
| reset 可重复演示 | 通过 |
POST /api/v1/system/reset-with-seed 返回
fires_plan_count=12、force_assignment_count=12、
mode=sqlite_demo_seed_reset;reset 后 inbox 首条回到
FP-V6-EW-001。
|
| 外部依赖边界 | 通过 |
默认 route/EW 小模型与外部 GIS 同步仅在显式设置
MODEL_REGISTRY_URL / GIS_SERVER_URL 时启用;
默认 P0 不再尝试连接这些历史服务。
|
保留说明:
先前 0.8 秒 记录应视为无效证据,不应再用于验收或对外汇报。
当前有效验收记录是 2026-0710-0053-pblbncqt /
AUTO-20260710005412-27F209,满足 BA 使用 qwen、COA 严格 LLM 无回退、
F-1 到 F-7 在 5 分钟内完成、auto-run 终态正确落为 completed。
零、P0 任务计划与完成标准
硬目标:
在 BA 已部署好的前提下,只开发 solution、backend、frontend。
默认只启动 BA + COA,用户在 F-0 选择 FP-V6-STRIKE-001,
点击“创建规划”,在右侧对话输入“快速规划”,
qwen 3.6 122b int4 能稳定触发 F-1 到 F-7 全流程,
5 分钟内跑通,并且演示效果不低于当前版本。
一把搞定的任务计划
-
Solution 收敛:
保留 P0 演示路径需要的 BizRoles 和 skills;删除旧
model-registry:8050、 MySQL-only、旧 GIS 服务、pending/stub/deleted command 等用户可见指令。 - 自动规划入口: 建立一个薄 skill 作为“快速规划”入口。模型只识别意图并调用自动规划工具, 不负责生成大 JSON plan,也不逐字段构造 F-1 到 F-7 数据。
- Backend 确定性推进: COA backend 负责 F-1 到 F-7 的状态推进、SQLite 写入、artifact 生成、 quick-blast、地图/军标/3D 资源服务。
- 本地模型/算法包: route、force assignment、weaponeering、EW plan 等能力以本地 Python 包或 MCP stdio 工具提供, Agent 路径和前端按钮路径复用同一套实现。
- Frontend 同源化: 前端默认只访问 BA 和 COA backend;F-0 到 F-7 的阶段状态、卡片、地图、军标、3D/仿真、 毁伤结果逐项刷新展示。
- SQLite 演示数据: 使用 golden SQLite 或 seed script;支持一键 reset;reset 后同一条 P0 路径可重复演示。
-
端到端验收:
用浏览器实测:导入任务包、选择
FP-V6-STRIKE-001、点击创建规划、输入“快速规划”, 5 分钟内完成 F-1 到 F-7,并保留截图或录屏作为验收证据。
完成标准
| 类别 | 必须满足的标准 |
|---|---|
| 用户路径 |
用户只需要导入任务包到 F-0、选择 FP-V6-STRIKE-001、点击“创建规划”、
输入“快速规划”;后续 F-1 到 F-7 自动完成。
|
| 时间目标 | 从用户发出“快速规划”到 F-7 完成,完整链路不超过 5 分钟; 5 秒内应出现可见进度反馈,期间每个阶段有状态更新。 |
| 模型边界 |
qwen 3.6 122b int4 只负责意图识别、流程选择和结果解释;
数据生成、状态推进、路径/毁伤/军标/仿真计算由工具和 backend 确定性完成。
|
| 依赖边界 |
默认演示不依赖 MySQL、model-registry、gis-server、
mss-studio、guacamole、stand-trans-viewer。
|
| 数据正确性 | F-1 到 F-7 每阶段都有明确状态、关键业务数据写入 SQLite,刷新页面后结果仍可恢复。 |
| 演示质量 | 地图底图、目标、航线、态势 overlay、军标、3D/仿真、quick-blast 或等价毁伤展示不降级。 |
| 失败定位 | 失败时能明确显示卡在 F-几、哪个工具/API、哪个数据项;不能表现为对话长时间无响应。 |
| 可重复演示 | 一条命令能 reset demo 数据;reset 后同一条 P0 链路可再次在 5 分钟内跑通。 |
一、最终目标
coa 容器。coa 容器内包含后端、前端静态产物、
SQLite demo DB、演示资产、地图/军标资产、轻模型本地包和必要的交互仿真 API。
开发态
BA 容器 + COA 前端 + COA 后端
便于前端热更新、后端调试、BA 会话联调。
部署态
BA 容器 + COA 单容器
COA 单容器 serve SPA,同时提供 API、SQLite、assets、quick-blast、地图和军标能力。
二、已确认的关键结论
-
BA 使用新版临时 solution / 本地 solution 能力。
不再把
blade-hub作为 COA 演示默认依赖;BA 启动后必须能直接看到blade_coasolution 和对应 BizRoles。 - SQLite 作为 demo 数据库。 随镜像携带预灌好的 golden SQLite DB;运行时复制到 writable 目录。reset 直接恢复 golden DB, 不再跑 MySQL baseline、migration 或 MySQL seed SQL。
- 轻模型不通过 model-registry 服务。 抽成本地 Python 包。Agent 通过 MCP stdio 直接调用;前端按钮路径由 COA backend import 同一包。
- 3D 演示保留质量,但不保留 model-registry 默认服务。 GLB、voxelclass、litematic 等作为 artifacts 随 COA 分发;quick-blast API 收进 COA backend。
-
GIS 和军标能力合并进 COA。
演示需要的是地图视觉、瓦片、overlay 和有限集合军标,不需要默认起
gis-server+mss-studio两个服务。 - stand-trans-viewer 不进入默认部署。 它是独立 3D 工具页,除非存在 COA 内嵌 viewer 无法替代的刚性演示点,否则只保留为开发/高级 profile。
三、服务去留矩阵
| 组件 | 当前职责 | 决策 | 迁移后承载方式 |
|---|---|---|---|
blade-agent |
Agent 引擎、ChatView、session、solution/BizRole、sandbox。 | 保留 | 默认一个 BA 容器;启用 demo/mock/off 配置,避免依赖 blade-hub/oauth/license/ASR/BladeOS。 |
coa-service |
业务后端、REST、CLI RPC、前端静态文件。 | 保留并扩展 | 部署态单一 coa 容器:API + SPA + SQLite + assets + quick-blast + map/symbol。 |
frontend-jp |
COA 前端、Agent Kit、F0-F6/F7、3D viewer、地图页面。 | 部署态并入 | 开发态独立跑;部署态 Vite build 由 coa-service serve。 |
mysql |
业务数据库。 | 移出默认 | 用 golden SQLite DB 替代;reset = 复制 golden DB。 |
model-registry |
小模型注册、HTTP invoke、日志、MCP facade、docker runtime、artifacts。 | 移出默认 | 轻模型进入本地 Python 包;3D artifacts/quick-blast 进入 COA;重建模能力保留 optional profile。 |
mr-seed |
启动时为 model-registry 生成/播种 3D demo 场景。 | 删除默认 | 预烘焙 artifacts 随镜像或 solution 分发。 |
blade-hub |
技能/资源注册中心、Gitea/BM25 相关。 | 移出默认 | 使用 BA 新版临时 solution / 本地 solution 上传能力。 |
gis-server |
GIS console、瓦片、overlay、PostGIS/Redis all-in-one。 | 合并/可选 | 演示所需瓦片和 overlay API 收进 COA;完整 GIS console 作为高级 profile。 |
mss-studio |
NATO/GJB/俄标军标 SVG 渲染及 Studio。 | 合并/可选 | 有限 SIDC 集合预渲染为 SVG/PNG sprite,由 COA 静态托管。 |
stand-trans-viewer |
独立 7320 Three.js 建筑/爆炸工具页。 | 默认不启 | COA 内嵌 BuildingViewer 承担演示;独立 viewer 仅作调试/高级工具。 |
guacamole |
AFSIM/远程桌面 iframe 投屏。 | 默认不启 | 默认演示使用 seeded/mock 推演结果;真实 AFSIM 投屏作为外部集成 profile。 |
四、目标调用链
Agent 路径
前端按钮路径
五、数据与资产策略
SQLite
- 构建时生成或拷贝
coa_demo.sqlite。 - 启动时复制到 runtime path,如
/app/data/coa.sqlite。 - reset 时覆盖 runtime DB,不执行 MySQL-only SQL。
- 用完即扔,部署和演示一致。
3D / 地图 / 军标 assets
- GLB、voxelclass、litematic 作为 artifacts 分发。
- 瓦片 bundle 作为静态资源分发。
- 军标按 demo SIDC 集合预渲染。
- COA backend 统一提供 URL,前端不再直连
:8050、:7800、:8090。
六、实施分解
-
BA demo 启动确认。
验证新版 BA 能用临时/local solution 加载
blade_coa,并能创建 session、列 BizRoles、启动 ChatView。 -
SQLite golden DB。
生成可演示的
coa_demo.sqlite,改启动路径绕开 MySQL autoupgrade;reset 改为复制 golden DB。 -
轻模型本地包。
从
model-registry/bundled_models抽出coa_models,提供 Python API 和 MCP stdio server。 -
前端按钮兼容。
后端 import
coa_models支撑非 Agent 场景;业务写路径不变。 -
3D artifacts 与 quick-blast 迁入 COA。
静态 artifact 路由和 quick-blast API 进入
coa-service;前端改为相对 URL。 - GIS/军标内聚。 将演示所需瓦片、军标 sprite、overlay 数据服务收进 COA,隐藏外部 GIS console 依赖。
- compose/profile 整理。 默认只启 BA + COA;model-registry、gis-server、mss-studio、guacamole、stand-trans-viewer 进入 optional profiles。
七、演示质量验收清单
| 验收项 | 通过标准 |
|---|---|
| BA 会话 | 前端能看到 blade_coa BizRoles;能创建会话;ChatView 能发送消息并触发 skill。 |
| 核心业务流 | Agent 路径和前端按钮路径都能推进 COA 主流程,SQLite 写入和事件刷新正常。 |
| 轻模型 | MCP stdio 可直接返回 route / force-assign / weaponeer / ew-plan 结果;前端按钮结果一致。 |
| 3D 建筑 | GLB、voxelclass、litematic 正常加载;结构着色、剖切、毁伤可视化不降级。 |
| quick-blast | 交互投弹亚秒级或可接受延迟返回;连投、累积毁伤、坍塌动画正常。 |
| 地图与军标 | 地图底图、目标、航线、态势 overlay、军标视觉效果与现有演示等价。 |
| reset | 一键恢复初始 demo 数据;不会依赖 MySQL、不会执行 MySQL-only SQL。 |
| 部署规模 | 部署态默认只需要 BA 容器 + COA 容器;其余服务均非默认依赖。 |
八、Skill 复杂度评估
结论:当前 solutions/blade_coa/skills 明显偏复杂。复杂点不是 COA 业务本身,
而是 SKILL.md 同时承担了任务入口、操作手册、架构历史、服务依赖说明、
Doctrine 资料、GIS 模板、禁止事项和待办记录,容易降低 Agent 选 skill 与执行 skill 的稳定性。
现场代码观察
| 观察项 | 结论 | 影响 |
|---|---|---|
| Skill 规模 | 38 个 SKILL.md,合计约 8794 行;最长的超过 500 行。 |
Agent 每次加载上下文过重,任务选择和执行更容易漂移。 |
| 重复 shared 内容 |
forbid_direct_db_access.md 约 19 份,
gis_interaction_template.md 约 9 份,
preflight_block.md 约 12 份。
|
大量 token 用在重复约束上,而不是当前任务逻辑。 |
| Role 可见范围 |
enter_planning_session、resume_oplan、
view_planning_overview 等基础 skill 挂到多个角色;
AOC 能看到大量 leaf skills。
|
用户和 Agent 都会面临选择负担,容易选到过细或过旧的入口。 |
| 过期服务引用 |
仍有 skill 指向 model-registry:8050、旧 GIS 交互、pending CLI 能力、
已删除或待清理命令。
|
与“BA + COA 最小部署、本地 MCP stdio 模型包”的目标冲突。 |
保留什么,砍掉什么
- 保留:COA/JIPTL/CDE/ATO/BDA 的领域流程、安全约束、关键验收标准。 这些是演示质量的一部分,不应为了精简而删除。
- 上移:禁止直接写 DB、必须走 CLI/MCP、通用输出格式、错误码、GIS 操作原则, 应进入 role prompt 或统一 common reference,不再复制进每个 skill。
-
下沉:模型调用、数据库写入、状态推进、artifact 生成,尽量沉到
fires-cli或 MCP stdio 工具里,由工具保证一致性。 - 删除:历史日期决策、已废弃命令、pending/stub 说明、旧服务地址、 与当前最小部署目标冲突的架构说明。
建议的目标 skill 集
| 目标 skill | 职责 |
|---|---|
enter_or_resume_planning |
合并进入会话、恢复 OPLAN、查看 planning overview。 |
auto_plan_full |
一键跑通主流程;只描述输入、工具调用、轮询状态和验收输出。 |
target_workflow |
覆盖目标 vet、JIPTL priority、weaponeering、CDE 等目标链路。 |
force_and_mission |
覆盖 force assignment、route、mission planning。 |
ew_planning |
保留 EW 独立流程,但调用本地 MCP/模型包而不是 model-registry 服务。 |
publish_and_assess |
覆盖 ATO 发布、BDA、JTF assessment、FRAGORD 等后段动作。 |
wing_brief_workflow |
服务 F0-F7/wing brief 演示链路。 |
simulation_replay |
加载 3D/GIS/quick-blast artifacts,做演示回放与结果解释。 |
推荐标准:普通 skill 控制在 60-120 行;编排型 skill 控制在 150 行以内。
每个 skill 只保留“何时使用、必要输入、调用哪个工具、如何校验、何时停止”。
领域长文档与 doctrine 资料按需引用,不默认灌入 Agent 上下文。
九、仍需验证的风险点
- BA 单体 demo 能力: 需要实测新版 BA 是否能完全脱离 blade-hub/oauth/license/ASR/BladeOS,直接加载临时/local solution。
- SQLite 完整演示数据: 当前测试能用 SQLite create_all,但生产 seed/reset 仍有 MySQL-only 路径;golden DB 是更稳的路线。
-
MCP stdio 注入 sandbox:
需要确定 BA solution 如何把
coa_models和 MCP server 注入到 agent 可调用环境。 - 军标预渲染覆盖率: 需要列出演示中实际出现的 SIDC 集合,确保 sprite 覆盖完整,避免现场缺图标。
-
3D assets URL 迁移:
当前前端有直连
:8050的路径,迁到相对 URL 后需要逐屏验证。
十、推荐最终形态
开发态:blade-agent + coa-frontend + coa-backend
部署态:blade-agent + coa
其中 coa 包含 SPA、API、SQLite、静态演示资产、本地轻模型、MCP-compatible 模型包、
quick-blast、地图/军标资源。其他服务全部降级为 optional profile。