“真假公主|仿甜甜樱”这个标题,一眼看过去像是一个剧情设定,但它背后其实是一套完整的本地AI内容生成链路:场景核心是“真假公主”双角色扮演,身份要能随时切换、语气要有明显反差;而“仿甜甜樱”则是角色风格模仿层,负责把某个虚拟人设的说话习惯、语速、口头禅抽出来,让生成的对白和语音更像目标角色。
真正值得关注的不在某一个模型有多强,而在于组合链路稳不稳。这个项目需要用到的组件通常包括:一个负责对话生成的LLM服务、一个负责音色风格化的TTS服务、一个把结果渲染成视觉内容的图像或视频生成组件,再加一套批量任务管理机制。把这套链路串起来之后,就能复用到互动剧情、有声内容、虚拟角色运营测试等场景。
这篇文章直接拆解“真假公主|仿甜甜樱”的部署与验证思路:核心能力、环境准备、启动流程、功能测试、接口调用、批量任务、性能观察、常见问题,一次性给齐。跑通之后,同一套流程可以迁移到自己的角色扮演、有声剧、虚拟角色内容项目里。
1. 核心能力速览
先从规格表开始,方便快速判断值不值得动手。
| 能力项 | 说明 |
|---|---|
| 项目类型 | 开源组件组合的 AI 角色扮演内容工作流(LLM + TTS + 视觉渲染) |
| 核心功能 | 双角色对白生成、真/假公主身份切换、角色语气风格模仿、批量剧情扩写、音频与视觉内容输出 |
| 推荐硬件 | 本地部署以 NVIDIA 显卡优先,显存需求需按所选模型版本评估;纯 CPU 可跑 LLM 但速度明显下降 |
| 显存占用 | 与 LLM 参数量、TTS 模型类型、推理批大小有关,需按实际环境观察 |
| 支持平台 | Windows / Linux;Mac 可用于 CPU/内存推理测试 |
| 启动方式 | 命令行启动、WebUI 访问、API 服务;可封装为一键启动脚本 |
| 是否支持 API | 支持,可按 FastAPI / Flask 搭建 HTTP 服务 |
| 是否支持批量任务 | 支持,通过输入目录、批处理脚本或任务队列实现 |
| 适合场景 | 互动剧情实验、有声内容制作、虚拟角色运营测试、内容 IP 二创(需授权) |
需要说明的是,这张表给的是通用能力边界。实际部署时,LLM 选多大、TTS 用哪个模型、显存是否够用,必须结合本机配置来定。后面每一章都会给出可替换的模板命令与排查方法。
2. 适用场景与使用边界
2.1 适合谁
“真假公主|仿甜甜樱”这类双角色内容工作流,最典型的用户有三类。
第一类是互动剧情创作者。他们需要让两个角色在剧情里来回交锋,还要保证角色说出来的话不跑偏。手动写当然可以,但想快速批量产出分支剧情,就必须靠 LLM 生成初稿,再人工修正。
第二类是有声内容爱好者。真公主和假公主如果音色相同,辨识度会非常差。用 TTS 配合角色音色标签,可以做到一句话切一次身份,同时保持音色一致性。
第三类是虚拟角色运营者。做虚拟主播、虚拟助手、二创短视频,都需要一套稳定的角色人设管理系统。“仿甜甜樱”这种风格模仿层,正好是把人设落到实际文本和语音里的关键能力。
2.2 不适合什么
纯 CPU 机器跑超大参数 LLM 不适合,等待时间会让人失去耐心。如果没有显卡,建议先选 7B 以下的量化模型做测试。
没有明确授权的情况下,不适合对真人声音、真人形象、商业 IP 角色做风格模仿。这个问题在下一小节单独展开。
2.3 版权、隐私与安全边界
这是必须强调的部分。
“仿甜甜樱”属于角色风格模仿能力,在技术实现上并不复杂,但使用边界非常清楚:
- 如果“甜甜樱”是他人原创的虚拟角色、商业 IP 角色或真实人物,直接复制其音色、语气、形象用于发布或商用,必须取得合法授权。
- 未经授权对他人的肖像、声音进行克隆或生成,可能涉及肖像权、声音权、名誉权纠纷。
- 生成内容如果具备误导性,例如用仿声音冒充本人发言,属于明确的违规用途,不能做。
- 公开发布 AI 生成内容时,建议同步标注“AI 辅助创作”或“AI 生成”,避免造成身份混淆。
在本文的演示场景里,“甜甜樱”只作为虚构角色名使用。实际动手时,优先选择自己有权使用的音色数据和角色设定。
3. 环境准备与前置条件
下面前置条件按通用本地部署流程整理。具体版本号会随模型和工具更新,建议以官方仓库为准。
3.1 操作系统与基础软件
| 检查项 | 建议要求 |
|---|---|
| 操作系统 | Windows 10/11、Ubuntu 20.04/22.04、macOS 12+ |
| Python | 3.10 或 3.11 |
| 包管理器 | pip、conda 二选一 |
| Git | 用于拉取项目仓库 |
| GPU 驱动 | NVIDIA 驱动 535 及以上(Linux);Windows 用最新 Game Ready / Studio 驱动 |
| CUDA | 11.8 或 12.x,按深度学习框架要求安装 |
| PyTorch | 2.x,带 CUDA 版本 |
3.2 硬件要求
硬件没有唯一标准答案,关键看两个变量:选多大的 LLM,选哪种 TTS。
- 如果 LLM 选 7B 量化模型,显存大致在 6G 到 8G 区间,可以试。
- 如果选 13B 以上模型,建议 12G 以上显存,或者用 CPU + 大内存的方式硬跑。
- TTS 模型普遍比 LLM 轻,CPU 也能完成推理,只是速度慢一些。
- 视觉渲染组件如果跑文生图,ComfyUI 工作流常用显存在 6G 到 12G 之间。
更稳妥的判断是:先用小模型跑通流程,再逐步放大。第一次就把所有组件全部换成大模型,容易在环境问题上卡住。
3.3 磁盘与目录规划
建议按下面目录结构组织文件:
princess_roleplay/ ├── models/ # LLM、TTS、图像模型存放目录 ├── inputs/ # 输入素材:参考音频、角色设定、剧情草稿 ├── outputs/ # 输出:对白文本、合成音频、渲染图片 ├── logs/ # 服务日志和批量任务日志 └── scripts/ # 启动脚本、批处理脚本模型文件、输入素材、输出结果分目录管理,是本地 AI 项目最值得养成的习惯。后续做批量任务、排查问题、清理磁盘都会方便很多。
4. 安装部署与启动方式
先说明:下面命令是通用模板,路径、端口、模型名需要按实际项目替换。
4.1 创建虚拟环境并安装依赖
# 进入项目目录 cd princess_roleplay # 创建 Python 虚拟环境 python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # Linux / macOS source venv/bin/activate # 升级 pip pip install --upgrade pip # 安装依赖,requirements.txt 以实际项目为准 pip install -r requirements.txt如果依赖安装卡在某个包上,优先检查 Python 版本和 PyTorch 版本是否匹配,其次检查网络源。国内环境可以临时切换 pip 镜像源,但不在正文展开具体源地址。
4.2 启动 LLM 对话服务
LLM 服务建议以 OpenAI 兼容 API 的形式启动,这样后续 TTS 和 WebUI 调用都比较省事。示例使用 llama.cpp 风格命令,实际模型路径和端口要替换。
# 启动 LLM API 服务,模型路径按实际位置替换 ./llama-server \ -m /path/to/models/llm/qwen-7b-q4_k_m.gguf \ --host 127.0.0.1 \ --port 8000 \ --ctx-size 4096 \ -ngl 32参数解释:
-m:模型文件路径。--host:监听地址,本地测试用127.0.0.1。--port:端口,默认 8000。--ctx-size:上下文长度,长剧情测试可以调大。-ngl:GPU 层数,数值越大显存占用越高,越小越依赖 CPU。
如果显存不足,把-ngl调小,或者换更小的量化模型。
4.3 启动 TTS 服务
TTS 服务的启动方式差异较大。常见开源方案支持通过 Python API 或 WebUI 启动。下面是一个 FastAPI 风格的通用模板:
# app_tts.py 示例,仅展示接口骨架,实际实现以所选 TTS 项目为准 from fastapi import FastAPI, Request import uvicorn app = FastAPI() @app.post("/tts") async def tts(request: Request): body = await request.json() text = body.get("text", "") role = body.get("role", "default") # 在这里调用 TTS 引擎,按 role 选择音色配置 # audio_path = engine.synthesize(text, role) return {"code": 0, "message": "success", "audio_path": "outputs/tts/test.wav"} if __name__ == "__main__": uvicorn.run("app_tts:app", host="127.0.0.1", port=8001, reload=False)启动服务:
python app_tts.py4.4 启动视觉渲染工作流
如果是生成角色立绘或剧情插图,可以走 ComfyUI 工作流。ComfyUI 启动命令通用模板如下:
python main.py --listen 127.0.0.1 --port 8188启动后浏览器访问http://127.0.0.1:8188,导入工作流文件即可。
4.5 一键启动脚本
服务组件比较多,建议写一个启动脚本。Windows 使用.bat,Linux 使用.sh。模板如下:
#!/bin/bash # start_all.sh set -e echo "Step 1: 启动 LLM 服务" nohup ./llama-server -m /path/to/models/llm/model.gguf --host 127.0.0.1 --port 8000 -ngl 32 > logs/llm.log 2>&1 & echo "Step 2: 启动 TTS 服务" nohup python app_tts.py > logs/tts.log 2>&1 & echo "Step 3: 启动视觉渲染服务" nohup python main.py --listen 127.0.0.1 --port 8188 > logs/comfy.log 2>&1 & echo "全部服务已启动"@echo off rem start_all.bat echo Start LLM service start "llm" cmd /c llama-server.exe -m D:\models\llm\model.gguf --host 127.0.0.1 --port 8000 -ngl 32 echo Start TTS service start "tts" cmd /c python app_tts.py echo Start visual render service start "render" cmd /c python main.py --listen 127.0.0.1 --port 8188 echo Done启动完成后,先确认端口是否正常监听。Windows 用netstat -ano | findstr 8000,Linux 用ss -lntp | grep 8000。
5. 功能测试与效果验证
部署完成后,不要急着跑完整流程。按测试用例逐项推进,保证每一步输出正确再进入下一步。
5.1 双角色对白生成测试
测试目的:确认 LLM 能区分“真公主”和“假公主”两种人设,并在对话中稳定切换。
输入提示词示例:
系统设定:你正在创作一部双角色互动剧情。 角色A:真公主,性格清冷、言辞克制、喜欢用短句。 角色B:假公主,性格活泼、话多、喜欢夸张表达。 要求:请生成一段真公主与假公主初次见面的对白,共 6 轮,每轮不超过 50 字。调用 LLM 服务:
curl -X POST http://127.0.0.1:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "local-model", "messages": [{"role": "user", "content": "系统设定:你正在创作一部双角色互动剧情。角色A:真公主,性格清冷、言辞克制。角色B:假公主,性格活泼、话多。请生成一段初次见面的对白,共 6 轮,每轮不超过 50 字。"}], "max_tokens": 1024, "temperature": 0.8 }'判断成功的标准:
- 两个角色说的话在语气上有明显差异。
- 角色身份没有中途互换,不会出现“真公主突然话多”的情况。
- 对白长度符合要求。
如果角色语气混乱,就在系统提示词里加入“禁止真公主使用语气词”“禁止假公主使用冷峻表达”等负向约束。角色一致性很多时候不是模型能力问题,而是提示词没有写够细节。
5.2 角色语气风格模仿测试
测试目的:验证“仿甜甜樱”风格模仿层是否生效。
这里分两种情况:
- 场景一:基于自定义虚构角色。在提示词中写入该角色的口头禅、语速、常用句式,让 LLM 模仿。
- 场景二:基于授权音色。使用 TTS 的参考音频功能,按目标角色音色进行声音合成。
LLM 风格模仿测试输入:
请在复述下面这段话时,模仿甜甜樱的说话习惯: 喜欢用“呀”结尾,句子短,语气偏甜,喜欢加拟声词。 原文:这个计划明天执行,所有人都要准备好。预期输出示例:
明天就要执行计划啦呀。 大家都要准备好呀,加油呢!TTS 参考音频测试步骤:
- 准备一段目标角色清晰朗读的参考音频,格式 WAV/MP3,时长建议 10 秒左右。
- 调用 TTS 服务,填入参考音频路径和目标文本。
- 试听合成结果,重点听音色相似度和吐字清晰度。
判断成功的标准:
- 合成语音的音色与参考音频接近。
- 没有明显吞字、重复、机械感。
- 长时间文本下角色情绪保持一致。
注意,这一步的合规前提是目标音色来源必须合法。参考音频如果是他人作品或真实人物声音,必须取得授权。
5.3 双角色语音合成测试
测试目的:检查真公主与假公主用同一 TTS 服务时,能否通过角色参数切出不同音色。
步骤:
- 准备角色 A 音色配置和角色 B 音色配置。
- 分别传入同一段文本。
- 将两段音频拼接,观察人耳能否明显区分。
调用模板:
import requests # 依次合成两个角色的语音 items = [ {"role": "true_princess", "text": "我已回到王宫,你是什么人?"}, {"role": "fake_princess", "text": "哎呀,我就是来陪姐姐玩的呀,不要凶我好不好!"}, ] base_url = "http://127.0.0.1:8001/tts" for item in items: resp = requests.post(base_url, json=item, timeout=120) print(resp.json())判断成功的标准:
- 两个角色音色区分度明显。
- 拼接后听得出身份切换,不会误认为是同一个人。
- 相同角色在不同语句中的音色保持一致。
如果两个角色音色容易混,建议在 TTS 配置里给角色 A 和角色 B 选用差异更大的基础音色,或者调整语速、音高参数。
5.4 批量剧情扩写测试
测试目的:验证多段剧情能否批量生成,并保持角色设定不漂移。
准备输入文件inputs/story_seed.jsonl:
{"id": "scene_001", "seed": "真公主发现假公主戴着自己的王冠站在殿前"} {"id": "scene_002", "seed": "假公主在晚宴上说出了一段只有真公主才知道的回忆"} {"id": "scene_003", "seed": "真公主决定当众揭穿假公主的身份"}批量处理脚本:
import json import requests api_url = "http://127.0.0.1:8000/v1/chat/completions" with open("inputs/story_seed.jsonl", "r", encoding="utf-8") as f: scenes = [json.loads(line) for line in f if line.strip()] for scene in scenes: prompt = f"""你是互动剧情作者。请根据以下种子扩写一段 200 字剧情,注意保持双角色的性格设定。 种子:{scene['seed']}""" resp = requests.post(api_url, json={ "model": "local-model", "messages": [{"role": "user", "content": prompt}], "max_tokens": 512, "temperature": 0.9 }, timeout=120) result = resp.json() scene_id = scene["id"] print(f"{scene_id} done") # 把结果写入 outputs 目录 with open(f"outputs/{scene_id}.txt", "w", encoding="utf-8") as out: out.write(result["choices"][0]["message"]["content"])判断成功的标准:
- 每一条种子都生成了对应剧情。
- 没有出现因为批量请求导致的进程崩溃。
- 输出文本里角色性格保持一致。
批量任务最容易出的问题不是生成失败,而是服务在长时间运行后显存持续累积,最终 OOM。建议每批次限制数量,并在循环里加一个简易的重试机制。
6. 接口 API 与批量任务设计
6.1 API 结构建议
推荐把整条链路拆成三个独立服务:LLM 服务、TTS 服务、渲染服务。好处是任何一个服务崩了,不影响其他两个,排查问题更快。
| 服务 | 默认端口 | 主要接口 | 用途 |
|---|---|---|---|
| LLM 服务 | 8000 | /v1/chat/completions | 对白生成、剧情扩写 |
| TTS 服务 | 8001 | /tts | 文本转语音、音色切换 |
| 渲染服务 | 8188 | WebUI | 角色立绘、剧情插图 |
如果只有一个对外入口,可以在前面加一个简单路由层。下面是一个聚合服务的骨架:
# app_gateway.py from fastapi import FastAPI import requests app = FastAPI() LLM_URL = "http://127.0.0.1:8000" TTS_URL = "http://127.0.0.1:8001" @app.post("/generate_scene") async def generate_scene(payload: dict): # 1. LLM 生成对白 llm_resp = requests.post( f"{LLM_URL}/v1/chat/completions", json={"model": "local-model", "messages": [{"role": "user", "content": payload["prompt"]}]}, timeout=120, ) text = llm_resp.json()["choices"][0]["message"]["content"] # 2. TTS 合成语音 tts_resp = requests.post( f"{TTS_URL}/tts", json={"role": payload["role"], "text": text}, timeout=120, ) return { "text": text, "audio_path": tts_resp.json().get("audio_path") }6.2 批量任务队列
批量任务建议按“输入清单 -> 逐条处理 -> 输出日志 -> 汇总结果”来设计。不要把所有任务一次性塞进并发请求,本地硬件扛不住。
给一个最小任务控制结构:
待处理列表:inputs/todo.txt 已完成列表:outputs/done.txt 失败重试: 失败次数小于 3 的任务自动重新入队处理逻辑伪代码:
import time def process_task(task): # 调用 LLM + TTS pass def run_batch(tasks, max_retry=3): for task in tasks: for attempt in range(max_retry): try: process_task(task) break except Exception as e: print(f"task {task} failed at {attempt + 1}: {e}") time.sleep(2) else: print(f"task {task} give up")批量任务需要日志,而且最好每条任务都写一行日志。没有日志的批量任务,一旦卡住根本不知道卡在哪一条。
6.3 失败重试建议
- 网络类错误,重试间隔至少 2 秒。
- 显存不足类错误,重试没有意义,先释放显存再继续。
- 文本过长导致的超时,把文本切分,分片处理。
- 连续失败超过 3 次,停止任务并把任务 ID 输出到错误日志。
7. 资源占用与性能观察
7.1 显存观察方法
显存占用是本地部署最重要的指标之一。观察方式:
# 实时观察 GPU 状态 nvidia-smi -l 2重点看两项:
Memory-Usage:当前显存占用。GPU-Util:实际算力利用率。
如果显存占用很高但 GPU-Util 很低,说明模型加载后没有大量计算,或者推理被 CPU 瓶颈卡住了。
7.2 CPU 推理与 GPU 推理差异
同一份模型,GPU 推理通常比 CPU 快数倍到数十倍。CPU 推理适合跑 TTS 这类轻量任务,LLM 长文本生成在 CPU 上会很慢。
如果必须 CPU 推理 LLM,建议:
- 选择更小的量化模型,例如 4-bit 或 2-bit 版本。
- 控制上下文长度,不要从 4096 直接堆到 8192。
- 关掉并行请求,一次只处理一个任务。
7.3 分辨率、步数、批量数对性能的影响
视觉渲染任务中,分辨率和步数是显存占用最大的两个变量。
| 参数 | 对显存影响 | 对耗时影响 | 建议 |
|---|---|---|---|
| 分辨率越高 | 显存增加明显 | 耗时增加明显 | 先用 512x512 测试,再逐步放大 |
| 采样步数越多 | 显存增加较小 | 耗时线性增加 | 20 步左右作为起点 |
| 批量数越大 | 显存几乎翻倍 | 单张平均耗时下降 | 显存不够就保持 batch 为 1 |
LLM 的上下文长度也是重要变量。模拟测试时,建议把--ctx-size设为 4096,够跑一轮短剧情。长文本场景再调大,同时观察显存变化。
7.4 降低显存占用的通用手段
- 给 LLM 关掉
nohup里多余的并行参数,确保同时只有一个请求在处理。 - 推理结束后调用
torch.cuda.empty_cache()主动清理缓存。 - 如果 TTS 与 LLM 共用一块显卡,建议错峰调用,先批量生成文本,再批量合成语音。
- 视觉渲染任务结束后,重启一次渲染服务,避免 ComfyUI 长期间残留显存碎片。
7.5 端口冲突与进程残留
服务反复重启后,容易出现端口被残留进程占用。
# 检查端口占用 lsof -i :8000 # 找到 PID 后结束进程 kill -9 <PID>Windows:
netstat -ano | findstr 8000 taskkill /PID <PID> /F建议在启动脚本里加上自动查找并清理旧进程的逻辑,避免手工操作。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动后端口无响应 | 服务没起来,或端口被占用 | 检查服务日志;lsof -i :端口或netstat -ano | 杀掉占用进程,或换端口重启 |
| 依赖安装失败 | Python 版本不匹配 / 网络源问题 | pip --version查看版本;查看报错包名 | 创建干净虚拟环境;换取兼容版本;必要时更换镜像源 |
| 模型文件缺失 | 下载不完整或路径写错 | 检查模型目录;查看启动日志 | 重新下载;修正-m参数路径 |
| CUDA 相关错误 | 驱动和 PyTorch 版本不匹配 | nvidia-smi查看驱动;python -c "import torch; print(torch.cuda.is_available())" | 重装对应 CUDA 版本 PyTorch,或更新显卡驱动 |
| 显存不足 OOM | 模型太大/上下文太长/批量数过大 | 观察nvidia-smi;缩小请求参数 | 换小模型;降低-ngl;缩小上下文;清空缓存 |
| 角色语气混淆 | 提示词不明确 / 上下文过短 | 检查请求文本;查看模型输出 | 增加负向约束;补充角色设定;延长上下文长度 |
| 批量任务卡住 | 无日志、无超时、单个任务异常未终止 | 逐条插入日志;在循环里加超时 | 给每个请求设置 timeout;加入失败重试 |
| 输出质量不稳定 | 温度参数过高 / 提示词太随意 | 连续多次生成对比 | temperature调到 0.7 到 0.9;固定系统提示词 |
| 合成音频有杂音 | 参考音频品质差 / 文本里有特殊符号 | 检查参考音频;检查输入文本 | 使用 10 秒左右干净人声;清理特殊符号 |
排查问题的基本顺序是:先看日志,再看端口,再看显存,最后看模型路径。80% 的问题都出在这四步里。
9. 最佳实践与使用建议
9.1 第一次先小参数测试
不要一上来就跑完整批量任务。先手动测试一轮对话生成,确认 LLM 服务正常;再测试一段 TTS 合成,确认音色可用;最后才考虑渲染和批量。
每次只改一个变量。改温度就只改温度,改模型就只换模型,不要同时调整多个参数,否则出问题很难定位。
9.2 保留一套最小可运行配置
每次调通一个环节,就把对应的命令和参数保存下来。整理成一个configs/minimal.ini或 Markdown 文档,后续环境重装时能快速恢复。
最小可运行配置甚至比完整配置更重要。遇到大模型跑不动、显存不够的问题时,直接回退到最小配置继续开发,主力环境可以慢慢调。
9.3 目录和日志管理
模型、输入、输出严格分目录。建议在批量任务脚本里自动创建带时间戳的输出子目录。
import time out_dir = f"outputs/{time.strftime('%Y%m%d_%H%M%S')}"这样做的好处是,运行 N 次批量任务后,每次结果都独立留存,不会互相覆盖。
9.4 批量任务工程化
- 每条任务都有唯一 ID。
- 每条任务写开始、结束、失败三行日志。
- 连续失败超过阈值立即暂停。
- 任务完成后校验输出文件是否存在且非空。
这四条能规避掉绝大多数批量任务翻车场景。
9.5 授权合规是底线
再次强调:真人声音、真人形象、商业 IP 角色的模仿,需要事先取得授权。如果拿不到授权,就不要用真实角色名去生成特定风格。可以把“甜甜樱”当做一个虚构角色,自定义一套不受版权约束的人设特征来测试。
发布到公开平台时,建议同时声明“本内容包含 AI 生成部分”。这不是可选项,是降低风险的必要动作。
9.6 接口服务安全
- 本地测试监听
127.0.0.1,不要默认监听0.0.0.0,否则局域网内其他设备也能调用。 - 如果必须对外开放,建议加一层简单的 Token 校验。
- 服务长期运行要有进程守护,避免崩溃后无人重启。
10. 总结与下一步
“真假公主|仿甜甜樱”最值得尝试的点,是它把对话生成、音色模仿、批量任务放在同一条链路里,打通之后能直接复用到多种角色扮演场景。相比追求某一个模型的最新效果,这套工作流更看重工程稳定性和参数可控性。
第一次动手时,先跑双角色对白生成,这是整条链路的核心。确认两个角色语气区分度足够后,再去试 TTS 音色切换。最容易踩的坑有两个:一个是角色语气混淆,通常靠补充提示词负向约束解决;另一个是批量任务做到一半显存不足,需要控制上下文长度和任务并发数。
后续可以扩展的方向包括:接入 RAG 来管理更丰富的角色设定库,让同一角色在不同章节里保持记忆一致;给渲染服务接入连续画面生成,把剧情插图升级成短动态片段;对批量任务加入队列系统,比如用 Redis 做任务分发,让多台机器协同跑长内容。
先把第一条链路跑通,剩下的都是在它上面加轮子。建议把本文提到的命令行、API 模板和排查表收藏下来,动手的时候直接对照着查。