video-workbench/docs/cases/on-the-road-project-evoluti...

441 lines
22 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 《在路上》项目从无到有到全量 slide 完成:文章素材文案
## 文档定位
- 类型:文章素材底稿 / case material。
- 用途:为未来写一篇关于 `video-workbench` 和《在路上》项目实践过程的文章提供素材、时间线、案例细节和可引用表述。
- 状态:素材草稿,不是工作流规则,不替代 `VIDEO_WORKBENCH.md`、`project.md`、`execution-plan.md` 或 `slides/slides.md`
- 项目路径:`projects/2026-06-23-在路上`。
- 当前项目状态:当前 51-shot 表的 shot-image production 已完成,项目进入 assembly / closeout 待启动阶段。
## 一句话主线
这个项目的关键,不只是“用 AI 生成了 51 个画面”,而是从一个还没有稳定形状的视频工作台开始,把一套 GPT 前期策划逐步压缩成本地可执行的项目骨架、视觉系统、参考图规则、slide 生产流水线、子会话协作机制和生产轻量化规则,最后完成了《在路上》当前 51-shot 表的全部图片生产。
更准确地说,它完成了两件事:
1. 《在路上》作为一个 MV / slide-image 项目,从策划文本变成了有视觉系统、有角色锚点、有 51 个画面单元、有完整图片产物的本地生产包。
2. `video-workbench` 作为一个工作台,从“需要摸索机制”演化成了“能用 production-light 直接批量生产,并靠 handoff / callback 可靠续跑”的工作流。
## 可直接放进文章的开场素材
一开始,`video-workbench` 并不是一个已经完全定型的生产系统。它更像一个本地工作间:有方向,有一些相邻仓库,有 GPT 输出的前期规划,也有 Codex 可以执行的本地文件系统,但真正的问题是,怎样把这些东西变成一个可持续生产的视频项目。
《在路上》就是这个工作台的第一个完整压力测试。
它不是从一张 prompt 开始的,也不是从“批量生成 51 张图”开始的。它从一组已经被接受的 GPT V2 策划材料开始MV 总纲、通用表达与视觉系统设计、人物锚点板说明、风格锚点板结构、51-shot 镜头骨架、核心单镜扩展。Codex 的任务不是再写一遍策划,而是把这些材料转成仓库能持续执行的控制文件。
这一步很关键。因为真正能把项目带到结尾的,不是更长的灵感文本,而是几个能被反复读取、被子会话继承、被任务记录续接的文件:`project.md`、`execution-plan.md`、`visual-system/visual-system.md` 和 `slides/slides.md`
从那一刻开始,《在路上》不再只是一个构想,而变成了一个本地生产项目。
## 阶段一:工作台先定边界
在项目早期,`video-workbench` 最先解决的不是图片,而是边界。
仓库被明确成一个“本地视频 / slide 执行工作台”,不是深度文章写作区,不是长期知识库,不是 CCPE canonical agent 存放地,也不是可复用自动化源码仓库。它和周边仓库的关系被切清楚:
- `knowledge-vault` 提供长期知识和来源材料。
- `writing-workbench` 负责深度文章生产。
- `ccpe-system` 提供正式 agent / runtime / model / interface。
- `skills-vault` 提供可复用自动化技能。
- `video-workbench` 只负责把已接受的策划和来源材料,落地成视频 / slide 项目的本地执行文件、素材、prompt、图片和 handoff。
这个边界后来非常重要。它避免了一个常见问题:把 GPT 的规划文本、Agent 机制、Prompt 模板、项目产物、工具源码全部塞进一个目录,最后谁也不知道哪个文件才是当前事实。
最终形成的规则是:真实项目都进入 `projects/<project-id>/`;项目状态写在文件里,不靠移动目录表达;跨阶段交接写在 `handoff/`;可复用能力缺失时写 supplier request而不是在项目里临时发明一套不可复用工具。
## 阶段二:从 GPT 策划到本地执行骨架
《在路上》的输入不是空白 prompt而是一批前期策划文件。Codex 先把它们安置在 `intake/`,再从中抽取本地执行骨架。
这一步形成了四个核心文件:
- `project.md`:项目地图,记录状态、阶段、已接受输入、核心方向、当前执行重点和下一步。
- `execution-plan.md`:执行控制文件,记录当前 medium branch、小批量策略、已完成轮次、当前默认生产路线。
- `visual-system/visual-system.md`:视觉系统权威文件,记录人物、风格、色光、构图、母题和关键镜头规则。
- `slides/slides.md`51-shot 的执行事实表,记录每个 `sNN` 单元的来源、功能、风格锚点、状态和产物。
这里有一个方法论转折GPT 策划不是被复制成新的“真相文件”而是被保留为来源。Codex 维护的是执行控制层。
这套骨架让项目有了长期可读性。后续无论主会话压缩、子会话切换、任务中断、图片失败、prompt 重试,都可以回到这几个文件上继续,而不是依赖某一段聊天记忆。
## 阶段三:视觉系统先于批量生产
《在路上》的视觉核心后来被凝练成一句话:
> 世界比人更大,路比人更长,人只是持续前行的坐标。
英文控制句是:
> World before face; road before pose; the traveler is a small coordinate that keeps moving.
这个规则决定了整个项目不是 portrait MV也不是旅行宣传片而是 landscape-led road documentary / poetic realism。
视觉系统被拆成几个稳定部件:
- 人物50 岁男性旅人,疲惫但没有垮掉,旧长外套、旧背包、旧靴子,形象要能持续走下去。
- 风格 A清晨泥泞旷野世界先于人出现。
- 风格 B高位观察和城市边缘表现系统压力。
- 风格 C泥泞里的星空低处看见宇宙是项目的灵魂画面。
- 风格 D夜路小火远方也有人在走但不是团聚、胜利或露营。
第一批真正重要的生产不是全量镜头,而是锚点验证:
- 人物锚点板 accepted。
- 从人物锚点板切出的透明人物切片 accepted。
- 风格锚点板 accepted。
- C 风格修复样本 accepted。
- 五个核心镜头 S-01、S-10、S-46、S-47、S-51 accepted。
这一步证明了项目的视觉方向:画面可以保持现实质感,也可以有诗性,但不能变成广告、英雄海报、赛博城市、魔法宇宙、露营团建或胜利结尾。
## 阶段四:第一次大问题不是审美,而是引用路径
项目早期曾经出现过一个关键问题: broad generation 的画面能出,但缺少可追溯的 per-shot prompt、真实参考图加载证据和稳定的身份控制。尤其是人物一致性场景不能靠文字描述去维持身份。
这促成了 S14 reference-capable generation investigation。
最后沉淀下来的规则是:
```text
gpt-image-2 Skill Advisor prompt/spec
-> 把真实参考图加载进对话可见上下文
-> 使用宿主 image_gen 生成
-> 把结果复制进项目目录
-> 在 prompt / handoff / slides.md 中记录参考角色和产物路径
```
这个结论非常重要。它把问题从“AI 能不能参考图片”转成了“项目文件怎样记录参考图片被如何使用”。也就是说,技术可行性不再反复争论,后续重点转向生产追踪和工作流清洁度。
从这里开始,`gpt-image-2` 在项目中承担的是 prompt/spec Advisor而不是默认 Garden / API 出图路径。身份关键画面必须加载真实参考图;在 prompt 里写本地路径只算 traceability不算真正加载。
## 阶段五:从单张试验到 slide task orchestration
为了让长生产可控,项目把每个画面、页面、镜头单元统一叫 `slide`。每个 slide 有自己的目录:
```text
slides/sNN/
sNN-vN-brief.md
sNN-vN-prompt.md
sNN-vN-image.png
sNN-vN-review.md # 只在 test/audit 或显式 review 时出现
```
这里又形成了一个重要原则append-only。
每次新执行都扫描已有 `sNN-v*-*` 文件,选择下一个未占用版本。旧版本即使失败,也保留为历史证据。默认 `Overwrite allowed: no`
这个规则不是形式主义。它是从实际失败里长出来的。早期有 broad-run 候选、覆盖缺陷、重复 worker、transport failure、 rejected image、incomplete evidence。只要允许“为了让目录好看而覆盖旧文件”项目历史就会被抹掉后续根本无法判断哪个 prompt 生成了哪个图,哪个失败被修复过,哪个版本是用户真正接受的。
所以最终形成的共识是:失败不是垃圾,失败是生产系统的一部分证据。
## 阶段六Agent 流程的试错
角色一致性阶段最早使用的是主会话、可见子会话和内部 one-shot slide Agent 的组合。
这个阶段产生了很多有效结果,也暴露了机制问题:
- S-05 单张试验证明了 reference-capable route 可以跑起来,但也留下了 overwrite defect 的历史记录。
- S-21、S-14、S-25 等画面视觉上被接受,但 S-14 出现了 duplicate worker 问题。
- session-04 处理 S-33 和 S-06形成更干净的 visible child session + one-shot SubAgent 模式。
- R4 处理 S-02、S-03、S-04 时,图片被接受,但 brief / packet ownership 出现偏差:文件由 slide Agent 写,而不是由 visible child session 预先拥有。
- R5 处理 S-07、S-08、S-09 时,修正了 brief ownership让成功输出在 worker 启动前已有 child-owned brief / packet。
这一段的意义在于:项目并不是一次设计出完美工作流,而是用实际画面生产暴露机制缺陷,再把缺陷转成规则。
早期的 Agent 并不是失败。它们帮助证明了 per-slide isolation、返回 receipt、reference role、review suppression、append-only retry 等机制。但当项目进入正式生产时,这套机制显得太重。
## 阶段七callback-only 和父子会话关系定型
长任务真正可持续,还需要解决一个上下文问题:主会话不能一直盯着子会话轮询,也不能把所有生产细节都塞回父线程。
R6 阶段把 callback-only 流程验证出来:
- 子会话完成所有允许的项目写入。
- 子会话更新 `slides/slides.md`
- 子会话写 compact `child-session-handoff.md`
- 子会话最后一步 callback 父会话。
- callback 后子会话不再写文件、不再检查项目。
这改变了主会话的职责。主会话不再是细节审计员,而是调度者和用户接口。它只需要读 callback 和 handoff 中的关键字段:
- status
- topology
- resolved versions
- image paths
- problems
- needs_user。
如果 clean completion没有问题父会话就不再打开 prompt、图片细节、return ledger 重新审一遍。
这一步对后来的批量生产非常关键。它把生产从“人盯着每个 worker 过程”变成“文件状态 + callback 驱动的可续跑流程”。
## 阶段八:从 test/audit 到 production-light
项目真正提速发生在 R7。
在 R7 之前,很多生产还围绕 Agent / packet / return / review / completion gate 展开。这适合 test/audit但不适合正式批量生产。
R7 的核心优化是 production-light
- normal production 由 clean child session 直接完成。
- 不默认启动 Agent / SubAgent。
- 不默认写 packet / return。
- 不默认写 review 文件。
- 不做 routine final audit。
- 保留必要的写入保护版本扫描、append-only、no overwrite、slides.md 更新、compact handoff、callback final action。
这个优化不是偷懒,而是把已经被证明的流程从“测试形态”压缩成“生产形态”。
session-12 先生成 S-26、S-27、S-28用户接受记录约 25m48s / 134K tokens。
session-13 再生成 S-29、S-30、S-31直接 child session、无 Agent/SubAgent用户接受记录约 10m32s / 114K tokens。
从 session-13 开始direct-child production-light 成为正式默认模型。
## 阶段九:容量验证
生产路线定型后,项目继续做容量验证,而不是立刻假设可以无限扩张。
先是 5-slide validation
- 范围S-32、S-34、S-35、S-36、S-37。
- topologydirect child。
- reviewnone。
- 结果:五张图被用户接受。
- 用户观察callback 时约 152K tokens / 58% context最终约 164K tokens / 63% context。
- 发现callback-order defect子会话在 callback 后仍做了部分文档 / 检查工作。
- 修正:未来 child prompt 必须明确 callback 是最终动作。
然后是 8-slide compression validation
- 范围S-38 到 S-45。
- topologydirect child。
- reviewnone。
- 结果8 张图进入 production-pass。
- 用户观察174K tokens / 67% context / 38m37s。
- 机制结果callback-final contract 被验证callback 后没有再观察到 child project writes 或 checks。
这一步把普通 production-light 子会话容量提升到最多 8 个 ordinary slides同时保留降级规则身份重、修复重、核心风险高或上下文昂贵的任务仍然用 1 到 3 个 slide。
## 阶段十:最后一包 S48-S50 收口
最后的默认生产范围只剩 S-48、S-49、S-50。
这一包已经不再是工作流发明,也不是机制辩论。它按已经定型的 production-light route 直接执行:
- direct child session
- no Agent/SubAgent
- review mode none
- 写 brief、prompt、image
- 更新 `slides/slides.md`
-`child-session-handoff.md`
- callback 父会话作为最终动作。
最终记录:
- S-48 -> `s48-v1-image.png`
- S-49 -> `s49-v1-image.png`
- S-50 -> `s50-v1-image.png`
- child reported `complete`
- `problems: none`
- `needs_user: none`
- parent verification found expected files present, review files absent, slide rows updated, and no post-callback child writes。
到这里,当前 51-shot 表的 shot-image production 完成。项目状态进入 assembly-closeout。
## 素材时间线
### 0. 工作台定位期
- 明确 `video-workbench` 是本地视频 / slide 执行工作台。
- 确立 `projects/` 为唯一真实项目根。
- 确立 `project.md`、`execution-plan.md`、`visual-system/`、`slides/`、`tasks/` 的职责。
- 确立 GPT / User / Codex 分工。
### 1. 《在路上》项目初始化
- 接收 GPT V2 前期策划文件。
- 清理 intake。
- 提取四文件执行骨架。
- 建立 51-shot `slides/slides.md` 事实表。
- 确立核心视觉方向landscape-led road documentary / restrained poetic realism。
### 2. 视觉锚点建立
- 人物锚点板 accepted。
- 透明人物切片 accepted。
- A/B/C/D 风格锚点建立。
- C 风格修复 accepted。
- 五个 anchor-test shots acceptedS-01、S-10、S-46、S-47、S-51。
### 3. 参考图机制证明
- S14 investigation 证明 host visible-context reference path 可用。
- 项目规则更新为 `gpt-image-2 Advisor + loaded reference image + host image_gen`
- identity-critical shots 不允许 text-only 身份生成。
### 4. 角色一致性和 per-slide traceability
- 从 S-05、S-21、S-14、S-25、S-33 等试验开始。
- 发现并记录 overwrite、duplicate worker、brief ownership、transport failure 等问题。
- 固化 append-only、no overwrite、one-shot worker、review suppression、visible-reference evidence 等规则。
### 5. callback-only 定型
- 子会话完成写入和 handoff 后 callback 父会话。
- 父会话不再 routine polling。
- clean callback 后父会话只消费 compact handoff。
### 6. production-light 定型
- session-12S-26、S-27、S-28 accepted。
- session-13S-29、S-30、S-31 direct-child accepted。
- direct-child, no-Agent, review none 成为正式生产默认路线。
### 7. 容量验证
- 5-slide validationS-32、S-34、S-35、S-36、S-37 accepted发现 callback-order defect。
- 8-slide validationS-38 到 S-45 production-pass验证 callback-final contract。
- 默认 ordinary package size 提升到最多 8 slides。
### 8. 完成当前 51-shot 表
- final packageS-48、S-49、S-50 complete。
- 当前 51-shot shot-image production complete。
- 下一阶段转入 assembly / export / closeout。
## 可以支撑文章的几个观点
### 观点一AI 生产不是 prompt 工程,而是本地执行系统工程
《在路上》不是靠一条万能 prompt 完成的。它靠的是文件结构、版本策略、参考图规则、子会话边界、callback、handoff 和生产线轻量化。
Prompt 很重要,但 prompt 只有在能被追溯、能被续跑、能和参考图 / 版本 / 输出路径绑定时,才真正成为生产资产。
### 观点二:失败记录比成功截图更有价值
项目里保留了 rejected image、incomplete evidence、transport failure、duplicate worker、sequencing warning、callback-order defect。它们没有被清掉而是被转化为规则。
这些失败让系统知道:
- 不能覆盖旧文件;
- 不能把 text-only 当身份参考;
- 不能让 worker 抢写 brief
- 不能 callback 后继续写文件;
- 不能每次都重开完整 audit。
### 观点三:正式生产不是更复杂,而是把复杂度收回去
早期 `test/audit` 需要 Agent、packet、return、review、completion gate。它适合发现问题。
但正式生产阶段,复杂度必须被压缩。`production-light` 的价值就是在保留必要安全线的前提下,去掉 routine review、routine audit、packet / return 和默认 Agent把生产变成 direct-child package。
这不是降低标准,而是把“已经证明过的标准”变成更低成本的执行方式。
### 观点四:长任务续跑靠文件,不靠记忆
`project.md``production-run-status.md`,从 `slides/slides.md``child-session-handoff.md`,整个项目不断把聊天过程固化为可读文件。
这使得主会话压缩、子会话切换、上下文中断都不再是灾难。下一轮只要按 load order 读文件,就能继续。
### 观点五:人的角色不是每张图都 review而是决定何时相信生产线
`production-light` 阶段,用户不再逐张 image review。用户做的是更高层的判断
- 核心路线是否成立;
- 哪些包可以进入 production-pass
- 默认生产容量能不能从 3 张提升到 5 张、再到 8 张;
- 什么时候停止生产,转入 assembly / closeout。
这改变了人机协作的焦点:人不是流水线质检员,而是生产路线的 owner。
## 可引用句子
- 《在路上》的完成,不是“生成 51 张图”的故事,而是“把一个不稳定的 AI 生产现场,逐步压成可续跑生产线”的故事。
- GPT 给了方向Codex 把方向变成文件系统里的执行秩序。
- 真正让项目继续下去的,不是某一次聊天记忆,而是 `project.md`、`execution-plan.md`、`slides.md` 和 handoff。
- 失败没有被抹掉。失败被留在版本里,变成下一条规则。
- 从 test/audit 到 production-light核心变化不是更大胆而是更克制。
- 生产线成熟的标志,不是记录越来越多,而是知道哪些记录可以不写。
- 当 callback 成为子会话的最后动作,长任务才真正从“盯进度”变成了“等状态”。
- 人不必 review 每张图,但必须决定什么时候一条路线已经值得信任。
- 这个项目的经验是AI 创作要规模化,必须先把创作过程变成可追溯的本地工程。
## 文章可展开的结构建议
### 写法 A项目复盘型
1. 开头:为什么不是 prompt 成功,而是工作流成功。
2. 第一部分:`video-workbench` 为什么要先定边界。
3. 第二部分:《在路上》如何从 GPT 策划变成四文件执行骨架。
4. 第三部分:视觉系统如何用 A/B/C/D 和人物锚点稳定下来。
5. 第四部分reference-capable generation 为什么是关键转折。
6. 第五部分:从 Agent-heavy 到 production-light 的演化。
7. 第六部分:容量验证和全量完成。
8. 结尾AI 视频生产的真正对象,是“可续跑生产线”。
### 写法 B方法论型
1. 输入不是 prompt是 accepted intake。
2. 输出不是图片,是 append-only project state。
3. 审美不是感觉,是 visual-system rule。
4. 失败不是删掉,是版本化。
5. 协作不是等人盯,是 callback。
6. 批量不是并行,而是轻量生产线。
### 写法 C人机协作型
1. GPT 负责想象和策划。
2. 用户负责决定与接受。
3. Codex 负责本地化、执行、记录和续跑。
4. 子会话负责小批量生产。
5. 文件系统负责记忆。
6. 最后形成的不是一个 prompt而是一套可被复用的生产经验。
## 关键证据路径
项目状态与结论:
- `projects/2026-06-23-在路上/project.md`
- `projects/2026-06-23-在路上/execution-plan.md`
- `projects/2026-06-23-在路上/slides/slides.md`
- `handoff/2026-06-25-on-the-road-formal-production-handoff.md`
视觉系统:
- `projects/2026-06-23-在路上/visual-system/visual-system.md`
- `projects/2026-06-23-在路上/visual-system/style/style-prompt-master.md`
- `projects/2026-06-23-在路上/visual-system/characters/character-reference-registry.md`
工作流规则:
- `VIDEO_WORKBENCH.md`
- `docs/workflows/project-lifecycle.md`
- `docs/workflows/slide-task-orchestration.md`
- `docs/workflows/slide-task-templates.md`
关键 handoff
- `handoff/2026-06-24-on-the-road-workflow-continuation-handoff.md`
- `handoff/2026-06-24-character-consistency-r6-notification-s16-handoff.md`
- `handoff/2026-06-25-on-the-road-formal-production-handoff.md`
后期生产任务:
- `projects/2026-06-23-在路上/tasks/2026-06-25-production-capacity-validation/production-run-status.md`
- `projects/2026-06-23-在路上/tasks/2026-06-25-8slide-compression-validation/production-run-status.md`
- `projects/2026-06-23-在路上/tasks/2026-06-25-final-production-s48-s50/production-run-status.md`
## 待补充素材
这些内容如果未来写正式文章,建议再补:
- 选几张关键图片作为插图人物锚点板、C 修复样本、S-16 rejected / accepted 对照、8-slide validation 中的一组连续画面。
- 补一段用户视角:为什么《在路上》的主题需要“世界先于人”。
- 补一段操作截图或目录截图:展示 `slides/sNN/sNN-vN-*` 的 append-only 结构。
- 如果文章面向工程读者,可加入 callback-only 子会话流程图。
- 如果文章面向创作者,可弱化 Agent / token 细节,强化“从灵感到生产线”的叙事。