feat(video-from-script): 重构工作流为子Agent分步执行并新增提示词模板系统
将视频制作工作流拆分为独立子步骤:分镜 → 图片提示词 → 生图 → 视频提示词 → 生视频 → 成片,每步由子Agent独立执行。引入prompts/目录统一管理提示词模板(分镜.md、图片提示词.md、视频提示词.md),通过account.json的storyboardPrompt/imageStylePrompt/videoStylePrompt字段引用。 变更内容: - 新增confirmed机制和pipeline.js confirm命令,生图后必须人工确认才能继续 - manifest schema改用shotDesc/narration/duration/directorRef替代旧字段 - 文件命名规则从keyword改为slug(从shotDesc/narration派生) - 删除旧的storyboard-rules.md和prompt-rules.md - pipeline.js脚本拆分为lib/目录下的独立模块(cmd-init/cmd-confirm/cmd-validate/phase-*) - 新增cmd-create-account支持一键创建带prompts目录的账号 - capcut_assemble支持narration字段替代text作为字幕源 - 新增.gitclaude/settings.json权限配置
This commit is contained in:
38
.claude/skills/video-from-script/scripts/lib/cmd-status.js
Normal file
38
.claude/skills/video-from-script/scripts/lib/cmd-status.js
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Command: status — 显示 manifest 执行状态
|
||||
*/
|
||||
|
||||
const { loadManifest } = require('./pipeline-utils')
|
||||
|
||||
const ALL_PHASES = ['images', 'upload', 'videos', 'tts', 'assemble']
|
||||
|
||||
function showStatus(manifestPath) {
|
||||
const manifest = loadManifest(manifestPath)
|
||||
const phases = manifest.pipeline?.phases || {}
|
||||
|
||||
console.log(`\nManifest: ${manifestPath}`)
|
||||
console.log(`Account: ${manifest.account || '(未指定)'}`)
|
||||
console.log(`\n阶段状态:`)
|
||||
for (const p of ALL_PHASES) {
|
||||
const status = phases[p] || 'pending'
|
||||
const icon = status === 'done' ? '✓' : status === 'running' ? '→' : status === 'failed' ? '✗' : status === 'partial' ? '~' : '·'
|
||||
console.log(` ${icon} ${p}: ${status}`)
|
||||
}
|
||||
|
||||
const items = manifest.items || []
|
||||
const done = items.filter(it => it.status === 'done').length
|
||||
const failed = items.filter(it => it.status === 'failed').length
|
||||
const pending = items.filter(it => !it.status || it.status === 'pending').length
|
||||
|
||||
console.log(`\nItems: ${items.length} 总计, ${done} 完成, ${failed} 失败, ${pending} 待处理`)
|
||||
|
||||
if (failed > 0) {
|
||||
console.log(`\n失败项:`)
|
||||
items.filter(it => it.status === 'failed').forEach((it, i) => {
|
||||
console.log(` [${it.id || i + 1}] ${it.error || '未知错误'}`)
|
||||
})
|
||||
}
|
||||
console.log()
|
||||
}
|
||||
|
||||
module.exports = { showStatus }
|
||||
Reference in New Issue
Block a user