TasteForge 影片 是做什麼的?
若要使用完整獨立創意流程,請依序使用 taste-distillation 和 taste-application。這些 ECC 技能會直接附帶其 Python 腳本:測量參考資料、生成或傳遞現有鏡頭、調色、剪輯、合成、驗證,並交付給 Blender 和 Resolve。該流程無需單獨的影片儲存庫。本技能則記錄了 ECC 打包的離線引擎及其嚴格的證據合約。
TasteForge 將「讓它感覺像這個參考」轉變為可重複、可檢視的工作流程:訪談品味、將品味萃取為結構化的風格包、驗證該風格包、將其所測量出的節奏和外觀應用於本地媒體,並匯出可編輯的時間軸。其規範實作是 tasteforge 套件,位於 ECC 的 skills/taste-application/scripts/tasteforge/ 路徑下。Ito-Markets/ito-video 是一個使用此打包 ECC 引擎的專案範例。
使用時機
- 使用者要求在製作任何素材之前進行影片品味訪談(「問我關於外觀的看法」、「訪談我的美學方向」)。
- 使用者想要將美學萃取為結構化約束——一個可重複使用的風格包,而不是模糊的感覺(「將這些參考轉換為一個風格包」)。
- 使用者想要驗證風格包(中繼資料是否完整、符合 schema、節奏是否已測量、規格是否已萃取?)。
- 使用者想要將風格包應用於本地素材——根據風格包從本地剪輯片段中測量出的節奏,以確定性方式規劃剪輯。
- 使用者想要匯出 EDL/FCPXML——一個可編輯、影格精確的資料,用於交付給 DaVinci Resolve / Premiere / Final Cut。
- 使用者要求進行生成媒體的出處稽核——這個包、規格或剪輯來自何處;哪些是本地測量的,哪些是由提供者生成的;哪些是乾執行的。
- 使用者要求從本地參考檔案中探索或規劃檔案驅動的多模態影像、影片或 3D 資產輸出,包括獨立的 manifest、以主體為錨點的電腦視覺效果或 Resolve 效果配方。
- 使用者提及 TasteForge、風格包、flashethereal、品味萃取、節奏/韻律規劃、多模態探索、萃取/應用工作流程或針對影片的品味訪談。
本地確定性操作 vs 提供者生成
這個邊界是此相容性技能的核心。其操作是本地的、確定性的且離線的:
| 操作 | 確定性? | ECC 可以執行 |
|---|---|---|
| 品味訪談 → 輪廓檔 | 是 (離線) | 是 |
| 包檢查/驗證是否符合 schema | 是 | 是 |
| 萃取輪廓檔 (+ 測量基礎) → 規格 | 是 (乾執行語意) | 是 |
| 將包節奏應用於本地媒體 → 報告 + 時間軸 | 是 | 是 |
| 匯出 EDL (CMX3600) / FCPXML 1.9 | 是 | 是 |
| 出處/譜系報告 | 是 | 是 |
| 靜態影像的視覺模型萃取 | 提供者生成 | 否 |
| 參考到影片、影像到 3D、託管合成 | 提供者生成 | 否 |
**在 ECC 中,提供者生成必須以封閉失敗模式進行。**任何即時 Fal(或其他提供者)呼叫——生成鏡頭、鑄造道具網格、託管的 VLM 萃取——都需要在單獨的、經明確授權的執行路徑下進行,並附帶其自身的審查。在此相容性路徑中,ECC 永不呼叫 Fal,永不讀取任何 API 金鑰或其他憑證(包括 FAL_KEY),不上傳任何媒體,也不變更任何提供者帳戶狀態。當請求需要提供者生成時,請明確說明此邊界,執行本地部分(訪談、包驗證、規劃、匯出),然後停止。
永遠不要聲稱 Fal 工作流程已被儲存。對 Fal 端點、模型 ID 或乾執行 URL(它們會出現在包中繼資料中)的本地參考僅是參考之用:它絕不代表提供者端的工作流程已被儲存、持久化或授權執行。任何離線產出的內容都帶有乾執行語意——請說「乾執行規格」或「確定性計畫」,永遠不要說「由模型生成」。
規範實作
- 儲存庫:
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 是合約:品味輪廓檔、包 manifest、調色、節奏、規格、時間軸事件、應用報告(
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 的文字和 fixture 測試並不能證明所選的 Python 檢出實作了此合約。
串聯創意技能
| 階段 | 負責技能 | 可檢視的結果 |
|---|---|---|
| 創意方向 | taste | 命名類型、參考觀察、所選外觀和避免清單 |
| 萃取與規劃 | tasteforge-video | 測量證據、獨立類型規格、乾執行 manifest 和節奏計畫 |
| 編輯與效果 | video-editing,搭配所選渲染器如 Remotion、Manim 或 Fusion | 已套用的素材、實際軌道、可編輯的效果和時間軸 |
| 可選的生成資產或語音 | fal-ai-media 或所選的音訊工作流程,在其自身授權下 | 提供者收據和已檢查的輸出 |
| 交付 | 編輯工作流程,然後按需求執行 content-engine | 已檢視的確切匯出與發佈副本 |
僅使用專案所需的階段。taste 技能中歷史的 angelcore/cloud-trance 調色板和節拍語法僅為選擇性的創意範例;它們不得覆蓋當前的簡報或合併不同的已編號類型。請使用每個類型的實際參考來進行其方向設定,包括 3D Cyber Glitch 和 Fluid Sketch。TasteForge 不會取代這些技能,也不需要每個渲染器。將 3D 材質、幾何形狀、線框行為、運動和構圖明確保留在類型簽章中。3D 請求 manifest 是資產的計畫;它不是網格。主體錨點描述符命名了一個追蹤需求;它並非主體已被偵測或追蹤的證據。在聲稱電腦視覺效果已可靠套用之前,請檢查實際軌道、遺失追蹤的行為以及已渲染的主體影格。
工作流程
- 訪談 (
interview):收集外觀軸線的答案——調色板、顆粒感、燈光、焦距、攝影機運動、主體構圖、調色、情緒形容詞、避免清單——以及內容簡報。保持外觀和內容分離;將它們合併是經典的失敗模式。 - 萃取 (
distill):離線將輪廓檔對應到規格 schema,當提供風格包時,嵌入該包的測量基礎(黑/白點、對比度、每個區域的色度、調色板、剪輯節奏)。結果是一個乾執行規格:確定性的,提供者為"none"。 - 驗證 (
validate/inspect):根據 schema 檢查風格包;報告錯誤與警告(在僅含中繼資料的包中缺少靜態影像是警告,而非錯誤)。 - 應用 (
apply):根據風格包測量出的節奏(基於種子、確定性),在使用者的本地剪輯片段上規劃鏡頭持續時間;產生應用報告和影格精確的時間軸事件。 - 匯出 (
export):寫入 CMX3600 EDL + FCPXML 1.9,帶有合理、NTSC 安全的時間碼,以便匯入真實的 NLE。 - 稽核 (
provenance):報告譜系——恢復來源摘要、生成歷史、fixture 來源、提供者參考(僅作為指標記錄)。
在沒有重複素材的情況下套用真實影片
當簡報要求不重複使用剪輯片段時,請使用支援 apply --no-repeat --fps 的規範檢出,並明確設定輸出影格率。如果這些標誌不存在,請報告實作差距,而不是靜默地使用舊版循環選擇。嚴格模式會按照 manifest 順序,每個標準化來源路徑最多使用一次,並拒絕來源不足或過短的情況。準備足夠多的已審查精選片段以滿足節奏計畫。這是來源層級的唯一性,而不是支援來自同一個錄製片段的不同入/出點範圍。
應用報告是一個剪輯計畫。它不會執行視覺鏡頭排序、調色素材、套用 LUT、渲染覆疊或匯入 Resolve 專案。請保持包的測量參考節奏與輸出影格率分離。
匯出 CLI 預期輸入為 {"clips": [...]}。在匯出之前,將應用程式的 timeline_events 包裝在 clips 下,並傳遞與應用程式相同的 --fps;匯出的預設影格率不得重新調整計畫。在將時間軸交給編輯工作流程之前,請檢查發出的事件計數、總影格數、唯一來源和媒體連結。
當該工作流程在 NLE 中套用重疊效果時,請分配相容的軌道,並讀回每個請求的開始、結束和持續時間。單獨的回傳項目或成功的附加呼叫並不能證明每個排程的效果都已放置;在渲染之前,請拒絕遺失、被移位或被截斷的放置。
檔案驅動的多模態合約
當本地參考必須驅動影像、影片和 3D 資產輸出的乾執行生成計畫,同時保持類型分離時,請使用此路徑:
python3 -m tasteforge multimodal --config workflow.json --out-dir out/multimodal
該配置命名已編號的類型和本地證據檔案。請保持這些候選類型彼此區分,而不是將它們混合成一種通用的美學:
- Flash Ethereal
- 3D Cyber Glitch
- Fluid Sketch
該命令使用 ffprobe/ffmpeg 測量本地參考,並為每個類型輸出一个風格規格、单独的影像、影片和 3D 資產 manifest、出處以及 Resolve 效果配方。效果排程必須使用非週期性的種子。電腦視覺效果需要一個真實的主體錨點,其精確的遺失追蹤政策為 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。每個模態 manifest 和每個巢狀請求都必須包含所有四個精確的封閉失敗欄位:整數 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 資產 manifest 必須以封閉失敗模式終止。通用化或重複的類型、週期性的排程、無錨點的電腦視覺效果、遺失放置約束、提供者執行標誌、未綁定的輸出檔案、位元組大小漂移或 SHA-256 竄改,都必須以封閉失敗模式終止。拒絕作為符號連結的輸出根目錄、中間檔案或成品,並拒絕特殊檔案(包括 FIFO 和裝置);輸出必須是真實目錄樹下的常規檔案。如果本地的 ffmpeg 或 ffprobe 不可用,CLI 必須返回其有界的、非零的本地媒體處理錯誤,且不帶 Python traceback。請不要透過刪除證據或弱化驗證來修復失敗的收據。
範例會話
# 安裝 ECC 引擎之後;以下路徑為您的專案輸入
python3 -m tasteforge validate stylepacks/flashethereal
python3 -m tasteforge interview --answers answers.json --genre flashethereal
…
[為翻譯而截斷]