@lingjingai/lj-awb-cli-pre 0.3.15
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 +335 -0
- package/build/_shared.mjs +130 -0
- package/build/build.mjs +50 -0
- package/build/pre-publish.mjs +57 -0
- package/build/pre.mjs +42 -0
- package/build/prod.mjs +52 -0
- package/install.mjs +53 -0
- package/package.json +44 -0
- package/packages/awb-cli/README.md +19 -0
- package/packages/awb-cli/bin/lj-awb +19 -0
- package/packages/awb-cli/bin/lj-awb.js +11 -0
- package/packages/awb-cli/package.json +18 -0
- package/packages/awb-core/README.md +12 -0
- package/packages/awb-core/package.json +21 -0
- package/packages/awb-core/src/api.js +349 -0
- package/packages/awb-core/src/artifact.js +936 -0
- package/packages/awb-core/src/auth.js +80 -0
- package/packages/awb-core/src/commands.js +1321 -0
- package/packages/awb-core/src/common.js +508 -0
- package/packages/awb-core/src/output.js +1189 -0
- package/packages/awb-core/src/services.js +3811 -0
- package/packages/awb-core/src/standalone.js +1213 -0
- package/skills/lj-awb/SKILL.md +160 -0
- package/skills/lj-awb/VERSION +1 -0
- package/skills/lj-awb/compat.json +6 -0
- package/skills/lj-awb/modules/account.md +30 -0
- package/skills/lj-awb/modules/artifact/asset.md +64 -0
- package/skills/lj-awb/modules/artifact/clip.md +65 -0
- package/skills/lj-awb/modules/artifact/script.md +37 -0
- package/skills/lj-awb/modules/artifact/video.md +65 -0
- package/skills/lj-awb/modules/artifact.md +65 -0
- package/skills/lj-awb/modules/asset.md +53 -0
- package/skills/lj-awb/modules/auth.md +30 -0
- package/skills/lj-awb/modules/create-contract.md +118 -0
- package/skills/lj-awb/modules/credits.md +28 -0
- package/skills/lj-awb/modules/evals.md +186 -0
- package/skills/lj-awb/modules/image.md +75 -0
- package/skills/lj-awb/modules/model.md +110 -0
- package/skills/lj-awb/modules/project.md +30 -0
- package/skills/lj-awb/modules/subject.md +32 -0
- package/skills/lj-awb/modules/task-manual.md +185 -0
- package/skills/lj-awb/modules/task.md +62 -0
- package/skills/lj-awb/modules/upload.md +33 -0
- package/skills/lj-awb/modules/video.md +102 -0
- package/skills/lj-awb/modules/workflows.md +482 -0
- package/skills/lj-awb/references/error-codes.md +102 -0
- package/skills/lj-awb/references/model-options-read.md +49 -0
- package/skills/lj-awb/references/output-fields.md +113 -0
- package/skills/lj-awb/scripts/resolve-lj-awb-cmd.sh +10 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lj-awb
|
|
3
|
+
version: 0.3.15
|
|
4
|
+
description: "灵境 AWB CLI skill。使用 `lj-awb` 命令调用动漫平台 / AWB 云端能力,覆盖认证、项目组、积分、模型发现、上传、生图、生视频、任务查询、最终产物 artifact CRUD 与本地 JSON 导入。正式生成、切换项目组、清空认证、artifact 写入等写入或扣费动作前必须确认。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["lj-awb"]
|
|
8
|
+
cliHelp: "lj-awb --help"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# lj-awb CLI Skill
|
|
12
|
+
|
|
13
|
+
本 skill 教 Agent 如何使用 `lj-awb` CLI。CLI 是传统确定性程序,skill 只负责编排和安全规则,不承载业务 API 调用。
|
|
14
|
+
|
|
15
|
+
## 1. CLI 入口
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
LINGJING_AWB_CMD="$(bash "$(dirname "$0")/scripts/resolve-lj-awb-cmd.sh")"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
在普通 Agent 环境中,可直接探测:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
if ! command -v lj-awb >/dev/null 2>&1; then
|
|
25
|
+
echo "No usable lj-awb CLI found. Install @lingjingai/lj-awb-cli first." >&2
|
|
26
|
+
exit 1
|
|
27
|
+
fi
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 2. 模块地图
|
|
31
|
+
|
|
32
|
+
| 模块 | 处理的问题 | 入口 |
|
|
33
|
+
|------|------------|------|
|
|
34
|
+
| 认证 | access key、登录状态、本地凭据 | [`modules/auth.md`](modules/auth.md) |
|
|
35
|
+
| 账号 | 用户、团队和登录上下文 | [`modules/account.md`](modules/account.md) |
|
|
36
|
+
| 项目 | 项目组查询、切换、创建和更新 | [`modules/project.md`](modules/project.md) |
|
|
37
|
+
| 积分 | 可扣积分余额、项目组预算和用量估算 | [`modules/credits.md`](modules/credits.md) |
|
|
38
|
+
| 模型 | 生图 / 生视频模型、参数约束和创建用法 | [`modules/model.md`](modules/model.md) |
|
|
39
|
+
| 创作入参 | 任务创建参数含义、素材组织、模型配置映射和校验 | [`modules/create-contract.md`](modules/create-contract.md) |
|
|
40
|
+
| 任务手册 | 参考图、首帧、首尾帧、音频参考、主体复用等任务选型 | [`modules/task-manual.md`](modules/task-manual.md) |
|
|
41
|
+
| 上传 | 本地文件上传、COS、素材 URL | [`modules/upload.md`](modules/upload.md) |
|
|
42
|
+
| 图片 | 生图估价、提交、等待、批量 | [`modules/image.md`](modules/image.md) |
|
|
43
|
+
| 视频 | 生视频估价、提交、等待、批量 | [`modules/video.md`](modules/video.md) |
|
|
44
|
+
| 任务 | 任务列表、等待、任务台账 | [`modules/task.md`](modules/task.md) |
|
|
45
|
+
| 资产 | 素材匹配、素材组、素材注册("加白" / 过审 / 白名单,Seedance / BytePlus / 即梦 系列生视频前可选预处理) | [`modules/asset.md`](modules/asset.md) |
|
|
46
|
+
| 最终产物 | 剧本、资产、视频、剪辑 CRUD 与本地 JSON 导入(artifact 域 4 个子领域共 51 个命令) | [`modules/artifact.md`](modules/artifact.md) |
|
|
47
|
+
| 主体 | 主体发布与查询(KeLing / 可灵 系列生视频专用,提升角色一致性) | [`modules/subject.md`](modules/subject.md) |
|
|
48
|
+
| 工作流 | Agent 面向任务的标准编排流程 | [`modules/workflows.md`](modules/workflows.md) |
|
|
49
|
+
| 压测 | 多轮对话 eval 用例和反模式检查 | [`modules/evals.md`](modules/evals.md) |
|
|
50
|
+
|
|
51
|
+
## 2.1 触发词索引(用户说什么 → 走哪个模块)
|
|
52
|
+
|
|
53
|
+
Agent 必须先匹配用户描述里的关键词到对应模块,不要靠"看起来像 X"自由判断。
|
|
54
|
+
|
|
55
|
+
| 用户描述关键词 | 对应模块 / 流程 | 关键命令 |
|
|
56
|
+
|----------------|------------------|----------|
|
|
57
|
+
| "环境是否就绪" / "能不能跑" / "认证好了吗" / "可以开始了吗" | 启动前自检 | `lj-awb doctor --verify` |
|
|
58
|
+
| "切团队" / "换团队" / "我在哪个团队" / "团队列表" | 团队上下文 | [`account.md`](modules/account.md) → `account info / teams / switch-team` |
|
|
59
|
+
| "切项目" / "换项目组" / "当前项目是哪个" / "新建项目组" | 项目组上下文 | [`project.md`](modules/project.md) → `project list / current / use / create` |
|
|
60
|
+
| "余额" / "够不够" / "扣多少积分" / "查积分" / "项目预算" | 积分与预算 | [`credits.md`](modules/credits.md) → `credits balance / usage` |
|
|
61
|
+
| "有哪些模型" / "支持参考图的模型" / "对比模型" / "推荐模型" / "可灵 / Seedance / GPT Image / Veo" | 模型查询 | [`model.md`](modules/model.md) → `model image-models / video-models / options / create-spec` |
|
|
62
|
+
| "上传文件" / "把这张图传上去" / "上传素材到 COS" / "本地图能用吗" | 上传与素材路径 | [`upload.md`](modules/upload.md) → `upload files`;返回 `backendPath` 直接喂给 `--resource` |
|
|
63
|
+
| "加白" / "加白名单" / "白名单" / "过审" / "走审核" / "预审" / "即梦审核" / "sd2fast 前处理" | 资产注册(Seedance / BytePlus / 即梦 系列生视频专用) | [`asset.md`](modules/asset.md) → `asset register` |
|
|
64
|
+
| "素材组" / "新建素材组" / "白名单分组" / "已有的素材组" | 素材库分组 | [`asset.md`](modules/asset.md) → `asset groups / group / group-create / group-update` |
|
|
65
|
+
| "已有的角色 / 主体" / "查主体" / "看看发布过哪些主体" | 主体查询(避免重复发布) | [`subject.md`](modules/subject.md) → `subject list` |
|
|
66
|
+
| "主体" / "角色" / "角色复用" / "固定角色" / "同一个人" / "可灵生视频角色一致" / "长期复用人物" | 主体发布(KeLing / 可灵 系列生视频专用) | [`subject.md`](modules/subject.md) → `subject publish` → `subject wait` |
|
|
67
|
+
| "参考图" / "用这张图" / "引用这张图" / "参考生" | 参考图生图 / 参考图生视频 | [`task-manual.md`](modules/task-manual.md) → `image:reference` |
|
|
68
|
+
| "让这张图动起来" / "从这张图开始" / "首帧" | 首帧生视频 | [`task-manual.md`](modules/task-manual.md) → `image:first_frame` |
|
|
69
|
+
| "首尾帧" / "从 A 过渡到 B" | 首尾帧生视频 | [`task-manual.md`](modules/task-manual.md) → `image:first_frame` + `image:last_frame` |
|
|
70
|
+
| "音乐" / "配音" / "音频参考" / "节奏参考" / "按这段音频" | 音频参考(输入) | [`task-manual.md`](modules/task-manual.md) → `audio:reference` |
|
|
71
|
+
| "输出音效" / "带不带声音" / "生成的视频有声音吗" | 是否输出音效(不是上传音频) | `--need-audio true/false` |
|
|
72
|
+
| "去字幕" / "把英文字幕擦掉" / "Seedance 字幕处理" | 后处理:视频去字幕 | [`video.md`](modules/video.md) → `video subtitle-remove` |
|
|
73
|
+
| "分镜" / "storyboard" / "镜头 1 / 2 / 3" | 分镜流水线(GPT Image 2 → 视频) | [`workflows.md`](modules/workflows.md) §分镜流水线 |
|
|
74
|
+
| "批量" / "一次跑多条" / "并行" / "n 个任务一起" / "JSONL" / "JSON 数组" | 批量 + 并发 | [`workflows.md`](modules/workflows.md) §批量任务(`*-batch --concurrency`) |
|
|
75
|
+
| "任务状态" / "好了吗" / "完成了没" / "结果出来没" / "继续等" | 任务等待与查询 | [`task.md`](modules/task.md) → `task wait / list / records / record-poll` |
|
|
76
|
+
| "查产物" / "看已有的剧本 / 角色 / 视频 / 剪辑" / "列出所有 X" | artifact 查询 | 进对应 [`artifact/*.md`](modules/artifact.md) 看 `get / rows / row / children / document` |
|
|
77
|
+
| "剧本产物" / "把这版剧本存到 AWB" / "剧本行 / 场 / 镜头节拍" / "script.json 导入" | artifact 之 script 子域 | [`artifact/script.md`](modules/artifact/script.md) |
|
|
78
|
+
| "角色产物" / "道具产物" / "场景产物" / "actor / prop / location 资产" / "资产状态 / state" / "actors.json 导入" | artifact 之 asset 子域 | [`artifact/asset.md`](modules/artifact/asset.md) |
|
|
79
|
+
| "视频集 / 场 / 镜头产物" / "把最终视频回写到项目" / "storyboard 导入" / "回写视频 URL" / "update-clip-urls" | artifact 之 video 子域 | [`artifact/video.md`](modules/artifact/video.md) |
|
|
80
|
+
| "剪辑产物" / "配乐产物" / "字幕烧录产物" / "clip 宽表" / "更新剪辑状态" | artifact 之 clip 子域 | [`artifact/clip.md`](modules/artifact/clip.md) |
|
|
81
|
+
| "本地 JSON 导入" / "最终产物" / "artifact"(笼统说法,没指明子域) | 先回到 artifact 入口选子域 | [`artifact.md`](modules/artifact.md) → 看 4 子域分流 |
|
|
82
|
+
| "认证失败" / "401" / "积分不足" / "等超时" / "exit 10 / 20 / 30" | 错误码恢复 | [`references/error-codes.md`](references/error-codes.md) |
|
|
83
|
+
| "加白边" / "白色边框" / "加白色背景" | **不是 `asset register`**,是图片视觉处理;先确认用户意图 | 不走加白 |
|
|
84
|
+
|
|
85
|
+
歧义判断:
|
|
86
|
+
|
|
87
|
+
- 用户说"加白"但描述含糊(既可能是审核也可能是图片视觉处理)时,必须先用一句话确认意图,再选模块。
|
|
88
|
+
- 用户说"存一下 / 写到 AWB / 同步上去"但没指明是哪类产物时,先确认是 script / asset / video / clip 哪个子域,再走 artifact,不要默认选一个开干。
|
|
89
|
+
- 用户说"删掉某条 / 清掉 / 撤回"涉及 artifact 时,先确认是删主体还是删状态(asset 子域里两者都存在,且删主体会级联删状态),不要默认按字面理解。
|
|
90
|
+
- 用户给出复合描述(如"生视频 + 参考图 + 音乐 + 角色一致")时按优先级路由:先选生成模块(`video.md`),再到 [`task-manual.md`](modules/task-manual.md) 确定资源映射(`image:reference` + `audio:reference` + `subject:reference`),最后回 model 查 `options / resources / constraints` 验证支持组合。不要拆成多次问答让用户重复说明。
|
|
91
|
+
- 用户问"角色一致" / "同一个人"时,先看用户用的模型:KeLing / 可灵系列走 `subject publish`,其他系列(Seedance / 即梦)通常用参考图 + asset register 也能达到效果,不要默认推 subject。
|
|
92
|
+
|
|
93
|
+
## 3. 深入参考
|
|
94
|
+
|
|
95
|
+
只有对应 module 把你引到这里时才读:
|
|
96
|
+
|
|
97
|
+
- [`references/model-options-read.md`](references/model-options-read.md) — 怎么读 `model options` 的默认 text 和 JSON 字段
|
|
98
|
+
|
|
99
|
+
## 4. 全局规则
|
|
100
|
+
|
|
101
|
+
§4 只放跨模块的协议级约束。资源短语法、`reference_key` / `<<<key>>>` 对齐、`--need-audio` 不是音频入口、prompt 组装原则等创建参数细节**统一在 [`modules/create-contract.md`](modules/create-contract.md)**,不要在 SKILL.md 里重复定义。
|
|
102
|
+
|
|
103
|
+
### 4.1 必查(开工前的查询动作)
|
|
104
|
+
|
|
105
|
+
- 进入正式任务前先运行 `lj-awb doctor --verify`,确认认证、API、项目组和 UTF-8 环境。
|
|
106
|
+
- Agent 不确定命令参数时,优先运行 `lj-awb schema -f json`,不要从记忆里猜。
|
|
107
|
+
- 读取 `schema.commands[].requiredOptions` 和 `requiredAnyOptions` 后再组装命令;缺少必填参数时先问用户或用查询命令补齐。
|
|
108
|
+
- 只读验证命令可以先执行:`auth verify`、`doctor --verify`、模型列表、`model options`、`model create-spec`、账号 / 项目组查询;`auth status` 只看本地配置,不代表远端有效。
|
|
109
|
+
- 不要凭记忆提交模型参数;创作任务前先 `model options` 看参数 / 资源 / 约束,再 `model create-spec` 看如何创建任务。详见 [`modules/create-contract.md`](modules/create-contract.md) §创建前校验。
|
|
110
|
+
|
|
111
|
+
### 4.2 必确认(执行前的人在回路)
|
|
112
|
+
|
|
113
|
+
- 读取 `schema.commands[].safety` 决定是否能自动执行:`safeToAutoRun=false` 必须先说明副作用;`requiresConfirmation=true` 时必须先确认再追加 `--yes`。
|
|
114
|
+
- 关键参数是会影响价格或生成效果的枚举:视频 `quality` / `duration` / 约束后仍可选的 `ratio` / 用户明确要输出音效时的 `needAudio`;图片 `quality` / `ratio` / `generateNum`。候选值和默认值来自 `model options.params[]`,**不能静默用默认值**先估价或 dry-run;先把候选值和默认值转成追问。
|
|
115
|
+
- `supportsDryRun=true` 的写入 / 扣费命令,在关键参数已确认后先跑 `--dry-run` 让用户确认请求体,再用 `--yes` 正式提交。
|
|
116
|
+
- 所有正式创作前必须向用户确认:账号、团队、项目组、模型组、关键参数、最终 prompt 文本、参考素材、预估积分。
|
|
117
|
+
- 遇到 exit code `10` / `error.type=confirmation_required`,向用户明确确认后再追加 `--yes` 重试;其他错误恢复策略见 [`references/error-codes.md`](references/error-codes.md)。
|
|
118
|
+
|
|
119
|
+
### 4.3 必校验(参数 / 资源 / Prompt 组装)
|
|
120
|
+
|
|
121
|
+
具体规则统一在 [`modules/create-contract.md`](modules/create-contract.md),这里只列入口:
|
|
122
|
+
|
|
123
|
+
- 参数枚举值只能从 `model options.params[].values` 选,素材约束按 `model options.resources[]`,参数 / 资源联动收窄按 `model options.constraints[]` — 见 §创建前校验。
|
|
124
|
+
- 资源短语法(`image:reference` / `image:first_frame` / `image:last_frame` / `video:reference` / `audio:reference` / `subject:reference`)和取值优先级(`backendPath` > 本地文件 > 公网 URL > `asset:<id>`)— 见 §素材组织。
|
|
125
|
+
- 视频 `reference_key` / `<<<key>>>` 对齐、图片生图不用 `<<<key>>>`、`--need-audio` 只是输出音效开关而**不是**音频输入 — 见 §素材组织 + §Prompt 组装原则。
|
|
126
|
+
- Prompt 以用户文本为基底,参考图作为素材输入时不要从图像内容反推画面描述塞进 prompt — 见 §Prompt 组装原则。
|
|
127
|
+
|
|
128
|
+
### 4.4 必规范输出(向用户报告的口径)
|
|
129
|
+
|
|
130
|
+
- Agent 默认读取 compact text;只有 `schema`、`model options`、`model create-spec`、完整嵌套列表或脚本严格解析时才追加 `-f json`,并只抽取需要字段。
|
|
131
|
+
- 积分确认必须优先报 `billingPointBalance`(来自 `/api/anime/member/benefits/queryGroupPoint`,表示实际可扣积分);`projectBudgetBalance` 是项目组预算 / ROI 视角,仅作补充,不要说成"积分余额"。
|
|
132
|
+
- CLI 输出字段已归一化(详见 `schema -f json` 的 `data.agentContract.canonicalFields`)。Agent 只识别规范名:`billingPointBalance` / `billingPointRemainingAfter` / `projectBudgetBalance` / `projectBudgetRemainingAfter` / `pointCost`。JSON 中出现 `teamPointBalance` / `projectPointBalance` / `points` 等旧名时,CLI 已在归一化层做 fallback,不要把旧名当成新字段对外报告。
|
|
133
|
+
- 不要把模型列表摘要或缺失参数做成负面能力清单。默认只说明支持的创作意图、必需输入和可控参数;只有用户明确问音频 / 多条数等控制项时,才说明 `model options` 里没有对应参数或资源。
|
|
134
|
+
- 面向用户列模型参数用自然语言:`needAudio` 说成"音效:是否需要输出音效",不要用 CLI flag 加技术解释;只有展示最终命令时才出现 `--need-audio true/false`。
|
|
135
|
+
- 各 outputKind 的必报字段速查见 [`references/output-fields.md`](references/output-fields.md)。
|
|
136
|
+
|
|
137
|
+
### 4.5 其他
|
|
138
|
+
|
|
139
|
+
- `task wait` 的超时只代表当前轮询窗口结束,不代表远端任务失败;继续 `task get` / `task wait` 或读响应里的 `nextCommand`。
|
|
140
|
+
- skill 不直接写沙箱项目的 `output/`;项目级 skill 应在用户确认后负责写回正式产物。
|
|
141
|
+
|
|
142
|
+
## 5. 安装与更新
|
|
143
|
+
|
|
144
|
+
推荐安装:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npm install -g @lingjingai/lj-awb-cli
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
本地源码调试:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
cd anime-cli
|
|
154
|
+
node packages/awb-cli/bin/lj-awb.js --help
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
版本文件:
|
|
158
|
+
|
|
159
|
+
- [`VERSION`](VERSION)
|
|
160
|
+
- [`compat.json`](compat.json)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.3.15
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Account Module
|
|
2
|
+
|
|
3
|
+
账号模块确认"我是谁、在哪个团队"。**team** 是更高一级的上下文(团队下含多个项目组),不要和 **project group**([`project.md`](project.md))混为一谈。
|
|
4
|
+
|
|
5
|
+
## 命令
|
|
6
|
+
|
|
7
|
+
| 命令 | 用途 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| `lj-awb account info` | 当前用户、团队、项目组、积分摘要(启动后第一条信息) |
|
|
10
|
+
| `lj-awb account teams` | 列出当前账号可访问的团队 |
|
|
11
|
+
| `lj-awb account switch-team --group-id <id> --dry-run` | 预览切换团队 |
|
|
12
|
+
| `lj-awb account switch-team --group-id <id> --yes` | 切换团队(云端写入) |
|
|
13
|
+
|
|
14
|
+
## 什么时候切团队
|
|
15
|
+
|
|
16
|
+
- 用户明确说"切换到团队 X / 换个团队 / 我在错误的团队下"。
|
|
17
|
+
- `account info` 显示的 `groupName` 与用户预期不符。
|
|
18
|
+
- 用户访问不到某项目组(`project list` 缺项 / `auth_failed` 但 access key 没变)。
|
|
19
|
+
|
|
20
|
+
不该切换的场景:
|
|
21
|
+
|
|
22
|
+
- 用户只是要换"项目"——那是 [`project use`](project.md),**不是 switch-team**。
|
|
23
|
+
- 用户没明确说要切——`account teams` 列出来给用户挑就够,别擅自切。
|
|
24
|
+
|
|
25
|
+
## 规则
|
|
26
|
+
|
|
27
|
+
- `account switch-team` 改变团队上下文,**必须确认**后追加 `--yes`。
|
|
28
|
+
- 切换团队会**重置项目组上下文**:之后跑 `project current` 必然为空,需要让用户重新 `project use --project-group-no <no>` 选一个。
|
|
29
|
+
- 不要把 `account info.groupName`(团队名)当作项目组名报告给用户。
|
|
30
|
+
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"账号与项目组"小节。
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Artifact · Asset 子域
|
|
2
|
+
|
|
3
|
+
资产分三类:角色 (`actor`) / 道具 (`prop`) / 场景 (`location`),每类都有"主体"和"状态"两级——主体描述资产本身,状态描述某个时刻的造型 / 状态 / 镜头。
|
|
4
|
+
|
|
5
|
+
所有命令都要求 `--project-id <projectId>`(项目 ID,不是项目组编号)。回到 [`../artifact.md`](../artifact.md) 看完整域概览和导入工作流。
|
|
6
|
+
|
|
7
|
+
## 查询
|
|
8
|
+
|
|
9
|
+
| 命令 | 用途 |
|
|
10
|
+
|------|------|
|
|
11
|
+
| `lj-awb artifact asset get --project-id <id>` | 查询完整资产产物(含三类全部) |
|
|
12
|
+
| `lj-awb artifact asset actors --project-id <id> --include-states true` | 查询角色列表 |
|
|
13
|
+
| `lj-awb artifact asset actor --project-id <id> --actor-key act_001` | 查询单个角色 |
|
|
14
|
+
| `lj-awb artifact asset props --project-id <id>` | 查询道具列表 |
|
|
15
|
+
| `lj-awb artifact asset prop --project-id <id> --prop-key prop_001` | 查询单个道具 |
|
|
16
|
+
| `lj-awb artifact asset locations --project-id <id>` | 查询场景列表 |
|
|
17
|
+
| `lj-awb artifact asset location --project-id <id> --location-key loc_001` | 查询单个场景 |
|
|
18
|
+
|
|
19
|
+
## 主体写入 / 删除
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
lj-awb artifact asset upsert-actor --project-id <id> --input-file actor.json --dry-run
|
|
23
|
+
lj-awb artifact asset upsert-prop --project-id <id> --input-file prop.json --dry-run
|
|
24
|
+
lj-awb artifact asset upsert-location --project-id <id> --input-file location.json --dry-run
|
|
25
|
+
|
|
26
|
+
lj-awb artifact asset delete-actor --project-id <id> --actor-key act_001 --dry-run
|
|
27
|
+
lj-awb artifact asset delete-prop --project-id <id> --prop-key prop_001 --dry-run
|
|
28
|
+
lj-awb artifact asset delete-location --project-id <id> --location-key loc_001 --dry-run
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
删除主体会级联删除该主体下的所有状态。**删主体和删状态是两个不同操作,用户说"撤回 / 删掉"时先确认是哪一种。**
|
|
32
|
+
|
|
33
|
+
## 状态写入 / 删除
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
lj-awb artifact asset upsert-actor-state --project-id <id> --actor-key act_001 --input-file state.json --dry-run
|
|
37
|
+
lj-awb artifact asset upsert-prop-state --project-id <id> --prop-key prop_001 --input-file state.json --dry-run
|
|
38
|
+
lj-awb artifact asset upsert-location-state --project-id <id> --location-key loc_001 --input-file state.json --dry-run
|
|
39
|
+
|
|
40
|
+
lj-awb artifact asset delete-actor-state --project-id <id> --actor-key act_001 --state-key state_001 --dry-run
|
|
41
|
+
lj-awb artifact asset delete-prop-state --project-id <id> --prop-key prop_001 --state-key state_001 --dry-run
|
|
42
|
+
lj-awb artifact asset delete-location-state --project-id <id> --location-key loc_001 --state-key state_001 --dry-run
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 批量导入
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
lj-awb artifact asset import --project-id <id> --input-dir 2_asset/output --dry-run
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`asset import` 在 `--input-dir` 下查找 `actors/actors.json`、`props/props.json`、`locations/locations.json`,也兼容扁平的 `actors.json` / `props.json` / `locations.json`;缺哪类资产就跳过哪类,不会报错。
|
|
52
|
+
|
|
53
|
+
## 规则
|
|
54
|
+
|
|
55
|
+
- 单条 body 使用 AWB 接口的 camelCase 字段;不要在 body 里传 `id`、`projectId`、`createdAt`、`updatedAt`、`isDeleted` 等审计字段。
|
|
56
|
+
- 写入 / 删除都是逻辑写入,但仍需 `--dry-run` 预览 + `--yes` 确认两步走。
|
|
57
|
+
- 不确定参数时先读 `lj-awb schema --domain artifact --command asset <subcommand> -f json`。
|
|
58
|
+
- 输出字段速查见 [`../../references/output-fields.md`](../../references/output-fields.md) 的"Artifact"小节。
|
|
59
|
+
|
|
60
|
+
## 下一步
|
|
61
|
+
|
|
62
|
+
- `asset import` 完成 → 接 [`video.md`](video.md) 导入视频集 / 场 / clip。
|
|
63
|
+
- 想给角色加一种新造型 → 用 `upsert-actor-state` 而不是 `upsert-actor`(避免覆盖主体描述)。
|
|
64
|
+
- 不要把这里的 `actor` / `prop` / `location` 和 [`../asset.md`](../asset.md) 的素材库("加白"用)混为一谈:这里是剧本结构里的资产,那里是平台素材库。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Artifact · Clip 子域
|
|
2
|
+
|
|
3
|
+
剪辑阶段把一个视频集打包成一行宽表产物。和 [`video 子域`](video.md) 不同的是,clip 域里每行只对应一集(不是一个镜头)。
|
|
4
|
+
|
|
5
|
+
所有命令都要求 `--project-id <projectId>`(项目 ID,不是项目组编号)。回到 [`../artifact.md`](../artifact.md) 看完整域概览和导入工作流。
|
|
6
|
+
|
|
7
|
+
## ID 矩阵(重要)
|
|
8
|
+
|
|
9
|
+
clip 子域同时存在两种 ID,搞错会导致命令报参数错或读到错数据:
|
|
10
|
+
|
|
11
|
+
| 命令 | 用哪个 ID 定位 | 说明 |
|
|
12
|
+
|------|----------------|------|
|
|
13
|
+
| `clip get` | 不需要定位 ID | 返回项目下所有剪辑产物 |
|
|
14
|
+
| `clip episodes` | 不需要定位 ID | 列出项目所有剪辑产物 |
|
|
15
|
+
| `clip episode` | `--video-episode-id <数字>` | 数字主键,由 `upsert-episode` 或 `artifact video episode` 返回的 `id` 字段提供 |
|
|
16
|
+
| `clip episode-by-id` | `--episode-id ep_001` | 业务键(ep_001 等) |
|
|
17
|
+
| `clip upsert-episode` | 不需要定位 ID | body 内含 `videoEpisodeId`,作为本次写入的目标 |
|
|
18
|
+
| `clip upsert-batch` | 不需要定位 ID | body 是数组,每项含 `videoEpisodeId` |
|
|
19
|
+
| `clip update-status` | `--video-episode-id <数字>` | 必须先查到主键 |
|
|
20
|
+
| `clip delete-episode` | `--video-episode-id <数字>` | 必须先查到主键 |
|
|
21
|
+
|
|
22
|
+
要从业务键拿到数字主键,最常见的链路是:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
lj-awb artifact video episode --project-id <id> --episode-id ep_001 -f json
|
|
26
|
+
# 取响应 .data.id 作为 video-episode-id
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 查询
|
|
30
|
+
|
|
31
|
+
| 命令 | 用途 |
|
|
32
|
+
|------|------|
|
|
33
|
+
| `lj-awb artifact clip get --project-id <id>` | 查询项目完整剪辑产物 |
|
|
34
|
+
| `lj-awb artifact clip episodes --project-id <id>` | 查询剪辑产物列表 |
|
|
35
|
+
| `lj-awb artifact clip episode --project-id <id> --video-episode-id 101` | 按主键查询单集 |
|
|
36
|
+
| `lj-awb artifact clip episode-by-id --project-id <id> --episode-id ep_001` | 按业务键查询单集 |
|
|
37
|
+
|
|
38
|
+
## 写入 / 状态 / 删除
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
lj-awb artifact clip upsert-episode --project-id <id> --input-file clip-output.json --dry-run
|
|
42
|
+
lj-awb artifact clip upsert-batch --project-id <id> --input-file clip-batch.json --dry-run
|
|
43
|
+
|
|
44
|
+
lj-awb artifact clip update-status \
|
|
45
|
+
--project-id <id> \
|
|
46
|
+
--video-episode-id 101 \
|
|
47
|
+
--status music_success \
|
|
48
|
+
--messages-json '[{"level":"info","step":"music","message":"配乐完成"}]' \
|
|
49
|
+
--dry-run
|
|
50
|
+
|
|
51
|
+
lj-awb artifact clip delete-episode --project-id <id> --video-episode-id 101 --dry-run
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 规则
|
|
55
|
+
|
|
56
|
+
- 单条 body 使用 AWB 接口的 camelCase 字段;不要在 body 里传 `id`、`projectId`、`createdAt`、`updatedAt`、`isDeleted` 等审计字段。
|
|
57
|
+
- 写入 / 删除都是逻辑写入,但仍需 `--dry-run` 预览 + `--yes` 确认两步走。
|
|
58
|
+
- 不确定参数时先读 `lj-awb schema --domain artifact --command clip <subcommand> -f json`。
|
|
59
|
+
- 输出字段速查见 [`../../references/output-fields.md`](../../references/output-fields.md) 的"Artifact"小节。
|
|
60
|
+
|
|
61
|
+
## 下一步
|
|
62
|
+
|
|
63
|
+
- 想拿到数字主键 `videoEpisodeId` → 先跑 `artifact video episode --project-id <id> --episode-id ep_001 -f json`,取 `.data.id`。
|
|
64
|
+
- 配乐 / 字幕烧录等阶段汇报 → `update-status --video-episode-id <id> --status <state> --messages-json '[...]'`,不要 upsert 整行。
|
|
65
|
+
- 整集失败要回滚 → `delete-episode --video-episode-id <id> --yes`,然后重新 `upsert-episode`。
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Artifact · Script 子域
|
|
2
|
+
|
|
3
|
+
剧本最终产物按 `rowKind` 分行存储:`document / asset / state / speaker / episode / scene / action`。`document` 是根记录,其余行通过 `entityKey` 和 `parentKey` 串联。
|
|
4
|
+
|
|
5
|
+
所有命令都要求 `--project-id <projectId>`(项目 ID,不是项目组编号)。回到 [`../artifact.md`](../artifact.md) 看完整域概览和导入工作流。
|
|
6
|
+
|
|
7
|
+
## 查询
|
|
8
|
+
|
|
9
|
+
| 命令 | 用途 |
|
|
10
|
+
|------|------|
|
|
11
|
+
| `lj-awb artifact script get --project-id <id>` | 查询完整剧本产物(含所有行) |
|
|
12
|
+
| `lj-awb artifact script document --project-id <id>` | 仅查询 document 根记录 |
|
|
13
|
+
| `lj-awb artifact script rows --project-id <id> --row-kind scene` | 查询某种 rowKind 的所有行 |
|
|
14
|
+
| `lj-awb artifact script row --project-id <id> --row-kind action --entity-key "ep_001/scn_001#0"` | 查询单行 |
|
|
15
|
+
| `lj-awb artifact script children --project-id <id> --parent-key scn_001 --row-kind action` | 按 parentKey 查询子节点 |
|
|
16
|
+
|
|
17
|
+
## 写入 / 删除
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
lj-awb artifact script upsert-row --project-id <id> --input-file row.json --dry-run
|
|
21
|
+
lj-awb artifact script delete-row --project-id <id> --row-kind action --entity-key "ep_001/scn_001#0" --dry-run
|
|
22
|
+
lj-awb artifact script import --project-id <id> --input-file script.json --dry-run
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`script import` 会把 `script.json` 拆成 document / asset / state / speaker / episode / scene / action 行批量导入。
|
|
26
|
+
|
|
27
|
+
## 规则
|
|
28
|
+
|
|
29
|
+
- 单条 body 使用 AWB 接口的 camelCase 字段;不要在 body 里传内部审计字段(`id`、`projectId`、`createdAt`、`updatedAt`、`isDeleted`),CLI 会自动注入或忽略。
|
|
30
|
+
- 写入 / 删除都是逻辑写入(不真删数据),但仍需 `--dry-run` 预览 + `--yes` 确认两步走。
|
|
31
|
+
- 不确定参数时先读 `lj-awb schema --domain artifact --command script <subcommand> -f json`。
|
|
32
|
+
- 输出字段速查见 [`../../references/output-fields.md`](../../references/output-fields.md) 的"Artifact"小节。
|
|
33
|
+
|
|
34
|
+
## 下一步
|
|
35
|
+
|
|
36
|
+
- `script import` 完成 → 接 [`asset.md`](asset.md) 导入角色 / 道具 / 场景。
|
|
37
|
+
- 查到某行需要修改 → 用 `upsert-row --input-file <一条 row.json>` 单条更新,不必重新跑 `import`。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Artifact · Video 子域
|
|
2
|
+
|
|
3
|
+
视频最终产物三级结构:集 (`episode`) → 场 (`scene`) → 镜头 (`clip`)。`import-storyboard` 把 `epXXX_storyboard.json` 拆成 episode + scenes + clips 一次导入;`episodeId` 优先取 JSON 字段,否则从 `ep001_storyboard.json` 文件名推断。
|
|
4
|
+
|
|
5
|
+
所有命令都要求 `--project-id <projectId>`(项目 ID,不是项目组编号)。回到 [`../artifact.md`](../artifact.md) 看完整域概览和导入工作流。
|
|
6
|
+
|
|
7
|
+
## 查询
|
|
8
|
+
|
|
9
|
+
| 命令 | 用途 |
|
|
10
|
+
|------|------|
|
|
11
|
+
| `lj-awb artifact video get --project-id <id>` | 查询完整视频产物(含全部 episodes/scenes/clips) |
|
|
12
|
+
| `lj-awb artifact video episodes --project-id <id>` | 查询视频集列表 |
|
|
13
|
+
| `lj-awb artifact video episode --project-id <id> --episode-id ep_001` | 查询单集 |
|
|
14
|
+
| `lj-awb artifact video scenes --project-id <id> --episode-id ep_001` | 查询某集下的场列表 |
|
|
15
|
+
| `lj-awb artifact video scene --project-id <id> --episode-id ep_001 --scene-id scn_001` | 查询单场 |
|
|
16
|
+
| `lj-awb artifact video clips --project-id <id> --episode-id ep_001 --scene-id scn_001` | 查询某场下的 clip 列表 |
|
|
17
|
+
| `lj-awb artifact video clip --project-id <id> --episode-id ep_001 --scene-id scn_001 --clip-id clip_001` | 查询单个 clip |
|
|
18
|
+
|
|
19
|
+
## 写入 / 回写 / 删除
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
lj-awb artifact video upsert-episode --project-id <id> --input-file episode.json --dry-run
|
|
23
|
+
lj-awb artifact video upsert-scene --project-id <id> --episode-id ep_001 --input-file scene.json --dry-run
|
|
24
|
+
lj-awb artifact video upsert-clip --project-id <id> --episode-id ep_001 --scene-id scn_001 --input-file clip.json --dry-run
|
|
25
|
+
|
|
26
|
+
lj-awb artifact video delete-episode --project-id <id> --episode-id ep_001 --dry-run
|
|
27
|
+
lj-awb artifact video delete-scene --project-id <id> --episode-id ep_001 --scene-id scn_001 --dry-run
|
|
28
|
+
lj-awb artifact video delete-clip --project-id <id> --episode-id ep_001 --scene-id scn_001 --clip-id clip_001 --dry-run
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
删除 episode 会级联 scenes/clips;删除 scene 会级联 clips。
|
|
32
|
+
|
|
33
|
+
视频生成完成后只回写 clip 链接(不覆盖 prompt / duration / payload):
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
lj-awb artifact video update-clip-urls \
|
|
37
|
+
--project-id <id> \
|
|
38
|
+
--episode-id ep_001 \
|
|
39
|
+
--scene-id scn_001 \
|
|
40
|
+
--clip-id clip_001 \
|
|
41
|
+
--video-urls-json '["https://example.com/a.mp4"]' \
|
|
42
|
+
--dry-run
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 批量导入
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
lj-awb artifact video import-storyboard --project-id <id> --input-file ep001_storyboard.json --dry-run
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
批量 storyboard 需要逐个 episode 文件执行 `import-storyboard`。
|
|
52
|
+
|
|
53
|
+
## 规则
|
|
54
|
+
|
|
55
|
+
- 单条 body 使用 AWB 接口的 camelCase 字段;不要在 body 里传 `id`、`projectId`、`createdAt`、`updatedAt`、`isDeleted` 等审计字段。
|
|
56
|
+
- `upsert-episode` 返回的 `id` 是数字主键,下游 [`clip 子域`](clip.md) 的 `--video-episode-id` 必须用这个值,不是 `ep_001` 业务键。
|
|
57
|
+
- 写入 / 删除都是逻辑写入,但仍需 `--dry-run` 预览 + `--yes` 确认两步走。
|
|
58
|
+
- 不确定参数时先读 `lj-awb schema --domain artifact --command video <subcommand> -f json`。
|
|
59
|
+
- 输出字段速查见 [`../../references/output-fields.md`](../../references/output-fields.md) 的"Artifact"小节。
|
|
60
|
+
|
|
61
|
+
## 下一步
|
|
62
|
+
|
|
63
|
+
- `import-storyboard` 完成 → 进 [`clip.md`](clip.md) 处理剪辑阶段(clip 子域用的 `videoEpisodeId` 就是这里 `upsert-episode` 返回的 `id` 数字主键)。
|
|
64
|
+
- 视频任务终态拿到 `resultUrls` → `update-clip-urls --project-id ... --episode-id ... --scene-id ... --clip-id ... --video-urls-json '[...]'`,只回写链接,不动 prompt / duration。
|
|
65
|
+
- 想看完整三级结构 → `artifact video get --project-id <id>`;只看某集 → `episode` / `scenes` / `clips`。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Artifact Module
|
|
2
|
+
|
|
3
|
+
artifact 模块用于把沙箱 / 本地流水线产出的最终 JSON 写入 AWB 数据库化产物,也可直接查询或单条 CRUD。写入都是云端动作,必须先 dry-run,再经用户确认后追加 `--yes`。
|
|
4
|
+
|
|
5
|
+
artifact 下有四个子域,结构和 `lj-awb artifact -h` 一致。按用户意图选子域,不要把所有命令塞进一个流程:
|
|
6
|
+
|
|
7
|
+
| 子域 | 处理的内容 | 入口 |
|
|
8
|
+
|------|------------|------|
|
|
9
|
+
| `artifact script` | 剧本 document / asset / state / speaker / episode / scene / action 行 | [`artifact/script.md`](artifact/script.md) |
|
|
10
|
+
| `artifact asset` | 角色 / 道具 / 场景 及各自状态 | [`artifact/asset.md`](artifact/asset.md) |
|
|
11
|
+
| `artifact video` | 视频集 / 场 / clip 三级最终产物 | [`artifact/video.md`](artifact/video.md) |
|
|
12
|
+
| `artifact clip` | 剪辑宽表(按集组织) | [`artifact/clip.md`](artifact/clip.md) |
|
|
13
|
+
|
|
14
|
+
## 项目 ID
|
|
15
|
+
|
|
16
|
+
所有 artifact 命令都需要 `--project-id <projectId>`。沙箱环境通常从环境变量读取:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
PROJECT_ID="${SANDBOX_PROJECT_ID:?missing SANDBOX_PROJECT_ID}"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`--project-id` 是项目本身的标识,和 `--project-group-no`(项目组编号,用于积分 / 创作类命令)不是同一个概念,不要混用。
|
|
23
|
+
|
|
24
|
+
## 标准导入工作流
|
|
25
|
+
|
|
26
|
+
完整流水线推荐顺序:script → asset → video → clip。每步独立,前一步不强依赖后一步,但 clip 的 `videoEpisodeId` 来自 video 阶段返回的主键。
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
lj-awb artifact script import \
|
|
30
|
+
--project-id "$PROJECT_ID" \
|
|
31
|
+
--input-file 1_script/output/script.json \
|
|
32
|
+
--dry-run
|
|
33
|
+
|
|
34
|
+
lj-awb artifact asset import \
|
|
35
|
+
--project-id "$PROJECT_ID" \
|
|
36
|
+
--input-dir 2_asset/output \
|
|
37
|
+
--dry-run
|
|
38
|
+
|
|
39
|
+
lj-awb artifact video import-storyboard \
|
|
40
|
+
--project-id "$PROJECT_ID" \
|
|
41
|
+
--input-file 3_footage/output/ep001/ep001_storyboard.json \
|
|
42
|
+
--dry-run
|
|
43
|
+
|
|
44
|
+
lj-awb artifact clip upsert-episode \
|
|
45
|
+
--project-id "$PROJECT_ID" \
|
|
46
|
+
--input-file 4_clip/output/ep001_clip_output.json \
|
|
47
|
+
--dry-run
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
用户确认后,把对应命令的 `--dry-run` 替换为 `--yes`。批量 storyboard 逐 episode 调用;批量 clip 用 `artifact clip upsert-batch`。
|
|
51
|
+
|
|
52
|
+
## 通用规则
|
|
53
|
+
|
|
54
|
+
- 不确定命令参数时先读 `lj-awb schema --domain artifact -f json`,再回到对应子域文件。
|
|
55
|
+
- 写入 / 删除全部是逻辑写入(不真删数据),但仍需 `--dry-run` 预览 + `--yes` 确认两步走。
|
|
56
|
+
- 单条 body 使用 AWB 接口的 camelCase 字段;不要在 body 里传内部审计字段(`id`、`projectId`、`createdAt`、`updatedAt`、`isDeleted`),CLI 会自动注入或忽略。
|
|
57
|
+
- 用户说"存一下 / 写到 AWB / 同步上去"但没指明哪类产物时,先确认是 script / asset / video / clip 哪个子域,再走对应子域文件,不要默认选一个开干。
|
|
58
|
+
- 用户说"删掉某条 / 撤回"涉及 asset 子域时,先确认是删主体还是删状态(删主体会级联删状态)。
|
|
59
|
+
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"Artifact"小节;写入失败 / argument_error 见 [`../references/error-codes.md`](../references/error-codes.md)。
|
|
60
|
+
|
|
61
|
+
## 下一步
|
|
62
|
+
|
|
63
|
+
- 整条流水线:[script.md](artifact/script.md) → [asset.md](artifact/asset.md) → [video.md](artifact/video.md) → [clip.md](artifact/clip.md),按顺序导入。
|
|
64
|
+
- 视频任务结果回写产物:拿到 `task wait` 的 `resultUrls` → `artifact video update-clip-urls --project-id <id> --episode-id <ep> --scene-id <scn> --clip-id <clip> --video-urls-json '[...]'`。
|
|
65
|
+
- 剪辑阶段状态汇报:`artifact clip update-status --video-episode-id <数字主键> --status <state> --messages-json '[...]'`。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Asset Module
|
|
2
|
+
|
|
3
|
+
资产模块负责素材库的"分组管理 + 素材注册 + 候选匹配",**专为 Seedance / BytePlus / 即梦系列生视频前的"加白 / 过审"流程服务**。可灵 / KeLing 系列用 [`subject.md`](subject.md) 的 `subject publish`,不走 asset。
|
|
4
|
+
|
|
5
|
+
## 命令
|
|
6
|
+
|
|
7
|
+
| 命令 | 用途 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| `lj-awb asset groups --name "<keyword>"` | 查素材组(按名搜,避免重建已有的) |
|
|
10
|
+
| `lj-awb asset group --group-id <id>` | 查素材组详情 + 成员 |
|
|
11
|
+
| `lj-awb asset group-create --name "<name>" --dry-run` | 预览创建素材组 |
|
|
12
|
+
| `lj-awb asset group-create --name "<name>" --yes` | 创建素材组(云端写入) |
|
|
13
|
+
| `lj-awb asset group-update --group-id <id> --name "<name>" --yes` | 改素材组名 |
|
|
14
|
+
| `lj-awb asset register --group-id <id> --url "material/assets/a.png" --name "女主正面" --yes` | 注册已上传素材 |
|
|
15
|
+
| `lj-awb asset register --group-id <id> --file ./a.png --name "女主正面" --yes` | 先上传再注册(一步完成) |
|
|
16
|
+
| `lj-awb asset match-actor --description "..." --tags-json '[{"tagId":"o_102"}]'` | 候选匹配(角色画风 / 标签) |
|
|
17
|
+
|
|
18
|
+
## 什么时候用 match-actor
|
|
19
|
+
|
|
20
|
+
用户描述"我有这样一个角色,平台上有没有现成可用的"——`match-actor` 按 description + tags 返回候选;命中即免上传 + 注册。具体何时跳过、何时继续注册取决于用户对候选评分的接受度。
|
|
21
|
+
|
|
22
|
+
## 完整加白流程
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 1. 找/建分组
|
|
26
|
+
lj-awb asset groups --name "项目X-角色"
|
|
27
|
+
lj-awb asset group-create --name "项目X-角色" --yes
|
|
28
|
+
|
|
29
|
+
# 2. 注册(本地文件版,自动上传)
|
|
30
|
+
lj-awb asset register --group-id <id> --file ./hero.png --name "主角正面" --dry-run
|
|
31
|
+
lj-awb asset register --group-id <id> --file ./hero.png --name "主角正面" --yes
|
|
32
|
+
|
|
33
|
+
# 3. 等审核(asset register 返回 taskId 时)
|
|
34
|
+
lj-awb task wait --task-id <id> --task-type ASSET_REGISTER --wait-seconds 180
|
|
35
|
+
|
|
36
|
+
# 4. 终态后用于视频
|
|
37
|
+
lj-awb video create --model-group-code <seedance-code> \
|
|
38
|
+
--resource image:reference=material/assets/hero.png \
|
|
39
|
+
...
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 规则
|
|
43
|
+
|
|
44
|
+
- `asset group-create / group-update / register` 都是云端写入,**必须确认**后追加 `--yes`。
|
|
45
|
+
- 主体 element(视频里的"同一个人"概念)优先走 `subject publish`,不要把素材组 / 素材 ID 当 subjectId 用——两者对应平台不同业务实体。
|
|
46
|
+
- `asset register --file` 在 `--dry-run` 阶段不会真上传,只预览 backendPath 推断结果。
|
|
47
|
+
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"素材"小节。
|
|
48
|
+
|
|
49
|
+
## 下一步
|
|
50
|
+
|
|
51
|
+
- 注册成功 → 把 `assetPath`(形如 `material/assets/a.png`)作为 `--resource image:reference=<path>` 传给 `video create`。
|
|
52
|
+
- 想看 group 里有哪些素材 → `asset group --group-id <id>`。
|
|
53
|
+
- 长期复用同一角色(可灵)→ 改走 [`subject.md`](subject.md)。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Auth Module
|
|
2
|
+
|
|
3
|
+
任何 AWB 工作流开始前,先确认认证状态。
|
|
4
|
+
|
|
5
|
+
## 命令
|
|
6
|
+
|
|
7
|
+
| 命令 | 用途 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| `lj-awb auth status` | 查看本地是否有 access key |
|
|
10
|
+
| `lj-awb auth verify` | 联网校验 access key 是否远端有效 |
|
|
11
|
+
| `lj-awb account info` | 联网确认 access key 有效,并查看当前用户 / 团队 / 项目组 |
|
|
12
|
+
| `lj-awb doctor --verify` | 联网体检认证、API、项目组和运行环境 |
|
|
13
|
+
| `lj-awb auth login --access-key <key>` | 校验并保存 access key |
|
|
14
|
+
| `LINGJING_AWB_ACCESS_KEY=<key> lj-awb auth login` | 从环境变量保存 access key(CLI 自动读环境变量) |
|
|
15
|
+
| `lj-awb auth login --access-key <key> --skip-verify` | 仅保存,不联网校验 |
|
|
16
|
+
| `lj-awb auth clear --dry-run` | 预览清空本地认证 |
|
|
17
|
+
| `lj-awb auth clear --yes` | 确认清空本地认证 |
|
|
18
|
+
|
|
19
|
+
## 规则
|
|
20
|
+
|
|
21
|
+
- 自动化环境优先使用 `LINGJING_AWB_ACCESS_KEY`,兼容 `AWB_ACCESS_KEY` / `AWB_CODE` / `ANIME_ACCESS_KEY`。
|
|
22
|
+
- 不要把 access key 明文写入对话、日志、文档或任务台账。
|
|
23
|
+
- `auth status` 只读本地配置;正式创作前用 `auth verify`、`account info` 或 `doctor --verify` 确认远端可用。
|
|
24
|
+
- `auth clear` 是本地破坏性动作,必须先确认或 dry-run。
|
|
25
|
+
- 错误恢复(exit 3 / auth_failed / auth_required)见 [`../references/error-codes.md`](../references/error-codes.md) 场景 4。
|
|
26
|
+
|
|
27
|
+
## 下一步
|
|
28
|
+
|
|
29
|
+
- 认证成功 → 进 [`account.md`](account.md) 看用户 / 团队,或直接 [`project.md`](project.md) 选项目组。
|
|
30
|
+
- `auth verify` / `doctor --verify` 通过后,所有创作命令都可以开始。
|