# FAM-Edge 配置文件 (Oracle 端) - 新架构 v2 # # 新架构(2026-08-21 重构): # 1. 不再切片/抽帧:整视频直传云端 VLM(Gemini 用 Files API,NVIDIA 用整视频 video_url) # 2. 视频来源:rclone 从 Google 硬盘实时同步到本地 local_dir,监听目录处理新视频 # 3. Oracle 自建 SQLite 库存储所有视频摘要/事件/人物,并对外提供同步接口供 NAS 拉取 # 4. 独立 person_service 汇总全量人物 -> LLM 合并为规范人物表 -> 回灌视频提示 # 5. NAS 仅作管理后台,每 30 分钟从甲骨文拉增量镜像到本地 MariaDB # Oracle 端 HTTP 服务 server: host: "0.0.0.0" port: 5000 max_concurrent_tasks: 1 # Google 硬盘同步(rclone 负责同步落地,本段仅描述监听行为) gdrive_sync: enabled: true local_dir: "/opt/fam-edge/gdrive_videos" # rclone 同步落地目录(video_processing 监听此目录) watch_interval_sec: 30 # 监听新视频的轮询间隔 camera_name: "客厅" # 摄像头名称(注入视频提示) # 文件名解析开始时间:监控文件名含时间戳时使用(如 2026-08-21_081500.mp4) parse_start_from_filename: true # Oracle 本地库(视频摘要/事件/人物) oracle_db: path: "/opt/fam-edge/data/oracle.db" # NAS 拉取同步接口鉴权 token(与 NAS oracle_sync.token 一致) sync_api: token: "${ORACLE_SYNC_TOKEN}" # 人物识别服务 person_service: enabled: true schedule_interval_sec: 1800 # 每 30 分钟重新汇总一次人物 model: "gemini" # 用哪个模型做人物合并(vision 模型也支持纯文本) # 视频处理 video_processing: max_concurrent: 1 # 消费者线程数(串行处理,避免云端并发超额) timeout: 900 # 兜底单视频分析超时 timeout_multiplier: 2 # 模型消费超时倍数:在 models[i].timeout 原值上 ×2(大视频上传+分析耗时) max_retries: 2 # 单视频失败最大重试次数(failed 且 retry_count 超限不再消费) # 降级顺序:先 gemini 整视频,失败再 nvidia 整视频;两者都失败 -> 标记 failed vision_order: ["gemini", "nvidia"] # 智能问答降级链(与视频分析独立):Gemini -> NVIDIA -> 本地 Ollama models: - provider: "gemini" role: "vision" enabled: true model_name: "gemini-flash-latest" # 主模型(每日免费配额 20 请求,按模型独立) fallback_models: - "gemini-flash-lite-latest" api_key: "${GEMINI_API_KEY}" timeout: 600 # 模型级独立超时(最终值,不参与编排层 ×2 放大) # gemini-flash-lite 实测 ~22-34s,按用户要求放宽至 8 分钟(480s),避免大视频/排队时过早切断 model_timeouts: "gemini-flash-lite-latest": 480 circuit_breaker: enabled: true threshold: 5 cooldown: 300 - provider: "nvidia" role: "vision" enabled: true # Nemotron Nano 12B v2 VL:NIM 官方支持整视频 video_url 输入(内部自行采样帧) model_name: "nvidia/nemotron-nano-12b-v2-vl" base_url: "https://integrate.api.nvidia.com/v1" api_key: "${NVIDIA_API_KEY}" timeout: 600 circuit_breaker: enabled: true threshold: 5 cooldown: 300 # 本地模型:纯文本 qwen2.5:7b,仅参与智能问答兜底 - provider: "ollama" role: "text" usage: "qa_fallback" enabled: true model_name: "qwen2.5:7b" base_url: "http://localhost:11434" timeout: 120 num_predict: 512 circuit_breaker: enabled: false