自动剪辑工具在行业内已有众多尝试,但大多数方案仍停留在“脚本+UI”的固有模式:用户点击按钮,系统按预设流程执行。这一次,我们彻底改变了设计思路——将控制权从界面表单移交给智能Agent。系统不再是简单的命令执行者,而是一个围绕用户目标持续沟通、自主做出决策的协作伙伴。
具体而言,用户上传视频并描述剪辑需求后,整个剪辑流程将被视为一个完整的任务来推进:当前目标是什么、视频是否已上传、候选片段生成到哪一步、哪些片段已被选中、导出是否已确认——所有这些状态信息都会整合到同一任务时间线中流转。
系统随后会自动执行一系列剪辑操作。用户只需点击某个选项即可导出对应片段。后续如果用户提出“导出第1个”“打开输出目录”或“停止任务”,Agent都能基于当前任务状态实现无缝响应。
架构概览
本次升级的核心目标,是从UI表单驱动的控制逻辑转向Agent驱动的循环机制。整个Agent的设计思路如下。
一、核心转变:从“点击按钮”到“推动任务”
传统模式的本质是“用户点击按钮→系统执行固定流程”。现在则完全不同:系统围绕一个任务持续对话、调用工具、读取实际产物,并在关键节点请求用户做出决策。Agent会根据当前任务状态、候选片段、产物信息以及用户的指令,自主判断下一步应该采取什么行动——是读取状态、生成候选、请求确认,还是导出片段。
二、模型负责决策,工具负责执行
现在的主入口是Agent页面。用户消息首先进入统一的Agent通道,由模型判断下一步操作。需要特别强调的是,模型不能直接操作文件或随意执行命令——它只能调用系统中已注册的工具,例如生成候选、读取状态、查看产物、请求导出确认、正式渲染、停止任务、打开输出目录。
这一点至关重要:Agent的“自主性”并非没有边界,而是在明确的边界内自主选择下一步行动。业务动作依然沿用原有的稳定剪辑流水线,Agent只负责理解上下文、选择合适工具,并将工具的执行结果带回对话中。
三、上下文压缩:只向模型传递有效信息
在视频剪辑任务中,字幕、日志、候选池都可能非常庞大。如果每轮对话都将完整内容传递给模型,不仅成本高昂,还容易干扰模型的判断。因此,这一版本采用了静态上下文压缩策略。
具体做法是:用户的原话、最近的对话记录、已选出的候选片段以及关键状态信息被优先保留;较新的长篇工具结果会进行截断处理——保留开头和结尾,中间插入省略标记;更早的工具结果则会被精简——将原始长内容替换为占位符,仅保留阶段信息、产物路径和回溯线索;超出最近窗口的历史记录则被整理成任务摘要。
这样一来,模型默认看到的是清晰的任务状态和关键证据。当需要了解更多细节时,再通过工具读取完整的字幕、日志或候选详情。
四、导出与停止必须经过确认
视频导出和任务停止都属于有副作用的操作——它们会占用系统资源、生成文件,或者中断当前流程。因此,Agent可以建议导出,也可以请求确认,但在用户没有明确确认之前,不能直接执行。停止任务也遵循同样的逻辑。
在这类内容生产工具中,一个比较稳妥的原则是:AI负责整理候选素材,人负责最终判断,系统负责稳定执行。具体的剪辑工作流如下所示。
源码对应关系
Part 1:任务时间线
对应文件:scripts/agent_core.py
这一层将一次剪辑任务变成了可追溯的时间线:用户说了什么、Agent调用了什么工具、工具返回了什么结果,都会按顺序记录到本地JSONL文件中。
Part 2:模型决策与工具执行
对应文件:scripts/agent_core.py
Agent每一轮都会读取任务上下文,让模型判断下一步操作。如果模型选择调用工具,就通过注册表执行;工具的执行结果再写回时间线,进入下一轮判断。
Part 3:受控工具集合
对应文件:scripts/ui_server.py
ToolRegistry是工具的白名单,模型只能调用这里注册过的工具。模型不能直接操作文件或执行命令,这是实现Agent可控性的关键所在。
Part 4:导出与停止确认
对应文件:scripts/ui_server.py
导出和停止都是有副作用的操作,因此模型可以提出建议,但不能绕过用户的确认环节。
Part 5:上下文压缩策略
对应文件:scripts/agent_core.py
当前采用的是可用的静态压缩方案;标准做法会进一步引入Token预算、结构化召回、自动回溯以及更强的程序层校验机制。
