這是 2026-06-07「文本→劇本」調研(廣度 58 方案 + 7 repo 深度精讀 + 我方架構摸底)對照我方現版本的差異比對結論:5 維度現狀打分、最該補的缺口、可借鑑對象與 license 紅線、以及按 CP 排序的落地路線圖。給工程團隊看,本週即可動工。
7 agent 平行5 維度比對已過 critic 對抗查證2026-06-07
merge_gate.py 的 ①層(regex/結構硬邊界 + 鏡位三軸全同才合)是 production ON、且全市場(7 repo + 58 方案)無人做——別人都用單一 LLM 標籤或乾脆不守門。我方用確定性、離線、可測(24 pytest)的程式判據守紅線(explicit/QTE/服裝/場景/角色/large 絕不被合,安全方向 under-merge)。這是護城河,要守住並對外講清楚。
1. ②層 LLM 語意 merge 在 production 是 no-op(VN_LLM_MERGE=0 第一行直接 return)→ ①交給②裁決的 medium / 鏡位不同 pair 目前無人接手。
2. schema 缺「時間」維度 → 同地點同角色但「三天後」的兩 beat 可能被誤合。
→ 補②的離線版+時間維度(見路線圖 S5 / M2)。
| 維度 | 現狀分數 | 最該補的 gap(單點最痛) | 借鑑誰(B2C 商用 license) |
|---|---|---|---|
| ① 分詞層 beat schema |
3D 鏡頭三軸 consumer-ready 卻 LLM-orphaned(camera_matrix/_beat_axes 已 prefer LLM 的 angle/distance,但 sys_prompt 從不要)+ 全 schema 零枚舉驗證 |
LocalMiniDrama 受控枚舉三軸(MIT✅) / ai-comic-factory per-panel JSON 契約(Apache✅) / 自有 merge_gate._norm_vtype 糾偏範式 | |
| ② 分鏡 merge 守門 |
LLM 語意 merge production 預設關(no-op),整條 merge 退化成只靠①+LLM 自填 variation;且缺「時間」維度 | DeepTiling 離線句向量切分(MIT✅) + Meta-Chunking margin 邊界(Apache✅) / EACL2021、FilMaster(概念)/自有① | |
| ③ 連貫性狀態機 |
結構化狀態完全沒餵進生成(context()/_rolling_context() 雙孤兒)+ 外觀純文字鎖無 image anchor |
SCORE / CANVAS 兩階段+三軸狀態(概念)/LocalMiniDrama 錨圖 schema(MIT✅)/自有 ip_adapter_poc.py(已存在) | |
| 痛點a 長文本切割銜接 |
無語意切塊(只有 regex 硬邊界,純散文/聊天記錄翻車)+ 無 global synopsis | DeepTiling / Meta-Chunking(MIT/Apache✅)/ViMax RAG 長劇本引擎(MIT✅)/Sudowrite synopsis(概念) | |
| 漫畫條漫分格 |
分格佈局 0 落地(固定全寬等大縱堆)+ 電影手法(long take/montage/mise-en-scène)未編進 prompt | ai-comic-factory Layout grid(Apache✅)/story-to-manga reference sheet(MIT✅)/ViMax variation_type→modality(MIT✅)/自有 storyboard_bible.html |
🔴 紅線提醒:openOii / ai-shotlive(CC-NC) / MangaZero / Toonflow 一律只可借鑑概念、不可依賴其 code/資料。上表所有「可fork」項皆 MIT/Apache,安全。
對手 SCORE/CANVAS 核心就是「state 餵進生成 + 錨圖鎖外觀」;我方 context()/_rolling_context() 是雙孤兒(全平行架構下前段 state 根本不存在),符號狀態淪為事後安全網;外觀只有純文字鎖。
✅ 好消息:ip_adapter_poc.py 已存在=「接線」不是從零。
對手用「受控枚舉契約」逼 LLM 在有限維度選;我方 camera/motion/action/stage/arousal 全自由字串,非法值被 legacy_to_3d 預設靜默吃掉,分詞品質不可觀測。
✅ 3D 鏡頭矩陣(ANGLES9/DISTANCES4/MOTIONS7)消費端已備好、_beat_axes 已 prefer LLM 的 angle/distance,只差 sys_prompt 沒向 LLM 要。ACTION_KF 有 21 個 action,prompt 只給 8 個。「接線就解鎖」的高 CP 落後項。
B2C 客戶丟純散文小說/黃文/聊天記錄,常無「第N章/【】」標記 → 直接走 \n\n 或句末硬切,切在場景/對白/性愛動作中間 → 接縫漂移、跨段失憶。
平行各 chunk 只看前一 chunk 原文尾 400 字,看不到全局主線/人物關係 → 後段重演已演橋段、人物失憶。
✅ 為什麼該做:條漫是另一條低邊際成本的分發通路(靜態、可分享、適合平台/SEO),重用 VN 全部素材、純 CPU/PIL+CSS、不吃 GPU。研究已做滿(storyboard_bible.html),落地門檻低。
⚠️ 為什麼不能現在當主線:VN player 才是活的 A 路線終點;comic_build.py 是孤兒 PoC(讀死 journey、不被任何 orchestrator 呼叫、comic-deploy 是 stale)。核心引擎(③連貫/①schema)還漏的情況下先投資呈現層=本末倒置。
怎麼接(最小成本三步,全在 quick win S15–S17):
dynamic_router 加 panel_size 維度,直接複用 variation_type 欄(large→wan_flf / med→interp / small→css_idle),零新欄位補「分格大小→模態成本」掛勾。comic_build.py 三件套:參數化吃 journey_<key>.json 接 build_vn --comic + emotion/variation 驅動動態 margin/留白 + big滿寬/small半寬並排 → 孤兒 PoC 變可用條漫雛形,走統一 review gallery。shot_technique 枚舉欄(long_take/flashback/montage/mise_en_scene/null)+ 3–5 條 few-shot(貼 storyboard_bible.html 規則表),先收集分鏡技法訊號(呈現層暫不用也零風險)。一次引入同時解鎖②離線語意 merge、②/③地點 canonical 分群、痛點a 語意切塊。中期最該先做的橫向投資。→ 解鎖 M2/M3/M4。
context() 當 ctx)
L 級 keystone,解鎖 ③狀態餵生成 + 痛點a 接線 + 階層摘要 + retrieval。注意:critic 指這不是「接線」是「重架 convert()」(要把全平行改兩階段,Phase A 吃掉現有平行加速)。S12 global synopsis 是它落地前的廉價過渡。
ip_adapter_poc.py 已存在)
同時解鎖 ③ image anchor(最大槓桿)+ 漫畫 reference-sheet 工作流(M12)。critic 建議納入 Story2Board(MIT✅,training-free 分鏡一致性)。
| # | 項目 | 維度 | 依賴 | license |
|---|---|---|---|---|
| S1 | sys_prompt 加 angle/distance/cam_move 三軸枚舉欄(camera 保留回退)——消費端已 ready,幾乎零下游改動即解鎖整個 3D 鏡頭矩陣【最高 CP】 | ① | 與 S3 同批 | LocalMiniDrama MIT✅ |
| S2 | 8-action 清單擴成 ACTION_KF 全集 + GOOD_CAMERAS 合法組合提示(純改 sys_prompt 字串) | ① | 與 S1/S3 同批 | 自有 in-repo |
| S3 | coerce_beat() 集中糾偏:仿 merge_gate._norm_vtype 把 camera/motion/action/stage/arousal snap 到合法枚舉 + 記 meta.schema_warnings,純程式零 LLM,立即讓分詞品質可觀測 | ① | 應與 S1/S2 一起 | 自有 in-repo |
| S4 | emotion_intensity(int −1~3) 可選欄 + 映射補強 arousal(非性愛 beat 也有情緒強度) | ① | — | LocalMiniDrama MIT✅ |
| S5 | 時間跳躍 cue-word regex 加進 _hard_boundary(三天後/隔天/翌日/數小時後…命中即硬邊界)~6 行,補②缺的時間維度 | ② | — | EACL2021 概念 |
| S6 | variation==small 自動合前加 text-similarity 地板(相似度過低→降級 medium 不自動合),交叉驗證 LLM 唯一語意訊號 | ② | — | 自有 in-repo |
| S7 | emotion-bucket 跨桶當 merge-blocker(calm/aroused/climax 桶,跨桶擋 exact/small 自動合)~8 行 | ② | — | Anifusion 概念 |
| S8 | merge_gate.py docstring + meta stats 誠實標 llm_merge_active=false,避免維護者誤以為語意層有在守門 | ② | — | 自有 in-repo |
| S9 | arousal 單調守門:enforce() 鏡像既有 clothing _STAGE_RANK,用 _AROUSAL_RANK 防喚起倒退 | ③ | — | 自有 in-repo |
| S10 | bg 同義詞 canonical 小表(office/professor office→同 id),_norm_bg 套表——立即減接縫重複出圖(②/③共用,先止血) | ②③ | — | CANVAS 概念 |
| S11 | consistency_warnings 上檢核頁:接進 build_pipeline_review.py/統一 gallery(回穿/角色憑空/地點跳可見),零新邏輯 | ③ | — | 自有 in-repo |
| S12 | global synopsis 一次性注入:前置 1 個 LLM call 對全文出 synopsis(主線+人物關係+地點清單)塞進所有 _ctx——不動平行架構就解掉痛點a GAP2 大半【CP 最高】 | 痛a | — | Sudowrite 概念 |
| S13 | _ctx 取尾改「末 N 個完整句」(句界 。!?\n)+ 400 改 env 可調;split_chunks 對無 \n\n 巨型 unit 補句末預切 | 痛a | — | 自有 in-repo |
| S14 | 處理孤兒 _rolling_context:明確決定「接線(配地基B)或移除」,現狀放著誤導維護者 | 痛a | 接線版依賴地基B | 自有 in-repo |
| S15 | router 加 panel_size 維度最小版:複用 variation_type → 既有 COST/modality(large→wan/med→interp/small→css),零新欄位 | 漫畫 | — | ViMax MIT✅ |
| S16 | comic_build.py 三件套:參數化吃 journey_<key>.json 接 build_vn --comic + 動態 margin/留白 + big滿寬/small半寬並排(孤兒 PoC→可用條漫雛形) | 漫畫 | — | ai-comic-factory Apache✅ |
| S17 | sys_prompt 加 shot_technique 枚舉欄 + few-shot(貼 storyboard_bible.html 規則表),先收集分鏡技法訊號 | 漫畫 | — | 自有 in-repo |
| S18 | 補 pytest(time/emotion-shift/bg-canonical 三類目前無覆蓋)+ inline __main__ 與 test_merge_gate.py 去重 | ② | 跟 S5-S8 同步 | 自有 in-repo |
🔵 藍底=同批一起上:S1+S2+S3(schema 擴充+糾偏,加枚舉欄就要同步加驗證否則白加);S15+S16+S17(漫畫最小可行三件套)。S10 一份工同時服務②③。
| # | 項目 | 維度 | 依賴 | license |
|---|---|---|---|---|
| M1 | 地基 A:引入 CPU embedding 模型(橫向,解鎖 M2/M3/M4) | ②③痛a | — | DeepTiling/Meta-Chunking MIT/Apache✅ |
| M2 | ②離線語意 merge pass(預設開、離線安全):相鄰 pair 算 cosine,>閾值且非硬邊界→合;線上 LLM② 當加值層 → 終結 production no-op | ② | M1 | DeepTiling fork MIT✅ |
| M3 | 語意切塊:regex 0 命中時 drop-in 取代 \n\n fallback(句向量谷底 / PPL 跳點),oversize 細切同步換 | 痛a | M1 | DeepTiling/Meta-Chunking✅ |
| M4 | 地點 canonical 語意分群(S10 小表的完整版):embedding 對全 script bg 字串 clustering → canonical id | ②③ | M1、S10 | CANVAS 概念 + 自有 |
| M5 | 3D 鏡頭三軸全面解鎖 + motion 拆兩軸:motion 收斂為 cam_move(後製/CSS) 與 subject_motion(給 Wan);build_vn/router 改讀 typed 欄 | ① | S1/S3 | LocalMiniDrama MIT✅ + 自有 |
| M6 | lighting typed 枚舉欄(assembler regex 升級為讀欄位、前置高權重,順解 CLIP 中文 desc_hint 被剝光) | ① | S3 | LocalMiniDrama MIT✅ |
| M7 | dof 枚舉 + emotion_intensity 進 assembler 鏡頭片語 | ① | S4 | LocalMiniDrama MIT✅ |
| M8 | cam_idx 機位復用 handle(遇 cam_idx 直接復用該 beat 的 angle/distance/lighting/dof) | ① | M5 | ViMax MIT✅ |
| M9 | 地基 C:角色 reference sheet(四視圖+color_palette+style_tokens 進 VN_IDENTITY)+ IP-Adapter 接線(先 S 級單角色 A/B 量測一致性槓桿,過了再鋪全角色) | ③漫畫 | ip_adapter_poc.py(已存在) | LocalMiniDrama+story-to-manga+Story2Board MIT✅ |
| M10 | 物件/道具狀態追蹤(StoryState 加 objects {id→state}+轉移 log,enforce 擋不可能轉移),沿用 clothing rank 骨架 | ③ | — | CANVAS/elm-engine 概念 |
| M11 | 連貫性量化 continuity checker(掃 journey 算回穿/角色憑空/地點跳/物件不可能轉移分數)接進 CLAUDE.md 矩陣驗收 | ③ | — | CANVAS 概念 |
| M12 | 漫畫 layout 版面規劃 pass(panel_size/tilt/gutter 指派)+ shot_technique 落地驅動 merge(long_take 不切/montage 拆小格) | 漫畫 | S15-S17、M9 | ai-comic-factory Apache✅ + 自有 |
| # | 項目 | 維度 | 依賴 | license |
|---|---|---|---|---|
| L1 | 地基 B:兩階段架構(Phase A 序列建輕量 StoryState → Phase B 平行出 beat 時 context() 取代/疊加 _ctx)——③與痛點a 深度連貫的總開關 | ③痛a | S12 是過渡版 | SCORE/CANVAS 概念 + Meta-Chunking MIT✅ |
| L2 | 階層 episode 摘要(章→場→beat 滾動摘要餵 Phase A context(),episode 邊界用 Meta-Chunking 抓) | ③痛a | L1、M1 | SCORE 概念 + Meta-Chunking MIT✅ |
| L3 | Hybrid Retrieval(實體再登場 retrieve 歷史狀態補 ctx) | ③ | L1 | SCORE 概念 |
| L4 | stage → per-char wardrobe 物件(outfit_id+reveal_level,正規化到 VN_IDENTITY 服裝表,多女主各角服裝結構承載) | ① | — | ai-shotlive 概念(❌不可依賴碼)→ 用自有 VN_IDENTITY 自建 |
地基A(M1) → 解鎖 M2 / M3 / M4(一份 embedding 投資吃三個維度)地基B(L1) → 解鎖 L2 / L3 / 痛點a 真正連貫;S12 global synopsis 是它落地前的廉價過渡地基C(M9) → 同時服務 ③ image anchor 與 漫畫 reference sheet(M12),別重複生角色表S1+S2+S3 必須同批(加枚舉欄就要同步加糾偏,否則白加)S10 → M4(地點止血小表 → 語意分群完整版)
| 分級 | 對象 |
|---|---|
| ✅ 可直接 fork / 依賴 code | ViMax、LocalMiniDrama、ai-comic-factory、Meta-Chunking、DeepTiling、victorhuangwq/story-to-manga(全 MIT/Apache)+ Story2Board(MIT,critic 新升級) |
| ✅ 自有 in-repo(零風險) | merge_gate._norm_vtype、story_state clothing rank、ip_adapter_poc.py、storyboard_bible.html、build_pipeline_review.py、camera_matrix/action_keyframes |
| ⚠️ 僅借鑑概念,不可依賴 code/資料 | SCORE / CANVAS / EACL2021 / FilMaster / Sudowrite / Anifusion / Dashtoon / elm-engine / StoryWriter(license 待查前一律當概念) |
| ❌ 紅線(禁用其碼/資料) | openOii(無 license)、ai-shotlive(CC-NC)、MangaZero(非商用)、Toonflow(商用需授權)。ai-shotlive 衣橱概念可借鑑,但 L4 一律用自有 VN_IDENTITY 自建 |
結論:路線圖上所有需要實際依賴 code 的項目,借鑑對象都是 MIT/Apache 或我方 in-repo,無商用 license 風險。概念借鑑項全部本地自建。
LocalMiniDrama 是中國本地工具(最該懷疑 license,但 critic 用 gh 權威欄查證確實 MIT ✅),是路線圖上被引用次數最多的可 fork 對象:
four_view / color_palette / style_tokens)→ 餵 M9 地基 C=fork 一次、解鎖最多維度。建議優先精讀其 schema 設計,作為我方枚舉契約的藍本。
A1 釘死 fork 來源:story-to-manga 同名 repo 多支 license 各異,必須釘死 victorhuangwq/story-to-manga(MIT);且要先確認它真有 reference-sheet 段(它實為整頁漫畫生成器),否則改用已驗證的 DavidDinkevich/Story2Board(MIT)。
A2 反向漏網:DavidDinkevich/Story2Board 實查 MIT(training-free 分鏡一致性,正中 ③ image-anchor),從「概念」升級為「✅可fork」並納入地基 C。
B1(最該打的問號):CANVAS 的 −39%/−38%/−50~57% 查無此論文,是未查證數字卻被當最高優先級論證基礎。降級為「待 M9 自家 A/B 量測的假設」——方向(錨圖鎖一致性)有 Story2Board/DiffSensei/IP-Adapter 背書,站得住,但別把 % 當事實寫進決策。
B2 估時修正:地基 B「複用雙孤兒、不重寫」低估了 L1——真正成本是把 convert() 從全平行(ThreadPoolExecutor 8 workers)改成兩階段,Phase A 會吃掉現有平行加速;L2/L3 是全新子系統不是接線。
C1:S9 arousal 守門被低估完成度——_AROUSAL_RANK 已存在、update() 已填,只差 enforce() 加回退 ≈ 3 行,併進 S3 做。
C2 優先級錯置:S10(bg canonical)升到②③本週首位(打最高頻「同地點重複出圖」),S5 時間維度降為順手做(很窄的 edge case)。
D 過度工程:M8 cam_idx 與 L3 Retrieval 先擱置(前者在 S1 上線前就投機優化;後者對單劇本一次跑完是過度工程)。
本週只動 S1+S2+S3+S12+S10(全純程式/字串、離線、零新依賴,接線點已逐一查證存在),其餘觀望。
相關檔案(皆絕對路徑):/Users/daihaoting_1/Desktop/ai-matrix/script_to_vn.py(sys_prompt L107-116、_ctx L508、_rolling_context L381、convert L515)、merge_gate.py(_hard_boundary L90、llm_merge_pass L215)、story_state.py(_AROUSAL_RANK L20、enforce L37、context L95 孤兒)、camera_matrix.py、action_keyframes.py(ACTION_KF 21)、dynamic_router.py(無 panel_size)、comic_build.py(孤兒)、ip_adapter_poc.py(已存在)、review-site/storyboard_bible.html。
← 回 hub