本文档供云真项目内部团队使用,用于在模拟环境中完整执行数据采集、模型微调与 EFB 插件测试。所有敏感信息已脱敏,请根据实际环境替换占位符。
git clone https://gitee.com/your-org/cloudtruth-seeker.git
cd cloudtruth-seeker
pip install -r requirements.txt
如未提供 requirements.txt,手动安装:simconnect, pandas, chromadb, openai, pytest, flake8。
编辑 data_collection/spad_collector.py 中的变量:
SPAD_HOST = "127.0.0.1" # 如果 SPAD.neXt 在另一台机器,改为其 IP
SPAD_PORT = 18082 # 默认端口
SAMPLE_INTERVAL = 0.1 # 10 Hz
python data_collection/spad_collector.py按 Ctrl+C 停止。数据保存在 training_data/raw/时间戳/flight_data.csv。
python data_collection/auto_fault_session.py --fault ENG1_OIL_LEAK --duration 90
支持的故障列表见 auto_fault_session.py 中的 FAULT_MAP。
python scripts/scenario_generator.py --input training_data/raw/ --output training_data/scenarios/
输出:scenarios_index.json(情境元数据) + 独立 CSV 片段。
将手工编写的故障知识卡片(JSON 格式)放入 knowledge/knowledge_cards/(模板见 docs/knowledge_card_template.json)。
python knowledge/knowledge_base_builder.py
生成 Chroma 向量数据库于 knowledge/chroma_db/。
python tests/test_kb_retrieval.py --query "滑油压力下降"
应返回相关故障卡片内容。
将情境与专家标注回复合并,形成 ideal_samples.jsonl(格式见 docs/data_format.md)。
python scripts/convert_to_alpaca.py --input ideal_samples.jsonl --output train_alpaca.jsonl
python scripts/finetune_qwen.py \
--model_path /path/to/Qwen2-7B-Instruct \
--data_path training_data/samples/train_alpaca.jsonl \
--output_dir ./output/lora_cloudtruth \
--num_epochs 3
python scripts/merge_lora.py --base_model /path/to/Qwen2-7B-Instruct --lora_model ./output/lora_cloudtruth --output ./models/cloudtruth-merged
cd deployment
pip install -r requirements-api.txt
python api_server.py --model ./models/cloudtruth-merged --port 8000
docker build -t cloudtruth-api:latest .
docker run -d --gpus all -p 8000:8000 --name cloudtruth-api cloudtruth-api:latest
curl -X POST http://localhost:8000/advise -H "Content-Type: application/json" -d '{"instruction":"发动机滑油压力低"}'
cd efb
npm install
npm run build
产物位于 efb/dist。
npm run preview -- --port 5173
浏览器访问 http://localhost:5173,输入 API 地址即可对话。
将 efb/dist 文件夹复制到 MSFS 的 Community 模组目录,或使用注入工具。
在 MSFS 中激活故障(如 Fenix 故障面板),观察 EFB 是否自动弹出建议。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| SPAD.neXt 连接失败 | 远程控制未启用或端口被防火墙阻止 | 检查 SPAD.neXt 设置;关闭 Windows Defender 防火墙或添加入站规则 |
| SimConnect 变量读取为 None | L:Var Bridge 未安装 | 重装 Bridge(SPAD.neXt → Settings → Simulator → Install Bridge) |
| 故障注入无效果 | 变量名错误或机模未完全初始化 | 在 SPAD.neXt Data Monitor 中手动设置该变量为 1 验证 |
| API 服务模型加载 OOM | 显存不足 | 使用 4-bit 量化(修改 api_server.py 加载参数) |
| EFB 无法连接 API | CORS 或网络问题 | 确保 API 服务地址正确,且前端未使用 HTTPS 而 API 为 HTTP(开发环境) |
📬 内部问题反馈:使用 Gitee Issues 标签 [测试]。
📝 技术文档更新:向 docs/ 目录提交 PR。
✈️ 本说明自签署之日起生效,版本 0.26.428 Beta (内模测试专用)。