@gitruck/cli 0.2.7 → 0.2.9
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/AGENT.md +8 -0
- package/README.md +60 -4
- package/dist/index.js +1899 -3
- package/package.json +64 -62
- package/skills/gtrk-mg/SKILL.md +3 -3
- package/skills/gtrk-splitter/SKILL.md +2 -2
- package/skills/gtrk-splitter/references/field-schema.md +1 -1
- package/skills/gtrk-tools/SKILL.md +53 -0
package/package.json
CHANGED
|
@@ -1,62 +1,64 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@gitruck/cli",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "同合云成片流水线 CLI —— agent 驱动云端任务、产物拉回本地、三方工程文件(客户端/剪映/PR)互通。",
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"author": "Gitruck (同合云)",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/Gitruck/cli.git"
|
|
10
|
-
},
|
|
11
|
-
"homepage": "https://github.com/Gitruck/cli#readme",
|
|
12
|
-
"bugs": {
|
|
13
|
-
"url": "https://github.com/Gitruck/cli/issues"
|
|
14
|
-
},
|
|
15
|
-
"type": "module",
|
|
16
|
-
"bin": {
|
|
17
|
-
"gtrk": "dist/index.js"
|
|
18
|
-
},
|
|
19
|
-
"files": [
|
|
20
|
-
"dist",
|
|
21
|
-
"assets",
|
|
22
|
-
"skills",
|
|
23
|
-
"contracts",
|
|
24
|
-
"AGENT.md",
|
|
25
|
-
"README.md",
|
|
26
|
-
"LICENSE"
|
|
27
|
-
],
|
|
28
|
-
"engines": {
|
|
29
|
-
"node": ">=20.6"
|
|
30
|
-
},
|
|
31
|
-
"publishConfig": {
|
|
32
|
-
"access": "public",
|
|
33
|
-
"registry": "https://registry.npmjs.org/"
|
|
34
|
-
},
|
|
35
|
-
"keywords": [
|
|
36
|
-
"gitruck",
|
|
37
|
-
"同合云",
|
|
38
|
-
"video",
|
|
39
|
-
"oral-cut",
|
|
40
|
-
"口播剪辑",
|
|
41
|
-
"cli",
|
|
42
|
-
"jianying",
|
|
43
|
-
"剪映",
|
|
44
|
-
"agent"
|
|
45
|
-
],
|
|
46
|
-
"scripts": {
|
|
47
|
-
"gtrk": "bun run src/index.ts",
|
|
48
|
-
"build": "bun build ./src/index.ts --target=node --outfile dist/index.js",
|
|
49
|
-
"typecheck": "tsc --noEmit",
|
|
50
|
-
"prepublishOnly": "bun run build",
|
|
51
|
-
"test": "esbuild src/lib/chunk-upload.ts src/lib/render.ts src/lib/cloud.ts src/lib/materialize.ts src/lib/projection.ts src/lib/splitdoc.ts src/lib/gtrk-writeback.ts src/lib/column-config.ts src/lib/matrix.ts src/lib/matrix-lay.ts src/lib/mg-lint.ts src/lib/mg-lay.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/split.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/matrix.ts --bundle --platform=node --format=esm --outfile=.test-build/matrix-cmd.mjs && esbuild src/commands/mg.ts --bundle --platform=node --format=esm --outfile=.test-build/mg-cmd.mjs && node --test \"test/*.test.mjs\""
|
|
52
|
-
},
|
|
53
|
-
"devDependencies": {
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@gitruck/cli",
|
|
3
|
+
"version": "0.2.9",
|
|
4
|
+
"description": "同合云成片流水线 CLI —— agent 驱动云端任务、产物拉回本地、三方工程文件(客户端/剪映/PR)互通。",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Gitruck (同合云)",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/Gitruck/cli.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/Gitruck/cli#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/Gitruck/cli/issues"
|
|
14
|
+
},
|
|
15
|
+
"type": "module",
|
|
16
|
+
"bin": {
|
|
17
|
+
"gtrk": "dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"assets",
|
|
22
|
+
"skills",
|
|
23
|
+
"contracts",
|
|
24
|
+
"AGENT.md",
|
|
25
|
+
"README.md",
|
|
26
|
+
"LICENSE"
|
|
27
|
+
],
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=20.6"
|
|
30
|
+
},
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public",
|
|
33
|
+
"registry": "https://registry.npmjs.org/"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"gitruck",
|
|
37
|
+
"同合云",
|
|
38
|
+
"video",
|
|
39
|
+
"oral-cut",
|
|
40
|
+
"口播剪辑",
|
|
41
|
+
"cli",
|
|
42
|
+
"jianying",
|
|
43
|
+
"剪映",
|
|
44
|
+
"agent"
|
|
45
|
+
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"gtrk": "bun run src/index.ts",
|
|
48
|
+
"build": "bun build ./src/index.ts --target=node --outfile dist/index.js",
|
|
49
|
+
"typecheck": "tsc --noEmit",
|
|
50
|
+
"prepublishOnly": "bun run build",
|
|
51
|
+
"test": "esbuild src/lib/chunk-upload.ts src/lib/render.ts src/lib/cloud.ts src/lib/materialize.ts src/lib/projection.ts src/lib/splitdoc.ts src/lib/gtrk-writeback.ts src/lib/column-config.ts src/lib/matrix.ts src/lib/matrix-lay.ts src/lib/mg-lint.ts src/lib/mg-lay.ts src/lib/tool-descriptors.ts src/lib/tool-runner.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/split.ts --bundle --platform=node --format=esm --outdir=.test-build --out-extension:.js=.mjs && esbuild src/commands/matrix.ts --bundle --platform=node --format=esm --outfile=.test-build/matrix-cmd.mjs && esbuild src/commands/mg.ts --bundle --platform=node --format=esm --outfile=.test-build/mg-cmd.mjs && esbuild src/commands/tool.ts --bundle --platform=node --format=esm --outfile=.test-build/tool-cmd.mjs && esbuild src/lib/convert/ir_to_jsx.ts src/lib/convert/ir_to_am.ts src/lib/convert/ir_to_nv.ts src/lib/convert/am_parse.ts src/lib/convert/nv_parse.ts src/lib/convert/parse.ts src/lib/convert/download.ts src/lib/convert/bake_ops.ts --bundle --platform=node --format=esm --outdir=.test-build/convert --out-extension:.js=.mjs && esbuild src/lib/mad/selector.ts src/lib/mad/beat.ts src/lib/mad/scan.ts src/lib/mad/data.ts src/lib/mad/pool.ts src/lib/mad/cloud-beat.ts src/lib/mad/mad.ts --bundle --platform=node --format=esm --outdir=.test-build/mad --out-extension:.js=.mjs && node --test \"test/*.test.mjs\""
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@xmldom/xmldom": "^0.9.6",
|
|
55
|
+
"bun-types": "^1.1.0",
|
|
56
|
+
"commander": "^12.1.0",
|
|
57
|
+
"esbuild": "^0.28.1",
|
|
58
|
+
"typescript": "^5.6.0"
|
|
59
|
+
},
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"hash-wasm": "^4.12.0",
|
|
62
|
+
"jszip": "^3.10.1"
|
|
63
|
+
}
|
|
64
|
+
}
|
package/skills/gtrk-mg/SKILL.md
CHANGED
|
@@ -28,12 +28,12 @@ description: MG 动态图颗粒铺轨器——成片 SOP 第 ④ 步,在 B-rol
|
|
|
28
28
|
|
|
29
29
|
**本框架 skill 不硬编任何栏目的视觉风格/生产内容。** MG 颗粒长什么样、用什么视觉语法,全由**栏目的 MG 生产 skill** 决定;本 skill 只负责「在对的时候、按派单、驱动它产,然后把成品铺进工程」。
|
|
30
30
|
|
|
31
|
-
**车道 → 栏目生产 skill 的解析(照此,别猜)**:读**有效栏目配置**的 `style.skills[]`(配置文件 `~/.gitruck/columns/<id>.json`;栏目 id 由 `--column <id>` 或 config `defaultColumn`
|
|
31
|
+
**车道 → 栏目生产 skill 的解析(照此,别猜)**:读**有效栏目配置**的 `style.skills[]`(配置文件 `~/.gitruck/columns/<id>.json`;栏目 id 由 `--column <id>` 或 config `defaultColumn` 选取;零配置 = L0 内置默认栏目,**不携带 style 清单** → 必然走下方「无匹配」分支)。在 `style.skills[]` 里取 **`produces` 归一后(旧 `RRV_MG` → `MG`)等于 `MG`** 的条目 → 触发它 `ref` 指向的 skill 产颗粒。
|
|
32
32
|
- 命中多条 → 按栏目约定取其一(一般栏目只登记一个 MG 生产 skill)。
|
|
33
33
|
- 条目带 `routing:"none"`(管线外产物,如封面)→ 跳过,不当 MG 生产 skill。
|
|
34
34
|
- **无匹配** = 本栏目没有 MG 生产 skill → 别硬铺;告诉用户「本栏目还没有 MG 生产 skill,先用 `/gtrk-style-maker` 建一个,或换个已配置的栏目(`--column`)」。
|
|
35
35
|
|
|
36
|
-
> **生产 skill 是栏目的纯净资产**:它只懂本栏目的视觉语法、只产 html-particle 颗粒,**不知道 gtrk 命令、不知道产物落哪**。由本 skill 驱动它、并**由本 skill 负责把它产出的颗粒存到 `gtrk mg` 要读的路径**:`<产物目录>/mg/<composition_id>.html
|
|
36
|
+
> **生产 skill 是栏目的纯净资产**:它只懂本栏目的视觉语法、只产 html-particle 颗粒,**不知道 gtrk 命令、不知道产物落哪**。由本 skill 驱动它、并**由本 skill 负责把它产出的颗粒存到 `gtrk mg` 要读的路径**:`<产物目录>/mg/<composition_id>.html`。举例(仅示意解析机制,非硬编):`real-roam-guide` 栏目配置里 `style.skills` 有一条 `{produces:"MG", ref:"…/real-roam-viz"}` → 驱动它产颗粒;换个栏目、换个 ref,产颗粒的就是另一个生产 skill。**本 skill 正文里不绑死任何栏目的生产 skill。**
|
|
37
37
|
|
|
38
38
|
## 逐槽位工作流(产 → lint → 铺,循环到铺满)
|
|
39
39
|
|
|
@@ -89,7 +89,7 @@ gtrk mg --project "<split产物目录>" --json
|
|
|
89
89
|
## 交棒 ⑤(别停在铺完)
|
|
90
90
|
|
|
91
91
|
`dispatch.mg` 全铺满、`gtrk mg status` 全绿后**别收工**——按 SOP 顺势接力到第 ⑤ 步 **AI 再现**:
|
|
92
|
-
- `dispatch.ai_drama` 非空 → 触发 `/gtrk-ai-drama`(持通用分镜 craft + 读栏目 style-lock
|
|
92
|
+
- `dispatch.ai_drama` 非空 → 触发 `/gtrk-ai-drama`(持通用分镜 craft + 读栏目 style-lock,产 AI 再现分镜稿——四段描述 + 独立视觉基调 + 时长预算;用户去可灵 / Vidu 等外部平台出片回铺;**此车道产物即分镜稿、无 gtrk 命令**)。一句话交代即推进:「MG 颗粒已叠铺完,我接着安排最后一步 AI 再现」。
|
|
93
93
|
- `dispatch.ai_drama` 为空 → 本片没有 AI 车道,可直接 `gtrk render` 收口成片。
|
|
94
94
|
|
|
95
95
|
除非用户表示只铺这一版 MG、暂不往下。
|
|
@@ -74,7 +74,7 @@ gtrk split --project "<oralcut产物目录>" --json
|
|
|
74
74
|
- **handoff 按 lane 分型**(校验器会硬查):
|
|
75
75
|
- `MG` → `handoff:{slug_hint?, theme?, bg?, duration_hint}`,**`duration_hint`(秒)必填**;可选 `category`(overlay 透明叠加/fullscreen 不透明满屏,裁决⑩,供色带分层,详见 field-schema)。
|
|
76
76
|
- `FILM_BROLL` → `handoff:{queries:[...非空], shots?, per_shot_sec?, exclude?}`,**`queries` 非空必填**;queries 写**英文长句场景描述**(一条一个意象,避多义动词),**exclude 保持中文**(细则见 field-schema)。
|
|
77
|
-
- `AI_DRAMA` → `handoff:{narrative?, theme?, emotion_stage?, platform?, shot_count?}
|
|
77
|
+
- `AI_DRAMA` → `handoff:{narrative?, theme?, emotion_stage?, platform?, shot_count?}`,全可选(下游框架 skill /gtrk-ai-drama 有推断默认)。
|
|
78
78
|
- `A_ROLL` → **无 handoff**(写了会被警告忽略)。
|
|
79
79
|
|
|
80
80
|
### 4. 落地校验
|
|
@@ -115,7 +115,7 @@ dispatch 落地后**不要收工**——但下游各车道是**有先后的 SOP
|
|
|
115
115
|
|
|
116
116
|
- **③ B-roll**(`dispatch.film_broll` 非空):跑 `gtrk matrix --project <目录>`(检索 + 候选铺轨)→ **提示用户 opencut 里挑选/调整 B-roll**(小眼睛切换对比),确认后再进 ④。
|
|
117
117
|
- **④ MG**(`dispatch.mg` 非空):先由**栏目 MG 生产 skill** 按各槽位 `handoff`(theme/duration_hint/category)产 html-particle 颗粒,再跑 `gtrk mg --project <目录>`(lint + 铺轨,叠在 B-roll 上)。
|
|
118
|
-
- **⑤ AI 再现**(`dispatch.ai_drama` 非空):触发 `/gtrk-ai-drama` skill(持通用分镜 craft + 读栏目 style-lock
|
|
118
|
+
- **⑤ AI 再现**(`dispatch.ai_drama` 非空):触发 `/gtrk-ai-drama` skill(持通用分镜 craft + 读栏目 style-lock)产 AI 再现分镜稿(四段描述 + 独立视觉基调 + 时长预算)→ 用户去可灵 / Vidu 等外部平台出片、回铺(**此车道产物即分镜稿、无机械尾巴 → 只 skill、无 gtrk 命令**,同 `/gtrk-style-maker`)。
|
|
119
119
|
|
|
120
120
|
**各车道的生产 skill 由栏目配置解析(业务分离)**:读 `style.skills[]`,取 `produces` 归一(旧 `RRV_MG`→`MG`)== 该车道 的条目 → 触发其 `ref` 指向的 skill;`routing:"none"` 跳过;无匹配 = 无生产 skill(B-roll 无需、A_ROLL 就是口播本身)。生产 skill 是栏目资产、留纯净、不知 gtrk 命令。
|
|
121
121
|
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
// - **避多义/字面义强的动词**("pointing" 会召回手指特写、"hunting" 召回猎人——改用 "giving suggestions in a meeting" 这类场景语义)
|
|
66
66
|
// - **exclude 保持中文**:负向过滤匹配的是服务端返回的中文 note,写英文会失效
|
|
67
67
|
|
|
68
|
-
// lane === "AI_DRAMA" ——
|
|
68
|
+
// lane === "AI_DRAMA" —— 全可选(下游框架 skill /gtrk-ai-drama 有推断默认)
|
|
69
69
|
"handoff": { "narrative": "trauma-repetition", "theme": "freud-fort-da", "emotion_stage": "abyssal", "platform": "video-gen", "shot_count": 5 }
|
|
70
70
|
|
|
71
71
|
// lane === "A_ROLL" —— 无 handoff
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gtrk-tools
|
|
3
|
+
description: gtrk 单点工具族的调用向导——一个 skill 覆盖 `gtrk tool` 家族的全部单发单收能力(图转运镜、图片抠像、视频抠像…)。当用户想「把这张图做成运镜视频 / 让图动起来 / 给图片抠像去背景 / 抠出主体 / 视频抠像出透明背景 / 用某个 gtrk 单点工具 / gtrk 工具族里有什么」时使用本 skill。凡涉及调 `gtrk tool <name>` 跑一个单点云端能力(非成片管线的 oralcut/split/matrix/mg 车道命令),优先用本 skill 驱动 CLI,别让用户自己去终端敲,也别手搓 ffmpeg。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# gtrk 工具族(gtrk-tools)
|
|
7
|
+
|
|
8
|
+
`gtrk tool <name> [input]` 是 gtrk 的**单点能力**族:一个工具 = 单发单收(给一个输入、出一份产物),没有 SOP 次序、没有用户检查点链——与成片管线的车道命令(`oralcut` / `split` / `matrix` / `mg`)是两回事。本 skill 是这个族的**统一调用向导**:认清有哪些工具、按纪律驱动 `gtrk tool` 命令、把产物和计费如实回给用户。
|
|
9
|
+
|
|
10
|
+
> **本 skill 已含你需要的全部信息**(工具清单、调用纪律、恢复语义、排错话术)。工具清单以 `gtrk tool list --json` 为**唯一真相**——本文件与它漂移时以命令输出为准并回来修本文件。参数细节以 `gtrk tool --help` 为准。
|
|
11
|
+
|
|
12
|
+
## 工具清单(与 `gtrk tool list` 同源)
|
|
13
|
+
|
|
14
|
+
| 工具名 | 触发语(用户可能怎么说) | 输入要求 | 产物形态 | 计费 | 可用状态 |
|
|
15
|
+
|---|---|---|---|---|---|
|
|
16
|
+
| `image_move` | 「把这张图做成运镜视频 / 让图动起来 / 图转视频」 | 单张图片 | 运镜视频 | 2 积分/个 | 已上线 |
|
|
17
|
+
| `image_matting` | 「给图片抠像 / 抠出主体 / 去背景 / 出透明 png」 | 单张图片 | 透明背景 png | 免费 | 已上线 |
|
|
18
|
+
| `video_matting` | 「视频抠像 / 视频去背景 / 出透明背景视频」 | 单条视频(≤10 分钟) | 透明背景 webm | 免费 | 已上线 |
|
|
19
|
+
| `mad` | 「一键剪 MAD / 素材文件夹自动出卡点成片 / 自动选技法 / 给这堆素材出个 AE 工程」 | 一个素材文件夹(3~10 条视频)+ 可选 `--bgm 歌.mp3` | AE 母合成工程 `.jsx`(仅支持 AE) | 免费(`--bgm` 卡点计费一次) | 已上线 |
|
|
20
|
+
|
|
21
|
+
> 清单随 CLI 版本增补。**动手前先跑 `gtrk tool list --json` 拿最新清单**,别凭记忆——新工具、状态变化都在那里。
|
|
22
|
+
|
|
23
|
+
### mad(一键剪 MAD)的特殊之处
|
|
24
|
+
|
|
25
|
+
`mad` 是族内首个 **local 型「纯本地工具、可选云端加料」**成员,与前三个 cloud 型不同:
|
|
26
|
+
|
|
27
|
+
- **无 Key 可跑、零费用**:不带 `--bgm` 时全程只走免鉴权数据面(技法数据经云端 manifest 下发 + `~/.gitruck/mad-cache` 缓存),**首拉联网一次性下载、缓存命中后离线可跑**;不要求 API Key、不计费。
|
|
28
|
+
- **`--bgm` 才需 Key 且计费一次**:带 `--bgm` 且已配 Key → BGM 卡点到 downbeat(调一次云端节拍分析计费);没配 Key → **温和提示 `gtrk init` 可解锁卡点,不阻断**,BGM 仍入轨、按固定节奏出片;坏 BGM/云端失败一律降级不崩。
|
|
29
|
+
- **产物只有 `.jsx`、只支持 AE**:完成后引导「装 AE 2020+ → 文件›脚本›运行脚本文件 选它」。**不承诺 `.amproj`/Alight Motion 等本命令未产出的形态**。
|
|
30
|
+
- **可复现**:`--seed <n>` 固定选窗序列(同素材同种子同数据版本 → 同结果);`result.json` 记录 seed、数据版本、降级档位、选中技法清单。
|
|
31
|
+
- 常用:`gtrk tool mad ./素材 --bgm 歌.mp3 --duration 20 --json`。
|
|
32
|
+
|
|
33
|
+
## 调用纪律(每次都照做)
|
|
34
|
+
|
|
35
|
+
1. **先看清单、再对号**:用户的意图对到某个工具名(拿不准就 `gtrk tool list --json` 核对触发语与输入要求)。
|
|
36
|
+
2. **执行前转述计费提示**:跑之前把该工具的计费(如「2 积分/个」或「免费」)如实告诉用户,让用户知情。免费的也说一句「这个免费」。
|
|
37
|
+
3. **一律带 `--json`**:`gtrk tool <name> <输入> --json`。stdout 只会有一行结果 JSON(`{ ok, outDir, files, taskId, fileId, … }`),人读日志在 stderr。按 `ok` 判成败、从 `files` 拿产物路径、把 `outDir` 回给用户。
|
|
38
|
+
4. **缺 API Key 先引导配置**:cloud 型工具没配 Key 会报错让先跑 `gtrk init`。遇到就引导用户 `gtrk init`(或设 `GITRUCK_API_KEY`),别反复重试。
|
|
39
|
+
5. **产物落地与恢复**:产物落在 `outDir`(缺省 = 输入同目录下 `<输入名>-<工具名>/`,可 `--out <dir>` 覆盖)。提交成功即写 `task.json`(含 `taskId`)、完成即写 `result.json`。**若 `ok=false`**(任务完成但产物下载失败,如链接过期):`result.json` 的 `errors` 有明细、`task.json` 保留——凭其中的 `taskId` 可稍后人工恢复取回,别急着重跑整条(重跑会重新计费)。
|
|
40
|
+
6. **透传高级参数**:命令没为某个云端参数开 flag 时,用 `--param k=v`(可重复)或 `--params-json '<对象>'` 直接透传(如 `image_move` 想指定输出几何 `--param width=1080 --param height=1920`)。
|
|
41
|
+
7. **单发单收、批量靠循环**:一次一个输入;用户要批处理就你逐个循环调,不是一条命令喂多文件。
|
|
42
|
+
|
|
43
|
+
### 某工具显示「未开放」时怎么回应
|
|
44
|
+
|
|
45
|
+
清单里若某工具状态为**未开放**(带原因),如实告诉用户「这个能力暂时没开放」即可——**不承诺开放时间点、不展开内部原因细节**。首批三个工具均已上线(抠像免费),此话术是通用兜底。
|
|
46
|
+
|
|
47
|
+
## 与栏目生产 skill 的边界
|
|
48
|
+
|
|
49
|
+
本 skill 是**框架向导**、不含任何审美/栏目设定:它只教「怎么调 `gtrk tool`」,不规定运镜风格、不规定抠像用在什么画面上——那些是你自己的创作判断或栏目资产的事。工具族只认「输入 → 产物」的通用契约。
|
|
50
|
+
|
|
51
|
+
## 毕业条款
|
|
52
|
+
|
|
53
|
+
某个工具若长出复杂度——需要多模式子命令、需要分步用户确认、需要注入栏目风格——它就该从工具族**毕业**成独立命令 / 独立 skill(照成片车道命令的先例)。毕业后旧的 `gtrk tool <名>` 会报错并指路新命令。你只要跟着 `gtrk tool list` 的当前清单走即可。
|