一個40模組的編排平台,同時跑兩套截然不同的生產模式。熱門新聞走全自主路線——26+個agent,零人工步驟。而涉及私人情感的深度故事,系統整個反過來:一個AI採訪者,先找出一個家庭自己歷史裡缺了什麼,然後大聲問出那個恰好能補上空白的問題。
分享這篇案例 →難點在於:一個採訪agent要向一個家庭問出恰到好處的問題——問題必須紮根於他們真實照片時間線裡的空白,絕不能憑空編一段記憶——外加一個自研的LLM路由和從零搭建的MCP工具伺服器,撐起底下另外40個模組。
Postgres/pgvector state every assembly agent reads and writes — no fixed call sequence, no agent goes first
Python, TypeScript/Remotion, Docker, pgvector, MCP, FFmpeg, Manim, CUDA (RTX 3090)
熱門新聞走全自主路線:一群專用agent透過共享資料庫交接工作,而不是一串固定的函式呼叫,從原始訊號一路做到發布好的多語言影片,零人工步驟。但涉及私人情感的深度故事,前端完全是另一套。一個知識圖譜模組從家庭上傳的素材裡建構出一條真實的生活時間線,然後對它跑缺口分析——一個反覆出現卻始終沒被認出名字的人、兩個明明很親近卻從沒合過影的人、一件情緒基調說不清楚的事、一個家庭常去卻沒拍到正臉的地方。每一個缺口都會變成一個有針對性的問題,被投影進一張結構化的四幕式思維腦圖——結構由程式碼把控,模型只負責填詞。這張腦圖會變成一場即時的、分兩輪的採訪:agent會向家庭問出缺口分析找到的那個精確問題——「你最後一次和媽媽一起包餃子是什麼時候?」——一邊問一邊叫出那個人的真實照片,而且是用語音聽,不是打字。它透過一套固定的十個工具去改這張腦圖,從不自由重寫,節點ID由程式碼產生,不是模型憑空造出來的,還有三層冗餘記憶,保證家庭說過的話在採訪過程中絕不會遺失。只有當這個家庭確認了自己的故事,它才會交給和新聞共用的那條全自主生產流水線——腳本、配音、畫面、剪輯合成、發布。
全部26+個agent都透過一個閘道器爭搶兩種稀缺資源:GPU算力和LLM額度。它即時監控GPU顯存——本地模型閒置就零成本走本地,GPU忙就自動降級到雲端——每個agent的請求都帶著呼叫方識別碼,方便按agent單獨統計用量。Agent呼叫閘道器時用的是語意檔位名而不是具體模型名,所以改一個設定值就能把任意agent換成另一個模型。這也是本網站聊天助手自己在用的同一個閘道器。
剪輯合成本身就是一套巢狀的多智能體工作流:時間軸agent決定分段時長,素材比對agent找/剪素材,音訊合成agent混配音和背景音樂,轉場agent做鏡頭轉場決策,品質把關agent做最終檢查。轉場、品質把關、最終合成這幾個agent刻意做成零LLM、純規則的——確定性agent處理可量化的檢查,LLM agent處理需要判斷力的決策。每一步都靠進度檔案獨立可續跑,崩在第15步裡的第12步,就從第12步恢復,不用從頭再來。
有一個agent實作了華特·莫奇(Walter Murch)剪輯六原則的簡化版,計算其中可量化的部分——用8×8×8的HSV顏色直方圖給鏡頭間的視覺相似度打分,再自主選擇硬切、交叉淡化,還是黑畫面停頓。如果OpenCV不可用,它會降級成只做硬切並打一條警告日誌,而不是直接崩潰。流水線會變笨,但絕不會崩。
一個完全確定性的agent會檢查每條成片的黑畫面、靜音、鏡頭重複、解析度一致性、素材降級情況——但它從不因為不合格就攔截,只是回報,因為在一套全自動系統裡,每個品質問題都攔截會直接堵死整條生產線。有一個真實踩過的坑記在程式碼註解裡:blackdetect的閾值曾經設錯,讓正常的暗色調素材大量誤報,修復方式和原理直接寫在程式碼註解裡。
Python、TypeScript/Remotion、Docker、pgvector、MCP、本地+雲端LLM、FFmpeg、Manim、RTX 3090上的CUDA。