「另一条路」(项目代号 another-road)是一个基于 OpenCode AI Agent 框架构建的影视/动画制作管线工作区。它的核心思路是:将影视制作的全流程——从剧本解析、角色/场景/道具设定提取、视觉资产生成,到分镜拆解、AI 视频生成——拆解为多个专业化的 Agent 协作节点,通过一个统一的 Orchestrator(路由调度员)进行任务分发与结果汇总。
这套系统的独特之处在于:它不是简单的”一个 Prompt 出视频”,而是一套严格分阶段、职责边界清晰、元数据驱动的工程化管线。每个 Agent 只做自己分内的事,不越权;所有产物通过 Coordinator 统一归档;阶段流转通过不可逆状态机管理;图像生成通过 MCP 服务器标准化接入。
系统全景架构
整个系统由四个层次构成:Agent 编排层、技能能力层、MCP 工具层、元数据管理层。各层职责分离,通过 JSON Schema 和文件系统协议进行通信。
Coordinator / Producer / Writer
Character/Prop/Set Director
Art / Storyboard / Video Director"] SKILLS["17 个技能模块
按需加载"] MCP["GRSAI MCP Server
5 个工具"] META[".meta 元数据
project / stages / manifest / events"] U --> ORC ORC --> AGENTS AGENTS -.-> SKILLS AGENTS --> MCP MCP --> EXT["外部 API
GRSAI / COS / LibTV"] AGENTS --> META
系统采用严格的分层架构:Agent 编排层负责意图识别和任务分发,技能能力层提供具体操作指南,MCP 工具层封装外部 API 调用,元数据管理层追踪项目状态和产物。Agent 之间不直接通信,全部通过 Orchestrator 中转。
配置入口:opencode.json
系统的核心配置文件 opencode.json 定义了所有 Agent 的角色、模型、权限和工具访问策略。不同 Agent 使用不同的大语言模型:
| Agent | 模型 | 模式 | 核心理由 |
|---|---|---|---|
| orchestrator | 默认 | primary | 快速路由,无需深度推理 |
| producer | mimo-v2.5-free | subagent | 剧本理解+联网检索,免费模型降本 |
| storyboard-director | deepseek-v4-pro | subagent | 分镜创作需要强创作能力 |
| coordinator | 默认 | subagent | 元数据操作,逻辑简单 |
| art-director | 默认 | subagent | MCP 工具调用编排 |
Orchestrator 被明确禁止读取 .opencode/skills/** 和加载任何技能——它是纯粹的路由器,不是执行者。Art-director 是唯一被授予 grsai_* 工具权限的 Agent,其他 Agent 的图像生成工具全部被设为 false。这种”最小权限”设计防止了 Agent 越权操作。
Orchestrator 路由调度机制
Orchestrator 是整个系统的”大脑入口”,但其设计哲学极为克制:它只做一件事——理解意图、分发任务、汇总结果。
Orchestrator 的行为规则被定义为六条”铁律”,核心思想是零调研、3 秒决策、绝不亲自动手。这意味着 Orchestrator 收到用户消息后,不会先去读文件、搜索代码或了解项目状态,而是直接根据意图匹配表 spawn 对应的子 Agent。
意图匹配表
Orchestrator 通过一张预定义的意图匹配表将用户自然语言映射到具体的子 Agent:
| 用户说(关键词) | spawn 目标 | 典型场景 |
|---|---|---|
| 创建项目、初始化 | coordinator | 新项目立项 |
| 继续、下一步、推进 | coordinator | 阶段流转 |
| 剧本、设定、分集剧本 | producer | 剧本结构化 |
| 角色参考图、角色形象 | character-director | 角色资产 |
| 场景参考图、环境设计 | set-designer | 场景资产 |
| 道具参考图、物品设计 | prop-maker | 道具资产 |
| 出图、画图、生图 | art-director | 执行生图 |
| 分镜、故事板 | storyboard-director | 分镜创作 |
| 视频生成、制作视频 | video-director | 视频产出 |
| 写剧本、润色 | writer | 剧本创作 |
| 配置、技能修改 | system-engineer | 系统维护 |
如果 Orchestrator 在分发前先调研(读文件、查状态),会导致两个问题:一是延迟增加,用户每句话都要等 Orchestrator 读完上下文才开始处理;二是职责边界模糊,Orchestrator 会逐渐变成”什么都会一点”的全能 Agent,破坏多 Agent 协作的根本前提。唯一例外是”最小化项目列表读取”——仅扫描 .meta/projects/ 目录名,用于项目定位。
六阶段制作管线
从原始剧本到 AI 视频成片,系统定义了六个标准化制作阶段,每个阶段有明确的执行 Agent、前置条件和产出物。
阶段 1:项目初始化
由 Coordinator 执行。生成项目 UUID,创建 .meta/projects/{id}/ 元数据目录,初始化四个核心文件:project.json(项目信息)、stages.json(16 阶段状态机)、manifest.json(产物清单)、events.jsonl(事件日志)。同时创建项目业务目录骨架,逐项询问用户填写画幅、分辨率、模型等全局配置,写入 project_config.json。
阶段 2:监制提取设定
由 Producer 执行,是整个管线最上游的内容处理节点。Producer 实现了”三重信息融合”:剧本文本 + 联网历史检索 + 多模态视觉采样。它会扫描前期采样图用 Vision 能力提取视觉信息,识别历史真实内容并联网检索官职服饰、建筑形制等权威资料,最终输出全局设定、角色设定、场景设定、道具设定和分集剧本。
Producer 只为核心角色、关键场景、关键道具做设定,不为龙套/过场项浪费资源。信息不足时优先用搜索结果填充,仍不足用 [待补充] 占位,绝不编造。
阶段 3:全局视觉资产生成
由 Character Director + Prop Maker + Set Designer 生成任务表 JSON,再交由 Art Director 执行 AI 生图。角色资产分两步生成:Tier 1 选角资产(白 T 恤七视图,排除服装干扰聚焦角色本体)→ Tier 2 默认定妆(基于角色设定的造型设计)。这种分层设计巧妙地解耦了”角色本体”与”服装造型”。
阶段 4:拆解分镜
由 Storyboard Director 执行,将分集剧本拆解为场→组→镜三级结构化 JSON。每个镜头包含 17 个字段(景别、摄影机角度/运动、焦距景深、光线、氛围、台词、音效等)。关键设计是”Agent 智能创作 + 脚本机械拆分分离”——LLM 负责理解剧本和创作分镜内容,Python 脚本仅做最后一步机械拆分为独立组 JSON。
阶段 5:剧集级参考图 + 资产同步
基于分镜脚本中的出场信息,各 Director 生成剧集级参考图任务表,Art Director 执行生图后,由 Coordinator 将所需妆造资产从全局依赖目录复制到 temp/分组素材/{剧集号}/,供 Video Director 使用。这里引入了妆造衣橱机制:global 模式初始化衣橱,episode 模式只读匹配,发现新妆造时向 Orchestrator 报告。
阶段 6:视频生成
由 Video Director 执行,通过 LibTV CLI 将分镜组 JSON 转化为画布上的 video 节点并触发 AI 视频生成。核心流程:绑定画布项目 → 上传参考素材 → 创建 video 节点 → 批量分组运行 → 轮询等待完成。如有下一集,回到阶段 4 循环执行。
Agent 角色矩阵
系统定义了 10 个 Agent,分为三类:路由层(1 个)、制作层(8 个)、工程层(1 个)。每个 Agent 有严格的职责边界和权限控制。
| Agent | 角色 | 核心职责 | 特殊权限 |
|---|---|---|---|
| Orchestrator | 路由调度员 | 意图识别→spawn→汇总 | 禁止读 skills/、禁止加载技能 |
| Coordinator | 项目统筹 | 元数据管理、阶段推进、产物归档 | 绝不读取产物业务内容 |
| Producer | 监制 | 剧本解析、设定提取、分集剧本 | 可联网 WebSearch |
| Writer | 编剧 | 剧本创作/润色/故事扩展 | 可联网 WebSearch |
| Character Director | 角色导演 | 角色参考图任务表 | — |
| Set Designer | 置景师 | 场景参考图任务表 | — |
| Prop Maker | 道具师 | 道具参考图任务表 | — |
| Art Director | 美术指导 | 执行 AI 生图 | 唯一拥有 grsai_* 权限 |
| Storyboard Director | 分镜导演 | 分集剧本→分镜头脚本 | 使用 deepseek-v4-pro |
| Video Director | 视频导演 | 分镜→视频生成 | — |
| System Engineer | 系统工程师 | 技能创建/编辑、MCP 开发 | 可修改 .opencode/ 配置 |
职责边界的”三不原则”
不越权执行
存在对应子 Agent 的任务,必须 spawn 该子 Agent 执行。自行写文件、调 API 属于违规。
不跨界制作
Coordinator 只做元数据管理,不参与任何内容制作。内容制作必须由对应专业子 Agent 完成。
不读业务内容
Coordinator 绝不读取产物业务内容(剧本/设定/图像/分镜),只操作文件路径和元数据,控制 token 开销。
技能体系:17 个能力模块
技能(Skill)是 Agent 的”操作手册”。每个 Skill 定义了特定领域的详细工作流、约束规则和输出规范。Agent 在执行时按需加载对应 Skill。
系统的 17 个技能可分为四大类:制作核心技能(8 个)、文档处理技能(2 个)、工程辅助技能(5 个)、创作辅助技能(2 个)。
制作核心技能
| 技能 | 功能 | 关键设计 |
|---|---|---|
producer | 剧本解析+设定提取 | 三重信息融合(文本+检索+视觉) |
script-writer | 剧本创作/润色 | 支持电影/动画/短视频/广告/游戏 |
roles-ref-generator | 角色参考图任务表 | 三模式:global/episode/group + 妆造衣橱 |
scene-ref-generator | 场景参考图任务表 | 左俯瞰+右三宫格,2:1 固定 |
prop-ref-generator | 道具参考图任务表 | 上4下2六视图,16:9 固定 |
art-director | AI 生图执行器 | MCP 工具统一封装,批量分级策略 |
storyboard-generator | 分镜脚本生成 | 场→组→镜三级,17 字段/镜头 |
video-director-libtv | 视频生成全流程 | {Image N} 引用机制 + 临时脚本传 prompt |
角色资产的三模式架构
roles-ref-generator 技能定义了三种定位模式来覆盖角色资产的生命周期:
这是系统中一个精妙的资产管理设计。global 模式初始化”妆造衣橱”(角色所有造型资产的统一索引),episode 模式只读匹配衣橱中已有资产,发现新妆造时报告 Orchestrator 补充。这确保了角色造型在整个系列中的一致性,避免了”每集重新生成导致角色长相不一致”的问题。
MCP 服务器架构:GRSAI 图像生成
系统通过 MCP(Model Context Protocol)标准将外部 API 能力封装为工具,供 Agent 安全调用。GRSAI Server 是唯一的生产级 MCP 服务器,提供 5 个工具。
GRSAI Server 基于 FastMCP 标准范式构建,采用异步架构,核心流程为”提交→轮询→下载”三段式。它将图像生成 API、腾讯云 COS 存储和配置管理整合为一个自包含服务。
图像生成三段式流程
模型自适应参数处理
不同模型族对参数格式的要求不同:
# gpt-image 系列:需要像素格式
aspectRatio = resolve_aspect_ratio("16:9", "4K") # → "3840x2160"
# nano-banana 系列:直接传比例格式
aspectRatio = "16:9" # 原样传递
imageSize = "4K" # 原样传递
系统通过 _is_nano_banana_model(model) 判断模型族,自动选择参数格式。同时维护了一张 ASPECT_RATIO_PIXEL_MAP 常量表,将 13 种比例 x 3 档分辨率映射到具体像素值。
批量生成策略
| 任务量 | 推荐策略 | 工具调用 |
|---|---|---|
| ≤10 张 | 批量模式 | grsai_batch_generate(提交+轮询+下载一揽子) |
| >10 张 | 分批提交 | batch_type=“submit_only” → 逐个 grsai_poll_result |
| 单张 | 两步模式 | grsai_submit_image → grsai_poll_result |
数据流转与 Schema 设计
多 Agent 协作的核心挑战是数据格式一致性。系统通过共享 JSON Schema 和标准化产物路径映射,确保 Agent 间的数据交接无歧义。
核心 Schema:image-generation.json
所有图像生成任务遵循统一的 JSON Schema,它是上游 Director Agent 和下游 Art Director 之间的”合同”:
{
"tasks": [
{
"prompt": "提示词(必填,原样透传 API)",
"model": "gpt-image-2",
"aspectRatio": "16:9",
"imageSize": "1K",
"filename": "output.png",
"images": ["参考图URL或本地路径"]
}
],
"model": "gpt-image-2",
"output_path": "./output",
"oss_path": "project/xxx/reference/"
}
Schema 的设计有几个关键约束:additionalProperties: false 防止字段注入;prompt 是唯一必填字段;模型优先级为 task.model > 顶层.model > 配置文件 GRSAI_MODEL;本地路径会自动触发 COS 上传。
元数据管理:事件溯源模式
Coordinator 通过 events.jsonl 实现事件溯源,所有操作都记录为不可变事件:
| 事件类型 | 触发时机 | 记录内容 |
|---|---|---|
project.created | 项目创建 | 项目 UUID、名称、类型 |
stage.transition | 阶段流转 | from_stage、to_stage、时间戳 |
artifact.registered | 产物注册 | 文件路径、SHA-256、type、size |
artifact.deprecated | 旧产物废弃 | 被替换的产物 ID |
通过回放事件日志,可以重建任意时刻的项目状态快照。这是一种典型的 CQRS/Event Sourcing 模式在 Agent 系统中的应用。
16 阶段状态机
stages.json 定义了 16 个生产阶段的精细状态机,比 6 阶段管线更细粒度——它将阶段 3 的”角色/道具/场景”任务表和美术产出拆分为独立的 6 个子阶段:
| # | 阶段 ID | 名称 | 对应管线阶段 |
|---|---|---|---|
| 1 | project_init | 项目初始化 | 阶段 1 |
| 2 | material_sorting | 素材整理 | 阶段 1-2 |
| 3 | supervisor_extraction | 监工提取 | 阶段 2 |
| 4 | global_character_tasks | 全局角色任务 | 阶段 3 |
| 5 | global_character_art | 全局角色美术 | 阶段 3 |
| 6 | global_prop_tasks | 全局道具任务 | 阶段 3 |
| 7 | global_prop_art | 全局道具美术 | 阶段 3 |
| 8 | global_scene_tasks | 全局场景任务 | 阶段 3 |
| 9 | global_scene_art | 全局场景美术 | 阶段 3 |
| 10 | episode_character_ref | 单集角色参考 | 阶段 5 |
| 11 | episode_storyboard | 单集分镜 | 阶段 4-6 |
| 12 | delivery | 交付 | 阶段 6 完成后 |
阶段状态一旦标记为 completed 就不可回退。每次阶段流转前,Coordinator 会校验阶段完整性(16 阶段齐全)、确认当前阶段已完成、验证前驱产物存在,然后才更新状态。这种严格性保证了管线的可追溯性。
核心设计模式总结
透过代码和配置,可以提炼出这套系统最值得借鉴的六个工程设计模式。
智能创作与机械执行分离
LLM 负责内容理解与创作,Python 脚本仅做无状态的机械拆分、Schema 校验、哈希计算。这种分离让脚本可测试、可复用,也让 LLM 专注于真正需要智能的部分。
元数据与业务内容严格分离
Coordinator 只管路径和元数据(名称、大小、哈希、类型),绝不读产物业务内容。这是控制 token 开销的核心约束。
共享 Schema 驱动协作
共享 JSON Schema 是多 Agent 间的”接口契约”。上游按 Schema 生成数据,下游按 Schema 消费数据,Schema 校验脚本作为中间守门人。
事件溯源 + 不可逆状态机
所有操作记录到 events.jsonl,阶段状态不可回退。通过回放事件日志可重建任意时刻的项目状态快照。
最小权限原则
Orchestrator 禁止加载技能;只有 Art Director 拥有 grsai_* 工具权限;temp/ 目录禁止删除。每个 Agent 只被授予所需的最小权限集。
分层资产生成解耦
角色资产分 Tier 1(白 T 恤选角)和 Tier 2(定妆造型)两层生成。妆造衣橱机制管理角色造型生命周期。
重构演进:从散装脚本到统一 MCP
系统的工具层经历了一次完整的 7 阶段重构(Phase 0-6),将分散的 CLI 脚本收拢为统一的 MCP 服务器。
重构前 vs 重构后
| 维度 | 重构前 | 重构后 |
|---|---|---|
| 图像生成 | art-director 直接调 CLI 脚本 | 统一走 MCP grsai_batch_generate |
| LLM 调用 | storyboard-generator 调 call_llm.py | 统一走 MCP grsai_call_llm |
| 凭证管理 | 分散在各 Skill 的 config.py | 统一 config.py,环境变量 > 文件 |
| Validators | 3 个 ref-generator 各有一份 | 共享 image_task_validator.py |
| 废弃脚本 | — | 打 DEPRECATED 标记,不删除 |
重构的核心收益是凭证收口、代码去重、接口标准化。重构后 MCP Server 提供 5 个工具:grsai_health_check、grsai_call_llm、grsai_generate_image、grsai_batch_generate、grsai_upload_cos,覆盖了图像生成和 LLM 调用的全部需求。
总结与思考
「另一条路」展示了一种工程化的 AI Agent 协作范式——不是追求”一个 Prompt 解决一切”,而是将复杂任务拆解为严格分阶段、职责清晰的专业节点。
这套系统的价值不在于它使用了多先进的模型,而在于它解决了一个核心工程问题:如何让多个 AI Agent 在长流程任务中可靠协作。它的答案是一套完整的”协议栈”——意图匹配表定义路由规则、共享 Schema 定义数据契约、事件溯源定义状态追踪、最小权限定义安全边界、不可逆状态机定义流程纪律。
值得借鉴的设计
- Orchestrator 的克制:路由器就是路由器,不做调研、不加载技能、3 秒决策。这种克制避免了”上帝 Agent”的反模式。
- Coordinator 的元数据隔离:只管路径和哈希,不读内容。这是控制 token 开销的关键。
- 妆造衣橱机制:通过 global/episode/group 三模式 + 衣橱索引,解决了系列片中角色造型一致性的难题。
- 智能创作与机械执行分离:LLM 做创作,脚本做拆分和校验,各司其职。
改进空间
- 当前 Agent 间通信完全依赖文件系统,缺乏内存级的数据传递机制,大量文件 I/O 可能成为性能瓶颈。
events.jsonl的单文件追加模式在高并发场景下可能存在写入竞争。- 缺少自动化的失败恢复机制——如果某个 Agent 执行失败,需要人工介入重新 spawn。
- COS 上传整文件读入内存,大文件场景需要流式上传优化。
「另一条路」证明了一件事:AI Agent 的工程价值不在于单个 Agent 有多聪明,而在于多个 Agent 如何被组织成一条可靠、可追溯、可扩展的生产管线。这套系统的架构思路——分层解耦、Schema 驱动、事件溯源、最小权限——对任何多 Agent 协作场景都有参考价值。