TasteForge Video
对于完整的独立创意管道,请使用 taste-distillation 接着 taste-application。这些 ECC 技能直接附带其 Python 脚本:测量参考、生成或传递现有拍摄、调色、剪辑、合成、验证,并移交给 Blender 和 Resolve。该流程不需要独立的视频仓库。本技能文档记录了 ECC 打包的离线引擎及其严格的证据契约。
TasteForge 将“让这个作品感觉像这个参考”转化为一个可重复、可审计的工作流:访谈品味、将其提炼为结构化的风格包、验证包、将包测量的节奏和外观应用于本地媒体,并导出可编辑的时间线。规范实现在 ECC 内 skills/taste-application/scripts/tasteforge/ 下的 tasteforge 包中。Ito-Markets/ito-video 是一个使用打包的 ECC 引擎的示例项目。
使用场景
- 用户在制作任何素材前要求 为视频品味进行访谈(“问我关于外观的问题”、“采访我的审美方向”)。
- 用户想要 将审美提炼为结构化约束——一个可复用的风格包,而不是模糊的感觉(“将这些参考变成一个包”)。
- 用户想要 验证一个风格包(元数据是否完整、模式有效、节奏是否测量、规格是否提炼?)。
- 用户想要 将风格包应用于本地素材——根据包在本地剪辑上测量的节奏计划剪辑,确定性地进行。
- 用户想要 导出 EDL/FCPXML——一个可编辑的、帧精确的交接文件,供 DaVinci Resolve / Premiere / Final Cut 使用。
- 用户请求 生成媒体的来源审计——这个包、规格或剪辑来自哪里;哪些是本地测量的,哪些是由提供者生成的,哪些是 dry-run。
- 用户要求 从本地参考文件中发现或规划文件驱动的多模态图像、视频或 3D 资产输出,包括单独的清单、基于主体锚点的计算机视觉效果或 Resolve 效果配方。
- 用户提到 TasteForge、style packs、flashethereal、taste distillation、cadence/rhythm planning、multimodal discovery、distill/apply workflows 或用于视频的品味访谈。
本地确定性操作 vs 提供者生成
这个边界是该兼容性技能的核心。其操作是本地的、确定性的且离线的:
| 操作 | 确定性的? | ECC 可以运行? |
|---|---|---|
| 品味访谈 → 配置文件 | 是(离线) | 是 |
| 包检查/验证(针对模式) | 是 | 是 |
| 提炼配置文件(+ 测量的基准)→ 规格 | 是(dry-run 语义) | 是 |
| 将包节奏应用于本地媒体 → 报告 + 时间线 | 是 | 是 |
| 导出 EDL (CMX3600) / FCPXML 1.9 | 是 | 是 |
| 来源/谱系报告 | 是 | 是 |
| 静态图像的视觉模型蒸馏 | 提供者生成 | 不 |
| 参考转视频、图像转 3D、托管合成 | 提供者生成 | 不 |
在 ECC 中,提供者生成必须失败关闭。 任何实时的 Fal(或其他提供者)调用——生成镜头、铸造道具网格、托管 VLM 蒸馏——都需要在单独的通道中明确单独授权执行,并附带其自己的审查。在此兼容性通道中,ECC 从不调用 Fal,从不读取任何 API 密钥或其他凭据(包括 FAL_KEY),不上传任何媒体,也不改变任何提供者账户状态。当请求需要提供者生成时,精确说明该边界,运行本地部分(访谈、包验证、规划、导出),然后停止。
切勿声称 Fal 工作流已保存。 对 Fal 端点、模型 ID 或 dry-run URL(它们出现在包元数据中)的本地引用仅为引用:它绝不意味着提供方侧的工作流已被保存、持久化或获得运行授权。离线产生的任何内容都带有 dry-run/dry_run 语义——说“dry-run 规格”或“确定性计划”,切勿说“由模型生成”。
规范实现
- 仓库:
affaan-m/ECC;Python 发行版ecc-tasteforge,包目录skills/taste-application/scripts/tasteforge/。从解压的 ECC 包中安装:python3 -m pip install ./skills/taste-application/scripts。示例项目Ito-Markets/ito-video固定了特定的 ECC 提交。 - CLI:
python3 -m tasteforge <command>—provenance,inspect,validate,interview,distill,apply,export,multimodal。--live标志以退出码 2 退出并拒绝。 - 模式是契约:品味配置文件、包清单、调色、节奏、规格、时间线事件、应用报告(
provider被枚举锁定为"none";dry_run为true)。 - 恢复来源的谱系和故意排除项位于仓库的
skills/taste-application/SOURCE.md中。运行python3 -m tasteforge provenance获取机器可读版本。
使用已安装的 ECC 引擎执行本地确定性命令并解析其 JSON。如果缺少,请安装打包的引擎;不要内联重构其逻辑。taste.resolve 是 tasteforge.resolve 的兼容性导入,因此创意脚本和示例项目共享一个经过验证的 Resolve 适配器。
python3 -m tasteforge CLI 使用已安装的 ecc-tasteforge 发行版。独立的 taste-distillation 和 taste-application 脚本作为 ECC 的可选媒体生成模块的一部分附带,并具有自己的 Python 依赖项。两条路径都不需要发布用户的仓库或媒体。
在恢复已保存的检出之前,记录其提交并检查本地分支和工作树,以便稍后实施修复。运行规范包的测试和 python3 -m tasteforge apply --help;ECC 的文本和夹具测试并不能证明所选的 Python 检出实现了此契约。
链接创意技能
| 阶段 | 所有者 | 可审查的结果 |
|---|---|---|
| 创意方向 | taste | 命名的流派、参考观察、选择的外观和避免列表 |
| 提炼和规划 | tasteforge-video | 测量的证据、单独的流派规格、dry-run 清单和节奏计划 |
| 编辑和效果 | video-editing,配合选定的渲染器(如 Remotion、Manim 或 Fusion) | 应用的素材、实际轨道、可编辑的效果和时间线 |
| 可选的生成资产或语音 | fal-ai-media 或选定的音频工作流(在自身授权下) | 提供者收据和检查的输出 |
| 交付 | 编辑工作流,然后根据请求使用 content-engine | 审查的精确导出和分发副本 |
仅使用项目所需的阶段。taste 技能的历史 angelcore/cloud-trance 调色板和节拍语法是可选的创意示例;它们不得覆盖当前的简报或合并不同的编号流派。对于其方向,使用每个流派的实际参考,包括 3D Cyber Glitch 和 Fluid Sketch。TasteForge 不会替换这些技能,也不要求每个渲染器。在流派签名中,明确说明 3D 材质、几何体、线框行为、运动和构图。3D 请求清单是资产的计划;它不是网格。主题锚点描述符命名了跟踪需求;它不是主题已被检测或跟踪的证据。在声称 CV 效果已可靠应用之前,检查实际轨道、轨道丢失行为和渲染的帧。
工作流
- 访谈 (
interview):收集关于外观轴线的答案——调色板、颗粒、光照、焦距、相机运动、主体构图、调色、情绪形容词、避免列表——以及内容简报。保持外观和内容分离;合并它们是经典的失败。 - 提炼 (
distill):离线将配置文件映射到规格模式,当提供包时嵌入包的测量基准(黑/白点、对比度、每区域色度、调色板、剪辑节奏)。结果是 dry-run 规格:确定性的,提供者为"none"。 - 验证 (
validate/inspect):根据其模式检查包;报告错误与警告(在仅元数据的包中缺少静态图像是警告,而非错误)。 - 应用 (
apply):根据包的测量节奏(有种子、确定性的)在用户的本地剪辑上规划镜头持续时间;生成应用报告和帧精确的时间线事件。 - 导出 (
export):写入 CMX3600 EDL + FCPXML 1.9,具有有理数、NTSC 安全的时间,用于导入真实的 NLE。 - 审计 (
provenance):报告谱系——恢复来源的摘要、生成历史、夹具来源、作为仅指针记录的提供者引用。
应用真实素材而不重复来源
当简报要求不重复剪辑时,使用支持 apply --no-repeat --fps 的规范检出,并显式设置输出帧率。如果这些标志缺失,报告实现差距,而不是静默使用传统轮询选择。严格模式下,每个规范化的源路径在清单顺序中最多使用一次,并拒绝不足或太短的来源。准备足够的经过审查的精选素材以填充节奏计划。这是来源级别的唯一性,不支持来自同一录制的不同入/出范围。
应用报告是剪辑计划。它不执行视觉镜头排名、调色素材、应用 LUT、渲染叠加或导入 Resolve 项目。保持包的测量参考节奏与输出帧率分离。
export CLI 期望 {"clips": [...]}。在导出前将应用的 timeline_events 包装在 clips 下,并传递与应用相同的 --fps;export 的默认帧率不得重新调整计划。在将时间线移交给编辑工作流之前,检查发出的事件计数、总帧数、唯一来源和媒体链接。
当该工作流在 NLE 中应用重叠效果时,分配兼容的轨道并读取回每个请求的开始、结束和持续时间。仅凭返回的项目或成功的 append 调用并不能证明每个计划的效果都已放置;在渲染之前,拒绝缺失、移位或截断的放置。
文件驱动的多模态契约
当本地参考必须驱动图像、视频和 3D 资产输出的 dry-run 生成计划同时保持流派分离时,使用此路径:
python3 -m tasteforge multimodal --config workflow.json --out-dir out/multimodal
配置命名编号的流派和本地证据文件。保持这些候选流派不同,而不是将它们混合成一个通用的审美:
- Flash Ethereal
- 3D Cyber Glitch
- Fluid Sketch
该命令使用 ffprobe/ffmpeg 测量本地参考,并为每个流派发出一个样式规格、单独的图像、视频和 3D 资产清单、来源信息以及 Resolve 效果配方。效果调度必须具有非周期性的种子。CV 效果需要一个真实的主体锚点,其确切的丢失跟踪策略是 disable_effect_until_track_recovers;continue_without_anchor 和所有其他策略都失败关闭。每个效果都带有放置约束,以保留面部和可读文本,并防止装饰性角落网格替换全帧 3D 作品。
返回的收据是包的边界。它通过相对路径、字节大小、SHA-256、流派、模态、provider_execution:false 以及精确的参考/时间来源信息绑定每个发出的证据工件。收据要求 provider_calls:0 作为精确整数(JSON 布尔值 false 无效),provider_execution:false 和 dry_run:true。每个流派规格也需要显式的 dry_run:true。Resolve 效果配方需要相同的精确整数 provider_calls:0、provider_execution:false 和 dry_run:true。每个模态清单和每个嵌套请求必须包含所有四个精确的失败关闭字段:整数 provider_calls:0、provider_execution:false、dry_run:true 和 submit:false;每个请求还需要 provider_call_mode:"disabled"。缺失字段是拒绝,而不是默认,并且在写入输出之前必须拒绝 dry_run:false。
在处理时间线、证据、探测和源持续时间数据时,将布尔值视为无效数字。每个这样的数值必须是一个有限的实数:拒绝 true、false、NaN、无穷大、负事件开始、非正持续时间、超出范围的证据时间以及结束于声明的有限正时间线之外的事件。整个文件的证据使用显式的全文件时间基础,并且从不发明时间戳。
收据引用是持续时间的权威。通过被引用的 SHA-256 键控每个经过验证的参考持续时间;同一摘要的重复出现必须在持续时间上一致,否则包无效。每个效果证据 source_duration 和每个主体锚点 source_duration 必须等于该摘要的验证收据持续时间,而不仅仅是包含其引用的时间。探测持续时间和所有探测测量必须描述用于字节计数和 SHA-256 的相同稳定字节。如果源在探测时发生变化或在仍可用时重新哈希不同,则失败关闭,而不是发出或接受收据。
始终在创建后运行包验证。缺失的图像、视频或 3D 资产清单必须失败关闭。泛化或重复的流派、周期性调度、无锚点的 CV 效果、缺失的放置约束、提供者执行标志、未绑定的输出文件、字节大小漂移或 SHA-256 篡改必须失败关闭。拒绝输出根目录、中间文件或工件是符号链接的情况,并拒绝特殊文件(包括 FIFO 和设备);输出必须是真实目录树下的常规文件。如果本地的 ffmpeg 或 ffprobe 不可用,CLI 必须返回其有限非零的本地媒体处理错误,而无需 Python 回溯。不要通过删除证据或削弱验证来修复失败的收据。
示例会话
# 安装 ECC 引擎后;以下路径是您的项目输入
python3 -m tasteforge validate stylepacks/flashethereal
python3 -m tasteforge interview --answers answers.json --genre flashethereal
…
[为翻译截断]