1703 Star 的 anidoodle:把画画写成可复现的代码,我在它的确定性契约里看到了工程之美
alexgreensh/anidoodle 是一个 Apache-2.0 的 Agent 技能/插件,把插画、循环动画、互动网页艺术、产品发布片和配乐全部用代码生成,提供 32 种手绘风格与 21 种代码合成曲风,适配 Claude Code、Codex、Grok Build。本文基于仓库源码实测:引擎含 1139 个 TS 文件、约 8.1 万行、84 个工具脚本和 89 个测试,四个后端(playwright/html-player/remotion/hyperframes)共用一个不关心调用方的纯函数绘图核心。重点拆解它最硬核的确定性契约——renderFrame 必须是纯函数、随机数只允许来自带种子的 rng、核心禁用 Math.random/Date/ctx.filter/DOM、缓存键必须命名像素依赖的全部输入、三份外部资产(three.js/字体/旁白)全部哈希锁定,并以 PSNR>45dB 与帧哈希做跨后端校验;以及它如何用一份源码同时产出 PNG/MP4/GIF/透明 WebM/自包含 HTML,让 1410 帧的 47 秒短片首遍之后重渲染零成本。同时如实说清它是插件而非独立 App、需要 Node20+ 与 ffmpeg、照片重绘是代码笔触而非照片级写实、Apache-2.0 的 NOTICE 署名义务,以及那份罕见的、主动记录首跑 0/12 失败事故的诚实工程文化。