Dalang — 從主題到影片
模式與風格,在簡報(Brief)中詢問,並在其後鎖定(references/looks.md)。模式:Express(預設;在 Canvas 2D 中進行 2.5D 製作,請見 references/express.md)或 Studio(精準製作:three.js、程式碼優先的英雄鏡頭、參考面板、基準測試、審查)。風格:等角系列(主要為 isometric-world,另有 cutaway、blueprint)或 object-studio(在淺色背景上展示單一主體的模型)。3D 風格不會自動將影片切換至 Studio 模式。在第 6 步開始後更改風格:請停止所有建構者,重寫 SPEC.md,並在一則訊息中重新啟動所有組;旁白與語音則保持不變。
原則
第 7 點僅適用於 Studio 模式;其餘原則在兩種模式下皆適用。
- 視覺論文優先(
references/looks.md):風格的編號規則決定每個畫面與品質控制。object-studio:淺色攝影棚、一個重點色、主體佔據畫面 60–70%、單一輸入機器、真實樂器、固定鏡頭。 - 文字優先,畫面最後:腳本通過 → 語音 → 每個字詞都標記時間 → 視覺效果。
- 螢幕上的每個變化都對應到一個字詞,依據時間數據。
- 主體在每個鏡頭中都必須有動作;僅有相機對著靜止畫面的鏡頭只是幻燈片。
- 測量,不要猜測:每個報告的數字都必須來自紀錄檔或腳本。
- 所有問題一次問完,不中斷使用者。 所有問題都在第 1 步提出;之後不再等待使用者。當檢查通過後,自行通過 4 個關卡,用一行話說明,然後直接執行到完成影片。後續的更改視為新一輪。在最後一關之前(第 3 關的風格幀與鉤子範例除外)不進行最終品質的渲染。
- 風格化,忠於真實。 每部影片使用一種風格;不使用現成素材、照片級渲染、生成的影像或片段。零件、比例、規模和行為必須符合真實參考(
references/visual-direction.md§1)。 - 頂級工作室,絕不誇張:風格幀、打磨、審查評分表。草稿以 10 fps 渲染;最終版本以
--quality high --fps <brief fps>渲染,並通過所有檢查。 - 預設免費。 僅在使用者要求時才使用付費或計量服務(ElevenLabs、HeyGen),並標註「付費」。偏好使用可用於商業用途的許可證;若非如此則需說明。
通用目的。 任何主題、語言、平台。切勿開啟另一個 video/<slug>/ 資料夾;除非使用者選用系列套件(references/brief.md 中的「Series kit」),否則不保留任何內容。engine/three/ 是一個工具箱,而非限制:如果某個主體它沒有,則根據其自身法則建模,或在不需要 3D 的風格中呈現。
語言。 使用使用者的語言聊天。每個 AskUserQuestion 都以英文提出。 切勿從姓名推斷語言。
快速工作,節省 Token
-
一部影片 = 一個對話階段;狀態儲存在檔案中。恢復:
node <skill-dir>/scripts/state.mjs next、BRIEF.md以及PRODUCTION.md的結尾。 -
子代理類型,當列出時:建構者(修正輪次、腳本、語音)使用
dalang-builder,每個評判使用dalang-checker,事實查核使用dalang-research;否則使用通用類型。 -
技能版本:首先說出
next的DALANG v…;切勿使用git。 -
懶惰讀取:每個步驟,只讀取
state.mjs next --print印出的內容,一次全部讀取(第 0 步也會印出第 1 步的內容;第一次執行approve <n>會印出下一步的內容:沒有next回合,不提前使用--step);僅在需要時才「查閱」。切勿完整讀取參考文件、引擎 README 或lessons.md,或重複讀取任何章節;對於/hyperframes,只讀取必要的指南。 -
輸出簡潔:使用
--json過濾;切勿印出words.json、*.response.json或完整日誌;背景輸出以位元組為單位(tail -c 1500)。場景變更使用Edit呼叫,切勿使用sed -i或寫入整個檔案。 -
場景程式碼保留在建構者子代理中。 主代理切勿寫入或讀取
src/或assets/*.js(生成的資料除外;風格幀則交給建構者)。試播、每個群組、組裝以及每個修正輪次都交給一個新的建構者(上次的報告 + 路徑,其預算在look-build.md/express.md中)。審查者永遠不是建構者。 -
影像保留在子代理中。 主代理切勿
Read靜止畫面、條狀圖、工作表、範圍圖或風格幀:子代理取得路徑和next的「For the subagent」命令,然後回傳文字判決。例外:style-frames/src/的作者在每次首次寫入前,會打開每個review/refs-board-<frame>.jpg一次。 -
每項工作指定模型,從不詢問:
state.mjs next會印出每個步驟的子代理工作及其模型和努力程度(state.mjs models:列出所有模型,以及 top/mid/light 的含義)。 -
升級,絕不重複。 失敗的工作(紅色、無法使用、留下 P0 問題)會交給高一級的新代理:努力程度(低 → 中 → 高),然後模型(light → mid → top);top · high 為上限:留下 P0 問題時需分類(
hero-asset.md§3)。絕不降級或重複;已完成的工作絕不重新執行。≤ 3 個複製或時間修正:降一級。記錄每項設定。 -
主代理負責協調,絕不親自執行工作。 你的回合會重新讀取對話階段(大約是子代理的 10 倍);循環(寫入 ↔ lint、拍攝 ↔ 重拍、修正 ↔ 檢查)在單一工作中執行(步驟 3–4 也是如此);每次回覆喚醒你:一個工作執行到得出判決;一起啟動的 N 個工作,在該訊息結束時加上
wait.mjs . --expect N(timeout: 600000):一個回合,一行話。執行器(express.mjs/studio.mjs <step>)是一個前景呼叫(timeout: 600000),當它在約 9 分鐘內結束時使用,絕非鏈式或輪詢。Agent 提示包含工作和路徑(≤ 15 行;它透過next --step <n> --sub讀取)。檢查者寫入他們的判決檔案,建構者寫入review/reports/<job>.md;兩者都簡短回覆,絕不重新打字。state.mjs log與步驟的命令一起使用&&,而不是單獨的回合。 -
緊湊:
workspace.mjs init設定自動壓縮(200K);在第 2–4 關時,說一次/compact是安全的。 -
預設並行。 獨立的工作在一則訊息中啟動,每個代理在自己的檔案上工作。繁重的工作(VoxCPM、渲染、檢查、快照)單獨執行,絕不與模型工作並行;使用
while kill -0 <pid>排隊。一起執行:預檢 ‖ 主題問題;參考 ‖ 研究任務;第 1 關之後,語音任務 ‖ 資產,但不要有場景;在第 2 關時,規劃器和音樂;第 6 步 Studio:試播,然後所有群組;Express:所有群組同時啟動,無需試播(一個乾淨的拍攝本身會透過express.mjs after-voice通過第 1–2 關;規劃器執行express.mjs scaffold .);第 7 步草稿檢查,然後審查者 ‖ 小測驗 ‖ 設定 / 現實檢查;第 8 步POST.md在渲染期間執行。 -
先做便宜的,再做昂貴的:在正式拍攝前使用
--sample;當只有{}有變動時使用--from-response;迭代時拍攝快照;修正批次進行;QC 使用--fps 10 --quality draft;只做一次最終渲染。 -
使用者的要求優先:若某條規則與之抵觸,用一行話標記;切勿默默忽視。
-
訊息簡短:說明改變了什麼、需要決定什麼、提供連結;等待時,提供下一關的時鐘時間;超過約 2 分鐘的步驟需提供預計時間。
專案檔案(video/<topic-slug>/)
使用 state.mjs log "<step> | <output> | <problems or ->" 記錄。該資料夾就是 HyperFrames 專案;從該資料夾執行命令。僅編輯 *.tpl.html;node <skill-dir>/scripts/fill_times.mjs src/index.tpl.html index.html 會重新生成 index.html(絕不手動編輯,且沒有第二個根目錄的 .html)。
步驟
| 步驟 | 執行內容 | 結束標誌 | 讀取文件(references/) |
|---|---|---|---|
| 0 設定 | 執行 preflight.mjs,修正其報告的問題,建立專案資料夾 | PRODUCTION.md | brief.md §0 |
| 1 簡報 | 先確定主題,現在提出所有問題 | BRIEF.md | brief.md §1 |
| 2 參考(可選) | 測量工藝,絕不抄襲 | reference-measurements.md | measure-reference.md |
| 3 腳本 | 執行研究、寫作、通讀任務;使用 approve 1 執行 lint 檢查 | 第 1 關 | script-voice.md §3 |
| 4 語音 | 執行一個語音任務;after-voice 進行填充,通過第 1–2 關 | 第 2 關 | script-voice.md §4 |
| 5 風格 | 建立 SPEC.md、英雄鏡頭、分鏡圖、資產、風格幀、基準測試 | 第 3 關 | look-build.md §5 |
| 6 建置 | 建構者,依據 BEATS/WORDS 的時間,音訊混音 | index.html,lint 檢查通過 | look-build.md §6 |
| 7 QC | 草稿、檢查、條狀圖、審查者、小測驗、修正輪次 | 第 4 關 | qc.md §7 |
| 8 最終 | 資產檢查、高品質渲染、重新檢查 | final.mp4、POST.md、報告 | qc.md §8 |
在每個步驟:關卡經由 state.mjs approve <n> --by agent 通過(依序執行;它會執行關卡檢查,若有錯誤則拒絕並顯示錯誤訊息;之後編輯過的關卡檔案會標記為 STALE 直到重新批准);BRIEF.md 規則規定了格式和語言;僅在獲得說話者許可後才能使用錄製或克隆的語音;頁面僅在 Claude 的內建瀏覽器中開啟,絕不使用使用者的 Chrome;在 PRODUCTION.md 中記錄每個步驟和問題;系列反饋透過 series.mjs note 傳遞,而非記憶。
自主模式
如果使用者提供主題後離開,則使用他們所說的內容,否則:Express 模式;YouTube 16:9,60–90 秒(短影音使用 9:16 比例,片長 ≤ 60 秒);使用他們的語言;object-studio(Studio 模式:isometric-world);「現代平衡」風格;一般觀眾;VoiceStudio,預設語音,依照 brief.md 第 0 步(若在第 4 步前未準備好則停止並說明)。首先在 PRODUCTION.md 中寫入「使用預設值」,記錄每個決策,完成影片。發布規則:references/qc.md 中的「使用者離開」章節(若 audio_qc.mjs 以 exit 2 狀態停留,則在交接時指名,絕不通過)。跳過安裝提議(記錄它們)。切勿編輯已安裝的技能。
當問題發生時
執行 grep -n -i '<word>' <skill-dir>/references/lessons.md。