docs(README/PROGRESS): 文档收尾,与架构重构代码对齐
1. README 8.3 节:fam-core 配置示例更新(video_dir 生产路径 + chat_handler.qa_url),fam-edge 配置示例对齐新架构(role/usage=qa_fallback、gemini-flash-latest、实际 timeout) 2. README 1.3 节:历史视频积压标记已处理(forward-only);吞吐不足表述更新(无本地融合) 3. README 5.3 节:改名为云端结构化输出 JSON Schema,描述适配器解析 + format_cloud_result 校验两阶段 4. README 6.2 节:移除融合 timeout 行,num_predict 更新为 512,已知问题改述为专职问答兜底 5. README 10.5/10.6 节:Gemini 模型名修正为 gemini-flash-latest;NVIDIA 验证状态更新为已验证 6. README 12 节:架构重构与双端部署验证纳入已完成;v1.1 待办移除已完成项 1-5,保留单元测试/Tailscale/daily_summaries 7. PROGRESS.md:服务状态表更新(新架构、qwen2.5:7b);任务进度追加 32-38;技术决策记录追加云端直出直存与 Q&A 降级;聊天链路验证段更新为 run_qa 编排
This commit is contained in:
44
PROGRESS.md
44
PROGRESS.md
@@ -1,15 +1,15 @@
|
||||
# 项目进度追踪
|
||||
|
||||
> 最后更新: 2026-08-20 02:10
|
||||
> 最后更新: 2026-08-20 10:45
|
||||
|
||||
## 服务运行状态
|
||||
|
||||
| 服务 | 节点 | 地址 | 状态 | 验证结果 |
|
||||
|------|------|------|------|---------|
|
||||
| FAM-Core | NAS | 0.0.0.0:8000 | ✅ 运行中 | health=ok, Python 3.10 venv, API 全部测试通过 |
|
||||
| FAM-Edge | Oracle | 0.0.0.0:5000 | ✅ 运行中 | health=ok, chat proxy 已验证 |
|
||||
| FAM-Edge | Oracle | 0.0.0.0:5000 | ✅ 运行中 | 新架构已部署(云端直出直存);`/api/edge/chat/ask` 实测 provider=nvidia(Gemini→NVIDIA 降级成功) |
|
||||
| MariaDB | NAS | 127.0.0.1:3306 | ✅ 运行中 | 10.11.11, 6 张表, utf8mb4 |
|
||||
| Ollama | Oracle | 127.0.0.1:11434 | ✅ 运行中 | llava-phi3, 通过 FAM-Edge 代理访问 |
|
||||
| Ollama | Oracle | 127.0.0.1:11434 | ✅ 运行中 | qwen2.5:7b,仅智能问答兜底(不参与视觉/融合) |
|
||||
| Tailscale | Oracle ↔ NAS | 100.74 ↔ 100.70 | ⚠️ 待修复 | Tailscale 运行但端口不通,当前用公网IP |
|
||||
| FAM-UI | NAS | 0.0.0.0:8501 | ✅ 运行中 | Streamlit 1.61.1, HTTP 200, health=ok |
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
| pip | 25.0.1 (venv内) | |
|
||||
| FFmpeg | 已安装 | apt 安装 |
|
||||
| Ollama | 0.32.14 | |
|
||||
| llava-phi3:latest | 2.9 GB 已拉取 | |
|
||||
| qwen2.5:7b | 已拉取 | 纯文本模型,仅问答兜底(原 llava-phi3 已废弃) |
|
||||
| Python 依赖 | 全部安装成功 | flask, gunicorn, requests, PyYAML, opencv, numpy |
|
||||
| 模块导入验证 | PASS | FAM-Edge 全部 8 个模块导入正常 |
|
||||
| 代码部署 | /opt/fam-edge/ | rsync 同步 |
|
||||
@@ -109,27 +109,36 @@
|
||||
| 29 | 关键帧提取改为自适应帧数 (随视频时长动态计算) | ✅ 完成 | 2026-08-20 |
|
||||
| 30 | FFmpeg 快速 seek 替代 fps 滤镜 (6-8x 提速) | `7ce8aff` | 2026-08-20 |
|
||||
| 31 | 真实视频性能基准测试 (30min 360MB 视频) | ✅ 完成 | 2026-08-20 |
|
||||
| 32 | 视频端到端集成测试 (task 289 → SUCCESS, 落库正确) | ✅ 完成 | 2026-08-20 |
|
||||
| 33 | 生产目录切换 forward-only (285 历史视频占位跳过) | ✅ 完成 | 2026-08-20 |
|
||||
| 34 | 今日 17 片段诊断(根因:Ollama 本地融合 300s 超时) | ✅ 完成 | 2026-08-20 |
|
||||
| 35 | **架构重构**:移除本地融合(run_text_fusion),云端 VLM 直出 JSON → format_cloud_result → 直存 DB | `babf5b0` | 2026-08-20 |
|
||||
| 36 | 适配器 chat() 方法 + run_qa 三模型降级(Gemini→NVIDIA→Ollama 兜底) | `babf5b0` | 2026-08-20 |
|
||||
| 37 | 端点 /api/edge/chat/ask + chat_handler 改走 Edge 编排(qa_url) | `babf5b0` | 2026-08-20 |
|
||||
| 38 | 双端部署验证:Oracle 7 文件 + 重启;NAS chat_handler + config 手术 + HUP;实测 /api/edge/chat/ask provider=nvidia、NAS→Edge 编排 43s 落库 | ✅ 完成 | 2026-08-20 |
|
||||
|
||||
### 待完成
|
||||
|
||||
| # | 任务 | 依赖 | 优先级 |
|
||||
|---|------|------|--------|
|
||||
| 32 | 视频端到端集成测试 | FAM-UI ✅ | 高 |
|
||||
| 33 | 单元测试 (JSON parser, circuit breaker, schema) | - | 中 |
|
||||
| 34 | Tailscale 防火墙修复 (NAS↔Oracle) | - | 低 |
|
||||
| 39 | 单元测试 (JSON parser, circuit breaker, schema) | - | 中 |
|
||||
| 40 | Tailscale 防火墙修复 (NAS↔Oracle) | - | 低 |
|
||||
| 41 | daily_summaries 每日摘要 | - | 低 |
|
||||
|
||||
## 技术决策记录
|
||||
|
||||
1. **移除 google-generativeai SDK 硬依赖** - 代码用 requests 直接调 REST API,兼容 Python 3.8
|
||||
2. **rsync 替代 git clone** - Oracle 无法直连 NAS Gitea (无 Tailscale),用 rsync 从本地同步
|
||||
3. **num_predict 参数** - ARM CPU 上 llava-phi3 生成速度较慢,限制输出 token 数控制延迟
|
||||
3. **num_predict 参数** - ARM CPU 上 qwen2.5:7b 生成速度较慢,限制输出 token 数控制延迟
|
||||
4. **PyMySQL 替代 mysql-connector-python** - 45KB 纯 Python 替代 19MB C 扩展,NAS 无需编译
|
||||
5. **MariaDB JSON 路径兼容** - MariaDB 10.11 不支持 MySQL 的 `$[*]` 通配符 JSON 路径和 `->` 操作符,name_member() 改用 Python 层解析 + 逐行 UPDATE
|
||||
6. **Python 3.10 venv** - NAS 系统 Python 3.8 过旧,用 Synology Python3.10 包创建 venv
|
||||
7. **FAM-Edge 聊天代理** - Ollama 端口 11434 未对外暴露,FAM-Edge 新增 /api/edge/chat 代理转发至本地 Ollama
|
||||
8. **Oracle 公网 IP 替代 Tailscale** - Tailscale 两节点在线但端口不通(防火墙),edge_url 和 ollama_url 改用 Oracle 公网 IP 129.146.203.203
|
||||
7. **FAM-Edge 聊天代理** - 历史:/api/edge/chat 直连 Ollama 代理;架构重构后被 `/api/edge/chat/ask` 三模型编排端点取代(旧端点保留兼容)
|
||||
8. **Oracle 公网 IP 替代 Tailscale** - Tailscale 两节点在线但端口不通(防火墙),edge_url 和 qa_url 改用 Oracle 公网 IP 129.146.203.203
|
||||
9. **Ollama 模型常驻内存** - systemd 加 `OLLAMA_KEEP_ALIVE=-1`,模型加载后永不卸载,消除 55s 冷启动延迟,常驻占用 4.3GB 内存(系统 12GB 够用)
|
||||
10. **关键帧自适应帧数** - 原固定 5-8 帧对长视频太稀疏(30分钟仅8帧=每3.75分钟1帧),改为随视频时长自适应:候选帧 `clamp(duration_min×2, 30, 120)`,关键帧上限 `clamp(duration/150s, 8, 30)`。30分钟→12帧,60分钟→24帧,封顶30帧
|
||||
11. **云端直出直存(架构重构)** - 本地 Ollama 完全移出视频链路:云端 VLM(Gemini 多图单请求 / NVIDIA 逐帧聚合)直接产出结构化 JSON,Edge 仅 `format_cloud_result` 格式化/校验(无模型调用)后直存 NAS DB。根因:CPU 版 Ollama 对无上限融合 prompt 预填充极慢导致 300s 超时
|
||||
12. **Q&A 三模型降级编排** - 智能问答由 Edge `run_qa` 编排:Gemini → NVIDIA → 本地 Ollama(仅两云端都失败才启用本地兜底);各适配器实现 `chat()` 纯文本接口
|
||||
11. **FFmpeg 快速 seek 替代 fps 滤镜** - 原方案 `ffmpeg -vf fps=1/interval` 需全解码视频,30min 360MB 视频在 ARM CPU 上需 180s+(超 120s 超时)。改为逐帧 `ffmpeg -ss <ts> -frames:v 1` 快速 seek,仅 33s(6-8x 提速)
|
||||
|
||||
## 真实视频性能基准测试 (2026-08-20)
|
||||
@@ -158,13 +167,16 @@ AI 分析瓶颈: 帧5耗时 229s (疑似 ARM CPU 热降频), 其余帧 50-65s
|
||||
| /api/member/name | POST | 人物A→张三 | ✅ 成功命名, 0 条事件记录回溯更新 |
|
||||
| /api/chat/ask | POST | "今天有什么事件?" | ✅ 端到端成功, 回答"今天没有观察到张三" |
|
||||
|
||||
## 端到端聊天链路验证 (2026-08-20)
|
||||
## 端到端聊天链路验证 (2026-08-20,新架构)
|
||||
|
||||
```
|
||||
用户 → FAM-Core (NAS:8000) → FAM-Edge (Oracle:5000) → Ollama (Oracle:11434)
|
||||
/api/edge/chat 代理 /api/generate 本地
|
||||
用户 → FAM-Core (NAS:8000) → FAM-Edge (Oracle:5000) → Gemini / NVIDIA NIM / 本地 Ollama (兜底)
|
||||
/api/edge/chat/ask run_qa 三模型降级编排
|
||||
```
|
||||
|
||||
- FAM-Core 调用 `ollama_url` 配置的 `http://129.146.203.203:5000/api/edge/chat`
|
||||
- FAM-Edge 代理转发至 `http://127.0.0.1:11434/api/generate`
|
||||
- 回答正常返回,chat_history 记录已保存 (chat_id=1)
|
||||
- FAM-Core Chat-Handler 调用 `qa_url` 配置的 `http://129.146.203.203:5000/api/edge/chat/ask`(不再直连 Ollama)
|
||||
- FAM-Edge `run_qa` 按 Gemini → NVIDIA → 本地 Ollama 顺序调用 `chat()`,首个成功即返回 `{answer, provider}`
|
||||
- **验证结果**:
|
||||
- Edge 单测:`/api/edge/chat/ask` → 200,`provider=nvidia`(Gemini 30s 超时后 NVIDIA 兜底成功,耗时 51s)
|
||||
- NAS E2E:插入临时事件上下文后 `/api/chat/ask` → 43s 返回模型回答,`context_summary` 命中 1 条事件,chat_id 落库;测试数据已清理
|
||||
- 无上下文时走短路分支(直接返回提示,不调 Edge),响应 <1s,属正常设计
|
||||
|
||||
Reference in New Issue
Block a user