plan() 与 record(program)
__kinora.plan(projectJson)
Section titled “__kinora.plan(projectJson)”纯函数,不加载工程、不动画布:读一个工程 JSON,算出完整时间线。
const plan = window.__kinora.plan(projectJson)// → 总时长、每镜头的入镜/驻留时长、每个计划步骤的触发时刻、// 不可达步骤告警、校验 issues典型用法:AI 写完工程文件后,先用 plan() 验证时长与可达性,再让人工打开。
__kinora.rec.record({ program })
Section titled “__kinora.rec.record({ program })”确定性回放录制:给一个操作程序,引擎按程序时钟驱动切镜头与执行步骤,产出真实 Take(与手动按空格等效)。
await window.__kinora.rec.record({ program: [ { go: 'shot:1' }, // 切到镜头 { step: 0 }, // 执行第 0 步 { waitMs: 1200 }, // 等 1.2s { go: 'shot:2' }, { waitMs: 2500 }, ],})- 程序里任何一步不合法(shotId 不存在、step 越界)→ 整条作废,诚实报错,不会产出半条
- 录制中编辑被锁(
locks().recEditLocked),结束后自动收尾 - 手动按空格/切镜头会接管程序时钟——程序即被打断
与 UI 的对应
Section titled “与 UI 的对应”plan ≈ 你脑内过一遍节奏;record(program) ≈ 一台不会讲错词的提词器+摄像师。
人类会怎么想
Section titled “人类会怎么想”自动化用户想要的是「给我一个时间轴可以校验」——plan() 正中。record 的参数是动作序列而非时间戳列表,和剪辑软件的习惯相反:你写「做什么」,不写「第几帧」——更贴近「讲述」而非「剪辑」的心智,但需要文档给个对照表。