176 lines
12 KiB
JSON
176 lines
12 KiB
JSON
{
|
||
"cab_version": "1.0",
|
||
"task_id": "CAB-20260623-001",
|
||
"created_at": "2026-06-23T14:43:12+08:00",
|
||
"created_by": "TCS-0002∞ / Codex · 铸渊",
|
||
"status": "pending",
|
||
"authorization": {
|
||
"sovereign": "冰朔 · TCS-0002∞",
|
||
"authorized_agent": "tencent-ai-persona",
|
||
"scope": "video-ai-provider-integration-and-tools-development",
|
||
"confirmation": false
|
||
},
|
||
"architecture": {
|
||
"summary": "视频AI系统 Preview-002 万相单新增模型与成片质量增强工单:只新增阿里万相 API,继续复用火山/可灵与本地剪辑工具,补齐万相适配器、路由器、故事上下文、资产锁定、稳定文字贴合、配音/BGM与烟测工具。",
|
||
"decisions": [
|
||
"现有火山引擎/Seedance 与可灵/Kling 继续保留,不重复购买;本工单只新增阿里云百炼/通义万相 Wan。",
|
||
"必接模型:阿里云百炼/通义万相 Wan。优先使用 wan2.7 参考生视频能力,承接角色/道具/场景参考、首帧控制、短视频续写与故事板参考。",
|
||
"腾讯混元生视频与 MiniMax/Hailuo 因当前预算压力,本阶段不接入、不开发适配器、不配置密钥,只保留为远期观察项。",
|
||
"剪辑层不买额外付费服务;优先使用本地 FFmpeg/FFprobe,新增 OpenCV/平面追踪能力处理文字贴合与局部画面稳定。",
|
||
"所有付费调用必须默认 dry-run,只有冰朔明确授权后才允许真实提交生成任务;严禁批量烧额度。",
|
||
"视频模型不负责猜完整故事;每次生成前必须由 story-context-builder 注入 story_so_far、current_episode_goal、shot_intent、locked_assets、dialogue_lines、negative_rules。",
|
||
"牌匾、广告牌、招牌、名单等可读文字默认走本地稳定贴合/后期合成,不再直接依赖视频模型生成可读中文文字。",
|
||
"人物对白必须从剧本台词字段生成,不允许把旁白、动作描述、镜头说明整段念出来;旁白/人物对白/BGM/SFX 分轨处理。",
|
||
"模型路由必须按镜头能力选择,不做单一模型押注:大场景、角色一致性、道具一致性、动作、成本、时长、地域稳定性都要进入评分。"
|
||
],
|
||
"target_files": [
|
||
"video-ai-system/MODEL-ROUTER.hdlp",
|
||
"video-ai-system/.env.example",
|
||
"video-ai-system/config/provider-registry.json",
|
||
"video-ai-system/config/shot-routing-rules.json",
|
||
"video-ai-system/engines/aliyun-wan-adapter.js",
|
||
"video-ai-system/engines/model-router.js",
|
||
"video-ai-system/tools/run-provider-smoke.js",
|
||
"video-ai-system/tools/story-context-builder.js",
|
||
"video-ai-system/tools/asset-locker.js",
|
||
"video-ai-system/tools/planar-text-overlay.js",
|
||
"video-ai-system/tools/audio-track-builder.js",
|
||
"video-ai-system/tools/audit-system.js",
|
||
"video-ai-system/outputs/provider-smoke/",
|
||
"video-ai-system/CURRENT.hdlp",
|
||
"video-ai-system/memory/zai-fu-fei-xiu-xian/STATUS.hdlp"
|
||
],
|
||
"target_modules": [
|
||
"video-ai-system/provider-adapters",
|
||
"video-ai-system/model-router",
|
||
"video-ai-system/story-context",
|
||
"video-ai-system/asset-lock",
|
||
"video-ai-system/text-overlay",
|
||
"video-ai-system/audio-post",
|
||
"video-ai-system/system-audit"
|
||
]
|
||
},
|
||
"development_plan": {
|
||
"title": "Preview-002 万相接入与成片质量增强",
|
||
"description": "把用户对 Preview-001 的反馈转成可执行系统能力:只新增万相 API,稳定角色/牌匾/招牌、人物真正说台词、BGM与音效分轨、镜头转场更像短剧,并用本地剪辑工具控制成本。",
|
||
"steps": [
|
||
"Step 1: 官方账号/API准备。冰朔只购买或开通:阿里云百炼/通义万相。腾讯混元生视频与 MiniMax/Hailuo 本阶段不购买、不开发。确认万相地域、限频、计费、异步任务查询方式。",
|
||
"Step 2: 密钥配置。补齐 .env.example 变量说明;真实密钥只写入本地 .env 或服务器密钥系统,绝不能提交仓库。",
|
||
"Step 3: Provider Registry。创建 provider-registry.json,记录 seedance、kling、aliyun-wan 三类 provider 的能力标签、支持输入、最大时长、分辨率、地域、是否异步、成本等级、推荐镜头类型、官方文档链接。",
|
||
"Step 4: 新增阿里万相适配器。实现创建任务、轮询任务、下载结果、错误归一、dry-run payload 输出;至少覆盖参考生视频/文生视频/图生视频或首帧能力中当前 Preview-002 必需的接口。",
|
||
"Step 5: 模型路由器。实现 model-router.js,按 shot_id、shot_type、locked_assets、dialogue、motion_level、text_in_frame、cost_budget 在 seedance/kling/aliyun-wan 中选择候选供应商,并输出为什么选它。",
|
||
"Step 6: 故事上下文构造。实现 story-context-builder.js,把前情压缩、当前集目标、当前镜头意图、角色/道具锁定、台词、禁忌项组合成中英双语提示词块。",
|
||
"Step 7: 资产锁定。实现 asset-locker.js,生成/维护角色、牌匾、场景、服饰等 reference asset 清单;支持从 Preview-001/S02 截图裁出天道宗牌匾作为锁定参考。",
|
||
"Step 8: 稳定文字贴合。实现 planar-text-overlay.js,用本地 FFmpeg + OpenCV/平面追踪方式把招牌/广告牌文字稳定贴到平面上,避免模型生成的中文漂移、模糊、摇晃。",
|
||
"Step 9: 音频分轨。实现 audio-track-builder.js,把 narration、dialogue、bgm、sfx 分轨;对白只能来自 script dialogue 字段,旁白只能来自 narration 字段。",
|
||
"Step 10: 剪辑增强。扩展 video-editor.js 或新增 timeline-editor.js,支持镜头节拍、J-cut/L-cut、环境声底噪、BGM ducking、转场类型选择和镜头间节奏说明,避免只做硬拼素材。",
|
||
"Step 11: 烟测工具。实现 run-provider-smoke.js,支持 --provider aliyun-wan、--dry-run、--paid-once、--shot-id;默认 dry-run,输出不含密钥的请求摘要到 outputs/provider-smoke/。",
|
||
"Step 12: 系统审计。扩展 audit-system.js,检查新增适配器、配置文件、环境变量占位、密钥泄露、dry-run 输出、路由规则完整性。",
|
||
"Step 13: Preview-002 镜头路由建议落表。至少给 EP01-15S-V2 的 S01/S02/S03/S04 写出路由建议:S01 大场景开场、S02 牌匾静态锁定、S03 苏白人物对白、S04 招生广告牌+围观者反应。",
|
||
"Step 14: 提交并推送。通过审计与 dry-run 后提交到仓库;真实付费生成不在本工单默认范围内,需冰朔另行确认。"
|
||
],
|
||
"priority": "critical",
|
||
"estimated_scope": "large"
|
||
},
|
||
"execution_plan": {
|
||
"executor": "tencent-ai-persona",
|
||
"execution_strategy": "sequential-with-checkpoints",
|
||
"rollback_on_failure": true,
|
||
"preserve_context": true,
|
||
"checkpoint_interval": "step",
|
||
"execution_timeout_ms": 7200000,
|
||
"retry_policy": {
|
||
"max_retries": 2,
|
||
"backoff_ms": 5000
|
||
},
|
||
"model_preference": "tencent-ai",
|
||
"auto_test": true,
|
||
"auto_commit": true,
|
||
"auto_notify": true
|
||
},
|
||
"constraints": {
|
||
"no_touch_files": [
|
||
"hldp/HLDP-SPEC-v1.0-OPENSOURCE.md",
|
||
"hldp/HLDP-SPEC-v2.0.md",
|
||
"brain/fifth-domain/zero-point/zhuyuan/tcs-core/",
|
||
"brain/fifth-domain/zero-point/zhuyuan/tcs-verify/",
|
||
".git/",
|
||
".env"
|
||
],
|
||
"required_tests": true,
|
||
"deploy_after": false,
|
||
"max_files_changed": 30,
|
||
"security_rules": [
|
||
"严禁提交任何真实 API Key、SecretId、SecretKey、Bearer Token、临时下载签名 URL。",
|
||
"所有真实付费调用必须由冰朔单独确认;默认只允许 dry-run。",
|
||
"所有官方 API 请求日志必须自动脱敏。",
|
||
"不得删除或覆盖 Preview-001 已有输出文件,只能新增 Preview-002 相关产物。"
|
||
]
|
||
},
|
||
"acceptance_criteria": [
|
||
"node video-ai-system/tools/audit-system.js 通过,且无密钥泄露告警。",
|
||
"node video-ai-system/tools/run-provider-smoke.js --provider aliyun-wan --dry-run 能输出合法 payload 摘要。",
|
||
"不得新增 hunyuan-video 或 minimax-hailuo 真实适配器;这两个平台本阶段只允许在文档中标注为 deferred。",
|
||
"video-ai-system/config/provider-registry.json 至少包含 seedance、kling、aliyun-wan,hunyuan-video 与 minimax-hailuo 如出现只能标记 deferred 且 disabled。",
|
||
"video-ai-system/config/shot-routing-rules.json 至少覆盖 S01/S02/S03/S04 的 Preview-002 路由建议。",
|
||
"story-context-builder 能生成含 story_so_far 与 current_shot 的中英双语上下文,不把剧情交给模型猜。",
|
||
"audio-track-builder 能区分 narration/dialogue/bgm/sfx,不再把剧本全文当旁白朗读。",
|
||
"planar-text-overlay 能用 dry-run 或示例素材证明文字层会跟随牌面/广告牌平面,不发生独立漂移。",
|
||
"完成后更新 video-ai-system/CURRENT.hdlp 与 video-ai-system/memory/zai-fu-fei-xiu-xian/STATUS.hdlp,并提交推送到 origin/main。"
|
||
],
|
||
"model_purchase_recommendation": {
|
||
"must_buy": [
|
||
{
|
||
"provider": "阿里云百炼 / 通义万相 Wan",
|
||
"priority": "P0",
|
||
"why": "适合参考生视频、首帧控制、角色/道具/场景参考、短视频续写和故事板式提示;直接对应牌匾一致性、角色一致性、前情注入等问题。",
|
||
"official_docs": [
|
||
"https://help.aliyun.com/zh/model-studio/wan-video-to-video-api-reference",
|
||
"https://help.aliyun.com/zh/model-studio/text-to-video-api-reference",
|
||
"https://help.aliyun.com/zh/model-studio/legacy-image-to-video-api-reference/"
|
||
]
|
||
}
|
||
],
|
||
"deferred": [
|
||
{
|
||
"provider": "腾讯云 / 腾讯混元生视频",
|
||
"priority": "deferred",
|
||
"why": "当前价格超出本阶段预算,暂不购买、暂不开发;后续等预算或官方价格变化再评估。",
|
||
"official_docs": [
|
||
"https://cloud.tencent.com/document/product/1616/107786",
|
||
"https://cloud.tencent.com/document/api/1616/107795"
|
||
]
|
||
},
|
||
{
|
||
"provider": "MiniMax / Hailuo",
|
||
"priority": "deferred",
|
||
"why": "可作为动作表现、镜头运动和导演式指令的候选增强,但本阶段不购买、暂不开发。",
|
||
"official_docs": [
|
||
"https://platform.minimax.io/docs/api-reference/video-generation-t2v"
|
||
]
|
||
}
|
||
],
|
||
"already_connected_keep": [
|
||
"火山引擎 / Seedance",
|
||
"可灵 / Kling"
|
||
]
|
||
},
|
||
"reasoning_context": {
|
||
"chat_summary": "Preview-001 已生成 15 秒样片,但用户反馈:天道宗牌匾颜色/形状/悬挂方式前后不一致;招生广告牌文字像后期模糊贴字且摇晃;配音把剧本全文念出来而不是人物说台词;缺少 BGM;转场像硬拼素材,不像短剧讲故事;后续需要多模型组合、成本控制和前情上下文注入。视频AI系统是光湖语言世界对外第一阶段成果证明,不能只做演示玩具,必须走向可拿得出手的成片能力。",
|
||
"key_decisions": [
|
||
"把视频生成拆成:故事上下文、镜头路由、资产锁定、视频生成、文字贴合、音频分轨、剪辑转场、审计验收。",
|
||
"本阶段从多模型扩张收敛为万相单新增模型:火山/可灵/万相三路足够做 Preview-002,避免成本失控。",
|
||
"中文可读文字不再交给视频模型自由生成,固定招牌/广告牌走本地后期稳定合成。",
|
||
"剧本字段必须结构化:旁白、对白、动作、镜头说明分开进入不同生产链路。",
|
||
"Codex 保留最后总装、审计、成片质量验收;腾讯AI人格体负责本工单的 API 接入与模块开发。"
|
||
],
|
||
"architecture_notes": "当前视频AI系统入口位于 video-ai-system/ENTRY.hdlp,当前进度位于 video-ai-system/CURRENT.hdlp 与 memory/zai-fu-fei-xiu-xian/STATUS.hdlp。Preview-002 计划已记录在 video-ai-system/plans/EP01-15S-V2-PREVIEW-002.hdlp,多模型初版路由说明位于 video-ai-system/MODEL-ROUTER.hdlp。"
|
||
},
|
||
"completion": {
|
||
"completed_at": null,
|
||
"result": null,
|
||
"pr_number": null,
|
||
"files_changed": []
|
||
}
|
||
}
|