tasteforge-video

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

TasteForge Video

TasteForge Video

TasteForge turns "make it feel like this reference" into a repeatable, inspectable workflow: interview taste, distill it into a structured style pack, validate the pack, apply its measured cadence and look to local media, and export an editable timeline. The canonical implementation is the
tasteforge
package in the Itô video repository; ECC orchestrates and explains it and does not vendor or duplicate its code.
TasteForge 将“让它有这个参考样片的感觉”转化为可重复、可检查的工作流:开展风格偏好访谈,将其提炼为结构化的风格包,验证该风格包,将其标准化的节奏和视觉风格应用于本地媒体,并导出可编辑的时间线。标准实现为Itô视频仓库中的
tasteforge
包;ECC负责编排和解释该工具,不会引入或复制其代码。

When to Use

适用场景

  • The user asks to interview for video taste before any footage is made ("ask me about the look", "interview me about aesthetic direction").
  • The user wants to distill an aesthetic into structured constraints — a reusable style pack rather than vibes ("turn these references into a pack").
  • The user wants to validate a style pack (is the metadata complete, schema-valid, cadence measured, spec distilled?).
  • The user wants to apply a style pack to local footage — plan a cut from the pack's measured cadence over local clips, deterministically.
  • The user wants to export EDL/FCPXML — an editable, frame-exact handoff to DaVinci Resolve / Premiere / Final Cut.
  • The user asks for a generated-media provenance audit — where did this pack, spec, or cut come from; what was measured locally versus generated by a provider; what was dry-run.
  • The user asks to discover or plan file-driven multimodal image, video, or 3D-asset outputs from local reference files, including separate manifests, subject-anchored CV effects, or Resolve effect recipes.
  • The user mentions TasteForge, style packs, flashethereal, taste distillation, cadence/rhythm planning, multimodal discovery, distill/apply workflows, or a taste interview for video.
  • 用户要求在拍摄任何素材前开展视频风格偏好访谈(比如“问问我想要的视觉风格”、“访谈我对美学方向的需求”)。
  • 用户希望将美学风格提炼为结构化约束——即可复用的风格包,而非模糊的感觉(比如“把这些参考样片转化为风格包”)。
  • 用户希望验证风格包(元数据是否完整、是否符合模式规范、节奏是否标准化、规格是否提炼到位?)。
  • 用户希望将风格包应用于本地素材——根据风格包的标准化节奏,确定性地规划本地剪辑的剪辑方案。
  • 用户希望导出EDL/FCPXML——生成可编辑、帧级精准的交付文件,用于导入DaVinci Resolve / Premiere / Final Cut等软件。
  • 用户要求生成媒体的来源审计——这个风格包、规格或剪辑方案来自哪里;哪些内容是本地测量的,哪些是由供应商生成的;哪些是试运行的。
  • 用户要求基于本地参考文件发现或规划多模态图像、视频或3D资产输出,包括单独的清单、基于主体的CV特效,或Resolve特效配方。
  • 用户提到TasteForge、风格包、flashethereal、风格提炼、节奏规划、多模态发现、提炼/应用工作流,或视频风格偏好访谈。

Local Deterministic Operations vs Provider Generation

本地确定性操作 vs 供应商生成内容

This boundary is the core of the skill. Everything ECC can actually run is local, deterministic, and offline:
OperationDeterministic?ECC may run
Taste interview → profileyes (offline)yes
Pack inspect / validate against schemasyesyes
Distill profile (+ measured grounding) → specyes (dry-run semantics)yes
Apply pack cadence to local media → report + timelineyesyes
Export EDL (CMX3600) / FCPXML 1.9yesyes
Provenance / lineage reportyesyes
Vision-model distillation of stillsprovider generationno
Reference-to-video, image-to-3D, hosted composeprovider generationno
Provider generation must fail closed in ECC. Any live Fal (or other provider) call — generating shots, minting prop meshes, hosted VLM distillation — requires explicit separately authorized execution under a separate lane with its own review. ECC never calls Fal, never reads any API key or other credentials (
FAL_KEY
included), uploads no media, and mutates no provider account state. When a request needs provider generation, state exactly that boundary, run the local half (interview, pack validation, planning, export), and stop.
Never claim a Fal workflow is saved. A local reference to a Fal endpoint, model id, or dry-run URL (they appear inside pack metadata) is reference-only: it never means a provider-side workflow was saved, persisted, or is authorized to run. Anything produced offline carries dry-run/dry_run semantics — say "dry-run spec" or "deterministic plan", never "generated by the model".
这一边界是该工具的核心。ECC实际能运行的所有操作都是本地、确定性且离线的
操作是否具有确定性?ECC是否可运行?
风格偏好访谈 → 配置文件是(离线)
风格包检查 / 模式规范验证
提炼配置文件(+标准化基础)→ 规格是(试运行语义)
将风格包节奏应用于本地媒体 → 报告 + 时间线
导出EDL(CMX3600)/ FCPXML 1.9
来源/谱系报告
静态图像的视觉模型提炼供应商生成内容
参考样片转视频、图像转3D、云端合成供应商生成内容
**在ECC中,供应商生成内容必须闭环失败。**任何实时Fal(或其他供应商)调用——生成镜头、制作道具网格、云端VLM提炼——都需要在单独的流程中获得明确的授权执行,并进行独立审核。ECC绝不会调用Fal,绝不会读取任何API密钥或其他凭证(包括
FAL_KEY
),不会上传任何媒体,也不会修改供应商账户状态。当请求需要供应商生成内容时,明确说明该边界,运行本地部分(访谈、风格包验证、规划、导出),然后停止。
绝不要声称已保存Fal工作流。对Fal端点、模型ID或试运行URL的本地引用(它们出现在风格包元数据中)仅为参考用途:绝不意味着供应商端的工作流已保存、持久化或获得运行授权。任何离线生成的内容都带有试运行(dry-run/dry_run)语义——应称其为“试运行规格”或“确定性规划”,绝不能称“由模型生成”。

Canonical Implementation

标准实现

  • Repository:
    Ito-Markets/ito-video
    — find it under the workspace's canonical local GitHub checkout root (never a hard-coded machine path); package directory
    tasteforge/
    .
  • CLI:
    python3 -m tasteforge <command>
    provenance
    ,
    inspect
    ,
    validate
    ,
    interview
    ,
    distill
    ,
    apply
    ,
    export
    ,
    multimodal
    .
    --live
    flags exit with code 2 and refuse.
  • Schemas are the contract: taste profile, pack manifest, grade, cadence, spec, timeline events, application reports (
    provider
    is enum-locked to
    "none"
    ;
    dry_run
    to
    true
    ).
  • Recovered-source lineage and deliberate exclusions live in the repo's
    PROVENANCE.md
    . Run
    python3 -m tasteforge provenance
    for the machine- readable version.
ECC's job is to route here, run the local deterministic commands, and interpret their JSON — not to reimplement cadence planning, LUT/grade statistics, or timeline emission. If the canonical package is absent, say so and stop; do not reconstruct its logic inline.
  • 仓库:
    Ito-Markets/ito-video
    ——可在工作区的标准本地GitHub检出根目录下找到(绝不能是硬编码的机器路径);包目录为
    tasteforge/
  • CLI命令:
    python3 -m tasteforge <command>
    ——支持
    provenance
    inspect
    validate
    interview
    distill
    apply
    export
    multimodal
    --live
    标志会以代码2退出并拒绝执行。
  • 模式规范为契约:风格配置文件、风格包清单、调色、节奏、规格、时间线事件、应用报告(
    provider
    被枚举锁定为
    "none"
    dry_run
    被锁定为
    true
    )。
  • 恢复的源代码谱系和刻意排除的内容位于仓库的
    PROVENANCE.md
    中。运行
    python3 -m tasteforge provenance
    可获取机器可读版本。
ECC的职责是路由到此处,运行本地确定性命令,并解释其JSON输出——而非重新实现节奏规划、LUT/调色统计或时间线生成逻辑。如果标准包缺失,需告知用户并停止操作;不得内联重构其逻辑。

Workflow

工作流

  1. Interview (
    interview
    ): collect answers for the look axes — palette, grain, lighting, focal length, camera motion, subject framing, grade, mood adjectives, avoid list — and separately the content brief. Keep look and content separate; merging them is the classic failure.
  2. Distill (
    distill
    ): map the profile onto the spec schema offline, embedding the pack's measured grounding (black/white point, contrast, per-zone chroma, palette, cut rhythm) when a pack is supplied. The result is a dry-run spec: deterministic, provider
    "none"
    .
  3. Validate (
    validate
    /
    inspect
    ): check the pack against its schemas; report errors vs warnings (missing stills in a metadata-only pack are a warning, not an error).
  4. Apply (
    apply
    ): plan shot durations from the pack's measured cadence (seeded, deterministic) over the user's local clips; produce the application report and frame-exact timeline events.
  5. Export (
    export
    ): write CMX3600 EDL + FCPXML 1.9 with rational, NTSC-safe times for import into a real NLE.
  6. Audit (
    provenance
    ): report lineage — recovered-source digests, generation history, fixture provenance, provider references as pointer-only records.
  1. 访谈
    interview
    ):收集视觉风格维度的答案——调色板、颗粒感、光线、焦距、镜头运动、主体构图、调色、情绪形容词、避忌列表——以及内容brief。需将视觉风格与内容分开;混淆两者是典型的错误。
  2. 提炼
    distill
    ):离线将配置文件映射到规格模式中,当提供风格包时,嵌入风格包的标准化基础(黑/白点、对比度、分区色度、调色板、剪辑节奏)。结果为试运行规格:确定性,
    provider
    "none"
  3. 验证
    validate
    /
    inspect
    ):检查风格包是否符合其模式规范;报告错误与警告(仅含元数据的风格包中缺少静态图像属于警告,而非错误)。
  4. 应用
    apply
    ):根据风格包的标准化节奏(有种子、确定性)规划用户本地素材的镜头时长;生成应用报告和帧级精准的时间线事件。
  5. 导出
    export
    ):写入CMX3600 EDL + FCPXML 1.9文件,包含合理的NTSC安全时间码,以便导入专业非编软件。
  6. 审计
    provenance
    ):报告谱系——恢复的源文件摘要、生成历史、固定装置来源、供应商引用(仅作为指针记录)。

File-Driven Multimodal Contract

基于文件驱动的多模态契约

Use this path when local references must drive dry-run generation plans for image, video, and 3D-asset outputs while preserving genre separation:
bash
python3 -m tasteforge multimodal --config workflow.json --out-dir out/multimodal
The config names numbered genres and local evidence files. Keep these candidate genres distinct rather than blending them into one generic aesthetic:
  1. Flash Ethereal
  2. 3D Cyber Glitch
  3. Fluid Sketch
The command measures local references with ffprobe/ffmpeg and emits one style spec per genre, separate image, video, and 3D-asset manifests, provenance, and a Resolve effect recipe. The effect schedule must be seeded aperiodic. CV effects require a real subject anchor whose exact lost-track policy is
disable_effect_until_track_recovers
;
continue_without_anchor
and every other policy fail closed. Every effect carries placement constraints that preserve faces and readable type and prevent decorative corner meshes from replacing full-frame 3D work.
The returned receipt is the bundle boundary. It binds every emitted evidence artifact by relative path, byte size, SHA-256, genre, modality,
provider_execution:false
, and exact reference/time provenance. The receipt requires
provider_calls:0
as an exact integer (the JSON boolean
false
is invalid),
provider_execution:false
, and
dry_run:true
. Every genre spec also requires explicit
dry_run:true
. The Resolve effect recipe requires that same exact integer
provider_calls:0
,
provider_execution:false
, and
dry_run:true
. Every modality manifest and every nested request must contain all four exact fail-closed fields: integer
provider_calls:0
,
provider_execution:false
,
dry_run:true
, and
submit:false
; each request also requires
provider_call_mode:"disabled"
. A missing field is a rejection, not a default, and
dry_run:false
must be rejected before output is written.
Treat booleans as invalid numbers everywhere in timeline, evidence, probe, and source-duration data. Every such numeric value must be a finite real: reject
true
,
false
, NaN, infinities, negative event starts, non-positive durations, out-of-range evidence times, and events ending beyond the declared finite positive timeline. Whole-file evidence uses an explicit whole-file time basis and never invents timestamps.
Receipt references are the duration authority. Key each validated reference duration by its cited SHA-256; duplicate occurrences of one digest must agree on duration or the bundle is invalid. Every effect evidence
source_duration
and every subject-anchor
source_duration
must equal that digest's validated receipt duration, not merely contain its cited time. Probe duration and all probe measurements must describe the same stable bytes used for byte count and SHA-256. If the source mutates while probing or rehashes differently while it is still available, fail closed rather than emitting or accepting a receipt.
Always run bundle validation after creation. A missing image, video, or 3D-asset manifest must fail closed. Genericized or duplicate genres, periodic schedules, unanchored CV effects, missing placement constraints, provider-execution flags, unbound output files, byte-size drift, or SHA-256 tampering must fail closed. Reject output roots, intermediates, or artifacts that are symlinks, and reject special files (including FIFOs and devices); outputs must remain regular files under a real directory tree. If local
ffmpeg
or
ffprobe
is unavailable, the CLI must return its bounded nonzero local-media-processing error without a Python traceback. Do not repair a failed receipt by deleting evidence or weakening validation.
当需要基于本地参考文件为图像、视频和3D资产输出制定试运行生成规划,同时保留类型区分时,使用以下流程:
bash
python3 -m tasteforge multimodal --config workflow.json --out-dir out/multimodal
配置文件会指定编号的类型和本地证据文件。需保持这些候选类型的区分,而非将它们混合为一种通用美学风格:
  1. Flash Ethereal
  2. 3D Cyber Glitch
  3. 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回溯信息。不得通过删除证据或弱化验证来修复失败的回执。

Example Session

示例会话

bash
undefined
bash
undefined

in the canonical ito-video checkout

在标准ito-video检出目录中

python3 -m tasteforge validate stylepacks/flashethereal python3 -m tasteforge interview --answers answers.json --genre flashethereal --out profile.json python3 -m tasteforge distill --profile profile.json --pack stylepacks/flashethereal --out spec.json python3 -m tasteforge apply --pack stylepacks/flashethereal --media media.json --duration 20 --out report.json python3 -m tasteforge export --events events.json --out-dir out --title flashethereal-cut python3 -m tasteforge provenance

If the user asks for the shots to actually be generated: stop, explain the
fail-closed provider boundary, and deliver the deterministic plan, spec, and
editable timeline instead.
python3 -m tasteforge validate stylepacks/flashethereal python3 -m tasteforge interview --answers answers.json --genre flashethereal --out profile.json python3 -m tasteforge distill --profile profile.json --pack stylepacks/flashethereal --out spec.json python3 -m tasteforge apply --pack stylepacks/flashethereal --media media.json --duration 20 --out report.json python3 -m tasteforge export --events events.json --out-dir out --title flashethereal-cut python3 -m tasteforge provenance

如果用户要求实际生成镜头:停止操作,解释闭环失败的供应商边界,改为交付确定性规划、规格和可编辑时间线。