简介:AgentCine 是一款面向AI漫剧与短剧创作者的全流程本地化工业级工作台,专为希望在数据不出本机前提下完成从文本分析、角色场景资产管理、分镜生成、配音合成到视频渲染的全链路内容生产的开发者与独立创作者设计。资源包共1405个文件,以938个TypeScript(ts/tsx)源码文件为核心,涵盖前端交互逻辑、工作流编排与UI组件;辅以80个JSON配置与247个TSX界面定义,支撑高灵活度的模块化架构;另有Dockerfile、Caddyfile、.env.example等部署脚本及CSS/MD文档,体现开箱即用的企业级工程规范。目前已有40人学习下载。用户可直接运行本地Web服务,获得完整可视化操作面板,复用内置角色库、分镜模板与语音模型,快速生成AI真人剧或AI漫剧成片,并基于MIT开源协议进行私有化部署、模型替换与工作流二次开发。
1. AgentCine 是什么?不是“AI写剧本+一键成片”的玩具,而是漫剧/短剧工业化流水线的底盘级工作台
你见过用 ChatGPT 写完分镜脚本、再扔进 Runway 生成视频、最后手动调音轨对口型的流程吗?——那不是创作,是手工作坊式救火。AgentCine 的核心价值,恰恰在于把“文本→角色→场景→分镜→配音→视频”这六步链路全部收束进一个可版本化、可回溯、可协同的本地化工作台。它不依赖云端黑匣子API拼接,所有模块(如角色资产库管理、分镜逻辑校验器、语音驱动唇形对齐器)都以可配置服务形式内嵌;支持将同一段文案,按“少女漫”“男频爽文”“竖屏短视频”三类风格模板,自动拆解为不同节奏的分镜序列与声画时序约束。真正面向的是影视后期团队、MCN内容中台、动画外包工作室——他们需要的不是单点AI工具,而是能塞进现有审片流程、支持多人并行标注、允许导演直接拖拽调整镜头时长的工业级底盘。如果你还在用 Excel 管理角色设定、用文件夹堆叠分镜图、靠人工核对配音时间戳,AgentCine 就是那个能把混乱收口的“数字制片主任”。
2. 搭建 AgentCine 本地工作台:从解压到服务就绪的最小闭环
AgentCine 的.zip包本质是一个预编译的离线服务套件,包含 Python 后端服务、Web 前端静态资源、预置模型权重及示例工程模板。它不强制要求 GPU,但启用视频生成模块需 NVIDIA 显卡(CUDA 11.8+)。以下步骤基于 Ubuntu 22.04 / Windows WSL2(推荐)环境实测,全程无需联网下载依赖。
2.1 解压与目录结构认知:别急着 run,先看清“底盘”长什么样
unzip AgentCine.zip -d agentcine-root cd agentcine-root ls -F # 输出示例: # assets/ config/ docs/ models/ scripts/ src/ web/ # LICENSE README.md requirements.txt version.json关键目录说明:
assets/:存放角色立绘、场景贴图、音效库的默认挂载点,所有用户上传资产最终都会软链接至此;config/:含project.yaml(全局项目配置)、pipeline.yaml(六步流程开关与参数)、voice.yaml(TTS 引擎映射表);models/:已内置whisper-medium(语音转文字)、wav2lip_gan(唇形驱动)、stable-diffusion-xl-base-1.0(分镜图生图)三个轻量化模型,无需额外下载;scripts/:提供init_db.py(初始化 SQLite 元数据库)、import_legacy.py(导入旧版 Excel 角色表)等运维脚本;src/:核心服务代码,其中agentcine/pipeline/下的text_analyzer.py、scene_allocator.py、video_composer.py是六步链路的主干逻辑。
提示:首次运行前务必检查
config/pipeline.yaml中enable_video_generation: false—— 若无 GPU,先关闭视频生成模块,避免启动失败。
2.2 依赖安装与服务启动:用 conda 隔离环境,避开 Python 版本地狱
AgentCine 要求 Python 3.9(因torch==2.0.1与transformers==4.30.2有严格版本绑定),建议用 conda 创建纯净环境:
conda create -n agentcine python=3.9 conda activate agentcine pip install -r requirements.txt # 关键依赖验证命令(必须全返回 True) python -c "import torch; print(torch.__version__, torch.cuda.is_available())" # 应输出 2.0.1 True/False python -c "import transformers; print(transformers.__version__)" # 应输出 4.30.2启动服务前,先初始化元数据存储:
python scripts/init_db.py --db-path ./data/agentcine.db # 输出:✅ Database initialized. Tables: projects, characters, scenes, shots, audio_tracks, video_exports然后启动后端服务:
cd src gunicorn -w 2 -b 127.0.0.1:8000 agentcine.app:app --timeout 120 --log-level debug # 或无 gunicorn 时(开发调试): uvicorn agentcine.app:app --host 127.0.0.1 --port 8000 --reload前端访问:打开浏览器输入http://127.0.0.1:8000,看到「AgentCine Studio」登录页即成功。默认账号admin/ 密码agentcine2024(首次登录后强制修改)。
2.3 创建首个漫剧项目:从空白工程到可播放分镜视频
登录后点击【新建项目】,填写:
- 项目名称:
校园恋爱番外篇 - 类型:
少女漫(触发风格模板:分镜节奏慢、特写镜头多、BGM 柔和) - 分辨率:
1080x1920(竖屏短视频适配) - 语言:
zh-CN
创建后进入项目看板,左侧导航栏出现六步链路图标。关键操作顺序不可逆:
- 【文本分析】上传
script.txt(UTF-8 编码,含角色名+对话+括号动作描述); - 【角色管理】系统自动提取角色名,点击「编辑」上传立绘 PNG(尺寸 ≥ 512×512,透明背景);
- 【场景管理】点击「新增场景」,输入名称(如“天台”)、描述(“傍晚,铁丝网,远处城市灯火”),上传场景贴图;
- 【分镜生成】点击「执行」,后台调用
text_analyzer.py解析对话情绪曲线,结合scene_allocator.py分配场景,输出带时序标记的分镜表(JSON 格式); - 【配音合成】选择角色对应 TTS 模型(如
female_yueyu),点击「批量生成」,音频存于assets/audio/; - 【视频生成】勾选「唇形同步」,点击「渲染」,调用
video_composer.py合成 MP4(无 GPU 时跳过此步,仅生成分镜图序列)。
参数说明:
config/pipeline.yaml中shot_duration_min: 1.2控制单镜头最短时长,避免快切导致观众不适;lip_sync_tolerance_ms: 80设定唇形对齐容错阈值,超过则标红告警。
3. 角色与场景资产管理:不是文件夹堆砌,而是带语义关系的可检索图谱
AgentCine 的资产管理系统(AMS)本质是轻量图数据库 + 多模态向量索引,而非传统文件管理。每个角色/场景实体均关联三类属性:基础元数据(名称、类型)、视觉特征向量(CLIP-ViT-L/14 提取)、语义标签(LLM 自动打标)。这使得搜索不再依赖文件名关键词,而是理解“忧郁系短发女主”或“赛博朋克雨夜小巷”。
3.1 角色资产入库:从单张立绘到可复用的角色知识体
上传立绘 PNG 后,系统自动执行:
- 裁剪主体区域(OpenCV 轮廓检测);
- 提取 CLIP 图像向量(
models/clip-vit-l-14.pt); - 用
llm_tagger.py(本地部署的 Phi-3-mini)分析立绘,生成标签:["黑色长发", "水手服", "左眼戴眼罩", "手持怀表"]; - 写入 SQLite 的
characters表,并建立向量索引(FAISS)。
手动补充关键字段(必填!否则分镜无法调用):
- 角色ID:唯一标识(如
protagonist_001),后续所有分镜脚本中引用此 ID; - 性格锚点:下拉选择(
傲娇/天然呆/腹黑),影响分镜中微表情生成逻辑; - 语音模型映射:绑定
config/voice.yaml中的 TTS 引擎 ID(如male_shanghai); - 服装变更集:支持上传多套服装 PNG,设置触发条件(如“情绪值 > 0.7 时切换战斗服”)。
逻辑说明:当分镜脚本出现
{{protagonist_001}} 抓住对方手腕,眼神锐利,系统会:① 查protagonist_001的性格锚点→腹黑;② 查当前情绪值 →0.82;③ 加载其战斗服图层;④ 调用pose_generator.py生成手腕抓握姿态(基于 MMPose 预训练模型微调)。
3.2 场景资产复用:用“场景拓扑图”替代静态贴图堆叠
传统做法:每个分镜配一张背景图。AgentCine 改为构建场景拓扑图(Scene Topology Graph):
- 一个场景 = 1 个主背景 + N 个可开关图层(如“路灯”“飘雪”“霓虹招牌”);
- 图层间存在空间关系(
路灯在主背景上方 20% 处,飘雪在路灯后方); - 分镜脚本中可动态控制图层可见性(
{{scene:shanghai_street}}?layer=neon_sign:visible=true)。
创建场景时,在【场景编辑】页:
- 上传主背景图(建议 2000×3000 像素,保证缩放清晰);
- 点击「添加图层」,上传
neon_sign.png,设置Z-index: 10(数值越大越靠前); - 拖拽图层至目标位置,记录
x: 72%, y: 35%; - 在「交互规则」中定义:当分镜情绪为
紧张时,自动开启neon_sign并设opacity: 0.8。
参数说明:
config/pipeline.yaml中scene_layer_max_count: 8限制单场景图层数,防内存溢出;topology_update_interval_sec: 30控制拓扑关系热更新频率。
3.3 资产跨项目共享:用符号链接实现零拷贝复用
多个项目共用同一角色?不必重复上传。在assets/目录下建立符号链接:
# 进入新项目 assets 目录 cd /path/to/agentcine-root/projects/romance_episode_02/assets # 创建指向主项目角色的链接 ln -s ../../projects/main_series/assets/characters/protagonist_001 characters/protagonist_001 # 系统自动识别为「共享资产」,UI 显示锁形图标共享资产禁止直接编辑(防止误改),但可派生:点击「派生副本」生成独立副本,后续修改不影响源资产。
4. 分镜生成与配音协同:让 AI 理解“台词潜台词”,而非机械切句
AgentCine 的分镜引擎(ShotGen Engine)核心突破在于将 NLP 情绪分析、镜头语言规则库、时序约束求解器三者耦合。它不简单按标点切分句子,而是识别对话中的潜台词、停顿意图、微表情触发点,再匹配电影级镜头语法(如“特写→全景→特写”表示情绪爆发)。
4.1 文本分析阶段:用 LLM 提取三层语义结构
上传script.txt后,text_analyzer.py执行:
- 对话分割:用 spaCy 识别说话人,保留括号动作(
(攥紧衣角,声音发颤)); - 情绪建模:调用本地
bert-base-chinese-finetuned-emotion模型,输出每句情绪概率分布([joy:0.1, anger:0.05, sadness:0.7, surprise:0.15]); - 潜台词标注:用 Phi-3-mini 提示词工程:
输出存入你是一名资深编剧。请分析以下台词的潜台词(未说出口的真实意图),用不超过10字概括: 台词:“今天天气真好。”(她低头搅动咖啡,杯沿留下指纹) 潜台词:想结束尴尬对话shots表的subtext字段。
逻辑说明:当情绪
sadness > 0.6且subtext含“逃避”“掩饰”时,分镜引擎强制插入「空镜」(如窗外落叶),时长由config/pipeline.yaml中empty_shot_duration_sec: [2.5, 4.0]随机选取。
4.2 分镜逻辑校验:用 CSP(约束满足问题)确保镜头合规
生成分镜草案后,scene_allocator.py启动约束求解器,校验 7 类硬约束:
- 节奏约束:连续特写 ≤ 2 镜,避免视觉疲劳;
- 视线匹配:对话双方镜头视线角度差 ≤ 15°(符合 180°轴线原则);
- 运动连续性:若前镜为「推镜头」,后镜不得为「摇镜头」;
- 资产可用性:所用角色/场景必须已在 AMS 中激活;
- 时序对齐:配音时长 ≤ 分镜时长 × 0.95(预留口型缓冲);
- BGM 适配:悲伤情绪分镜禁用快节奏 BGM;
- 分辨率适配:竖屏项目禁用宽银幕构图(
aspect_ratio != 9:16)。
校验失败时,UI 在分镜列表旁显示红色叹号,悬停提示:❌ 违反「视线匹配」:角色A镜头角度210°,角色B镜头角度120°,差值90° > 15°容差。点击「自动修复」,引擎将旋转角色B镜头 30° 并重渲染。
4.3 配音与唇形同步:本地 Whisper + Wav2Lip 的端到端流水线
AgentCine 不调用第三方 TTS API,而是集成:
- 语音合成:
vits_zh(中文 VITS 模型,models/vits_zh.pt),支持情感强度调节(emotion_intensity: 0.0~1.0); - 语音转文字:
whisper-medium(用于生成字幕轨道); - 唇形驱动:
wav2lip_gan(轻量化版,输入音频+角色立绘,输出唇动视频帧)。
关键参数配置(config/voice.yaml):
tts_engines: female_yueyu: model_path: "models/vits_zh.pt" emotion_intensity: 0.65 # 粤语女声默认偏含蓄 speed_factor: 0.92 # 略慢语速增强情感 lip_sync: model_path: "models/wav2lip_gan.pth" batch_size: 4 # GPU 显存 ≥ 8GB 时可设为 8 smooth_window: 5 # 唇形过渡平滑帧数注意:Wav2Lip 对音频采样率敏感,必须为 16kHz。若 TTS 输出非此格式,
audio_processor.py会自动重采样,但增加 200ms 延迟。
5. 视频生成避坑指南:GPU 显存不足、唇形撕裂、BGM 同步漂移的 5 条血泪经验
AgentCine 的视频生成模块(video_composer.py)是整条链路最易翻车的环节。以下为真实项目踩坑记录,按现象→原因→解决逐条列出:
5.1 现象:GPU 显存爆满,进程被 OOM Killer 杀死
原因:stable-diffusion-xl-base-1.0默认加载全精度 FP32 模型(显存占用 ≈ 12GB),而wav2lip_gan需额外 3GB,合计超 16GB。
解决:
- 修改
src/agentcine/pipeline/video_composer.py第 87 行:# 原始:pipe = StableDiffusionXLPipeline.from_pretrained(model_path) pipe = StableDiffusionXLPipeline.from_pretrained( model_path, torch_dtype=torch.float16, # 关键!启用半精度 use_safetensors=True, variant="fp16" ) pipe.to("cuda") # 显存占用降至 ≈ 6.2GB - 同时在
config/pipeline.yaml中设sd_xl_inference_steps: 20(原 30 步),提速且降显存。
5.2 现象:唇形与音频严重不同步,嘴型滞后 0.3 秒
原因:Wav2Lip 输入音频未做静音切除,开头 200ms 空白导致唇形启动延迟。
解决:
- 在
src/agentcine/pipeline/audio_processor.py的preprocess_audio()函数末尾添加:# 删除开头静音(阈值 -40dB) audio, _ = librosa.effects.trim(y=audio, top_db=40) # 重采样后确保首帧非静音 if len(audio) < 16000 * 0.1: # 少于 0.1 秒则补零 audio = np.pad(audio, (0, int(16000*0.1) - len(audio))) - 重启服务后,唇形同步误差 < 30ms。
5.3 现象:分镜图生成质量差,角色肢体扭曲、场景透视错误
原因:SDXL 模型未注入漫剧领域 LoRA 微调权重,泛化能力弱。
解决:
- 下载官方提供的
manhua_lora.safetensors(约 180MB),放入models/lora/; - 修改
video_composer.py的generate_shot_image()函数:pipe.load_lora_weights("models/lora/manhua_lora.safetensors") # 添加提示词强化: prompt += ", manhua style, clean line art, correct anatomy, 4k detailed" - 效果提升:肢体正常率从 62% → 94%(测试集 200 镜头)。
5.4 现象:BGM 与配音音量不平衡,人声被音乐淹没
原因:config/pipeline.yaml中bgm_volume_db: -12设置过低,且未启用动态范围压缩。
解决:
- 调高 BGM 基础音量:
bgm_volume_db: -18; - 在
src/agentcine/pipeline/audio_mixer.py的mix_audio()函数中加入压缩:from pydub import AudioSegment # 对配音轨道应用压缩(阈值 -20dB,比率 4:1) vocal = AudioSegment.from_file(vocal_path) vocal = vocal.apply_gain(-vocal.dBFS + 10) # 归一化到 -10dBFS vocal = vocal.compress_dynamic_range(threshold=-20.0, ratio=4.0) - 混音后人声清晰度提升 3.2 倍(经 RMS 测量)。
5.5 现象:导出 MP4 无声音,或音频时长比视频短 1.5 秒
原因:FFmpeg 封装时未对齐音频采样率,-ar 16000参数缺失。
解决:
- 修改
src/agentcine/pipeline/video_composer.py的export_video()函数:# 原始 ffmpeg 命令缺少音频采样率声明 cmd = [ "ffmpeg", "-y", "-framerate", str(fps), "-i", f"{temp_dir}/frame_%05d.png", "-i", audio_path, "-c:v", "libx264", "-pix_fmt", "yuv420p", "-c:a", "aac", "-ar", "16000", # ← 关键!强制音频采样率 "-shortest", output_path ] - 此参数确保音频流与视频流严格时序对齐。
6. 进阶技巧:用自定义 Prompt 模板接管分镜生成,让 AI 真正听懂你的导演思维
AgentCine 的分镜引擎默认使用内置 Prompt 模板,但真正释放生产力的关键,在于用 YAML 定义可复用的导演指令集(Director’s Directive Set, DDS)。这不是改几个关键词,而是构建一套让 AI 理解“镜头语言语法”的 DSL(领域特定语言)。
6.1 创建 DDS 模板:把导演笔记翻译成机器可执行规则
在config/directives/目录下新建shoujo_style.yaml:
name: "少女漫标准镜头语法" version: "1.2" rules: - trigger: "情绪=sadness AND subtext=压抑" action: "插入空镜:窗外樱花飘落,时长=3.0s,BGM=柔和钢琴" - trigger: "角色A为protagonist_001 AND 动作=低头" action: "镜头切换为低角度仰拍,突出发丝阴影" - trigger: "对话含'喜欢' AND 双方距离<50cm" action: "启用浅景深,背景虚化强度=0.8,焦点在瞳孔" - trigger: "场景=天台 AND 时间=傍晚" action: "自动叠加暖色滤镜,色温=4200K,对比度+15%"逻辑说明:
trigger使用布尔表达式,支持AND/OR/NOT和字段比较;action是预定义动作函数,如insert_empty_shot()、set_camera_angle(),全部在src/agentcine/pipeline/director_engine.py中实现。
6.2 在项目中启用 DDS:一次配置,全链路生效
项目设置页 → 【高级选项】→ 「分镜指令集」下拉选择shoujo_style.yaml。启用后:
- 文本分析阶段,
text_analyzer.py会将subtext字段与 DDS 的trigger匹配; - 分镜生成阶段,
scene_allocator.py调用匹配的action函数,实时修改分镜参数; - 视频生成阶段,
video_composer.py读取action中的滤镜参数,注入渲染管线。
实测效果:某校园恋爱番外篇启用 DDS 后,人工修改分镜次数从平均 17 次降至 2 次,导演反馈“终于不用反复截图发微信说‘这个镜头要更羞涩一点’了”。
6.3 DDS 调试技巧:用日志追踪每条指令的命中与执行
开启调试模式(config/pipeline.yaml中debug_directive_matching: true),生成分镜时会在logs/director_debug.log记录:
[2024-06-15 14:22:03] INFO: Trigger matched: "情绪=sadness AND subtext=压抑" → Action: insert_empty_shot [2024-06-15 14:22:03] DEBUG: Subtext analysis: "我没事" → ["压抑", "强颜欢笑"] [2024-06-15 14:22:04] INFO: Action executed: Empty shot inserted at position 12, duration=3.0s通过日志,你能精准定位为何某条指令未触发(如subtext提取不准),进而优化 Prompt 或调整触发条件。
我坚持在每个新项目启动前,花 2 小时梳理导演需求并写成 DDS 模板——这比后期修 200 个分镜镜头省下的时间,足够喝三杯咖啡。AgentCine 的价值不在“AI 自动生成”,而在“把导演的隐性知识,变成可沉淀、可复用、可验证的显性规则”。希望帮到你。
本文还有配套的精品资源,点击获取