# 项目进度追踪 > 最后更新: 2026-08-20 00:35 ## 服务运行状态 | 服务 | 节点 | 地址 | 状态 | 验证结果 | |------|------|------|------|---------| | 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 已验证 | | MariaDB | NAS | 127.0.0.1:3306 | ✅ 运行中 | 10.11.11, 6 张表, utf8mb4 | | Ollama | Oracle | 127.0.0.1:11434 | ✅ 运行中 | llava-phi3, 通过 FAM-Edge 代理访问 | | 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 | ## 环境状态 ### Oracle Cloud (129.146.203.203) - FAM-Edge 节点 | 项目 | 状态 | 备注 | |------|------|------| | OS | Ubuntu 20.04 ARM64 | Ampere A1 2C12G | | Python | 3.8.10 | python3-venv 已安装 | | pip | 25.0.1 (venv内) | | | FFmpeg | 已安装 | apt 安装 | | Ollama | 0.32.14 | | | llava-phi3:latest | 2.9 GB 已拉取 | | | Python 依赖 | 全部安装成功 | flask, gunicorn, requests, PyYAML, opencv, numpy | | 模块导入验证 | PASS | FAM-Edge 全部 8 个模块导入正常 | | 代码部署 | /opt/fam-edge/ | rsync 同步 | | venv | /opt/fam-edge/venv/ | 已创建 | | Tailscale | 1.102.2 已安装 | **待用户认证** | ### Synology NAS (192.168.50.64) - FAM-Core + FAM-UI 节点 | 项目 | 状态 | 备注 | |------|------|------| | 型号 | DS220+ (Geminilake) | DSM 7 | | Python | 3.8.15 (系统) + 3.10.20 (venv) | FAM-Core/UI venv 使用 Python 3.10 | | pip3 | venv 内可用 | fam-core/venv + fam-ui/venv | | MariaDB | **10.11.11 已运行** | 端口 3306, root 密码 iLoveJava5! | | sentinel_home_ai 库 | **6 张表已创建** | DDL 执行成功 | | Docker | 24.0.2 (ContainerManager) | 路径 /var/packages/ContainerManager/target/usr/bin/docker | | Tailscale | **已运行** | IP: 100.70.234.39, hostname: ericwyuan-nas | | FAM-Core venv | ✅ 已创建 | Python 3.10.20, flask/PyMySQL/gunicorn/PyYAML/requests | | FAM-UI venv | ✅ 已创建 | Python 3.10.20, Streamlit 1.61.1 + pandas 2.3.3 | | Streamlit | ✅ 已安装 | 1.61.1, 运行于 0.0.0.0:8501 (headless) | ### 网络互通 (Tailscale) | 节点 | Tailscale IP | 状态 | |------|-------------|------| | NAS (ericwyuan-nas) | 100.70.234.39 | 已连接 | | Oracle (oracle-fam-edge) | 待认证 | **需用户访问认证 URL** | | 当前方案 | Oracle Tailscale 待认证,认证后可直连 | | ## 模型可行性基准测试 (Task 1.4) ### 测试环境 - Oracle Ampere A1 2C12G ARM64 - Ollama 0.32.14 + llava-phi3:latest (2.9 GB) - Python 3.8.10 + requests ### 测试结果 | 场景 | 加载时间 | Prompt 处理 | 生成时间 | Token 数 | 总耗时 | 是否达标(≤8s) | |------|---------|------------|---------|---------|--------|-------------| | 冷启动 (首次推理) | 54.56s | 37.40s | 17.22s | 86 | 109.21s | 否 (首次加载) | | 预热 (无限制) | 0.06s | 0.20s | 13.06s | 65 | 13.35s | 否 | | 预热 (num_predict=30) | 0.07s | 1.41s | 2.83s | 15 | **4.34s** | **PASS** | ### 结论 1. **冷启动延迟**: 首次推理需加载 2.9GB 模型到内存,耗时 ~55s。建议通过 systemd keep-alive 或定时心跳保持模型常驻 2. **预热性能**: 模型加载后,单图推理可控制在 4-5s(限制输出 30 token),满足 ≤8s 设计目标 3. **ARM CPU 瓶颈**: token 生成速度 ~0.1-0.2s/token,多帧分析(5-8帧)需合理设置 `num_predict`(默认 500) 4. **已优化**: OllamaAdapter 新增 `num_predict` 可配置参数,默认 500 ## 任务进度 ### 已完成 | # | 任务 | 提交 | 日期 | |---|------|------|------| | 1 | 项目骨架 + 全部 Python 模块代码 | `d741ade` 等 | 2026-08-19 | | 2 | DDL 数据库建表脚本 | `d741ade` | 2026-08-19 | | 3 | 部署脚本 + 文档 | `d741ade` | 2026-08-19 | | 4 | __init__.py 导出链路 | `c45464c` | 2026-08-19 | | 5 | Storage-Cleaner 补全 | `5e4587b` | 2026-08-19 | | 6 | 服务器凭证写入 README | `ba905d2` | 2026-08-19 | | 7 | requirements.txt 兼容 Python 3.8 | `c1bfac5` | 2026-08-19 | | 8 | Oracle 部署: venv + 依赖 + 导入验证 | `50d8353` | 2026-08-19 | | 9 | 模型基准测试 (llava-phi3 ≤8s PASS) | `50d8353` | 2026-08-19 | | 10 | OllamaAdapter 优化 (num_predict) | `50d8353` | 2026-08-19 | | 11 | Tailscale 安装 (Oracle + NAS) + 认证 | `e5ac667` | 2026-08-19 | | 12 | NAS MariaDB DDL 执行 (6 张表) | `e5ac667` | 2026-08-19 | | 13 | db_layer.py 切换 PyMySQL (45KB 替代 19MB) | ✅ 完成 | 2026-08-19 | | 14 | config_loader.py 路径修复 (3 级 dirname) | ✅ 完成 | 2026-08-19 | | 15 | NAS Python 依赖安装 (flask/gunicorn/pymysql/PyYAML) | ✅ 完成 | 2026-08-19 | | 16 | NAS 代码部署 + FAM-Core 导入验证 PASS | ✅ 完成 | 2026-08-19 | | 17 | NAS DB 连接验证 PASS (PyMySQL → MariaDB 10.11.11) | ✅ 完成 | 2026-08-19 | | 18 | config.yaml 实际配置 (FAM-Core + FAM-Edge + FAM-UI) | ✅ 完成 | 2026-08-19 | | 19 | NAS 启动 FAM-Core (gunicorn, Python 3.10 venv) | ✅ 完成 | 2026-08-19 | | 20 | Oracle 启动 FAM-Edge (gunicorn) | ✅ 完成 | 2026-08-19 | | 21 | MariaDB JSON 路径兼容修复 (name_member) | ✅ 完成 | 2026-08-20 | | 22 | FAM-Core API 全端点测试通过 | ✅ 完成 | 2026-08-20 | | 23 | FAM-Edge 聊天代理端点 (/api/edge/chat) | ✅ 完成 | 2026-08-20 | | 24 | FAM-UI PyMySQL 迁移 | ✅ 完成 | 2026-08-20 | | 25 | FAM-Core 配置切换至 Oracle 公网 IP | ✅ 完成 | 2026-08-20 | | 26 | 端到端聊天验证 (Core→Edge→Ollama) | ✅ 完成 | 2026-08-20 | | 27 | NAS 安装 Streamlit + pandas + 部署 FAM-UI | ✅ 完成 | 2026-08-20 | ### 待完成 | # | 任务 | 依赖 | 优先级 | |---|------|------|--------| | 28 | 视频端到端集成测试 | FAM-UI ✅ | 高 | | 29 | 单元测试 (JSON parser, circuit breaker, schema) | - | 中 | | 30 | Tailscale 防火墙修复 (NAS↔Oracle) | - | 低 | ## 技术决策记录 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 数控制延迟 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 ## FAM-Core API 测试结果 (2026-08-20) | 端点 | 方法 | 测试数据 | 结果 | |------|------|---------|------| | /health | GET | - | ✅ `{"service":"fam-core","status":"ok"}` | | /api/status | GET | - | ✅ `{"dispatcher_running":true,"scheduler_running":true}` | | /api/member/list | GET | - | ✅ 返回 2 名成员 (人物A未命名, 人物B=汤圆) | | /api/member/unnamed | GET | - | ✅ 返回 1 名未命名成员 (人物A) | | /api/member/name | POST | 人物A→张三 | ✅ 成功命名, 0 条事件记录回溯更新 | | /api/chat/ask | POST | "今天有什么事件?" | ✅ 端到端成功, 回答"今天没有观察到张三" | ## 端到端聊天链路验证 (2026-08-20) ``` 用户 → FAM-Core (NAS:8000) → FAM-Edge (Oracle:5000) → Ollama (Oracle:11434) /api/edge/chat 代理 /api/generate 本地 ``` - 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)