1实现原理 · 为什么它能做到
要治的病是「场景思维」:每几秒换一张新图会让观众每几秒重启一次理解,而失败反馈会以模糊的「看不懂/太满」出现,而不是具体缺陷。
The failure this replaces is scene-thinking. … rather than as a specific defect.
一个持久世界:全片同一空间且永不重置,已出现的元素不被重绘、移动或改标;空间语法在建任何东西前定好并贯穿全片。
### One persistent world … An element, once drawn, is never redrawn, moved, or relabelled.
相机即剪辑:切到新图形会夺走观众方位感,而在不动的空间里移动不付费;并给出 World/Region/Detail 三高度与相邻移动规则。
### The camera is the edit … Moving through a space that stays put costs them nothing.
注意力是聚光灯:任意时刻只有一个元素全亮,其余已画元素保持安静但可读;层级来自亮/静的比值,而不是把整体压暗。
**Exactly one element at full brightness at any moment. Everything else already drawn stays quiet but legible.**
开环是空间性的:不说「我们稍后再回来」,而是在世界里留下可见的未完成物,并按脚本形状选几何(并列项/深流程/分层/对比/新闻/教程)。
Never say "we'll come back to this." Leave something visibly incomplete in the world and return to it.
元素纪律:没被念到就不画——每个形状要么是带标签元素、标签之间的连接线、行进主体或环境底,且每节屏上词数约 20 个。
### If it doesn't get a word, it doesn't get drawn … Nothing else.
全局 token 集是硬约束:笔画 1.5/2.5/4/7、字号 22/30/42/60/84、圆角 10/22/40(恒为超椭圆 2)、五色五义零装饰,并用 token linter 让构建失败。
Full detail in `reference/design-system.md`. … Gate it with a token linter that fails the build.
构建契约把工程事故写成规则:一节一生成器、共享模块禁并行改、装配前给 SVG defs 命名空间、渲染必须 --workers 1。
**Namespace the SVG defs before assembly.** … Cost in the reference build: 35 seconds of empty screen with every gate green. … `--workers 1` on render. Parallel workers make the video layer paint black.
门禁齐备但明确「门禁不能代替亲眼看」:运动平滑必须在连续帧上验证,且每个门都要拿已知会触发的对照验证其有效性。
**Gates do not replace looking**, and gates that have never failed are not gates. … Motion smoothness is verified on contiguous frames, never on beat frames. … Validate every gate against a control … A seam gate that reports zero on a broken build is worse than no gate.
音频审计到声学层而非转写层:全轨死段扫描、1ms 分辨率包络取证、对成片重跑 ASR 与期望文本比对。
**Audit audio at the acoustic level, not the transcript level.** … truncation cliffs and dead holes, not doubled words.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | FFmpeg(转场窗口连续帧条带抽取,用于读运动缺陷) |
| cli | Node 门禁脚本族(使用者项目内生成的 qa-*.mjs / integrate.mjs,非随包分发)与 HyperFrames CLI |
| package | Python 几何/槽位模块(随包分发,供项目 section builder 导入) |
| package | 兄弟资源:仓库根 docs/STORYTELLING-WORKBOOK.md(中性练习表)与本 skill 的 reference/design-system.md |
4风险提醒 风险提醒:蓝色 · 知晓即可
- 规则密度极高,实际执行需要真人投入(逐项门禁 + 连续帧阅读 + 声学审计) — 方法自认慢是有意的,但若团队没有相应工时,最容易被跳过的恰是回报最高的两项:装配体目视与条带读帧。
- 依赖项目内自建脚本(qa-*、build_<id>.py、integrate.mjs)而不随包分发 — SKILL.md 的命令假定使用者已有这些生成器;从零开始需自行搭建,否则门禁名存在但无实现(本 skill 只提供方法与几何模块)。见 second_pass 的 discrepancy 条。
- 几何/坐标纪律是硬约定,违反会静默劣化 — wall.py 头注释声明 SLOT 1 坐标被 build_s01.py 硬编码为 dock 目标;若改坐标而不同步生成器,dock 会错位且不易察觉。
- 素材文本进入生成器源码字符串,缺少转义/消毒条款 — 口播/文章内容会被烘焙进 build_<id>.py 的字面量与标签;含引号或指令式文本的素材可能破坏生成或影响后续节次,需使用者自行处理。
- 文档中的参考数字不可复现(私有构建) — 见 second_pass 的 unlocatable 条:亮度/时长/事故数字来自未随包的参考构建,不能当作可核事实引用。
- 对「门禁未覆盖的主观质量」仍有依赖 — 方法自己承认可读性/图例感不可自动化(绝对像素占比衡量的是文本量),因此最终质量取决于执行者是否真的做静音目视评审。
5第二遍独立确认
- [ok] 两个随包 .py 是否真的无网络/无 env/无子进程(蓝档关键) — wall.py 仅 import os, sys 用于路径常量与 DEFS 字符串(os 未用于 environ/exec);geom.py 仅 import math。全目录 grep 无 requests/urllib/socket/http/os.environ/subprocess/eval。结论:几何模块,无执行面。
- [discrepancy] SKILL.md 的门禁脚本是否真属本 skill(避免把项目内产物算作 skill 资产) — [判定:口径澄清,非缺陷]SKILL.md 的命令写作 node scripts/qa-tokens.mjs、node scripts/build_<id>.py、node scripts/integrate.mjs——这些是使用者项目里生成的脚本,pin 仓库的 skill 目录内不存在(该目录仅 5 个文件)。本报告因此在 internal_assets 只列随包文件,并在 external_deps 标注门禁脚本属项目内生成物。
- [unlocatable] 参考实现的具体数字与事故能否在源码内定位 — SKILL.md 引用的大量参考构建细节(最亮像素 101/255、35 秒空屏、输入口 glitch、被听成 stutters 的 20-40ms 接缝、speaker 在屏约 40%)来自作者对一段私有参考构建的返工记录;pin 仓库内没有该构建的渲染/日志/qa 输出,故这些数字只作「文档声明」记录,不在结论中当已核事实。方法本身(规则名与门禁名)可在 SKILL.md 内逐条定位。
- [ok] 「门禁不能替代人眼」是否只是修辞(会不会把 qa 脚本当通过依据) — SKILL.md 明写 'Gates do not replace looking, and gates that have never failed are not gates.',并要求每条门用已知会触发的 control 验证、在装配体而非 section 原型上验证、可读性必须看 960x540 降采样、运动必须读连续帧条带。规则自洽且可执行。
- [ok] 音频纪律是否与「剪辑不碰词」原则冲突 — SKILL.md 要求在句界插入 4–8 帧房间音(words never touched)、用 40ms 等功率交叉淡入接进尾音衰减、且插入式改动对转写是确定性位移(无需重转写)——与语速/词不被裁切的原则一致,属对反例(硬接造成 cliff)的显式修正。
6结论
af02bf58b5fef932…0d30152a82