@lingjingai/lj-awb-cli-pre 0.3.15 → 0.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -16
- package/install.mjs +1 -0
- package/package.json +2 -2
- package/packages/awb-cli/package.json +2 -2
- package/packages/awb-core/package.json +1 -1
- package/packages/awb-core/src/api.js +33 -64
- package/packages/awb-core/src/commands.js +147 -67
- package/packages/awb-core/src/common.js +2 -1
- package/packages/awb-core/src/output.js +74 -25
- package/packages/awb-core/src/services.js +645 -104
- package/packages/awb-core/src/standalone.js +207 -116
- package/skills/lj-awb/SKILL.md +78 -131
- package/skills/lj-awb/VERSION +1 -1
- package/skills/lj-awb/compat.json +3 -3
- package/skills/lj-awb/modules/asset.md +29 -22
- package/skills/lj-awb/modules/create-contract.md +20 -11
- package/skills/lj-awb/modules/create.md +37 -0
- package/skills/lj-awb/modules/driver.md +109 -0
- package/skills/lj-awb/modules/evals.md +84 -36
- package/skills/lj-awb/modules/image.md +14 -14
- package/skills/lj-awb/modules/model.md +11 -29
- package/skills/lj-awb/modules/project.md +1 -0
- package/skills/lj-awb/modules/subject.md +24 -13
- package/skills/lj-awb/modules/task-manual.md +31 -28
- package/skills/lj-awb/modules/task.md +22 -3
- package/skills/lj-awb/modules/upload.md +10 -9
- package/skills/lj-awb/modules/video.md +25 -32
- package/skills/lj-awb/modules/workflows.md +81 -199
- package/skills/lj-awb/references/error-codes.md +13 -6
- package/skills/lj-awb/references/model-options-read.md +2 -2
- package/skills/lj-awb/references/output-fields.md +23 -18
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
assetGroupList,
|
|
9
9
|
assetGroupUpdate,
|
|
10
10
|
assetMatchActor,
|
|
11
|
+
assetReviewModels,
|
|
11
12
|
assetRegister,
|
|
12
13
|
creditsBalance,
|
|
13
14
|
creditsUsageSummary,
|
|
@@ -32,6 +33,9 @@ import {
|
|
|
32
33
|
subjectList,
|
|
33
34
|
subjectPublish,
|
|
34
35
|
subjectPublishBatch,
|
|
36
|
+
subjectVoiceCreate,
|
|
37
|
+
subjectVoiceList,
|
|
38
|
+
subjectVoiceWait,
|
|
35
39
|
subjectWait,
|
|
36
40
|
subtitleRemove,
|
|
37
41
|
subtitleStatus,
|
|
@@ -71,6 +75,7 @@ const PROJECT_ID_ARG = { name: 'project-id', valueName: 'projectId', description
|
|
|
71
75
|
const PROJECT_GROUP_ARG = { name: 'project-group-no', valueName: 'no', description: '项目组编号;不传时读取当前项目组 / 环境变量 / 本地状态' };
|
|
72
76
|
const CUSTOM_BIZ_ARG = { name: 'custom-biz-id', valueName: 'id', description: '外部追踪 ID;不传则请求不携带 customBizId' };
|
|
73
77
|
const MODEL_GROUP_ARG = { name: 'model-group-code', valueName: 'code', description: '模型组编码;创建和参数查询只传这个字段' };
|
|
78
|
+
const ASSET_PLATFORM_ARG = { name: 'platform', valueName: 'platform', description: '素材加白平台,必须显式传 JIMENG 或 BYTEPLUS,不做别名推断' };
|
|
74
79
|
const MODEL_LIST_ARGS = [
|
|
75
80
|
{ name: 'model', valueName: 'keyword', description: '按模型名、编码、供应商或输入方式过滤;不传时查询全部' },
|
|
76
81
|
{ name: 'limit', valueName: 'n', description: '默认文本最多展示 N 条,默认 8;JSON 输出始终返回全部匹配' },
|
|
@@ -396,6 +401,24 @@ export function registerAwbCommands(cli) {
|
|
|
396
401
|
func: async (_ctx, kwargs) => listModels('video', kwargs),
|
|
397
402
|
});
|
|
398
403
|
|
|
404
|
+
cli({
|
|
405
|
+
name: 'model asset-review-models',
|
|
406
|
+
description: commandHelp('查询支持素材加白的模型组与平台平铺关系', {
|
|
407
|
+
examples: [
|
|
408
|
+
'lj-awb model asset-review-models',
|
|
409
|
+
'lj-awb model asset-review-models --platform JIMENG',
|
|
410
|
+
'lj-awb model asset-review-models --model-group-code <code>',
|
|
411
|
+
],
|
|
412
|
+
hint: '该命令只负责发现 modelGroupCode 与 platform 的关系;资产组和素材创建仍通过 create asset-group / create asset 显式传 --platform。',
|
|
413
|
+
}),
|
|
414
|
+
args: [
|
|
415
|
+
MODEL_GROUP_ARG,
|
|
416
|
+
ASSET_PLATFORM_ARG,
|
|
417
|
+
INCLUDE_RAW_ARG,
|
|
418
|
+
],
|
|
419
|
+
func: async (_ctx, kwargs) => assetReviewModels(kwargs),
|
|
420
|
+
});
|
|
421
|
+
|
|
399
422
|
cli({
|
|
400
423
|
name: 'model options',
|
|
401
424
|
description: commandHelp('查询指定模型支持的 CLI 参数、枚举值、素材约束和条件约束', {
|
|
@@ -419,7 +442,7 @@ export function registerAwbCommands(cli) {
|
|
|
419
442
|
examples: [
|
|
420
443
|
'lj-awb model create-spec --model-group-code <code>',
|
|
421
444
|
],
|
|
422
|
-
hint: '创建前先用 model input-guide 理解统一参数,再用 model options 查具体枚举和素材限制,最后按 create-spec 组装 image create
|
|
445
|
+
hint: '创建前先用 model input-guide 理解统一参数,再用 model options 查具体枚举和素材限制,最后按 create-spec 组装 create image / create video。',
|
|
423
446
|
}),
|
|
424
447
|
args: [
|
|
425
448
|
MODEL_GROUP_ARG,
|
|
@@ -445,7 +468,8 @@ export function registerAwbCommands(cli) {
|
|
|
445
468
|
description: commandHelp('上传本地图片 / 视频 / 音频到平台 COS,并返回 backendPath / URL', {
|
|
446
469
|
examples: [
|
|
447
470
|
'lj-awb upload files --files ./a.png,./b.mp4 --dry-run',
|
|
448
|
-
'lj-awb upload files --file ./ref.png
|
|
471
|
+
'lj-awb upload files --file ./ref.png',
|
|
472
|
+
'lj-awb upload files --file ./first-frame.png --scene-type material-video-create',
|
|
449
473
|
],
|
|
450
474
|
hint: '不会暴露 COS 临时密钥;skill 只使用返回的 backendPath / url。',
|
|
451
475
|
}),
|
|
@@ -453,7 +477,7 @@ export function registerAwbCommands(cli) {
|
|
|
453
477
|
{ name: 'file', valueName: 'path', description: '单个文件路径' },
|
|
454
478
|
{ name: 'files', valueName: 'paths', description: '多个文件路径,逗号分隔' },
|
|
455
479
|
{ name: 'files-json', valueName: 'path|json', description: '文件数组 JSON 或 JSON 文件路径' },
|
|
456
|
-
{ name: 'scene-type', valueName: 'scene', description: '
|
|
480
|
+
{ name: 'scene-type', valueName: 'scene', description: '上传场景;未传时图片默认 material-image-draw,音视频默认 material-video-create;图片用于视频 / 主体复用时显式传 material-video-create' },
|
|
457
481
|
{ name: 'project-no', valueName: 'no', description: '可选项目组编号;不传时读取当前项目组 / 环境变量 / 本地状态' },
|
|
458
482
|
DRY_RUN_ARG,
|
|
459
483
|
],
|
|
@@ -461,9 +485,9 @@ export function registerAwbCommands(cli) {
|
|
|
461
485
|
});
|
|
462
486
|
|
|
463
487
|
cli({
|
|
464
|
-
name: 'image
|
|
488
|
+
name: 'create image-fee',
|
|
465
489
|
description: commandHelp('计算生图预计积分(必须有 --prompt;参考图通过 --resource 传入)', {
|
|
466
|
-
examples: ['lj-awb image
|
|
490
|
+
examples: ['lj-awb create image-fee --model-group-code <code> --prompt "一只小狗" --ratio 9:16 --quality 2K'],
|
|
467
491
|
hint: '估价前先确认 quality、ratio、generate-num 等会影响积分的关键参数。',
|
|
468
492
|
}),
|
|
469
493
|
args: [
|
|
@@ -481,12 +505,12 @@ export function registerAwbCommands(cli) {
|
|
|
481
505
|
});
|
|
482
506
|
|
|
483
507
|
cli({
|
|
484
|
-
name: 'image
|
|
508
|
+
name: 'create image',
|
|
485
509
|
description: commandHelp('提交生图任务;正式执行需要 --yes', {
|
|
486
510
|
examples: [
|
|
487
|
-
'lj-awb image
|
|
488
|
-
'lj-awb image
|
|
489
|
-
'lj-awb image
|
|
511
|
+
'lj-awb create image --model-group-code <code> --prompt "一只小狗" --dry-run',
|
|
512
|
+
'lj-awb create image --model-group-code <code> --prompt "参考图里的角色奔跑" --resource image:reference=./ref.png --project-group-no <no> --yes',
|
|
513
|
+
'lj-awb create image --model-group-code <code> --prompt "产品海报" --resources-json \'[{"type":"image","usage":"reference","source":{"kind":"url","value":"./product.jpg"}}]\' --dry-run',
|
|
490
514
|
],
|
|
491
515
|
}),
|
|
492
516
|
args: [
|
|
@@ -508,11 +532,11 @@ export function registerAwbCommands(cli) {
|
|
|
508
532
|
});
|
|
509
533
|
|
|
510
534
|
cli({
|
|
511
|
-
name: 'image
|
|
535
|
+
name: 'create image-batch',
|
|
512
536
|
description: commandHelp('批量提交生图任务;输入支持 JSON / JSONL / 纯文本 prompt(每行一条)', {
|
|
513
537
|
examples: [
|
|
514
|
-
'lj-awb image
|
|
515
|
-
'lj-awb image
|
|
538
|
+
'lj-awb create image-batch --input-file ./prompts.txt --model-group-code <code> --dry-run',
|
|
539
|
+
'lj-awb create image-batch --input-file ./image-input.jsonl --model-group-code <code> --concurrency 3 --yes',
|
|
516
540
|
],
|
|
517
541
|
hint: 'JSON/JSONL 每项只写任务差异字段:prompt、ratio、quality、generate_num、resources、resource、customBizId。',
|
|
518
542
|
}),
|
|
@@ -529,9 +553,9 @@ export function registerAwbCommands(cli) {
|
|
|
529
553
|
});
|
|
530
554
|
|
|
531
555
|
cli({
|
|
532
|
-
name: 'image
|
|
556
|
+
name: 'task image-status',
|
|
533
557
|
description: commandHelp('查询生图任务状态', {
|
|
534
|
-
examples: ['lj-awb image
|
|
558
|
+
examples: ['lj-awb task image-status --task-id <id>'],
|
|
535
559
|
}),
|
|
536
560
|
args: [
|
|
537
561
|
{ name: 'task-id', valueName: 'id', description: '任务 ID' },
|
|
@@ -540,9 +564,9 @@ export function registerAwbCommands(cli) {
|
|
|
540
564
|
});
|
|
541
565
|
|
|
542
566
|
cli({
|
|
543
|
-
name: 'video
|
|
567
|
+
name: 'create video-fee',
|
|
544
568
|
description: commandHelp('计算生视频预计积分(--prompt / --resource / --resources-json 至少传一个)', {
|
|
545
|
-
examples: ['lj-awb video
|
|
569
|
+
examples: ['lj-awb create video-fee --model-group-code <code> --prompt "雨夜奔跑" --duration 5 --quality 720 --ratio 9:16'],
|
|
546
570
|
hint: '估价前先确认 quality、duration、ratio 等会影响积分的关键参数。',
|
|
547
571
|
}),
|
|
548
572
|
args: [
|
|
@@ -561,13 +585,13 @@ export function registerAwbCommands(cli) {
|
|
|
561
585
|
});
|
|
562
586
|
|
|
563
587
|
cli({
|
|
564
|
-
name: 'video
|
|
588
|
+
name: 'create video',
|
|
565
589
|
description: commandHelp('提交生视频任务;正式执行需要 --yes', {
|
|
566
590
|
examples: [
|
|
567
|
-
'lj-awb video
|
|
568
|
-
'lj-awb video
|
|
569
|
-
'lj-awb video
|
|
570
|
-
'lj-awb video
|
|
591
|
+
'lj-awb create video --model-group-code <code> --prompt "雨夜奔跑" --dry-run',
|
|
592
|
+
'lj-awb create video --model-group-code <code> --prompt "镜头推进" --resource image:first_frame=./actor.png --duration 5 --yes',
|
|
593
|
+
'lj-awb create video --model-group-code <code> --prompt "首尾帧过渡" --duration 5 --resources-json \'[{"type":"image","usage":"first_frame","source":{"kind":"url","value":"./first.png"}},{"type":"image","usage":"last_frame","source":{"kind":"url","value":"./last.png"}}]\' --dry-run',
|
|
594
|
+
'lj-awb create video --model-group-code <code> --prompt "让 <<<hero>>> 跟随音乐节奏转身" --resource image:reference:hero=./actor.png --resource audio:reference=./music.mp3 --duration 5 --dry-run',
|
|
571
595
|
],
|
|
572
596
|
hint: '--prompt / --resource / --resources-json 至少传一个;fee / --dry-run 之前先确认 quality、duration、ratio 等关键参数。',
|
|
573
597
|
}),
|
|
@@ -591,11 +615,11 @@ export function registerAwbCommands(cli) {
|
|
|
591
615
|
});
|
|
592
616
|
|
|
593
617
|
cli({
|
|
594
|
-
name: 'video
|
|
618
|
+
name: 'create video-batch',
|
|
595
619
|
description: commandHelp('批量提交生视频任务;输入支持 JSON / JSONL / 纯文本 prompt(每行一条)', {
|
|
596
620
|
examples: [
|
|
597
|
-
'lj-awb video
|
|
598
|
-
'lj-awb video
|
|
621
|
+
'lj-awb create video-batch --input-file ./prompts.txt --model-group-code <code> --dry-run',
|
|
622
|
+
'lj-awb create video-batch --input-file ./video-input.jsonl --model-group-code <code> --concurrency 2 --yes',
|
|
599
623
|
],
|
|
600
624
|
hint: 'JSON/JSONL 每项只写任务差异字段:prompt、ratio、quality、duration、need_audio、resources、resource、customBizId。',
|
|
601
625
|
}),
|
|
@@ -612,24 +636,24 @@ export function registerAwbCommands(cli) {
|
|
|
612
636
|
});
|
|
613
637
|
|
|
614
638
|
cli({
|
|
615
|
-
name: 'video
|
|
639
|
+
name: 'task video-status',
|
|
616
640
|
description: commandHelp('查询生视频任务状态', {
|
|
617
|
-
examples: ['lj-awb video
|
|
641
|
+
examples: ['lj-awb task video-status --task-id <id>'],
|
|
618
642
|
}),
|
|
619
643
|
args: [{ name: 'task-id', valueName: 'id', description: '任务 ID' }],
|
|
620
644
|
func: async (_ctx, kwargs) => taskStatus({ ...kwargs, taskType: 'VIDEO_GROUP' }),
|
|
621
645
|
});
|
|
622
646
|
|
|
623
647
|
cli({
|
|
624
|
-
name: 'video
|
|
625
|
-
description: commandHelp('
|
|
626
|
-
examples: ['lj-awb video
|
|
627
|
-
hint: '
|
|
648
|
+
name: 'create video-subtitle-removal',
|
|
649
|
+
description: commandHelp('基于 material 来源视频任务提交去字幕任务', {
|
|
650
|
+
examples: ['lj-awb create video-subtitle-removal --source-task-id <videoTaskId> --project-group-no <no> --dry-run'],
|
|
651
|
+
hint: '不再接收视频 URL;material 会根据来源任务读取原始视频、计费、落库和异步处理。',
|
|
628
652
|
}),
|
|
629
653
|
args: [
|
|
630
|
-
{ name: '
|
|
631
|
-
|
|
632
|
-
|
|
654
|
+
{ name: 'source-task-id', valueName: 'id', description: '来源视频任务 ID;必须是 material 中已成功的视频任务' },
|
|
655
|
+
PROJECT_GROUP_ARG,
|
|
656
|
+
TASK_RECORD_ARG,
|
|
633
657
|
DRY_RUN_ARG,
|
|
634
658
|
YES_ARG,
|
|
635
659
|
],
|
|
@@ -637,13 +661,13 @@ export function registerAwbCommands(cli) {
|
|
|
637
661
|
});
|
|
638
662
|
|
|
639
663
|
cli({
|
|
640
|
-
name: 'video
|
|
641
|
-
description: commandHelp('
|
|
642
|
-
examples: ['lj-awb
|
|
664
|
+
name: 'task video-subtitle-status',
|
|
665
|
+
description: commandHelp('查询 material 去字幕任务状态', {
|
|
666
|
+
examples: ['lj-awb task video-subtitle-status --task-id <subtitleTaskId>'],
|
|
643
667
|
}),
|
|
644
668
|
args: [
|
|
645
|
-
{ name: '
|
|
646
|
-
|
|
669
|
+
{ name: 'task-id', valueName: 'id', description: 'material 去字幕任务 ID' },
|
|
670
|
+
PROJECT_GROUP_ARG,
|
|
647
671
|
],
|
|
648
672
|
func: async (_ctx, kwargs) => subtitleStatus(kwargs),
|
|
649
673
|
});
|
|
@@ -706,9 +730,9 @@ export function registerAwbCommands(cli) {
|
|
|
706
730
|
});
|
|
707
731
|
|
|
708
732
|
cli({
|
|
709
|
-
name: 'asset
|
|
733
|
+
name: 'create asset-match-actor',
|
|
710
734
|
description: commandHelp('按描述和标签匹配平台素材库角色候选', {
|
|
711
|
-
examples: ['lj-awb asset
|
|
735
|
+
examples: ['lj-awb create asset-match-actor --description "十八岁少女,古风,清冷" --tags-json \'{"gender":"女"}\''],
|
|
712
736
|
}),
|
|
713
737
|
args: [
|
|
714
738
|
{ name: 'description', valueName: 'text', description: '角色 / 状态描述' },
|
|
@@ -721,12 +745,13 @@ export function registerAwbCommands(cli) {
|
|
|
721
745
|
});
|
|
722
746
|
|
|
723
747
|
cli({
|
|
724
|
-
name: 'asset
|
|
748
|
+
name: 'create asset-groups',
|
|
725
749
|
description: commandHelp('查询素材组', {
|
|
726
|
-
examples: ['lj-awb asset
|
|
750
|
+
examples: ['lj-awb create asset-groups --platform JIMENG --name "女主"'],
|
|
727
751
|
}),
|
|
728
752
|
args: [
|
|
729
753
|
{ name: 'name', valueName: 'keyword', description: '素材组名称关键词' },
|
|
754
|
+
ASSET_PLATFORM_ARG,
|
|
730
755
|
{ name: 'group-ids', valueName: 'ids', description: '素材组 ID,逗号分隔' },
|
|
731
756
|
{ name: 'page-number', valueName: 'n', description: '页码' },
|
|
732
757
|
{ name: 'page-size', valueName: 'n', description: '每页数量' },
|
|
@@ -736,25 +761,29 @@ export function registerAwbCommands(cli) {
|
|
|
736
761
|
});
|
|
737
762
|
|
|
738
763
|
cli({
|
|
739
|
-
name: 'asset
|
|
764
|
+
name: 'create asset-group-get',
|
|
740
765
|
description: commandHelp('查看素材组详情', {
|
|
741
|
-
examples: ['lj-awb asset
|
|
766
|
+
examples: ['lj-awb create asset-group-get --group-id <id> --platform JIMENG'],
|
|
742
767
|
}),
|
|
743
|
-
args: [
|
|
768
|
+
args: [
|
|
769
|
+
{ name: 'group-id', valueName: 'id', description: '素材组 ID' },
|
|
770
|
+
ASSET_PLATFORM_ARG,
|
|
771
|
+
],
|
|
744
772
|
func: async (_ctx, kwargs) => assetGroupGet(kwargs),
|
|
745
773
|
});
|
|
746
774
|
|
|
747
775
|
cli({
|
|
748
|
-
name: 'asset
|
|
776
|
+
name: 'create asset-group',
|
|
749
777
|
description: commandHelp('创建素材组(用于素材注册时作为命名空间)', {
|
|
750
778
|
examples: [
|
|
751
|
-
'lj-awb asset
|
|
752
|
-
'lj-awb asset
|
|
779
|
+
'lj-awb create asset-group --name "女主素材组" --platform JIMENG --dry-run',
|
|
780
|
+
'lj-awb create asset-group --name "女主素材组" --platform JIMENG --description "用于第二集女主相关素材" --yes',
|
|
753
781
|
],
|
|
754
782
|
}),
|
|
755
783
|
args: [
|
|
756
784
|
{ name: 'name', valueName: 'name', description: '素材组名称' },
|
|
757
785
|
{ name: 'description', valueName: 'text', description: '素材组描述' },
|
|
786
|
+
ASSET_PLATFORM_ARG,
|
|
758
787
|
{ name: 'project-name', valueName: 'name', description: '项目名,默认 default' },
|
|
759
788
|
DRY_RUN_ARG,
|
|
760
789
|
YES_ARG,
|
|
@@ -763,14 +792,15 @@ export function registerAwbCommands(cli) {
|
|
|
763
792
|
});
|
|
764
793
|
|
|
765
794
|
cli({
|
|
766
|
-
name: 'asset
|
|
795
|
+
name: 'create asset-group-update',
|
|
767
796
|
description: commandHelp('更新素材组名称 / 描述', {
|
|
768
|
-
examples: ['lj-awb asset
|
|
797
|
+
examples: ['lj-awb create asset-group-update --group-id <id> --platform JIMENG --name "新名称" --dry-run'],
|
|
769
798
|
}),
|
|
770
799
|
args: [
|
|
771
800
|
{ name: 'group-id', valueName: 'id', description: '素材组 ID' },
|
|
772
801
|
{ name: 'name', valueName: 'name', description: '新名称' },
|
|
773
802
|
{ name: 'description', valueName: 'text', description: '新描述' },
|
|
803
|
+
ASSET_PLATFORM_ARG,
|
|
774
804
|
{ name: 'project-name', valueName: 'name', description: '项目名' },
|
|
775
805
|
DRY_RUN_ARG,
|
|
776
806
|
YES_ARG,
|
|
@@ -779,9 +809,9 @@ export function registerAwbCommands(cli) {
|
|
|
779
809
|
});
|
|
780
810
|
|
|
781
811
|
cli({
|
|
782
|
-
name: 'asset
|
|
812
|
+
name: 'create asset',
|
|
783
813
|
description: commandHelp('把 COS 路径 / URL / 本地文件注册成平台素材', {
|
|
784
|
-
examples: ['lj-awb asset
|
|
814
|
+
examples: ['lj-awb create asset --group-id <id> --platform JIMENG --url "asset-review/upload/a.png" --name "女主正面" --dry-run'],
|
|
785
815
|
}),
|
|
786
816
|
args: [
|
|
787
817
|
{ name: 'group-id', valueName: 'id', description: '素材组 ID' },
|
|
@@ -789,7 +819,7 @@ export function registerAwbCommands(cli) {
|
|
|
789
819
|
{ name: 'file', valueName: 'path', description: '本地素材文件;会先上传' },
|
|
790
820
|
{ name: 'url', valueName: 'url', description: '素材 URL 或 COS 路径' },
|
|
791
821
|
{ name: 'backend-path', valueName: 'path', description: 'upload files 返回的 backendPath' },
|
|
792
|
-
|
|
822
|
+
ASSET_PLATFORM_ARG,
|
|
793
823
|
DRY_RUN_ARG,
|
|
794
824
|
YES_ARG,
|
|
795
825
|
],
|
|
@@ -1253,9 +1283,9 @@ export function registerAwbCommands(cli) {
|
|
|
1253
1283
|
}
|
|
1254
1284
|
|
|
1255
1285
|
cli({
|
|
1256
|
-
name: 'subject
|
|
1286
|
+
name: 'create subject-list',
|
|
1257
1287
|
description: commandHelp('查询可用于视频主体参考的元素 / 主体', {
|
|
1258
|
-
examples: ['lj-awb subject
|
|
1288
|
+
examples: ['lj-awb create subject-list --name "女主"'],
|
|
1259
1289
|
}),
|
|
1260
1290
|
args: [
|
|
1261
1291
|
{ name: 'name', valueName: 'keyword', description: '主体名称关键词' },
|
|
@@ -1267,18 +1297,18 @@ export function registerAwbCommands(cli) {
|
|
|
1267
1297
|
});
|
|
1268
1298
|
|
|
1269
1299
|
cli({
|
|
1270
|
-
name: 'subject
|
|
1271
|
-
description: commandHelp('创建平台主体 element,用于 KeLing / 可灵 视频主体参考', {
|
|
1300
|
+
name: 'create subject',
|
|
1301
|
+
description: commandHelp('创建平台主体 element,用于 KeLing / 可灵 和 Vidu 视频主体参考', {
|
|
1272
1302
|
examples: [
|
|
1273
|
-
'lj-awb subject
|
|
1274
|
-
'lj-awb subject
|
|
1303
|
+
'lj-awb create subject --model-code tx --name 女主 --resource primary:./three-view.png --dry-run',
|
|
1304
|
+
'lj-awb create subject --model-code vidu --name 女主 --resource primary:material/assets/a.png --resource face:./face.png --yes',
|
|
1275
1305
|
],
|
|
1276
|
-
hint: '参考图 slot:primary | three-view | face | side | back。无 primary 时 three-view 自动升为主图;本地路径(./ 或绝对路径)会自动上传,含 :// 或 material/ 前缀的视为已上传 URL。',
|
|
1306
|
+
hint: '参考图 slot:primary | three-view | face | side | back。主体 modelCode 只接受 tx / vidu:KeLing / 可灵主体明确传 tx,Vidu 主体明确传 vidu。无 primary 时 three-view 自动升为主图;本地路径(./ 或绝对路径)会自动上传,含 :// 或 material/ 前缀的视为已上传 URL。',
|
|
1277
1307
|
}),
|
|
1278
1308
|
args: [
|
|
1279
1309
|
{ name: 'name', valueName: 'name', description: '主体名称' },
|
|
1280
1310
|
{ name: 'description', valueName: 'text', description: '主体描述' },
|
|
1281
|
-
{ name: 'model-code', valueName: 'code', description: '
|
|
1311
|
+
{ name: 'model-code', valueName: 'code', description: '主体创建模型编码,仅 tx / vidu;KeLing / 可灵传 tx,Vidu 传 vidu' },
|
|
1282
1312
|
{ name: 'reference-type', valueName: 'type', description: '参考类型,默认 image_refer' },
|
|
1283
1313
|
{ name: 'voice-id', valueName: 'id', description: '参考音色 ID,可选' },
|
|
1284
1314
|
{ name: 'tags-json', valueName: 'json', description: '标签数组,例如 [{"tagId":"o_102"}]' },
|
|
@@ -1290,27 +1320,77 @@ export function registerAwbCommands(cli) {
|
|
|
1290
1320
|
});
|
|
1291
1321
|
|
|
1292
1322
|
cli({
|
|
1293
|
-
name: 'subject
|
|
1323
|
+
name: 'create subject-wait',
|
|
1294
1324
|
description: commandHelp('等待主体 externalId 回填,用于后续视频主体参考', {
|
|
1295
|
-
examples: ['lj-awb subject
|
|
1325
|
+
examples: ['lj-awb create subject-wait --element-id <elementId> --wait-seconds 300'],
|
|
1296
1326
|
}),
|
|
1297
1327
|
args: [
|
|
1298
|
-
{ name: 'element-id', valueName: 'id', description: 'subject
|
|
1328
|
+
{ name: 'element-id', valueName: 'id', description: 'create subject 返回的 elementId' },
|
|
1299
1329
|
...SUBJECT_WAIT_ARGS,
|
|
1300
1330
|
],
|
|
1301
1331
|
func: async (_ctx, kwargs) => subjectWait(kwargs),
|
|
1302
1332
|
});
|
|
1303
1333
|
|
|
1304
1334
|
cli({
|
|
1305
|
-
name: 'subject
|
|
1335
|
+
name: 'create subject-voice-list',
|
|
1336
|
+
description: commandHelp('查询主体创建可引用的自定义音色', {
|
|
1337
|
+
examples: ['lj-awb create subject-voice-list --name "女主"'],
|
|
1338
|
+
}),
|
|
1339
|
+
args: [
|
|
1340
|
+
{ name: 'name', valueName: 'keyword', description: '音色名称关键词' },
|
|
1341
|
+
{ name: 'page-number', valueName: 'n', description: '页码' },
|
|
1342
|
+
{ name: 'page-size', valueName: 'n', description: '每页数量' },
|
|
1343
|
+
INCLUDE_RAW_ARG,
|
|
1344
|
+
],
|
|
1345
|
+
func: async (_ctx, kwargs) => subjectVoiceList(kwargs),
|
|
1346
|
+
});
|
|
1347
|
+
|
|
1348
|
+
cli({
|
|
1349
|
+
name: 'create subject-voice',
|
|
1350
|
+
description: commandHelp('创建主体自定义音色,成功后 externalId 可作为 create subject --voice-id', {
|
|
1351
|
+
examples: [
|
|
1352
|
+
'lj-awb create subject-voice --name 女主音色 --file ./voice.mp3 --dry-run',
|
|
1353
|
+
'lj-awb create subject-voice --name 女主音色 --voice-url material/video-create/audio.mp3 --yes',
|
|
1354
|
+
],
|
|
1355
|
+
hint: '音色来源三选一:--file 本地音频会先上传;--voice-url/--audio-url 使用已上传 material 路径,外部 HTTP URL 会先转存上传;--video-id 使用已有视频 ID。',
|
|
1356
|
+
}),
|
|
1357
|
+
args: [
|
|
1358
|
+
{ name: 'name', valueName: 'name', description: '音色名称' },
|
|
1359
|
+
{ name: 'file', valueName: 'path', description: '本地音频文件,创建前自动上传' },
|
|
1360
|
+
{ name: 'voice-url', valueName: 'url', description: '已上传的 material 音频路径或 COS URL' },
|
|
1361
|
+
{ name: 'audio-url', valueName: 'url', description: '同 --voice-url,兼容音频命名' },
|
|
1362
|
+
{ name: 'video-id', valueName: 'id', description: '已有视频 ID;与 --file / --voice-url 二选一' },
|
|
1363
|
+
{ name: 'req-task-id', valueName: 'id', description: '可选外部追踪 ID' },
|
|
1364
|
+
DRY_RUN_ARG,
|
|
1365
|
+
YES_ARG,
|
|
1366
|
+
],
|
|
1367
|
+
func: async (_ctx, kwargs) => subjectVoiceCreate(kwargs),
|
|
1368
|
+
});
|
|
1369
|
+
|
|
1370
|
+
cli({
|
|
1371
|
+
name: 'create subject-voice-wait',
|
|
1372
|
+
description: commandHelp('等待主体音色 externalId 回填,用于 create subject --voice-id', {
|
|
1373
|
+
examples: ['lj-awb create subject-voice-wait --voice-record-id <voiceRecordId> --wait-seconds 300'],
|
|
1374
|
+
}),
|
|
1375
|
+
args: [
|
|
1376
|
+
{ name: 'voice-record-id', valueName: 'id', description: 'create subject-voice 返回的 voiceRecordId' },
|
|
1377
|
+
{ name: 'req-task-id', valueName: 'id', description: '兼容 material getVoiceByReqTaskId 的 reqTaskId' },
|
|
1378
|
+
...SUBJECT_WAIT_ARGS,
|
|
1379
|
+
],
|
|
1380
|
+
func: async (_ctx, kwargs) => subjectVoiceWait(kwargs),
|
|
1381
|
+
});
|
|
1382
|
+
|
|
1383
|
+
cli({
|
|
1384
|
+
name: 'create subject-batch',
|
|
1306
1385
|
description: commandHelp('批量发布主体资产;输入支持 JSON 数组文件或 JSONL(每行一条)', {
|
|
1307
1386
|
examples: [
|
|
1308
|
-
'lj-awb subject
|
|
1309
|
-
'lj-awb subject
|
|
1387
|
+
'lj-awb create subject-batch --model-code tx --input-file ./subjects.jsonl --dry-run',
|
|
1388
|
+
'lj-awb create subject-batch --model-code vidu --input-file ./subjects.json --concurrency 2 --yes',
|
|
1310
1389
|
],
|
|
1311
1390
|
}),
|
|
1312
1391
|
args: [
|
|
1313
1392
|
{ name: 'input-file', valueName: 'path', description: '批量输入文件' },
|
|
1393
|
+
{ name: 'model-code', valueName: 'code', description: '默认主体创建模型编码,仅 tx / vidu;单条可覆盖' },
|
|
1314
1394
|
{ name: 'project-name', valueName: 'name', description: '默认项目名' },
|
|
1315
1395
|
{ name: 'concurrency', valueName: 'n', description: '并发数,默认 1' },
|
|
1316
1396
|
DRY_RUN_ARG,
|
|
@@ -21,7 +21,8 @@ export const TASK_UPLOAD_SCENE = {
|
|
|
21
21
|
VIDEO_CREATE: 'material-video-create',
|
|
22
22
|
VIDEO_GROUP: 'material-video-create',
|
|
23
23
|
SUBJECT: 'material-video-create',
|
|
24
|
-
|
|
24
|
+
ASSET_REVIEW: 'asset-review',
|
|
25
|
+
DEFAULT: 'material-image-draw',
|
|
25
26
|
};
|
|
26
27
|
export const TERMINAL_TASK_STATES = new Set([
|
|
27
28
|
'SUCCESS',
|