# Agent、配置与命令参考 [返回首页](../README.md) · [工作流](workflow.md) · [English](reference.en.md) ## 给 AI Agent 用 装好后,在各家 Agent 里一句话就能调用 gtrk 的 skill: | | | |:--:|:--:| | ![在 Agent 中调用 gtrk 示例 1](../assets/agent-example-1.png) | ![在 Agent 中调用 gtrk 示例 2](../assets/agent-example-2.png) | | ![在 Agent 中调用 gtrk 示例 3](../assets/agent-example-3.png) | ![在 Agent 中调用 gtrk 示例 4](../assets/agent-example-4.png) | `gtrk install` 会把 18 个 CLI 自带 skill(`gtrk-oralcut`·`gtrk-long2short`·`gtrk-splitter`·`gtrk-matrix`·`gtrk-mg`·`gtrk-ai-drama`·`gtrk-style-maker`·`gtrk-transcript`·`gtrk-tools`·`gtrk-music-visualizer`·`gtrk-cover`·`gtrk-travel-recap`·`gtrk-live-slicing`·`gtrk-talking-head`·`gtrk-narration`·`gtrk-voiceover`·`gtrk-food-recap`·`gtrk-vlog-docu`)装进本机检测到的 Agent。实现方式与 lark-cli 一致:gtrk 把本地 skill 源交给通用 `skills` CLI,由它维护 Agent 探测、目录映射及更新规则;gtrk 不再硬编码各家路径。 默认使用 `~/.agents/skills` 作为统一正本,再链接到各 Agent 的兼容目录(Windows 使用 junction);链接不可用时适配器会回退复制。这样更新只有一份正本,不会让多份副本逐渐漂移。常用命令: ```bash # 自动探测已安装的 Agent(等价核心:npx -y skills add /skills -g -y) gtrk skills install # 只装指定宿主;这里使用通用 skills CLI 的 Agent ID gtrk skills install --agents codex,cursor,gemini-cli,trae-cn # 安装到适配器当前支持的全部 Agent(会创建较多宿主目录) gtrk skills install --all # 不使用链接,每个宿主各复制一份 gtrk skills install --copy ``` > ⚠️ **升级 CLI 不会自动刷新已装的 skill。** `npm i -g @gitruck/cli@latest` 只换掉 CLI 包本体, > 各 Agent 目录下那份 skill 仍是**上次装进去的快照** —— agent 会照着旧口径干活,**而且不报错**。 > 刷新走 `gtrk upgrade`(升 CLI + 刷 skill)或单独跑 `gtrk skills install`。 > > 自 **1.1.3** 起这件事有信号了:需要 skill 的命令(`oralcut` / `long2short` / `split` / `matrix` / > `mg` / `subtitle` / `project`)在检测到本机 skill 落后时,会往 **stderr** 提示一次并给出修复命令; > 一致或判不出时**零输出**。随时自查跑 `gtrk doctor`,里面有一行「Skill 新鲜度」; > 嫌吵用环境变量 `GTRK_SKILL_FRESHNESS=off` 整块关掉。 `--agents` 接受上游适配器和 gtrk 补充层的 Agent ID。国产 Agent 已覆盖 `trae`、`trae-cn`、`codebuddy`、`qoder`、`qoder-cn`、`qwen-code`、`kimi-code-cli`、`iflow-cli`、`codearts-agent`、`lingma`,并额外补充上游尚未登记的 `workbuddy`、`qoderwork`、`comate`。常见简写 `qwen`、`kimi`、`iflow`、`codearts`、`tongyi-lingma`、`qoder-work`、`baidu-comate` 也会自动映射。以后上游新增 Agent,gtrk 无须发版也能直接使用新 ID;已有脚本若必须写死一个目录,仍可用 `--dir ` 走兼容复制模式。 不同 Agent 的**输入 UI 不统一**:Claude 常把 skill 名放进 `/` 补全;Codex 的不同客户端可从 `$`、`/skills` 或 Skills 面板进入;TRAE 以 Skills 设置、显式点名或语义触发为主。因此没看到 Claude 风格的 `/gtrk-*` 下拉,不代表 skill 没安装。新 skill 没出现时,刷新窗口或新开会话。 然后直接说「**帮我把这条口播剪一版**」,或在对应 Agent 的 Skills 入口显式选择 `gtrk-oralcut`,agent 会问清毛片 / 文稿 / 节奏,调 `gtrk oralcut --json` 跑通闭环、验证产物、把三端打开方式回给你。完整可移植 playbook 见 [`AGENT.md`](../AGENT.md)。 **一条龙都交给 agent**:不止剪口播——接着说「拆个分镜」「铺 B-roll」「铺 MG 颗粒」「渲成片」,agent 会配合各车道生产 skill 调 `gtrk split` / `gtrk matrix` / `gtrk mg` / `gtrk render` 跑完整条 **成片管线**。**你只管对话、敲 CLI 的活交给 agent**——下面的「命令参考」是给 agent 查参数用的,不用你自己去终端敲。 ### agent 能驱动的能力(skill 驱动命令) **每个功能 = 一个 skill(脑,你触发、懂 SOP 位置与用户交互)驱动一个 gtrk 命令(手,确定性机械活)。** 成片是**有先后的 SOP、每步用户可介入**,不是一次性并行铺完——`/gtrk-X` skill 负责在对的时机、带着你的确认,去跑 `gtrk X`: | SOP | 驱动 skill(你对 agent 说) | 底层命令(agent 跑) | 做什么 | |:--:|---|---|---| | ① | `/gtrk-oralcut` | `gtrk oralcut` | 智能剪口播 → 客户端/剪映/PR 三方工程 + transcript | | ② | `/gtrk-splitter` | `gtrk split` | 拆分派单 → `dispatch.json`(A_ROLL/MG/AI_DRAMA/FILM_BROLL 四车道) | | ③ | `/gtrk-matrix` | `gtrk matrix` | **B-roll 底轨·影视/本地素材腿**:铺候选轨 → **用户调整/挑选**(opencut 小眼睛切换) | | ③ | `/gtrk-ai-drama` | (无命令,纯创作) | **B-roll 底轨·AI 情景片段腿(与 matrix 同阶段,不是最后)**:产四段描述稿(故事背景/角色/分镜/原文,中英分块)→ 任意外部平台出片、手动回铺(产物即描述文本、无机械尾巴,同 `/gtrk-style-maker` 只 skill 无命令) | | ④ | (无 skill) | (无命令) | **全局抽帧检查画面构图**:对三源合并后的最终底轨抽帧,用户确认构图——这是 agent 纪律硬门,供 ⑤ 的排版避让决策使用 | | ⑤ | `/gtrk-mg` | `gtrk mg` | **MG(含 ov)最后叠上**(叠在已定稿、构图已核的底轨之上) | | — | `/gtrk-style-maker` | (无命令,建栏目) | 一次性访谈式建你栏目的风格体系(skill 家族 + 栏目配置,见下节) | | ③′ | 「**屏录画中画**」 | `gtrk pip lay` | 把口播粗剪的切点镜像到同步录的屏录 / 第二机位,铺屏录满幅轨 + 人像画中画副本轨(圆 / 圆角方 / 爱心 / 菱形 / 星形蒙版,可圆角);纯本地零计费;低置信时产对齐工程让客户端拖齐后 `--resume` | | — | (收口) | `gtrk render` | 本地渲染 gtrk 工程 → 成片 mp4(含 overlay 与 MG 颗粒;颗粒未命中缓存时云渲计费,`--no-particles` 可跳过) | | ✂️ | `/gtrk-long2short` | `gtrk long2short` | 长剪短·粗剪:长视频语义选段+跳剪 → 逐 clip 出客户端/剪映/PR 三方工程(毛片不上传),**不在成片 SOP 序列内**、随时可独立用 | | 📝 | `/gtrk-transcript` | `gtrk transcript` | 本地视频/配音音频 → 一个含 Agent 总结、时码记录和纯文本的 Markdown,**不在成片 SOP 序列内** | | 🧰 | `/gtrk-tools` | `gtrk tool ` | 单点工具族(图转运镜 / 图片·视频抠像…)——单发单收,**不在成片 SOP 序列内**、随时可独立用 | | 🎵 | `/gtrk-music-visualizer` | `gtrk music-visualizer` | 一首歌 → 频谱可视化成片(模板 + 可选背景/封面 + 配色样式),**不在成片 SOP 序列内**、独立引流用 | | 🖼️ | `/gtrk-cover` | (无命令,纯创作) | 封面工作台两阶段:设计诊断 + 三尺寸中英双版文生图 Prompt → 用户外部平台抽图 → H5 排字工作台(拖拽/滚轮微调、一键导出多尺寸 PNG)。栏目封面审美经栏目配置 `style.skills`(`produces:"cover"`)注入;**不在成片 SOP 序列内**(投放配套的「第 0 阶段」) | | 🧭 | `/gtrk-talking-head` | 编排 `gtrk audio` → `oralcut` → `split` → `matrix` → `mg` → `audio lay` → `subtitle lay` | **口播链图纸**:一条或一组真人出镜毛片 → 外录音轨对齐换轨、多段拼接、粗剪、拆分派单、B-roll/MG 字卡、BGM、字幕 → 客户端可出片工程 | | 🧭 | `/gtrk-travel-recap` | 编排 `gtrk tool audio_tts_clone` → `project init` → `split` → `matrix` → `mg` → `audio lay` → `subtitle lay` | **旅拍解说图纸**:旅拍素材夹 → AI 理解素材、写三段式解说稿、一次确认 → 配音/建工程/拆分/B-roll/字卡/BGM/字幕全自动跑完 → 客户端可出片工程 | | 🧭 | `/gtrk-live-slicing` | 编排 `gtrk long2short`(超长回放先分段) | **直播切片图纸**:数小时直播回放 → 分段(服务端 2h 硬闸)→ 选题清单确认 → 一批逐 clip 粗剪工程(gtrk + 剪映 + PR),按画面形态配分屏 | | 🧭 | `/gtrk-narration` | 编排 `gtrk transcript` → `project init` → `split` → `matrix` → `mg` → `audio lay` → `subtitle lay` | **通用解说图纸(解说链正本)**:素材自带时序的长东西(影视长片/游戏实况/探店记录…)→ 提炼梗概与看点 → 精简叙述重讲成解说成片工程;旅拍解说与美食解说是它的垂类实例 | | 🧭 | `/gtrk-voiceover` | 编排 `gtrk tool audio_tts_clone` → `project init` → `split` → `matrix` → `mg` → `audio lay` → `subtitle lay` | **配音链快速成片预设**:写好的稿(或 AI 代写)→ 配音 → 自动配画面 → 字卡/BGM/字幕 → 客户端可出片工程;适用科普/情感电台/观点/带货/盘点等无自带时序的题材 | | 🧭 | `/gtrk-food-recap` | 沿 `/gtrk-narration` 链路 | **美食解说垂类图纸(解说链示例)**:探店/密着纪实长片或做饭流程记录 → 提炼看点重述成中文美食解说成片工程 | | 🧭 | `/gtrk-vlog-docu` | 编排 `gtrk transcript` → `tool audio_tts_clone` → `split` → `matrix` → `mg` → `audio lay` → `subtitle lay` | **Vlog 纪实图纸**:一批现场素材 → 素材理解、选档写稿、一次拍板 → 同期声骨架 + 旁白配音 + B-roll + 字幕层 + BGM 全自动 → 客户端可出片工程;「现场同期声 × 后期旁白」双声道交替,区别于纯口播链与纯配音链 | > **skill 与命令的区别**:`/gtrk-mg` 是**脑**——懂它在 SOP 第 ⑤ 步(B-roll 三源全齐、构图核过才铺 MG)、带用户确认、按栏目配置解析该产哪种颗粒;`gtrk mg` 是**手**——纯确定性 lint + 铺轨。你对话触发 skill,skill 替你跑命令。 > 上面 18 个 `/gtrk-X` 都是 **CLI 自带框架 skill**(`gtrk skills install` 装;名单与「给 AI Agent 用」一节、「结构」一节完全一致)——其中 🧭 标记的 7 张是**组合图纸**(一句话跑全链,只编排上面的单命令 skill、本身不新增命令);`/gtrk-long2short` 独立驱动长剪短,`/gtrk-transcript` 独立驱动视频/音频转文字稿,`/gtrk-tools` 只负责单点工具族,`/gtrk-cover` 管封面,四者都不属成片 SOP 序列;`/gtrk-ai-drama`·`/gtrk-style-maker`·`/gtrk-cover` 是纯创作 skill(无命令)。栏目专属的**视觉风格/生产内容**另由你栏目的生产 skill(`/gtrk-style-maker` 产、经栏目配置 `style.skills` 绑定)供,不写死在这些框架 skill 里。 **各车道的具体视觉/内容怎么产**——MG 动态图长什么样、AI 情景动画什么调性——不写死在 CLI 里,而由**你自己栏目的生产 skill** 提供(用 `/gtrk-style-maker` 访谈式产出、留本地)。它们经**栏目配置 `style.skills[].produces`**(值 = 车道名)绑定,`gtrk mg` / `gtrk matrix` 等**通用驱动器**据此消费。**驱动方向 = CLI 驱动栏目 skill**:栏目 skill 只供风格/内容、不含任何「跑哪条命令」的编排职责;框架只认车道与管线接口,画面风格永远归你的栏目。不建栏目就用内置默认,端到端照常跑。 --- ## 栏目与风格:两层结构 > **栏目配置是装修厨房,成片是每天做菜。你不会每做一道菜先重新装修一遍厨房,但每道菜确实都在你装修好的厨房里做。** 整个体系分两层,时间尺度完全不同: **【栏目层 · 一次性/低频】= 建栏目(装修厨房)** 跑 `/gtrk-style-maker`(meta skill),它通过启发式访谈帮你想清楚**你自己的**视觉语法——不预设任何维度:不假设你有叙事结构、有主题系统、视觉分动画/实拍,你的维度和取值全部由你自己定义。产出: - 你自己的可执行 skill 家族(落到当前 Agent 的用户级 skills 目录,黑盒、留本地) - 栏目内共享词表(家族各 skill 引用,防多处定义漂移) - 栏目配置 `~/.gitruck/columns/.json`(词表 vocab + B-roll 检索偏好 + style 引用清单) **【成片层 · 每片跑】= 做菜(流程形状不变)** 剪口播 → 拆文稿 → 派单(B-roll 检索 / 动效 / 情景动画)→ 装配 → 渲染。每一步显式消费当前栏目配置:拆文稿按你的词表校验(`--column ` 或 config `defaultColumn`),B-roll 检索按你栏目的检索偏好(`broll.column_tag_ids` 栏目标签 / `material_class_policy` / facets),各车道走你自己的生产 skill。 **不建栏目?直接用默认"厨房"。** 零配置 = 内置默认栏目,端到端照常跑通,行为与配置化之前逐字节一致——栏目层是可选资产,不是必经关卡。 **管线契约**:框架对审美零预设、对管线接口全权威。产物要进渲染管线的 skill 须满足对应契约(见 [`contracts/`](../contracts/README.md),如 HTML 动画颗粒的 `gsap-emit v1`);契约只约束机器可判定的管线属性,画面长什么样永远归你。 --- ## 配置 `gtrk init` 把配置写到 `~/.gitruck/config.json`(用户级统一目录,config / 缓存 / ffmpeg / 栏目配置全在 `~/.gitruck/`)。读取优先级:**环境变量 / `.env` > `init` 持久配置 > 默认根地址**。 | 项 | 来源 | 说明 | |---|---|---| | `GITRUCK_API_KEY` | env / init | 鉴权 Header `Authorization` 的**裸值**(非 Bearer) | | `GITRUCK_API_BASE` | env / init | API 根地址,默认 `https://api.ai-mcn.tv:10000` | | 剪映草稿目录 | init / 自动探测 / `--jianying-draft-dir` | 决定剪映草稿落哪、能否直接打开 | | `defaultColumn` | config.json 手填 | 缺省栏目配置 id(`gtrk split` 未传 `--column` 时用它;再缺省 = 内置默认栏目) | | 栏目配置 | `~/.gitruck/columns/.json` | 一栏目一文件;由 `/gtrk-style-maker` 生成登记,也可手写 | 非交互配置(脚本 / CI): ```bash gtrk init --api-key --jianying-draft-dir auto -y ``` 随时 `gtrk doctor` 自检: ``` ✅ 运行时:node v24.x ✅ CLI 版本:v0.3.0(已是最新) ✅ API Key:已配(gc_xxx…) ✅ 云端连通 + 鉴权:可达,鉴权通过 ✅ 剪映草稿目录:C:\Users\…\com.lveditor.draft ``` ### 枚举清单(`--refresh-catalog`) `gtrk doctor` 里有一行「枚举清单」:CLI 从服务端拉一份**对外枚举的全集**(字幕样式与颜色、语种码、 工程文件格式、节奏预设、任务可用性等),落在 `~/.gitruck/catalog.json`,24 小时自动刷新。 有了它,`--subtitle-type` 这类参数传错时**在上传之前**就告诉你,并列出当前可用值; 服务端新增一种样式,你不必升级 CLI 就能用上。 ```bash gtrk doctor --refresh-catalog # 立刻重拉(无视 24 小时新鲜期) ``` **拉不到清单不影响使用**:CLI 会沿用上一次的快照;完全没有快照时**跳过本地校验、直接提交**, 由服务端裁决——服务端白名单永远是唯一真相源。要彻底关掉这次拉取,设 `GITRUCK_CATALOG_OFFLINE=1`。 ### 崩溃报告与关闭方式 gtrk 崩溃时(未捕获异常 / 未处理的 Promise 拒绝 / 顶层出口的程序缺陷)会自动上报一条报告,帮我们定位缺陷。**默认开启,首次配置时会告知一次。** **发送的内容只有这些**:错误消息、错误堆栈、来源标识(`cli`)、CLI 版本号、本次累计发生次数,以及(仅当崩溃发生在一个云端任务过程中时)那个任务的 ID。 **明确不发送**:素材文件与内容、工程文件与路径列表、你的文稿、API Key(发送前会把 Key 的字面值与形如 `gc_…` 的 token 替换成 ``)、设备标识、主机名、环境变量。 **只上报「崩溃」,不上报「预期内的失败」**:文件不存在、参数不合法、额度不足、命令用错——这些你看得懂的报错一条都不会发。 三种关法(任选其一,都是即时生效): ```bash gtrk init --no-crash-report # 写进配置,永久关 ``` ```bash GITRUCK_CRASH_REPORT=0 gtrk oralcut a.mp4 # 环境变量,临时关一次(优先级高于配置) ``` 或直接在 `~/.gitruck/config.json` 里写 `"crashReport": false`。 当前状态随时可查:`gtrk doctor` 的「崩溃自动上报」一行会写明开 / 关,以及关是被谁关的。关闭后崩溃的呈现与退出码**与开启时完全一致**——它只影响发不发那条报告。 --- ## 命令参考 常用流程入口:`gtrk oralcut` 剪口播、`gtrk long2short` 切高光、`gtrk transcript` 转文字稿、`gtrk project init` 从配音建工程。`oralcut` / `long2short` 单次源片不能超过 2 小时;超长直播先分段,见[工作流指南](workflow.md)。其余命令的最新参数也可用 `gtrk <命令> --help` 查询。 ### `gtrk long2short` / `gtrk pip` / `gtrk qc` — 常用补充 - `gtrk long2short `:按话题选段并跳剪,逐 clip 输出 gtrk / 剪映 / XML 工程;`--split-screen` 使用 720p 代理做智能分屏;`--output-size` 选择画幅;`--subtitle-out` 另产逐 clip 字幕。每次只选一种画幅,横竖屏分别运行;成片条数由内容决定。完整参数见 `gtrk long2short --help`。 - `gtrk pip lay`:把同步录制的屏录或第二机位按口播剪点铺成画中画。两源需有可对齐的公共声音;低置信时先在客户端校准,再按提示恢复。运行 `gtrk pip lay --help` 查看输入、形状、位置和偏移参数。 - `gtrk qc <成片>`:检查闪帧、黑帧、冻结、音量和同步问题;用 `--gtrk` 提供工程上下文,`--fail-on` 控制管线门槛。检查结论供定位问题,不自动替你修片。 ### `gtrk matrix --online` — 当前源码的外部平台检索入口 此入口来自当前开发工作区,安装版是否提供以 `gtrk matrix --help` 为准,云端可用性另行确认。 | 参数 | 用途与边界 | | --- | --- | | `--online` | 检索外部平台 B-roll,仅支持单条 search 或派单消费;与 `--local` 互斥。单条 search 必须给 `--out <结果.json>` 保存结果及断线恢复记录;派单消费需要 `--project` 或 `--dispatch`。这是云端任务,不能按纯本地工具理解 | | `--platforms ` | 逗号分隔 `youtube,vimeo,tiktok,bilibili`,仅配合 `--online`;不指定时查询已登记的四个平台。实际结果仍取决于服务与来源可访问性 | | `--online-session ` | 外部检索批次名,仅配合 `--online` 且不可为空;同批次续跑,换名称发起新搜索,可能产生新任务与费用 | ### `gtrk transcript <本地视频|配音音频>` 把本地视频或配音音频转为一个多层级的 Markdown 文字稿。只接受本地文件路径:视频在本机抽取、音频在本机转码为 16 kHz 单声道音频,只上传音频衍生物,原文件不会上传,也不支持 URL 或平台视频下载。 ```bash gtrk transcript "D:/素材/采访视频.mp4" gtrk transcript "D:/素材/采访视频.mp4" --lang zh-CN --out "D:/文字稿/采访.md" --json ``` 缺省只生成 `D:/素材/采访视频-transcript.md`,内容固定为: 1. `## 总结`:CLI 先标记为待完成,由 `/gtrk-transcript` 驱动 Agent 阅读全文后生成并写回; 2. `## 文字记录`:以 `[00:01:23]` 开头的可读段落; 3. `## 纯文本`:完整识别正文,便于整段复制。 实时计费在运行前从官网价格表按 `asr` 查询,CLI 与文档不保存价格数字。`--json` 的 stdout 只输出 `{ok,taskId,fileId,output,transcriptJson,summaryPending}`,其中 `output` 指向这一个 Markdown;`summaryPending:true` 表示 `/gtrk-transcript` 驱动 Agent 还需生成语义总结、原地替换待总结标记,完成后仍只交付同一个文件。 > `--json` 时另在源文件旁产一份句级时码 `<名>-transcript.json`(`utterances[]{id,text,st,ed}` + `material_id` + `text_hash` + `duration`,与 `gtrk split` 的 transcript 结构逐字段对齐),可直接被 `gtrk project init --transcript` 兜底路消费。**TTS 合成的配音勿走本零件重跑 ASR**——`gtrk project init --tts-task` 直取服务端句级时码,零 ASR 零额外计费。 ### `gtrk oralcut <毛片>` | 参数 | 作用 | 缺省 | |---|---|---| | `-s, --script ` | 文字稿 txt(有稿按稿剪、更准) | 探毛片同名 `.txt`;无则无稿智能重建 | | `-p, --preset

` | 节奏 `steady`\|`concise`\|`compact`(松→紧) | `concise` | | `-o, --out

` | 自定义产物目录 | `<毛片名>-video-project-<时间戳>` | | `-f, --formats ` | 三方格式逗号分隔 | `gtrk,jianying,xml` | | `--jianying-draft-dir ` | 剪映草稿根目录(或 `auto`) | 读 init 配置 / 自动探测 | | `--reupload` | 强制重传,忽略上传缓存 | 关 | | `--no-open` | 完成后不自动打开产物目录 | **默认自动打开** | | `--json` | 机读:stdout 只输出结果 JSON(给 agent / 脚本) | 关 | `--json` 输出(成功时 stdout 单行):`{ ok, outDir, files:{gtrk,jianying,xml}, jianyingDraftPath, rendered, report, errors, taskId, fileId }`;命令失败则进程非 0 退出、报错走 stderr、stdout 无 JSON。 > 每次跑批都会把这份结果**恒写一份 `result.json` 到产物目录**(不受 `--json` 约束);提交成功后还会落一份 `task.json` 面包屑。即便 stdout 丢了、或中途崩了,报告与 `taskId` 都在盘上,可用下面的 `oralcut-result` 秒级取回、无需重跑云端。 ### `gtrk oralcut-result --out <目录>` 按 `task_id` 从云端取回一个**已完成**任务的报告与三方工程产物(可选本地渲染成片),**跳过预处理 / 上传 / 提交 / 轮询**——报告丢了、或想换台机器再拉一次产物时用它,不重跑云端。 | 参数 | 作用 | 缺省 | |---|---|---| | `-o, --out ` | 产物目录 | **必填**(`--out .` = 当前目录本身) | | `--render` | 额外本地渲染成片(需原毛片仍在 gtrk 内嵌路径 + ffmpeg) | 关 | | `--jianying-draft-dir ` | 剪映草稿根目录(或 `auto`) | 读 init 配置 / 自动探测 | | `--no-open` / `--json` | 同 `oralcut` | — | > 取结果需用**提交该任务的同一账号** API Key(异账号 / 已删任务报 `TASK_NOT_FOUND`)。报告存于任务记录、长期可取;底层产物文件约 **60 天**后被清理,届时仍能取回报告、但产物下载会 404(命令会提示、并照常落盘报告)。 ### `gtrk split [拆分稿]` — 视觉拆分派单器 成片 × transcript 投影 → beat 分镜。**无 positional = 导出投影视图**(把当前 `.gtrk` 时间线 × transcript 投影成 beat 视图,供拆分/校对,不写回);**带拆分稿 = 校验落地**(校验拆分稿机器契约 → 投影出 beat 时码 → 原子写回 `struct_meta.split` + 产 `split/dispatch.json` 派单清单,驱动 A_ROLL / MG / AI_DRAMA / FILM_BROLL 四车道)。时码永远归 CLI(拆分稿只描述「哪段做什么」、不写时码)。 | 参数 | 作用 | 缺省 | |---|---|---| | `--project ` | oralcut 产物目录(自动定位 `gtrk/project.gtrk` 与 `transcript/transcript.json`) | — | | `--gtrk ` / `--transcript ` | 显式指定工程 / transcript(非标准布局兜底) | 由 `--project` 推 | | `--column ` | 栏目配置 id(按你栏目词表校验 lane / category / produces) | config `defaultColumn` → 内置默认栏目 | | `--md` | 落地时额外渲染人读稿 `split/visual-split.md`(由 JSON 单向渲染) | 关 | | `--words` | 视图模式附字级明细 | 只出句级 | | `--json` | 机读:stdout 只输出结果 JSON | 关 | > 落地产物 `dispatch.json` 三队列 → 下游消费:`mg`(MG 颗粒)→ `gtrk mg` 命令、`film_broll` → `gtrk matrix` 命令、`ai_drama` → `/gtrk-ai-drama` skill(产四段描述稿·中英分块,纯创作、无命令)。配套 skill `/gtrk-splitter` 产拆分稿。 > > **派单条目自带 `span:{from,to}`**(该条目对应的 utterance 区间;`overlay` aux 派生条目写 **aux 自己的** span,可为主 beat span 的子区间)。**`track_st/track_ed` 是投影时刻的快照**——`gtrk mg` / `gtrk matrix` 消费时会**现场重投影**(见下),所以改完口播轨**不必**回来重跑 `gtrk split`,只有拆分稿本身变了才要重跑。 ### `gtrk patch ` — 元素级编辑(改工程唯一入口) 改一个 clip / gap / 颗粒的时码或参数。**agent 勿裸手改 `.gtrk` JSON** —— 片段时码是两套并存的 (`clip_st`+`clip_ed` 与 `clip_st`+`duration`),改一份不改另一份是**静默失败**:客户端优先读 `clip_ed`, 而后端不强校验它,于是没人报错、成片却用了陈旧出点。本命令负责恒等式同步 + 帧对齐 + 写前全档校验。 ```bash gtrk patch move --project --clip c2 --to 5.0 gtrk patch trim --project --clip c2 --out -1s gtrk patch split --project --clip c2 --cut 5.5 gtrk patch set --project --track audio:1 --at 3.0 --volume 0.5 ``` | 参数 | 作用 | 缺省 | |---|---|---| | `--project ` / `--gtrk ` | 工程目录(自动定位 `gtrk/project.gtrk`)或直接给路径 | — | | `--clip ` | 按 id 寻址。命中 video/audio **镜像对**时视为一个编辑单元 | — | | `--track --at ` | 按位置寻址(`track_st ≤ at < track_ed`)。与 `--clip` 互斥 | — | | `--to ` | `move` 的落点 | — | | `--in` / `--out` / `--set-in` / `--set-out` / `--slip` | `trim` 的五种语义(前两个相对、中两个绝对、`--slip` 只换源窗) | — | | `--cut ` | `split` 的切点。⚠️ 与寻址用的 `--at` 是两个参数 | — | | `--muted` / `--volume ` / `--opaque` | `set` 的元素级参数(`--volume` 是线性增益不是 dB) | — | | `--total ` | `set` 的顶层总长(工程级 op,与元素寻址互斥) | — | | `--ops ` | 批量事务:一次读、全算、全校验、一次写;任一条失败**零写** | 关 | | `--dry-run` | 只算与校验、不写文件 | 关 | | `--json` | 机读回执到 stdout(人读日志转 stderr) | 关 | > 时码字面:秒(`3.5` / `3.5s`)或帧(`105f`);相对量带正负号(`-1s`)。 > > 回执含 `ops[].resolved` 定位三元组 `{track, clip_id, track_st}` —— 下一轮据它复核「所指是否仍是同一元素」。 > `preexisting[]` 是**入档既存**的不变量问题(非本次造成,不阻断);本次改动造成违规则**零写非 0**。 > > ⚠️ 空档(gap)不能用 `--clip ""` 寻址:契约允许多个 gap 共享该取值,它不构成地址;用 `--track/--at`。 ### `gtrk matrix source-import` — 指定视频链接进入某个 B-roll beat 当你已经选定视频链接,不需要关键词检索时,可以把它们直接送进指定 beat: ```bash gtrk matrix source-import --project <工程目录> --beat B07 --url <视频链接> --url <另一个链接> --json gtrk matrix source-import --project <工程目录> --beat B07 --urls links.txt --json ``` `--url` 可重复传,`--urls` 是逐行读取的文件;两者可同时使用,合计 1–32 条,支持 YouTube、Vimeo、TikTok、bilibili 的 HTTPS 视频页。带 `--project` 时 CLI 只追加 `struct_meta.broll` 中该 beat 的候选,不改时间线,也不会执行 `matrix lay`;完整任务回执会保存到 `split/.source-import/`。只想让 AI 或其它自动化消费结果时,改用 `--out `,省略 `--project/--beat`。 每个指定来源生成一个整段低清预览候选,`source-import` 本身不会下载高清原片、不会改时间线,也不会创建 `online_broll_resolve`。候选的时间窗就是该来源已下载预览的完整窗口。客户端对它仍可双击打开 Trim 对话框,但裁剪范围严格限制在该候选来源窗口内;预裁剪会随拖拽进入时间线。用户把候选放入轨道并点击“确认 B-roll”后,客户端才把当前源时间窗口提交给 `online_broll_resolve`,由云端下载高清窗口并置换当前低清素材。`更多外网候选` 只对关键词检索任务分页,不会把指定来源任务重复当作搜索结果。 ### `gtrk matrix` — B-roll 检索 + 候选铺轨 **无 positional = 派单消费**:读 `split/dispatch.json` 的 `film_broll` 队列 → 双口检索 → 产候选清单 `split/broll-plan.json` + 下载 preview 代理、在工程里平铺 N 条候选轨(opencut 打开即可用轨道小眼睛对比挑选)。**`matrix search ""` = 单条 ad-hoc 检索**(不依赖派单)。**`matrix fetch ` = 精剪期拉原片**(脱离工程,见下)。 | 参数 | 作用 | 缺省 | |---|---|---| | `--project ` | oralcut 产物目录(定位 `split/dispatch.json` 与产物落点) | — | | `--dispatch ` | 显式指定 `dispatch.json` | 由 `--project` 推 | | `--column ` | 栏目配置 id(按你栏目 B-roll 检索偏好:标签 / material_class / facets) | config `defaultColumn` → 内置默认栏目 | | `--lay ` | 候选铺轨数:平铺 N 条 B-roll 候选轨(`0` = 只出 plan 不铺轨) | `1` | | `--top-k ` | 每 query 候选数上限(覆盖派单 shots;服务端上限 50) | 派单值 | | `--material-class ` | 素材类型 `real_shot` \| `concept`(仅矩阵成员口;覆盖栏目策略) | 栏目策略 | | `--score-floor ` | 填充置信度地板:segment score 低于此值不采纳、槽位留空——留空处**露黑底垫轨**(默认铺;除非 `--no-black-bed` 才露主轨)。调高会收缩取材池,整段铺不满即纯黑压口播,调完先看空洞告警 | `0.2` | | `--no-black-bed` | 不铺纯黑底垫轨(默认铺一条) | 默认铺 | | `--force-relay` | 候选轨已被你在客户端编辑过时仍强剥重铺(缺省会拒铺并保留那条轨)——**会删掉已确认原片的 `broll-raw-*` 素材登记、盘上原片成孤儿** | 关 | | `--arrange ` | **B-roll 编排取数路**,**按素材来源自动定档、一般不用传**:铺你自己电脑里的素材 → `cloud`(编排在云端做,按「编排量」计费,跑前报预估并征求确认,`--yes` 跳过);铺素材矩阵的素材 → `local`(编排仍在本机、不计费,逐字不动)。`shadow` 是观测档:本机照跑照铺轨、云端只对拍不采纳。⚠️ 本地素材路上 `--arrange local` 不受理(传了报参数错);云端拿不到产物时**直接报错**,不会悄悄换算法把活干完 | 按素材来源自动 | | `--arrange-qc` | **编排期质检**(缺省关):落轨**之前**就查每个 beat 的卡点句「画面有没有给到稿子说的东西」,没给到就换候选重排,最多 2 轮,到限即交付并如实登记还差哪几句。全程零渲染——替代「铺完 → 渲 → 看 → 重铺 → 再渲」那两轮。⚠️ 判定走素材理解口、**按帧计费**(每个卡点句 1 帧/轮,命中判定缓存的不重复计费),跑前报预估并征求确认(`--yes` 跳过)。与 `--arrange` 正交:本机档与云端档都能开 | 关 | | `--arrange-cost-cap ` | 云端编排单次编排量上限:超限服务端**前置拒绝**、零执行零计费(不是跑到一半掐断)。只在 `--arrange shadow\|cloud` 时有意义 | 不限 | | `--dump-request ` | **排障用**:把**实际上行的**云端编排请求体逐字节写到该文件。服务端**不保存你的 plan**(只留规模摘要),所以出了问题只有这份文件能复现——把它发给我们即可。⚠️ **不能指向工程目录内**(工程会被打包、拷贝、同步出去,而这份文件里有你的 beat 名与检索词);开 `--arrange-qc` 时每轮各写一份,第 N 轮落在同名加 `.roundN`。机读回执在 `lay.arrange_run.dump_request` | 不写 | | `--explain` | **外发调参仪表**:缺省的机读账面只给「留空槽数」`lay.dedup.emptySlots`(够判断素材池是不是不够用),其余调参用的细账(其中多少是窗口精修致空、跳剪避让枯竭放行几次、取用了几个高运动/模糊段)收在本开关后,人读日志同口径。不影响任何决策,工程产物逐字节不变 | 关 | | `--arrange-estimate-only` | **只要预估不要执行**:走到云端编排的计价确认那一步就停,报出编排量后**成功**返回(`ok:true` + `estimateOnly:true`——那是「我在做决定」,不是「我拒绝了」),零云端调用、工程文件零改动。机读值在 `lay.arrange.units` / `lay.arrange.scale`。⚠️ 它省的是**云端那一次调用与其计费**(以及其后的候选下载与落轨),不是整条链:编排量的分母本来就要读工程、读 plan、做重投影才算得出。素材矩阵路报 `applicable:false` 而**不是 0**。与 `--yes` 同给时以本开关为准 | 关 | | `--cut-align ` | 句界吸附目标比例 0..1:`0.7` ≈ 约七成字幕句起点恰逢镜头切点、三成有意错开(全对齐反而机械),`0` = 关闭、回旧节奏切槽。⚠️ 句级时码取 `transcript` 现场重投影(与关键词锚同源),**重投影降级时自动回旧行为并告警**——那一轮的吸附比例不作数 | `0.7` | | `--gap-fill ` | 音频驱动工程主轨的空洞怎么填:`fast` = **尽量不留黑**(放宽 score 地板从候选池填 → 耗尽则延长相邻颗粒 → 再耗尽跨 beat 借候选 → 短于最小镜头长的残洞也补真画面 → 补不满整段才垫黑片);`solid` = 一律黑片垫齐(精修时一眼看出「这里没匹配到」);`none` = 原样留 gap。⚠️ `fast` 借来的画面与本段稿子相关性弱、次地板槽是不到 1.2s 的快切,两者都会在日志里按 `kind` 报成 `borrowed` / `subfloor`——**如实告知,不是缺陷**;`none` 撞上客户端主轨磁吸会把 gap 吸掉,导致其后画面与配音**整体错位** | `solid` | | `--highlight-weight ` | 仅 `matrix lay`:把「有没有看点」(信息量 / 戏剧性 / 情绪强度 / 稀缺性)融进候选排序,0..1。与 `--mark-weight`(画面好不好看)**正交**,两权之和钳到 1。⚠️ 看点分取 `describe` 的理解缓存,**没跑过 `describe` 就等于没开**——无缓存候选按中性处理,权重回吐给相似度 | `0`(关闭、零回归) | | `--decode-path ` | 仅 `matrix index`:场景检测的解码路 `auto` \| `gpu` \| `cpu` \| `full`。`auto` 自动探测硬解并**逐素材降级**(推荐);`gpu`/`cpu`/`full` 钉死某档且**失败不降级**(对照与排障用)。⚠️ 缺省仍是 `full`(旧行为),要提速得自己传 `auto` | `full` | | `--proxy-width ` | 仅 `matrix index`:代理解码宽度。⚠️ 再往下保真度明显劣化,**勿随手调小** | `384` | | `--proxy-scaler ` | 仅 `matrix index`:代理缩放算法。缺省 `neighbor`(点采样不滤波);需要其它算法时显式传入 | `neighbor` | | `--exclude-recent ` | 仅 `matrix material --scope audio`:选曲避让最近 n 首用过的 BGM。历史由 `audio lay` 落轨**自动记账**,不用自己维护 | `12` | | `--no-exclude-recent` | 关掉上一条的选曲避让,允许复用近期曲目 | 关(缺省避让) | | `--out ` | ad-hoc 模式结果落文件;`matrix fetch` 原片落盘目录(绝不写剪映草稿目录) | stdout / `./matrix-fetch/` | | `--json` | 机读:stdout 只输出结果 JSON | 关 | **`matrix fetch `(精剪期拉原片,脱离工程)**:对**计费检索过**(授予账本命中)的素材按 clip_id 免费重签新鲜下载直链并落盘 `.`——粗剪导剪映后想补一段 B-roll,不回客户端就能拉到本地直接拖进剪映。动线恒为**两段式**:`matrix search` 挑定 clip_id → `matrix fetch` 拉取(fetch 自身零计费、不发起检索、无确认闸)。**授予持久**:24h 过期签名不构成障碍,三天前 search 出的 clip 照样 fetch。未购项逐条报「未购授予」并给出路(对该词跑一次计费检索即获授予),不连坐其余;单批 ≤500。**首发只覆盖视频 clip 原片**(图片/音频素材重签面未开,进 missing 附提示)。产物不进 `.gtrk`、不写剪映草稿目录;在剪映里补的料不回流工程(导出单向)。 > **beat 窗口现场重投影**:派单消费模式在**发起第一次云端检索之前**,用「`transcript` × 当刻 `.gtrk`」重算每个 beat 的 `[track_st, track_ed]`,检索、`broll-plan.json` 与铺轨一律以重算值为准(`--lay 0` 同守;ad-hoc `search` 不受影响)。`dispatch.json` 里的时码只是**投影时刻快照**,仅在重投影不可行时兜底——**所以改完口播轨直接跑本命令即可,不必先重跑 `gtrk split`**。`--json` 恒出 `reprojection:{mode,degraded,reason?,drifted,max_offset,shrunk,dropped}`;重投影后**零存活**的 beat 会被跳过(不为它烧检索配额、也不铺)。重投影不可行(transcript 缺失 / 工程定位不到 / 主轨查不到口播素材)→ **降级用快照 + 告警 + `--json` 标注**,检索与 plan 照产、不硬崩;非 v1 工程的既有行为不变(plan 先落盘、随后版本门非 0 退出)。 > > **云端编排(`--arrange`)**:B-roll 的**编排决策**(哪一颗放哪、切多长、从素材的哪一段取)可以交给云端跑。 > 适用面只有一条:**本地素材上轨铺排**。素材库 / 普通素材 / 概念素材那些的匹配与铺排原来什么样、以后还什么样, > 一个字节都不变。 > > **不带这个参数时按素材来源自动定档**:铺你自己电脑里的素材走 `cloud`,铺素材库那些走 `local`。 > 本地素材的编排算法只在服务端迭代——改进当天生效,你不必升级客户端。 > > ⚠️ **代价先说在前面**:本地素材的编排**只在云端完成**。云端拿不到产物(连不上 / 被拒 / > 产物不合规)就**直接报错**,不会悄悄改用另一套算法把活干完——那会给你一份和云端不同的结果 > 而你并不知情。这条路上 `--arrange local` 不受理(传了会报参数错)。 > > 跑前的用量确认你要是说「不跑」,**这一步就不做**(整轮铺轨中止,工程一个字节没动、plan 照常可用,随时可改主意重跑), > 而不是换个便宜办法替你做完。 > > ⚠️ **它不是省钱开关**:用素材矩阵的素材同样要付检索费。**两条路都要花钱,只是花在不同环节**—— > 自己的素材付编排费,矩阵素材付检索费(矩阵成员的检索是 0)。 > > `shadow` 是观测档:本机照跑照铺轨、云端只跑一遍做对拍(**不切流**,产物仍用本机的),它不受上面那条报错规则影响。 > > 云端两档按新计量维度**编排量**计费——要配画面的段落越多、每段候选素材越多、铺的候选轨越多就越贵。 > 跑前会报预估并征求确认,`--yes` 跳过、`--arrange-cost-cap` 设本次上限(超限**前置拒绝**,零执行零计费)。 > 完整计费口径(含既有的额度包 / 余额、阶梯价与免费档)见 **[计费说明](https://hocassian.feishu.cn/docx/DtendXStMogAbJxAOEmcCyC7n3e)**。 > ⚠️ 预估值只供双端一致性校验,**实际计费恒以服务端复算值为准**;两值不一致时服务端会拒绝执行且不计费。 > 上行的只有决策要读的字段——素材绝对路径、签名 URL、画面描述文本、派单负词、口播原文整句一律**不出你的机器**。 > > **服务端一行不留**:那份上行的 plan 我们**不保存**(留痕只有规模明细、口径版本与复算金额, > 够独立核对一笔账,但翻不出你的素材结构)。代价是**出了问题我们这边没有可复现的东西**—— > 所以给了 `--dump-request `:它把真上行的那串字节留在**你自己的机器上**, > 排障时把那个文件发给我们即可。缺省不写,且**不许写进工程目录**(工程是要被打包拷走的)。 > > 频率上有两层保护,命中都是 **429、零执行零计费**:一层按次数限流;另一层认「同一份 plan > 被反复换参数重提」这种形态。传输失败的重试发的是**逐字节相同**的请求体,不会被算进去。 > > 候选的 `preview_url`/`cover_url` **不带签名、不会过期**(本地代理落盘后一律复用);带签名约 24h 过期的是**原片 `url`**,由客户端「确认原片」链路重签——**不必为「重签」重跑本命令**。 > > **重跑会剥旧重铺,但不碰你改过的轨**:候选轨的身份按「素材前缀 + 上一轮登记指纹」认,不再认轨号(客户端保存会把 overlay 轨整体重编号)。一旦某条候选轨被判定「你编辑过」(改过 clip,或在客户端确认过原片使 material 变成 `broll-raw-*`),本次**整体不铺**:不剥任何轨、不追加新轨、`.gtrk` 逐字节不变,`broll-plan.json` 照常产出,命令给出「哪条轨 / 什么证据 / 下一步」并以非 0 退出码结束(`--json` 出 `{ok:false, refused:[…]}`)。要强行重铺加 `--force-relay`。 > > **机读账面:`counts.results` 是「去重前」口径**:`--json` 的 `counts.results` 恒是**逐 query 累加的检索响应条数**(既有口径不动)——15 条 query 各命中同一条素材时它就是 15,而 plan 落盘可能只有 8 行、只对应 1 个素材。要判「到底有多少料」读派单消费模式另出的三键:`counts.zero_yield`(**真·零产出**的 query 数,判据取**检索响应**为空,而非事后扫 plan 的 `results: []`——beat 内去重会把命中折进同 beat 的兄弟 query,折叠 ≠ 零产出)、`counts.plan_results`(plan **落盘后**的实际 result 行数,去重后)、`counts.distinct_clips`(plan 内 distinct `clip_id` 数)。这三键**只在派单消费模式**出现,ad-hoc `matrix search` 与 `matrix lay` 的 `counts` 逐字节不变(**缺席 = 没这个概念,不是「测出来是 0」**)。铺轨侧同理另出 `lay.beatsWithCandidates`(有候选的 beat 数)与 `lay.emptyBeats`(**零候选 beat 名单**——整段没有任何可铺的画面),两者恒满足 `beatsWithCandidates + emptyBeats.length = plan 的 beat 总数`。 > > **素材落盘自检**:写回工程之后只读检查 `materials[].path` 是否落盘。相对路径以 `.gtrk` 文件所在目录(`<产物目录>/gtrk/`)为基准解析。`--json` 出 `integrity:{ checked, counts, dangling:[…], danglingReferenced, danglingOrphan, external:[…], noPathIds:[…] }`;`dangling` 是登记存在但文件缺失的素材,并标出是否被时间线引用,绝对路径缺失另计 `external`,http(s) 素材只计数且不发网络请求。检查只告知,不改 `ok`、退出码、素材条目或文件;修复悬空引用请在客户端重新确认原片或删除对应 clip。未写回的运行(`--lay 0` / 拒铺 / 工程缺失)不出 `integrity` 字段。 > > **纯黑底垫轨**:默认在候选轨之下、口播主轨之上铺满已落成的 beat 包络,避免 B-roll 留空处露出底下画面。候选轨未填满的部分会形成「黑底空洞」;`--json` 恒出 `lay.blackBedHoleSec` 与 `lay.blackBedHoles`,单段 ≥ 3s 或单 beat 占比 ≥ 15% 时给非致命告警。可调 `--score-floor`、改用 `--no-black-bed` 或在客户端补片。素材落在 `assets/builtin/solid-000000-x.png` 并幂等复用;换片请拖到候选轨,不要拖到黑底条。客户端 0.2.10+ 拖到黑底条会直接拒绝,旧客户端先升级;不需要黑底时用 `--no-black-bed` 重跑。 **本地素材模式(`matrix index` / `--local`)**:素材不必入云端素材库,用你本地的素材文件夹(视频+图片混合)直接检索铺轨: ```bash gtrk matrix index --dirs <素材夹或素材文件,...> # ① 免切片建索引:内容指纹增量、断点续传,素材改名/移动不重算 gtrk matrix --local --dirs <素材夹或素材文件,...> --project <目录> # ② 本地检索铺轨(--lay 0 = 只出 plan 不铺轨;传单个素材文件即把检索域收窄到它) gtrk matrix lay --project <目录> [--plan ] # ③ 消费(可编辑后的)plan 铺轨,零检索开销 ``` - **路径里有英文半角逗号就重复传**:`--dirs` / `--materials` 缺省按半角逗号分隔;路径自带逗号时改成重复传(`--dirs "A" --dirs "B"`,**累加不覆盖**)。整串在盘上存在时会自动不拆,中文全角「,」从不参与拆分。**枚举报 `0/0` 时先看这一条**,其次看素材夹里有没有断链(失效的软链接)。 - **素材本体永不上云**:只把 512px 抽帧图送同合云自建 embed 端点向量化、即传即弃;产物以绝对路径直引本地原文件(免下载免代理)。索引按实际抽帧张数会话计量(跑前预扣、跑完多退少不补),文本检索零积分。 - **图片一视同仁**:图片可检索可铺轨;被选中时经云端 `image_move` 转 5 秒运镜视频入轨——**图片本体会上云**(2 积分/张,铺轨前汇总确认;同图同参恒复用不重复扣费)。零图片上云 → `--no-image-broll`。 - **同素材不二用**:单轮铺轨一个素材单元全局只用一次(本地视频按场景、图片按文件),候选枯竭宁空不重复;`--dedup-scope material` 收严到文件级。 - **含本地素材的工程不能云渲**:提交会被拒(`local_broll_cloud_render_rejected`)——走客户端本地出片或 `gtrk render`。 - **可选零件**:`matrix describe --plan [--top-k N]` / `--materials ` 按需理解候选(VLM 描述/标签/质量分/水印·字幕·黑边·模糊信号,1 积分/张(**异步任务计费**:提交预扣→完成结算,失败自动退款;同合云内部成员豁免,跑时自动探测,`--json` 的 `credits_estimated` 即实耗、`credits_would_be` 为原价)、产物注入 plan 并本地缓存、缓存命中零计费、>20 张确认护栏)。**一条 describe 只代表一段**:`--plan` 形态每个候选只抽 `segments[0]` 的 best 一帧,产物带射程锚点 `describe.at_sec`(素材时基秒),跑完报「理解覆盖率 = 理解帧数 / 被理解候选携带的**段总数**」(`--json` 读 `describe_coverage`)——注入 N 条 ≠ 这 N 条候选都被看过;`--source-window ` 源时间窗过滤(仅 `--local`,影视解说式「第 N 段解说配影片第 N 段邻域画面」);`matrix lay --mark-weight <0..1>` 把 describe 的质量分融进候选排序(融合分 = sim×(1-w)+(mark/100)×w,只重排序不改准入,无缓存候选按中性处理)。 - **看点准则**:`--highlight-rubric `(describe 与 lay 同参,≤2000 字符,`@<路径>` 从文件读)给看点分(`--highlight-weight`)指定**评判基准**——垂类图纸各持一份(美食判分量对比/价格实物,旅拍判奇观地貌/极端天候)。**不传 = 整个字段不上行、服务端走领域无关缺省,与本参数引入前逐字节一致**。看点分按准则分桶缓存:换准则只重打分、客观描述缓存照常复用不被覆盖;`describe --plan` 会把本轮准则的 `rubric_hash` 钉进 plan,`lay` 据此自动取同一个桶(无需重复传参),两者不同源时**硬失败**而不是静默择一。⚠️ 换准则要重新打分就得重新看片(按张计费)——免看片的文本级重打分要等服务端轻通道,现在没有。 - **索引参数与量纲**:`--scene-threshold` 调场景切分粒度、`--stability-threshold` 固定机位判稳收敛抽帧、`--rebuild` 强制重建(理解缓存不清);索引跨机不可移植(键=绝对路径,换机重跑 index 即可)。本地 score 量纲与云端不同(完美命中可低至 ~0.25),`--score-floor` 别按云端直觉调高。 **`gtrk matrix material "<词>"`(通用三态素材检索)**:与上面的 B-roll 检索并列的第二条线,出**整条素材**的下载直链(不是段落)——`--scope clip|image|audio`(缺省 `audio`,BGM 主场)、`--commercial-only` 只搜可商用(**按需收紧的显式开关,缺省不带**)、`--min-duration/--max-duration` 按成片时长挑、`--top-k`(缺省 5,服务端上限 50)、`--diversity` 去同质、`--json` 机读、`--out` 落盘。 > ⚠️ **`is_copyright` 读作「能不能商用」,不是「有没有被版权保护」**:`true` = **可商用**(自有 ∪ 已授权),`false` = **不可商用**。 > > **`false` 不要读成「无版权、可以随便用」——它恰恰相反。** 决定性反证:他人版权的概念素材入库固定写 `is_copyright=0`;这个字段若真是「是否受版权保护」,那批必须是 1。 > > `is_copyright` 读作「能不能商用」:`true` = 可商用,`false` = 不可商用。`--json` 逐条派生 `copyright_label`(`"可商用"` / `"不可商用"`),它与 `is_copyright` 同向,字段缺席时也缺席;判读使用这两个键,不要从字段名猜语义。 > > 该字段**只有矩阵成员口才有**:公开口没有它不是「不可商用」,而是服务端在源头就只放可商用素材(缺席即无需判,CLI 如实缺省、绝不补假值)。 > > **缺省口径**:矩阵成员档默认搜全库(`copyright_scope=all`,含非商用/概念素材),不会替你收紧;随包 skill 也不应自行剔除 `is_copyright:false`,而应逐条标注版权状态。只要可商用时,显式加 `--commercial-only`。 编排配方(纯匹配 / 先理解后铺 / 时间窗 / 素材先行编剧 / 三层层叠)与 plan 编辑口径见随包 skill `/gtrk-matrix`。 ### `gtrk mg` — MG 动态图颗粒(铺轨 / lint / status / render) 消费 `gtrk split` 落地的 `dispatch.mg` 派单,把**你栏目的 MG 生产 skill** 产的 html-particle 颗粒铺进 `.gtrk` 工程的 `beat_track`。六种模式按首个 positional 分派:**无参 = 铺轨**、`mg lint ` = 单文件校验、`mg status` = 编排看板、`mg render ` = 独立颗粒云渲(脱离工程,精剪补给口)、`mg compile ` = 改 IR 重编译文字模板、`mg edit --say` = 自然语言改写文字模板。旧名 `gtrk rrv` 保留为弃用别名(会打提示,建议改用 `gtrk mg`)。 | 参数 | 作用 | 缺省 | |---|---|---| | `--project ` | oralcut / split 产物目录(定位 `split/dispatch.json` 与工程 `.gtrk`) | — | | `--dispatch ` | 显式指定 `dispatch.json`(非标准布局兜底) | 由 `--project` 推 | | `--only ` | 只跑单 beat(收 **beat id** 如 `B12`、非 `composition_id`;主 + 其 `-aux` 叠层颗粒一并选)。**真增量合并**:只重铺命中的那几颗,轨上其余已铺颗粒(连同手调)原样保留 | 全部 | | `--lint-only` | 只 lint 校验,不铺轨不写回 | 关 | | `--replace-all` | 显式授权**重置整轨**:不走增量保留、整轨剥掉重铺——**会删掉轨上其余已铺颗粒** | 关 | | `--duration ` | **render 模式必填**:显式时长锚(秒)——独立模式无坑位包络,它同时是 lint 包络、成片时长与计费时长 | — | | `--format ` | render 模式产物格式:首发仅 `qtrle`(剪映可读透明 MOV;`webm` 剪映不吃、明确拒绝) | `qtrle` | | `--out ` | render 模式落盘目录(绝不写剪映草稿目录——拖入剪映由你做) | `./mg-render//` | | `--yes` | render 模式:跳过计费预估确认 | 关 | | `--json` | 机读:人读日志转 stderr,stdout 只输出结果 JSON | 关 | - **铺轨**(`gtrk mg --project `):读 `dispatch.mg` → 逐 beat 从 `/mg/.html` 取源颗粒 → lint → 铺进 `beat_track`,把 `struct_meta.mg` 原子写回 `.gtrk`(幂等登记自产轨 `lay_tracks`,重铺先剥旧自产物再 append、用户手加轨零连带)。「透明叠加 / 满屏底层」由颗粒 HTML 根 `background` 反推的 `opaque` 决定。缺 HTML / lint 失败的 beat 计入 `skipped`、不拦其余。 - **剥离面 ≠ 「本次铺什么」,也 ≠ 「登记轨全集」**:`--only ` **只剥命中的那几颗**(真增量合并)——轨上其余已铺颗粒的 clip / 素材 / 登记条目**原样保留**,连同用户在 opencut 对它们的手调(保留的是既有 clip 原件,非照登记重建,故透明度 `opaque` 不会丢);这些保留条目**不重新 lint、不重新复制源 HTML**(工程自包含,`/mg/` 下源文件删了也不影响)。全量重铺仍是「剥净再整轨重建」,**唯一例外**是本次派单里有、却因缺 HTML / lint 未过 / 重投影后零存活而**没铺成**的那几颗——它们上一轮的 clip 保留在轨上(不因为新的做坏了就把旧的也毁掉);反之**派单里已不存在**的已铺条目仍照剥(计划变更 ≠ 做坏了)。要连其余已铺颗粒一起剥掉重来:`--replace-all` 显式授权。 - **素材表不囤积**:素材按「自产身份 × 零引用」剥离(自产 = `mg-`/`rrv-` 前缀,或位于 CLI 独占的 `assets/mg/` 且文件名在自产登记里),不依赖客户端可改写的 `html_material` 前缀。`mg-` 素材数与轨上颗粒数保持一致;重复或孤儿条目会清掉。非自产素材、仍被存活 clip 引用的自产素材,以及盘上 `assets/mg/` 的 HTML 副本都不动。 - **「一条都没定位到」不是清空指令**:`--only` 打空、`dispatch.mg` 为空/缺失、或本次条目全被 skip,**而轨上已有已铺颗粒**时,同样拒绝写回(那是派单或选择器出问题的信号)。确要清空加 `--replace-all`。首次铺轨(轨上本就没有已铺条目)不受此限,照常走完报 `laid=0`。 - **槽位窗口现场重投影**:铺轨与 lint 之前先用「`transcript` × 当刻 `.gtrk`」重算每条队列条目的 `[track_st, track_ed]`,之后 lint 的坑位包络(铁律⑦)与落轨 clip 时长一律以重算值为准(`--only` 同守;aux 派生颗粒按**自己的** span 重投影,不与主 beat 窗口混同)。`dispatch.mg` 里的时码只是**投影时刻快照**,仅在重投影不可行时兜底——**改完口播轨直接铺即可,不必先重跑 `gtrk split`**。`--json` 恒出 `reprojection:{mode,degraded,reason?,drifted,max_offset,shrunk,dropped}`(`--lint-only` 也有)。重投影后**零存活**的条目 skip 并计入 `skipped`(不复制 HTML、不按快照铺回去);重投影不可行(transcript 缺失 / 工程定位不到 / 主轨查不到口播素材)→ 降级用快照 + 告警 + `--json` 标注,退出码不变;工程**非 v1** 的既有行为不变(铺轨路径版本门非 0 退出、`--lint-only` 照旧出报告)。铺轨成功会把本次时码来源(`timecode_source` / `reprojected_at`)纯追加登记进 `struct_meta.mg`。 - **lint**(`gtrk mg lint <颗粒.html> [--dispatch ]`):纯本地静态校验颗粒 HTML 的铁律机器可判定子集(`