
这是什么
一套给 AI 短剧与漫剧创作用的 agent 技能,共十一个,装进已经在用 Agent Skill 规范的助手——Claude Code、Codex,或任何认这个格式的环境——然后在项目目录里写 Markdown 来驱动。其中一个技能负责初始化项目与路由,另外十个覆盖原著分析与改编、故事开发、分集剧本、资产决策、图片提示词、分镜与冻结关键帧、指定目标模型的视频提示词、走 adapter 的确认后生产、剪辑成片和审查。最硬的约束是每集最多五份 Markdown,没有并行的数据库:剧本、视觉设定、分镜、图片提示词、视频提示词就是创作者读和改的东西,盘上其余文件都是脚本自己的记录。跨镜一致性写成可核对的事实而不是愿望:必须跨镜保持的造型变成一条连续性锁,锁面能原样贴进提示词;每一镜要说明依据了哪些设定集条目;参考图按状态区分,已经存在并检查过的、计划要挂的、还缺的,不会混在一起。生成要花钱,所以生产阶段会把这一批的准确内容打出来,创作者确认之前一个接口都不调。本地创作台是只监听回环的 Python 标准库服务加原生前端,读的还是同一批文件,不会变成第二个事实来源。
谁做的拥有并维护这个仓库的组织账号,README 里还列了同组织的另外五个项目。提交几乎全出自一个 GitHub 账号:332 次里 worldwonderer 占 329 次,MrChenfafafa 三次;作者字段在 pitechen、PiteChen、worldwonderer 之间来回换,324 次提交来自同一个邮箱地址。202 次提交带共同作者尾注,且全部指名某个 Claude 模型;README 说这套技能是从团队自 2025 年以来跑过的一千多个短剧项目里蒸馏出来的。
它是怎么搭起来的
组成 · 6核心想法是:AI 视频流水线真正耐久的产物是一份契约,不是一个程序。每个阶段都是可独立安装的技能;一集里创作者可见的状态最多五份 Markdown,由人来拥有和修改;套件持有的每条规则都按谁有权执行来分级,机械事实交给标准库 Python 去核对,判断留给必须引用证据的审查者;凡是要花钱的动作都停在预览上,等一次明确确认。这套分法解释了仓库的形状:文字住在各技能的参考文档里,可执行的部分住在带自测的检查脚本里,本地创作台通过只监听回环的服务读同样五份文件,而不是引入第二个事实来源。它也解释了刻意缺席的东西——没有数据库、没有托管服务、不需要 GPU,也没有第二份项目状态供界面漂移。
- skills/——十一个目录
- 十一个可安装技能,形状一致:
SKILL.md、references/、scripts/、assets/与agents/openai.yaml。第十二个技能不在安装路径上,位于maintainers/skills/short-drama-knowhow。 - skills/short-drama/scripts/ 与 assets/dashboard/
- 项目层。
project_tool.py(101,685 字节)负责初始化项目、路由阶段,并把交付目录连清单与校验和一起导出;creator_markdown_check.py(76,402)核对那五份文档之间的引用;creator_views.py(36,214)与dashboard_server.py(83,782)提供本地创作台,前端是一份 133,200 字节的app.js、一份 65,157 字节的样式表和一份与同团队写作台共用的 token 文件。 - 参考文档库
- 五十来份文档分散在十一个技能里,从 49,092 字节的
script-craft.md到两千字节上下的片段:十五张题材卡、六张制作形态卡、按模型分的方言(minimax-h3.md20,093、seedance-2.5.md9,922、wan-3.0.md7,120),以及一份写明「模型表现反常时该用哪条手艺规则」的目标模型档案。 - .agents/notes/ 与 AGENTS.md
- 152 KB 的二十六篇决策笔记,按 proposed、implemented、rejected 三种状态与六个类别归档,沿用 DeepSeek Harness 的 agent-notes 约定。
AGENTS.md写着四条规矩:非平凡改动前先搜同主题旧笔记;每篇必须有 Problem、Decision、Alternatives considered、Consequences;禁止把一篇笔记改写成相反的决定;不建索引,目录位置就是状态,用rg --hidden检索。 - tests/
- 三十个文件、850 KB,从 125,415 字节的
test_dashboard_server.py、82,703 字节的test_creator_first_golden.py,到 2,400 字节的test_voice_direction.py:到 v0.8.1 有 697 项测试,跑在 Python 3.9 上并配合 ruff、mypy 与 node;另有一份专门的test_guards_bite.py用来验证守卫真的会咬人、交付边界测试,以及一道把维护者材料挡在公共树之外的发布门禁测试。 - evaluations/ 与 examples/
- 证据层。一份 18,319 字节的模型行为观察日志、一道 55,135 字节、带十六个题材用例与评分表的内容质量闸门、一次把 147,010 字节原著拆成二十章摘录的参考运行,以及两个留下来的项目:136 个文件、710 KB 的八集 Golden Sample 作回归夹具,和 README 链接的公开样例集。
取舍,以及它替代了什么
每条规则都按「谁有权执行」分级 替代 一份不分层的良好实践清单
2026-07-16 的笔记定下四级——structural invariant、reviewed invariant、craft default、taste option——于是脚本可以对缺失的引用直接阻断,而一个数值偏好仍然属于创作者。故事开发文档把后果写得很直白:数字形式约束可以记为创作者选择,但不能证明质量。
五份 Markdown 就是创作者可见的唯一状态 替代 一个由界面读取的数据库或结构化存储
README 说没有并行的数据库,改哪份文件就是改哪一层决定。创作台设计文档把它重复成一条交付约束,并补上说创作台只对同样五个文件名分类、从可见文件推导分集进度。
任何付费生成之前先预览并确认 替代 一边写提示词一边直接调供应商接口
README 说确认被刻意放在生产之前:生产技能会展示这一批准确的数量、内容、参考、参数、输出与 adapter,供应商凭据不进项目。PR #185 展示了同一条规则受压时的样子——adapter 档案没有声明支持拿到的音频绑定,任务就在付费调用之前失败,而不是把绑定悄悄丢掉再提交。
把模型实测留在仓库里,连局限一起记成行 替代 把它们当成已经定论的指导发出去
2026-09-08 的笔记把观察日志留在树里,而每次实测自己写着局限——每臂三次、一个镜头、一条执行路径。README 的常见问题复述这条边界:样本小,生成之后仍要核对。
替换掉「单页创作台」这条规则,而不是把它撑大 替代 往一份本来就禁止多视图的设计里加阶段视图
2026-08-06 的产品原则只允许一页、一块常驻阅读区,不要工程模式。2026-09-27 的笔记把它作废,PR 里写明新笔记取代旧笔记并互链,而不是把旧文字改成一致的说法。
依据DESIGN.md(「Short Drama Creator Workspace Design」,5,266 字节)、AGENTS.md、skills/short-drama-develop/references/episode-design.md 及其 2026-07-16 决策笔记、skills/short-drama/SKILL.md、evaluations/README.md、evaluations/model-behavior-probes.md、README.md,以及完整的 558 个文件树及其体积。
制作过程
6 个阶段- 01
九十天、十八个版本,几乎每个提交都出自同一个名字
仓库建于 2026-07-16,当天傍晚 22:50 的第一个提交写着「Open-source release: short-drama Agent Skill suite」。到 2026-09-28,它累计了 332 次提交——7 月 40 次、8 月 208 次、9 月 84 次——和十八个 release,从 2026-07-26 的
v0.1.0到 2026-09-28 的v0.8.1,另有一个始终没成为 release 的 tagv0.3.0-rc.1。版本标题本身就是日程表:v0.4.0 交付十个可独立安装的技能、确认后生产与八集 Golden Sample;v0.6.0 是 Creator-first 五文档工作流;v0.7.0 加入剪辑技能;v0.6.6 记下对白容量终于有了数字、几条模型断言被实测推翻。周围还有 2,413 个星、520 个 fork、8 个 watcher、1 个开着的 issue,以及约 74 MB 里的 558 个文件,MIT 许可,GitHub 归类为 Python。贡献者只有两个账号:worldwonderer 占 332 次里的 329 次,MrChenfafafa 三次;作者字段在pitechen、PiteChen、worldwonderer之间来回换,324 次提交来自同一个地址。202 次提交带共同作者尾注,每一条都指名某个 Claude 模型——Opus 5 一百一十一条、带百万上下文的 Opus 5 六十五条、Opus 5.5 十二条、Fable 5.1 九条、Opus 4.8 两条、Fable 5 两条、Opus 5.5 一条。它不是周末玩具:README 说这套技能是从团队 2025 年以来跑过的一千多个 AI 短剧/漫剧项目、以及近 8 万行逐渐维护不动的自建工具里蒸馏出来的,自建工具里只剩排队抽卡。 - 02
十一个技能,同一种形状,每条规则背后都有一个 Python 文件
skills/下是十一个目录,长得几乎一样:一份SKILL.md、一个放文字规则的references/、一个放检查脚本的scripts/、一个放模板与示例记录的assets/,再加一个小小的agents/openai.yaml——正是它让同一个目录在 Codex 里也看得见。short-drama负责初始化项目、路由与创作台,另外十个是流水线上的各阶段。安装是一条命令npx skills add zenstory-ai/drama-skills -y -g,或者把这些目录软链到~/.claude/skills、${CODEX_HOME:-$HOME/.codex}/skills;README 强调每个目录都是独立安装单元,2026-07-26 的一篇决策笔记把这条写成规则:一个技能不许引用另一个技能的文件。目录里的重量是代码而不是文字:edit_tool.py130,747 字节、project_tool.py101,685、production_tool.py93,209、dashboard_server.py83,782、creator_markdown_check.py76,402、provider_adapters.py70,718,分布在三十一个脚本文件里,每个脚本旁边都躺着一份selftest.py。还有第十二个技能不在安装路径上,位于maintainers/skills/short-drama-knowhow,装的是内部方法——盲评前向评估、卡片与覆盖、晋升台账——公共仓库并不安装它。 - 03
五份 Markdown,和它们底下的结构化记录
一集最多五份 Markdown,旁边刻意不放数据库:剧本、视觉设定、分镜、图片提示词、视频提示词,等到剪片再多一份剪辑单。这个选择的代价写在检查器里。
creator_markdown_check.py读这五份文件,报的是原因而不是「校验失败」;README 把公开样例故意改坏两处来演示——一处是冻结关键帧提示词写到了本镜视觉依据没覆盖的人物,另一处是分镜写 2 秒而视频提示词写成 3 秒——于是打出两行报错,分别点出漏掉的人物和不一致的秒数。Markdown 底下还有一层结构化记录:样例改编的参考运行里,shots.jsonl42,111 字节、motion-specs.jsonl65,244、keyframes.jsonl43,960、image-prompt-specs.jsonl18,586,另有角色、地点、地点视图、造型、道具、道具状态、出现记录、连续性差量与创作者决策。跨镜一致性因此是文件事实而不是指望:必须跨镜保住的造型变成一条连续性锁,锁面能原样贴进提示词;参考图按状态而不是按文件名区分,计划的槽位不会被当成已经存在的图。 - 04
每条规则都写明谁有权执行它
一条没法被反驳的建议没什么用,所以套件给每条规则贴上四级标签之一:
structural_invariant由脚本核对、可以直接阻断;reviewed_invariant要求审查者引用证据;craft_default通常能加强单集,创作者说明理由即可覆盖;taste_option属于创作者——钩子形态、弧线形状、留多少白。2026-07-16 那篇笔记把这套东西叫「规则四级分级与脚本边界」,故事开发参考文档则把读者需要的那条线画出来:数字形式约束可以记为创作者的选择,但不能反过来证明剧情质量。于是数字住在项目里而不是套件里:develop 阶段提出一份节奏档案,创作者接受或改写后写进项目文件、状态才变成已接受;剧本、分镜与审查只拿已接受的数值做算术核对,未接受的档案算未声明,不算默认值。提出用的那张表对每种制作形态各有九个字段——第一个钩子最迟在第 5 秒、情绪触点间隔不超过 30 秒、每集至少一次有对手参与的反转、集尾停在峰值、下一集先接上一集最后一拍、旁白占可发声字数不超过 0.3、目标平均镜长真人 2.5 秒或漫剧 3.0 秒、近景类占比不低于 45%、第一个大爽点最迟在第 1 集——文档里好几个值被明确标成未实测的起点,而不是测量结果。 - 05
被测的是模型,所以他们真的去跑了
这套套件关于视频模型的判断,大多写成
evaluations/model-behavior-probes.md里的一行——一份 18,319 字节的实测日志,而不是转述别人的建议。PR #176 写了方法:约 170 条视频,模型是 MiniMax H3、Seedance 2.5 与 Wan 3.0,每组先跑基线臂,产物去掉臂身份后再盲判,往日志里追加十七行,然后才把结论写回各方言文件——9 秒三切、每切挂一张关键帧的容器把切点误差压在 0.12 秒内,生成次数只有三分之一;写具体取景赢过只写「medium shot」,后者八次里出了远景 3、中远景 3、中景 2;Wan 3.0 的中文自然语速约 4.6 字/秒,装不下的部分会被丢掉;本该闭嘴的内心独白,三种写法十二次里只有四次全程闭嘴,于是改法的方向变成让分镜把嘴放到画面外,而不是继续调措辞。PR #186 接着跑下一轮:反应镜配方在盲评里拿到清晰 3.9/5、自然 4.0/5;每场写一句光并挂定调图之后,第一场的亮度离散从 18.3 降到 6.6、冷暖离散从 9.3 降到 4.2;把同一角色另一句话的合成挂成音色参考,Wan 上相似度从约 0.3 升到 0.69,而 Seedance 只对一部分角色有效。数字后面永远跟着局限——每臂三次、一个镜头、一条执行路径——README 的常见问题也复述了这条边界:样本小,生成之后仍要核对。 - 06
社区报了什么,评审又找出了什么
侦察报告里有三十个 issue 与 pull request 被整篇读过,从 #157 到 #187,外加 issue #168。那个 issue 是用户报告生成出来的视频把台词安到了错误的脸上;回复里量了十九条片段,发现每个说话段的基频都落在 300–370 Hz 的儿童区间——声音一直是对的——最后交付的是两条提示词写法,而不是一句保证。PR #157 则是反方向:一版成片交给了外部 Codex 评审,它找出了作者自己的度量全都没抓到的三处验收盲区。开场七镜从来没有生产过,却没有任何东西出声;画内文字不在任何验收表上,于是模型自己编的一句话正好停在全集落点上;接镜校色过冲,一段实测 −15.9 的镜头被校成 +8.7、成了全片最蓝,而全片色差范围反而更好看。这些修法后来都变成了能力:未采用的镜头必须逐个写出镜号和理由,v0.7.1 起连「001 至 009」这种范围写法都不再接受——拿同一份剪辑单去试,新规则立刻点出八个镜头。另一些 PR 修的是文字本身:一条已经硬化成跨模型禁令、又和工具实际能力冲突的建议被去掉;README 改成围绕真实产出,并补上十条常见问题,来源是若干 issue,验证方式按 PR 自己的说法是三轮独立对抗核对、共 16 个 agent。仓库也留着被否掉的东西:一份 13,546 字节的创作台方案躺在
rejected/里;笔记规则禁止把一篇笔记改写成相反的决定,所以 2026-09-27 用阶段视图取代单页创作台时,新笔记写明取代了旧笔记并互相链接。同一段时间里测试数从 568 走到 571、610、636 和 697,持续集成另有一个 Windows 任务专门回归安装、分集导入与创作台。
相关档案
全部档案 →第 080 号
HarnessRouter
HarnessRouter 的自托管、Apache-2.0 版本:把十六种现成的 agent CLI——Codex、Claude Code、Hermes、DeepSeek Harness 以及另外十二种——放到同一个兼容 OpenAI Responses 的 API 后面,会话、流式进度、文件、取消与结构化失败都在里面;它实现的那套 Unified Harness Protocol,以及用来度量它的 conformance 套件,也一并放在这个仓库里。
第 077 号
Lody
一个让团队共用他们本来就在跑的编码 agent 的工作台:连上一台机器,把 Claude Code、Codex、Kimi 或任何其他说同一套协议的 agent 接进来,然后从桌面端、手机、网页或终端派活;会话之间可以互相派活,而代码始终留在机器主人自己连上来的那台机器上。
第 085 号
OpenBot
CopilotKit 开源的一套 AI 同事平台:每个同事分到一台自己的电脑——一个装着 Chromium、一块工作区卷、一套自己的登录态的容器。同事可以是任何说 AG-UI 的端点;而它对浏览器、文件、MCP 或 shell 做的每一次动作,都要先经过同一个网关——按 CEL 策略裁决、写下一行审计、然后才真的执行,或者拒绝并说出是哪条规则拦下的。