跳转到内容

plan() 与 record(program)

纯函数,不加载工程、不动画布:读一个工程 JSON,算出完整时间线。

const plan = window.__kinora.plan(projectJson)
// → 总时长、每镜头的入镜/驻留时长、每个计划步骤的触发时刻、
// 不可达步骤告警、校验 issues

典型用法:AI 写完工程文件后,先用 plan() 验证时长与可达性,再让人工打开。

确定性回放录制:给一个操作程序,引擎按程序时钟驱动切镜头与执行步骤,产出真实 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),结束后自动收尾
  • 手动按空格/切镜头会接管程序时钟——程序即被打断

plan ≈ 你脑内过一遍节奏;record(program) ≈ 一台不会讲错词的提词器+摄像师。

自动化用户想要的是「给我一个时间轴可以校验」——plan() 正中。record 的参数是动作序列而非时间戳列表,和剪辑软件的习惯相反:你写「做什么」,不写「第几帧」——更贴近「讲述」而非「剪辑」的心智,但需要文档给个对照表。