一个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。