RoosterEdit
RoosterEdit 是一個專為代理設計的影片工作室。它不會取代 Remotion、HyperFrames 或 FFmpeg;它負責決定要製作什麼、組織素材、撰寫計畫、驅動所選引擎、審查結果,並交付成品。
最重要的規則是:除非使用者明確要求不停止,否則請勿在計畫和預覽獲得批准前進行渲染。渲染是流程中最便宜的部分,卻也是最昂貴且最難挽回的錯誤。
執行 CLI
此技能附帶的 CLI 位於技能基礎目錄下的 scripts/rooster.mjs。請從使用者的專案目錄執行,並將腳本路徑解析到技能基礎目錄。在下列範例中,<skill> 代表該基礎目錄:
node "<skill>/scripts/rooster.mjs" doctor --json
請勿為了滿足命令而在使用者的專案中建立 scripts/ 目錄。工作區 (rooster/) 屬於專案;CLI 屬於技能。如果 shell 的工作目錄是技能目錄,CLI 就會在錯誤的位置建立工作區。
在哪裡安裝此技能
當使用者要求您安裝 RoosterEdit 時,請先詢問安裝應該是專案本機(建議)還是全域。請使用當前 harness 實際讀取的技能資料夾,不要假設為 OpenCode。
- 本機: harness 的專案級技能資料夾加上
rooster-edit(例如.opencode/skills、.claude/skills或.agents/skills)。建議使用此方式,因為版本會與專案綁定,不會影響其他工作。 - 全域: harness 的全域技能資料夾加上
rooster-edit(例如~/.config/opencode/skills或~/.claude/skills)。僅在使用者希望 RoosterEdit 存在於此機器上的每個專案時使用。
如果您無法確定 harness 的資料夾,請檢查其技能發現路徑或詢問使用者。在克隆之前等待回答。這個選擇是關於技能存放的位置,而不是關於影片工作區(./rooster)的位置。
回報
任務結束回覆預設應保持簡短:5-10 行或一個緊湊的表格。僅包含使用者需要採取行動的資訊:
- 完成了什麼或發現了什麼;
- 結果的路徑或連結;
- 缺少或受阻的項目(如果有的話);
- 一個明確的後續問題。
除非使用者要求,否則請勿重複簡報、貼上日誌、列出每個命令或解釋整個技能。將詳細資訊放在工作區檔案中或連結到參考文件。計畫、品質保證報告或交付套件可以較長,僅因為使用者必須審查其內容。
安裝和工作區設置是分開的步驟。安裝並執行 doctor 後,請勿開始入門指南或撰寫說明文件。用幾行總結環境,並詢問使用者是否要立即設定工作區。在收到肯定答覆之前,請勿建立 rooster/ 或頻道。
進度更新
在狀態更新和每個批准關卡使用緊湊的步驟標記。為專案保留一個 8 步驟追蹤器:
- 環境與工作區
- 簡報與接收
- 素材與逐字稿
- 編輯計畫
- 分鏡與時間軸
- 引擎建置
- 預覽與品質保證
- 渲染與交付
範例:
步驟 3/8 — 逐字稿完成。42 個片段,總時長 10:12。步驟 4/8 — 計畫已準備好在 edit/plan.html。可以繼續進行時間軸嗎?步驟 6/8 — 建置完成。可以開啟預覽並執行品質保證嗎?步驟 8/8 — 預覽已批准。可以渲染最終版本嗎?
跳過不適用的步驟並說明原因。請勿在每則訊息中列印完整的檢查清單;顯示當前步驟、變更的內容以及下一個關卡。請勿將時間軸與最終渲染合併為一個批准:預覽和品質保證位於它們之間。
基於子代理的執行
主要代理是指揮者,而非工作者。它與使用者對話、擁有簡報和決策權、運行批准關卡,並檢視最終畫面。繁重的工作則交由階段子代理處理:逐字稿分析、研究、腳本草稿、計畫草稿、風格與分鏡、建置與修正、品質保證掃描、渲染與包裝。每個子代理都有自己的上下文,當階段結束時會被丟棄,因此原始素材永遠不會累積在主執行緒中。
每當 harness 有子代理工具時,預設應委派任務。當階段只是一個簡單的命令、當階段本身是對話(如接收、批准),或者當階段是最終的視覺判斷時,則保持內聯。
| 階段 | 子代理 | 主要代理接收 |
|---|---|---|
| 簡報 | producer | 一段簡報 + 開放問題 |
| 研究 | researcher | 5 個發現 + 來源 + 授權標記 |
| 逐字稿 | transcript-analyst | 時長、主題、10-20 個節拍、標記 |
| 腳本 | scriptwriter | 鉤子 + 節拍摘要 |
| 計畫 | editor | 計畫摘要 + 風險 |
| 風格/分鏡 | art-director | 代幣 + 場景數量 + 素材需求 |
| 時間軸 | editor | 時長計算 + 標記 |
| 音訊 | audio-director | 語音/音樂/混音決策 |
| 建置 | engineer | 狀態 + 成品路徑 + 阻礙 |
| 品質保證 | qa | 裁決 + 主要問題 + 畫面路徑 |
| 渲染 | engineer | 最終路徑 + 探測統計 |
使用簡短提示來生成:角色檔案路徑、專案路徑、一個任務句子、輸入路徑、限制條件。傳遞路徑,切勿傳遞簡報、逐字稿、日誌或計畫內容。如果輸入本身就是對話,請先將答案寫入 work/intake.md。請求 references/subagents.md 中所述的交接項目,不要其他東西。對於需要寫入檔案或執行命令的階段,請使用 harness 的通用或工作代理;對於研究階段,使用唯讀或研究類型即可。這是一種能力,而非工具名稱:如果 harness 無法啟動一個具有檔案和命令存取權限的全新代理,或者啟動失敗兩次,請內聯執行該階段並保持檔案邊界。
交接是唯一進入主要上下文的內容:
status: ok | needs-decision | blocked
artifacts: paths that exist
summary: <= 5 lines
decisions: what the main agent must confirm
blockers: what stops the stage
next: next stage or exact question
主要代理可以閱讀簡報、腳本、風格、review.md 和交接內容,並可以查看 plan.html 和 3-5 個畫面。它不得閱讀原始逐字稿、完整計畫 JSON、生成的程式碼、建置/渲染日誌,或包含數十個畫面的連絡表。如果缺少某個細節,請向同一個子代理發送後續請求,而不是直接開啟原始檔案。
這裡沒有任何依賴關係。當一個階段內聯執行時,成品和關卡是相同的;你失去的是上下文隔離,而不是工作流程。
批准關卡永遠不會移轉給子代理。子代理提出建議;使用者和主要代理做決定。
安裝後的首次執行
如果工作區尚不存在,請在建立任何專案之前進行簡短的入門引導。
首先詢問:「要現在設定工作區嗎?」用一句話解釋這會建立 rooster/ 和第一個頻道。如果答案是否定的,則停止並不要建立任何東西。
如果答案是肯定的:
- 預設使用
./rooster。除非使用者想要自訂路徑,否則不要問「工作區要放在哪裡」。 - 問一個問題:「這個頻道要製作什麼?一句話就好。」使用答案和對話內容來推斷頻道名稱、語言、格式、來源、設定檔、素材、引擎、自主性和語音。不要詢問所有十二個頻道欄位,也不要詢問時長。
- 在一行緊湊的摘要中顯示推斷的預設值,並詢問「這樣可以嗎,還是要調整什麼?」只在某個欄位確實不明確時才追問,例如平台或來源是否為真實素材。
- 確認後,執行
init,然後執行channel new <id> ...並帶入答案。顯示一個簡短摘要並停止。
時長不是頻道的預設值:它屬於每個專案,並在建立影片時選擇。完整的十二欄位設定是選擇性的進階路徑。如果使用者要求自訂所有內容,請以最多三個為一組進行詢問,切勿一次全部詢問。
頻道是品牌、觀眾或操作(例如「EN Tech」或「PT Criador」)的穩定群組。它擁有創意預設值:語言、格式、設定檔、素材政策、引擎、自主性和語音。每個專案都屬於一個頻道,並可以覆寫任何這些預設值。時長是每個專案的,不是頻道的預設值。
除非使用者明確要求,否則不要在同一个輪次中開始製作影片。請閱讀 references/onboarding.md 以了解確切的問題、預設值和命令。在下載或生成任何素材之前,請閱讀 references/assets.md。
快速路徑:6 步驟影片工作流程
當使用者想要從原始素材到完成影片的最簡單路線時,請遵循與參考工作流程相同的六個步驟,並根據 RoosterEdit 工作區進行調整:
- 準備機器 — FFmpeg、Node.js LTS、Python 3、HyperFrames 和 Whisper(或 HyperFrames 的 Parakeet/whisper.cpp)。安裝任何東西前先詢問。
- 建立或解析專案 —
rooster new ...;原始媒體放在assets/source/。 - 撰寫風格指南 —
art-director撰寫style.md並解析設定檔。在規劃之前,執行styleproof <slug>並批准三個範例畫面。 - 轉錄與規劃 —
transcript-analyst撰寫edit/transcript.json、edit/digest.md和edit/analysis.json;editor根據分析和style.md撰寫edit/plan.json。顯示帶有逐字稿上下文的plan.html,並等待批准。 - 建立視覺元素 — 當頻道風格需要時,
engineer會建立標題卡、圖形、列表、縮放、B-roll、下三分之一、音樂和音效。僅有剪輯的草稿不是完成的影片,除非使用者明確要求純剪輯。 - 組合、審查、匯出 —
engineer執行build從已批准的計畫生成 HyperFrames 或 Remotion 專案;在完整建置前先使用--sample 3。qa檢查preview/index.html和畫面,然後engineer渲染到renders/;當使用者想要 DaVinci 或 Premiere 時,export會寫出 EDL/FCPXML 交接檔。
請閱讀 references/video-pipeline.md 以了解確切的命令以及從參考影片資料夾到我們資料夾的對應關係。此技能的其餘部分是更廣泛的工作室模式;快速路徑是單一影片作業的預設值。
運作原則
- 先直接溝通,再生成內容。 一個清晰的簡報、腳本和鏡頭清單比任何提示調整都更能節省時間。花費工作的第一部分來理解影片。
- 檢查,不要假設。 讀取檔案、探查媒體、查看畫面、檢查工具。切勿因為程式碼看起來正確就宣稱渲染或素材存在。
- 保持編輯的可編輯性。 偏好命名場景、變數和可讀的元件,而不是一次性腳本。使用者應該能夠更改顏色、台詞或剪輯,而無需重寫整個專案。
- 用眼睛審查。 使用瀏覽器預覽、螢幕截圖或渲染的靜止畫面來判斷構圖、節奏和字幕。僅靠程式碼審查是不夠的。
- 尊重來源。 記錄每個素材的來源及其授權。一個漂亮的影片配上未經授權的音樂是一種風險。
- 優雅降級。 harness 可能沒有子代理、瀏覽器、Node、FFmpeg 或 TTS。提供可用的最佳路徑,並說明缺少了什麼。
- 委派繁重的階段。 主要代理擔任指揮;階段子代理處理繁重的工作並回傳簡短的交接內容。逐字稿、建置日誌、生成的程式碼和品質保證掃描應避免通過主要上下文。請閱讀
references/subagents.md。 - 簡短回報。 每個任務以結果、路徑和一個後續問題結束。除非使用者要求,否則不要敘述整個過程或傾印命令。
- 完成創意層。 僅有剪輯不是影片。除非使用者明確要求純剪輯,否則請規劃疊加、B-roll、音樂、音效或字幕。
- 不確定時就詢問。 如果一個選擇會改變剪輯、外觀、音訊或成本,請在當前的
步驟 X/8詢問。不要默默地猜測。 - 保護上下文。 影片工作非常消耗代幣。將引擎日誌導向檔案、僅讀取尾部、使用
digest而非完整逐字稿,並檢查幾個關鍵畫面而非每個畫面。請閱讀references/token-discipline.md。
步驟 0 - 尋找工作區
首先在當前專案中尋找 rooster/ 目錄,如果設定了 ROOSTER_WORKSPACE 則使用它。預設值為 ./rooster;僅在使用者想要自訂路徑時才詢問。
如果兩者都不存在,且使用者已要求製作影片,則隱含建立工作區;執行:
node "<skill>/scripts/rooster.mjs" init
如果使用者剛剛安裝了此技能或只是在探索,請不要默默建立它:遵循「安裝後的首次執行」並先詢問。
工作區是頻道、專案、設定檔和素材庫存放的地方。請將其放在技能目錄之外;技能是可重複使用的,工作區屬於使用者的影片專案。
如果工作區存在但沒有頻道,請在建立專案前先建立一個頻道。每個專案都屬於一個頻道;default 頻道涵蓋一次性影片。
如果使用者只是在提問或探索一個想法,請直接回答,不要建立工作區。一個問題並不等於要求建置。
步驟 1 — 檢查能力
執行:
node "<skill>/scripts/rooster.mjs" doctor --json
這會回報 Node、npm、Python、FFmpeg、FFprobe、Git、GPU、檢測到的引擎、TTS 提供者、yt-dlp、Whisper 和 HyperFrames CLI。harness 本身知道子代理和瀏覽器是否可用;將該知識與 CLI 輸出結合。有關成本,請閱讀 docs/COSTS.md;未經明確許可,切勿呼叫付費提供者。
當缺少某些東西時,請閱讀 references/harness.md。簡而言之:
- 無 Node:僅能直接使用 FFmpeg 進行剪輯和音訊,但無法執行 HyperFrames 或 Remotion。
- 無 FFmpeg:仍然可以規劃、編寫腳本和分鏡,但無法在本機探查或渲染。
- 無瀏覽器:渲染靜止畫面或畫面並將其作為圖片檢查。
- 無 TTS:可以使用使用者的語音、僅字幕,或本機……
…
[為翻譯而截斷]