Cut as Code 入口点
将此文件用作基于代码的视频剪辑工作的强制入口点。仅负责路由和项目状态恢复。被选中的叶子技能拥有编辑决策、审核门禁、脚本、渲染细节和自检的自主权。
1. 从项目状态开始
应用第一个匹配的行。不要评估后续的行。
| 状态 | 动作 |
|---|---|
| 用户指定了对现有项目的特定操作 | 仅检查该操作所需的状态,然后加载其所属技能。跳过常规导入。 |
显式的项目根目录包含 work/project.json | 读取 work/project.json、work/timeline.json,以及仅所选操作的计划/证据。从记录的状态恢复。如果所有者不唯一,仅问一个路由问题。 |
| 用户提供了源文件或 URL,没有项目,但有明确的可交付成果 | 加载 /video-understand 以初始化项目和共享证据,然后继续执行请求的操作。 |
| 无法识别项目/源或预期可交付成果 | 询问一个简洁的问题,以获取缺失的项目/源和所需结果。不要启动任何技能。 |
项目根目录必须是显式的;切勿将仓库根目录视为视频项目。将 work/project.json 视为唯一的共享清单。根据操作 status、revision、based_on、check 和渲染状态来确定进展,而不是根据目录是否存在。不要重新运行已验证的工作。如果某个依赖项缺失或过期,请先完成该依赖项,然后恢复请求的操作。
路由是只读的。在决定将任务发送到哪里时,切勿修复、重置、批准、删除或激活某个操作。
2. 按可交付成果路由
匹配请求的输出,而不是偶然提及的关键词。
| 请求的结果 | 所属技能或工作流 |
|---|---|
| 探查、转录、客观分析、语义理解或新项目初始化 | /video-understand |
| 收紧、缩短、移除薄弱部分或创建初剪/粗剪 | /video-cut 在 /video-understand 之后 |
| 校正颜色、创建/选择风格、或交付/应用 LUT | /video-color-grade;仅当用户明确不需要 Project Protocol 交付时才使用其独立路径 |
| 添加转录时间同步的可视化切出画面 | /video-add-b-roll 在 /video-understand 之后 |
| 添加来源素材的动态图形或语义动画叠加 | /video-add-graphic-motion 在 /video-understand 之后 |
| 添加标题、下三分之一、统计信息、引文、章节或行动号召 | /video-add-content-cards 在 /video-understand 之后 |
| 添加字幕、隐藏式字幕或卡拉 OK 字幕 | /video-add-captions 在 /video-understand 之后 |
| 在源时间比较原始像素与实际最终像素 | /video-edit-compare 在已验证的主交付成果存在之后 |
| 选择、审核和规划短视频分段 | /video-to-shorts 在 /video-understand 之后;在请求的内容卡片和字幕之前执行此操作 |
| 最终确定并提取已批准的横向或纵向短视频衍生内容 | 在已验证的主交付成果存在之后,继续 /video-to-shorts |
| 编译或渲染现有的 Project Protocol 交付成果 | 在每一个选定的活跃操作通过其自身门禁后,使用 /video-understand 中的 build_render_plan.py 和 render_project.py |
一个通用的请求,比如“编辑这个视频”,并不能唯一地选择 /video-cut。除非现有项目状态或周围请求中明确了所需输出,否则请提出一个路由问题。
3. 编排多操作请求
仅冻结用户请求的操作;切勿将路由表变成默认包。运行一次共享的初步理解步骤。按规范顺序执行选定的主要序列操作:
cut -> color-grade -> b-roll -> captions -> content-cards -> graphic-motion
对于包含短视频、内容卡片或字幕的请求,使用此分阶段流程:
/video-understand
-> /video-to-shorts 仅计划和候选审核
-> /video-add-captions
-> /video-add-content-cards
-> /video-add-graphic-motion
-> 编译并渲染一次共享的主交付成果
-> /video-to-shorts 最终确定并提取已批准的衍生内容
在短视频规划之前,完成任何请求的改变时间线的操作,例如 /video-cut;更改后的 work/timeline.json 会使候选批准失效。短视频规划写入共享计划/审核状态,且不得创建 final.mp4 或 final/shorts/ 下的任何内容。然后,字幕、内容卡片和动态图形按此相对顺序添加它们自己的共享计划和叠加贡献。当仅选择任意一对时,也适用相同的顺序:字幕优先,内容卡片其次,动态图形最后。在每个交接点之前重新读取 work/project.json。当叶子技能可能写入 work/project.json、work/timeline.json、操作计划或共享渲染工件时,不要并发运行它们。在所有选定的活跃操作验证通过后,构建并渲染一次主交付成果。针对该已验证的交付成果运行 /video-edit-compare 和仅 /video-to-shorts 的最终确定/提取阶段;短视频仍保持在 sequences.main.operations 之外。
对于 /video-add-content-cards 和 /video-add-graphic-motion,在完整的时间范围内,为每位主要或前景人物、演讲者、主持人、受访者或语义重要的人物保留可见面部和头部轮廓。偶然的、仅在背景中且非叙事或视觉焦点的人物可以豁免;对不确定的情况加以保护。如果某个叠加层触及受保护的面部或头部,请先重新定位,然后缩放或重新设计;当无法找到合规位置时,跳过该时间点。
当所属技能允许时,全部跳过或零时间点的结果也是有效的。不要为了保持操作活跃而编造填充工作。
4. 交接,然后离开
在行动之前,阅读所选技能的完整 SKILL.md 和每一个必需的子技能。对于单次操作,交接一次并离开此入口点。对于请求的多操作运行,一次进入一个所有者;在其自检之后,恢复项目状态并继续下一个冻结的操作,无需重新打开导入。
不要要求用户批准一条已经明确无误的路由。用户交互仅属于缺失输入、真正的路由歧义、凭据或所属技能所需的编辑/审核决策。切勿用代理决策代替必要的人类决策,除非用户明确委托。
示例
对于“继续这个已理解和剪辑的项目,添加字幕”,读取当前项目和剪辑版本,然后进入 /video-add-captions。不要重新转录、重新剪辑,也不要询问字幕是否是预期路线。未决的无关操作不会改变路由,尽管一个活跃的未验证操作可能会阻止最终的共享渲染,编译器必须报告此情况。
失败规则
- 无效的项目状态:报告确切的验证问题;切勿在此基础上重新初始化。
- 缺失叶子技能或前提条件:停止并指明它们;切勿从记忆中重建。
- 缺失源/项目路径:在单个路由问题中询问它。
- 请求的输出冲突:询问哪个可交付成果拥有当前运行。
- 现有用户更改或工件:保留它们,并使用记录的状态进行工作。