TasteForge 视频
对于完整的独立创意管线,请先使用 taste-distillation 再使用 taste-application。这些 ECC 技能会直接提供其 Python 脚本:测量参考、生成或传递现有素材、调色、剪辑、合成、验证,并移交给 Blender 和 Resolve。该流程不需要单独的视频仓库。此技能记录了 ECC 打包的离线引擎及其严格的证据契约。
TasteForge 将“让它像这个参考一样”转变为可重复、可检查的工作流:访谈品味,将其提炼为结构化的样式包,验证该包,将其测量的节奏和外观应用到本地媒体,并导出可编辑的时间线。规范实现是 ECC 中 skills/taste-application/scripts/tasteforge/ 下提供的 tasteforge 包。Ito-Markets/ito-video 是一个消费打包的 ECC 引擎的示例项目。
何时使用
- 用户要求在拍摄任何素材前进行视频品味访谈(“问我关于外观的意见”、“询问我审美方向”)。
- 用户希望将审美提炼为结构化的约束——一个可重用的样式包而非模糊感觉(“将这些参考变成一个包”)。
- 用户想要验证一个样式包(元数据是否完整、schema 是否有效、节奏是否已测量、规格是否已提炼?)。
- 用户想要将一个样式包应用到本地素材——根据该包对本地片段的测量节奏规划剪辑,确定性进行。
- 用户想要导出 EDL/FCPXML——一个可编辑、帧精确的交接文件,用于 DaVinci Resolve / Premiere / Final Cut。
- 用户请求进行生成媒体溯源审计——这个包、规格或剪辑来自哪里;哪些是由本地测量,哪些是由供应商生成;哪些是模拟运行。
- 用户要求发现或规划基于文件的、来自本地参考文件的多模态图像、视频或 3D 资产输出,包括单独的清单、基于主体的 CV 效果或 Resolve 效果配方。
- 用户提到 TasteForge、样式包、flashethereal、品味提炼、节奏/韵律规划、多模态发现、提炼/应用工作流,或视频品味访谈。
本地确定性操作 vs 供应商生成
这个边界是此兼容性技能的核心。其操作是本地、确定性和离线的:
| 操作 | 确定性? | ECC 可以运行 |
|---|---|---|
| 品味访谈 → 画像 | 是 (离线) | 是 |
| 包检查 / 针对 schema 验证 | 是 | 是 |
| 提炼画像 (+ 测量基础) → 规格 | 是 (模拟运行语义) | 是 |
| 应用包节奏到本地媒体 → 报告 + 时间线 | 是 | 是 |
| 导出 EDL (CMX3600) / FCPXML 1.9 | 是 | 是 |
| 溯源 / 沿袭报告 | 是 | 是 |
| 基于视觉模型的静帧提炼 | 供应商生成 | 否 |
| 参考到视频、图像到 3D、托管合成 | 供应商生成 | 否 |
在 ECC 中,供应商生成必须失败关闭。 任何实时 Fal(或其他供应商)调用——生成镜头、铸造道具网格、托管 VLM 提炼——都需要明确单独授权,在单独的通道中执行,并进行单独审查。在此兼容通道中,ECC 从不调用 Fal,从不读取任何 API 密钥或其他凭证(包括 FAL_KEY),不上传任何媒体,也不更改任何供应商账户状态。当请求需要供应商生成时,请精确说明此边界,运行本地部分(访谈、包验证、规划、导出),然后停止。
永远不要说 Fal 工作流已保存。 对 Fal 端点、模型 ID 或模拟运行 URL(它们出现在包元数据中)的本地引用仅仅是引用:这绝不意味着提供者端的工作流已保存、持久化或授权运行。离线生成的任何内容都带有 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 退出并拒绝。 - Schema 即为契约:品味画像、包清单、调色、节奏、规格、时间线事件、应用报告(
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 的 opt-in 媒体生成模块一起提供,并带有其各自的 Python 依赖。两种路径都不需要发布用户的仓库或媒体。
在恢复已保存的 checkout 之前,记录其提交并检查本地分支和工作树,以便后续进行实现修复。运行规范包的测试和 python3 -m tasteforge apply --help;ECC 的文本和 fixture 测试并不证明所选的 Python checkout 实现了此契约。
链式创意技能
| 阶段 | 所有者 | 可审查的结果 |
|---|---|---|
| 创意方向 | taste | 命名流派、参考观察、选定的外观和避免列表 |
| 提炼与规划 | tasteforge-video | 测量依据、单独的流派规格、模拟运行清单和节奏计划 |
| 编辑与特效 | 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):离线将画像映射到规格 schema,当提供了一个包时,嵌入该包的测量基础(黑/白点、对比度、每区域色度、调色板、剪辑节奏)。结果是模拟运行规格:确定性,供应商"none"。 - 验证 (
validate/inspect):根据其 schemas 检查包;报告错误与警告(在仅元数据的包中缺少静帧是一个警告,而不是错误)。 - 应用 (
apply):根据该包测量的节奏(有种子、确定性)规划用户本地片段的镜头时长;生成应用报告和帧精确的时间线事件。 - 导出 (
export):编写 CMX3600 EDL + FCPXML 1.9,使用有理数、NTSC 安全的时间,以便导入真实的 NLE。 - 审计 (
provenance):报告沿袭——恢复的源摘要、生成历史、fixture 源、仅作为指针记录的供应商引用。
应用无重复片段的真实素材
当简报要求不重复片段时,请使用支持 apply --no-repeat --fps 的规范 checkout,并明确设置输出帧率。如果这些标志缺失,请报告实现差距,而不是静默使用旧版轮询选择。严格模式在清单顺序中每个归一化源路径最多使用一次,并拒绝不足或太短的源。准备足够多的已审核精选片段以填充节奏计划。这是源级别唯一性,不支持来自同一录制的不同入/出点范围。
应用报告是一个剪辑计划。它不执行视觉镜头排序、调色素材、应用 LUT、渲染叠加层或导入 Resolve 项目。将包的测量参考节奏与输出帧率分开。
export CLI 期望 {"clips": [...]}。在导出前,将应用的 timeline_events 包装到 clips 下,并传递与应用相同的 --fps;export 的默认帧率不得重新调整计划。在将时间线移交给编辑工作流之前,检查发出的事件计数、总帧数、唯一源和媒体链接。
当该工作流在 NLE 中应用重叠效果时,分配兼容的轨道并读回每个请求的开始、结束和持续时间。单独返回一个项目或一个成功的 append 调用并不证明每个计划的效果都已放置;在渲染之前拒绝缺失、偏移或截断的放置。
文件驱动多模态契约
当本地参考必须驱动图像、视频和 3D 资产输出的模拟运行生成计划,同时保持流派分离时,请使用此路径:
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 traceback。不要通过删除证据或削弱验证来修复失败的收据。
示例会话
# 安装 ECC 引擎后;以下路径是你的项目输入
python3 -m tasteforge validate stylepacks/flashethereal
python3 -m tasteforge interview --answers answers.json --genre flashethereal
…