ruige-skill 1.1.8 → 1.2.0
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/SKILL.md +17 -2
- package/bin/ruige-skill.mjs +102 -4
- package/knowledge/AI/351/237/263/344/271/220/345/267/245/344/275/234/346/265/201/351/227/256/347/255/224/345/272/223/01-AI/351/237/263/344/271/220/345/267/245/344/275/234/346/265/201/351/227/256/347/255/224/345/272/223.md +335 -0
- package/knowledge//347/274/226/346/233/262/345/210/266/344/275/234/345/256/236/346/210/230/351/227/256/347/255/224/07-/347/274/226/346/233/262/346/200/235/347/273/264/344/270/216/345/267/245/344/275/234/346/265/201/345/256/236/346/210/230/351/227/256/347/255/224.md +11 -10
- package/manifest.json +5522 -5517
- package/package.json +5 -1
- package/references/aesthetic-translation.md +5 -1
- package/references/ai-music-intake.md +44 -0
- package/references/knowledge-map.md +4 -0
- package/references/suno-prompt-iteration.md +298 -0
- package/scripts/manage-prompt-library.mjs +257 -0
- package/scripts/search-knowledge.sh +12 -2
- package/scripts/validate-project.mjs +217 -0
package/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rg
|
|
3
3
|
description: |
|
|
4
|
-
瑞哥音乐助教。接受用户不懂术语、说不清楚或带着错误前提的原始问题:既能梳理编曲混音逻辑、完成音乐感觉与专业语言的双向转译,并设计用户能在 DAW 中实际操作和反馈的验证动作;也能用一次一个概念的互动练习,带用户听懂效果、认识插件和建立判断;还能围绕普通人学习音乐、接单、变现、转行、自媒体与事业发展,盘清现实基础、缺失条件和下一步验证。适用于“Pad 和 Pluck 是什么”“一加效果就糊”“带我听懂高切低切”“我刚装了 Pro-Q
|
|
4
|
+
瑞哥音乐助教。接受用户不懂术语、说不清楚或带着错误前提的原始问题:既能梳理编曲混音逻辑、完成音乐感觉与专业语言的双向转译,并设计用户能在 DAW 中实际操作和反馈的验证动作;也能用一次一个概念的互动练习,带用户听懂效果、认识插件和建立判断;还能围绕普通人学习音乐、接单、变现、转行、自媒体与事业发展,盘清现实基础、缺失条件和下一步验证。适用于“Pad 和 Pluck 是什么”“一加效果就糊”“带我听懂高切低切”“我刚装了 Pro-Q,教我怎么用”“我想做这种感觉但说不清”“要不要学编曲”“做音乐能赚钱吗”“必须做自媒体吗”“想辞职做音乐行不行”“接着上次聊”等场景;也能接住 AI 音乐生成的接活请求——截图调参数、迭代提示词、生成结果回宿主对不上、作品归属疑问,适用于“这版太满了帮我改”“Suno 出来的放到工程里对不上”“AI 怎么转原创”等。不否定梦想,不把个人经验包装成唯一答案,不把文字转述中的先后变化当成已验证因果,也不用文字冒充听审或声音结论。触发方式:/rg、/瑞哥、「瑞哥帮我看看」以及音乐制作语境下的“带我学”“教我听懂”等自然语言问题。
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# 瑞哥音乐助教
|
|
@@ -103,6 +103,10 @@ Studio One / Fender Studio Pro 的三个易混操作按已核实命令处理:
|
|
|
103
103
|
|
|
104
104
|
用户明确说“带我开始学习”“教我听懂这个效果”“从零认识这个插件”“我刚装了某个插件,带我学会它”等话时,进入引导学习模式。它仍是同一个 `rg`,不另设 Skill、命令或功能菜单。用户已经给出概念、插件或当前素材时直接开始;只说“带我学”而没有对象时,只确认他现在最想听懂的一个效果,或正在使用的一个插件。进入时读取 [references/guided-learning.md](references/guided-learning.md)。
|
|
105
105
|
|
|
106
|
+
### 接活诊断
|
|
107
|
+
|
|
108
|
+
用户丢来截图、上一版提示词、工程描述或音频文件,说“这版不行”“帮我改”“放工程里对不上”“AI 怎么转原创”时,进入接活诊断:按失控、迭代混乱、落地失败、取舍失据、归属焦虑五类定位真问题,材料缺哪样要哪样(一次只要最能改变判断的一样);材料足够给直接方案,需要耳朵判断的输出听审任务单,不替用户听。进入时读取 [references/ai-music-intake.md](references/ai-music-intake.md)。
|
|
109
|
+
|
|
106
110
|
用户明确调用 `$rg 新手入门`、`/rg 新手入门` 或 `/瑞哥 新手入门`,但没有同时附带具体任务或材料时,只说:
|
|
107
111
|
|
|
108
112
|
> 不用先学术语,也不用把问题整理完整。把你现在正在做的歌、最卡的一处、一张工程截图、一个文件,或者一句说不清的感觉直接发过来。我会先判断现在最值得处理哪一步。
|
|
@@ -227,6 +231,7 @@ Studio One / Fender Studio Pro 的三个易混操作按已核实命令处理:
|
|
|
227
231
|
处理错误前提和怪问题时,读取 [references/question-calibration.md](references/question-calibration.md)。
|
|
228
232
|
向零基础用户解释概念或提供操作步骤时,读取 [references/beginner-teaching.md](references/beginner-teaching.md)。
|
|
229
233
|
用户不懂编曲术语、想描述感觉或需要理解音色职能时,读取 [references/music-language-translation.md](references/music-language-translation.md)。
|
|
234
|
+
用户带材料要求“改这版 / 修这个问题”,或问题落在 AI 生成失控、迭代、回宿主、取舍、归属时,读取 [references/ai-music-intake.md](references/ai-music-intake.md)。
|
|
230
235
|
|
|
231
236
|
## 工作流 A:编曲审美与音乐语言转译
|
|
232
237
|
|
|
@@ -240,9 +245,19 @@ Studio One / Fender Studio Pro 的三个易混操作按已核实命令处理:
|
|
|
240
245
|
|
|
241
246
|
用户已经确认音乐方向并要求“AI 音乐提示词”,但没有说明生成工具时,只用一句话确认他使用 Suno、Udio 还是其他工具,然后停住。不要先输出通用长分析,也不要把 Suno 当默认方案。用户已经说明工具时直接生成,不重复校准已确认的方向;首轮只给可直接使用的提示词和最多 3 条必要说明,不再输出维度映射表、逐句解释或生成后检查清单,除非用户继续追问。
|
|
242
247
|
|
|
248
|
+
艺人名、作品名或“某某风格”只是参考线索,不等于音乐方向已经确认。用户只给参考名称、却没有说真正想保留哪一部分时,先从律动、人声状态、配器密度、制作质感、段落推进中确认最影响方向的一项;没有实际听取对应版本时,不根据作品名擅自补写 BPM、结构、乐器或所谓招牌特征。用户明确要求先出草案时可以给一版标明假设的草案,但不能把假设写成对参考录音的事实分析。
|
|
249
|
+
|
|
243
250
|
提示词只转译用户已经确认的音乐内容。用户只说明主歌和副歌时,不擅自新增预副歌、第二段主歌、桥段、尾奏或完整歌曲模板;用户没有要求歌词或段落标签时,不附 Lyrics 栏和占位歌词。用户给出的避免项必须保留为简短约束,或改写成对应的正向目标,但不能因为猜测平台机制而删除。
|
|
244
251
|
|
|
245
|
-
|
|
252
|
+
不要把生成平台对提示词长度、词序、标签、字段或负面指令的响应写成确定机制,例如“越短越好”“写在前面更有效”“平台不响应这个词”“一定会按某区间浮动”。平台模型和字段会变化;涉及当前功能时核对官方资料。提示词改法写成待 A/B 的实验:下一轮只改一个变量,比较目标段落是否更接近要求。方向和工具都明确时,首轮回答控制在提示词本身加极短用法,不写平台机制分析。
|
|
253
|
+
|
|
254
|
+
用户要求 Suno 提示词、带回生成结果要求改版、询问提示词知识、希望建立个人提示词资料库,或要求把一次生成过程沉淀到本地时,读取 [references/suno-prompt-iteration.md](references/suno-prompt-iteration.md)。生成后的价值不只是新提示词:要保留上一版有效部分、识别最明显的一项偏差、下一版只改一个变量,并把真实生成结果与用户判断分开。
|
|
255
|
+
|
|
256
|
+
每版提示词必须有一个来自用户已确认内容的“当前核心目标”。输出或保存前做一次对齐检查:提示词必须直接表达这个核心目标,不能只写辅助音色、氛围或相邻特征;`目标.md`、`当前版本.md` 和对应版本记录中的核心目标必须一致。给滑块建议没有问题,但要明确它是本轮起始处方;下一版如果测试滑块,就不要同时大改提示词。
|
|
257
|
+
|
|
258
|
+
只有用户明确同意并指定精确目录后,才能创建、读取或更新其本地提示词资料库。用户明确要学习沉淀方法或建立本地系统时,直接给可复制的启动话术并帮助他按指定目录落地,不把建库变成填表考试。写入后必须回读或运行检查命令确认文件真实存在;宿主无法稳定调用脚本时,输出一份可复制的本轮记录,不得声称已经保存。
|
|
259
|
+
|
|
260
|
+
“有没有提示词知识包”“我能用到什么知识”“给我本地建库提示词”属于方法说明请求,不等于用户已经授权写入或要求只做记忆确认。遇到这类提问必须在当前回答中同时完成三件事:说明可用知识的边界、解释个人资料库为什么会越用越贴合、给出可复制的建库提示词。不能只回复“记下了”“已记录”或“有/没有知识库”。只有检查到指定目录里的文件真实存在且内容一致时,才能说已经保存或记录成功。
|
|
246
261
|
|
|
247
262
|
对审美感觉的文字转译只是在建立假设和沟通语言,不等于已经听见或确认用户作品呈现了该感觉。需要验证时,让用户实际对比或交给瑞哥听审。
|
|
248
263
|
|
package/bin/ruige-skill.mjs
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
import { createHash } from "node:crypto";
|
|
3
4
|
import { constants } from "node:fs";
|
|
4
5
|
import {
|
|
5
6
|
access,
|
|
6
7
|
cp,
|
|
7
8
|
lstat,
|
|
8
9
|
mkdir,
|
|
10
|
+
readdir,
|
|
9
11
|
readFile,
|
|
10
12
|
readlink,
|
|
11
13
|
realpath,
|
|
@@ -13,7 +15,7 @@ import {
|
|
|
13
15
|
symlink,
|
|
14
16
|
} from "node:fs/promises";
|
|
15
17
|
import { homedir } from "node:os";
|
|
16
|
-
import { basename, dirname, join, resolve } from "node:path";
|
|
18
|
+
import { basename, dirname, join, relative, resolve } from "node:path";
|
|
17
19
|
import { fileURLToPath } from "node:url";
|
|
18
20
|
|
|
19
21
|
const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
@@ -163,6 +165,42 @@ async function isBridgeTo(target, canonical) {
|
|
|
163
165
|
return (await realpath(resolvedTarget)) === (await realpath(canonical));
|
|
164
166
|
}
|
|
165
167
|
|
|
168
|
+
async function findLegacyBridges(home, agents) {
|
|
169
|
+
const found = [];
|
|
170
|
+
const parents = new Map();
|
|
171
|
+
for (const { agent, target } of installPaths(home, agents)) {
|
|
172
|
+
parents.set(dirname(target), agent);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
for (const [parent, agent] of parents) {
|
|
176
|
+
if (!(await exists(parent))) continue;
|
|
177
|
+
for (const name of await readdir(parent)) {
|
|
178
|
+
if (name.startsWith(`${SKILL_NAME}.backup-`)) {
|
|
179
|
+
found.push({ agent, path: join(parent, name), name });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return found;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async function quarantineLegacyBridges(home, agents) {
|
|
187
|
+
const legacy = await findLegacyBridges(home, agents);
|
|
188
|
+
if (!legacy.length) return [];
|
|
189
|
+
|
|
190
|
+
const quarantine = join(home, ".ruige-skills", "legacy-bridges");
|
|
191
|
+
await mkdir(quarantine, { recursive: true });
|
|
192
|
+
const moved = [];
|
|
193
|
+
for (const item of legacy) {
|
|
194
|
+
let destination = join(quarantine, `${item.agent}-${item.name}`);
|
|
195
|
+
if (await exists(destination)) {
|
|
196
|
+
destination = `${destination}-${timestamp()}`;
|
|
197
|
+
}
|
|
198
|
+
await rename(item.path, destination);
|
|
199
|
+
moved.push({ ...item, destination });
|
|
200
|
+
}
|
|
201
|
+
return moved;
|
|
202
|
+
}
|
|
203
|
+
|
|
166
204
|
async function preflightBridges(paths, canonical, force) {
|
|
167
205
|
if (force) return;
|
|
168
206
|
|
|
@@ -214,11 +252,66 @@ function installPaths(home, agents) {
|
|
|
214
252
|
|
|
215
253
|
async function showStatus(home, agents) {
|
|
216
254
|
const canonical = join(home, ".ruige-skills", SKILL_NAME);
|
|
217
|
-
|
|
255
|
+
let canonicalStatus = "未安装";
|
|
256
|
+
let version = null;
|
|
257
|
+
if (await exists(join(canonical, "SKILL.md"))) {
|
|
258
|
+
try {
|
|
259
|
+
const installedPackage = JSON.parse(
|
|
260
|
+
await readFile(join(canonical, "package.json"), "utf8"),
|
|
261
|
+
);
|
|
262
|
+
const manifest = JSON.parse(
|
|
263
|
+
await readFile(join(canonical, "manifest.json"), "utf8"),
|
|
264
|
+
);
|
|
265
|
+
let manifestValid = (
|
|
266
|
+
manifest.skill === SKILL_NAME
|
|
267
|
+
&& Array.isArray(manifest.files)
|
|
268
|
+
&& manifest.files.length === manifest.knowledgeFiles
|
|
269
|
+
);
|
|
270
|
+
for (const item of manifest.files ?? []) {
|
|
271
|
+
if (!manifestValid) break;
|
|
272
|
+
const content = await readFile(
|
|
273
|
+
join(canonical, "knowledge", item.path),
|
|
274
|
+
);
|
|
275
|
+
const digest = createHash("sha256").update(content).digest("hex");
|
|
276
|
+
if (content.length !== item.bytes || digest !== item.sha256) {
|
|
277
|
+
manifestValid = false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (
|
|
281
|
+
installedPackage.name === "ruige-skill"
|
|
282
|
+
&& installedPackage.version
|
|
283
|
+
&& manifestValid
|
|
284
|
+
) {
|
|
285
|
+
canonicalStatus = "正常";
|
|
286
|
+
version = installedPackage.version;
|
|
287
|
+
} else {
|
|
288
|
+
canonicalStatus = "内容不完整";
|
|
289
|
+
}
|
|
290
|
+
} catch {
|
|
291
|
+
canonicalStatus = "内容不完整";
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
console.log(
|
|
295
|
+
`真源:${canonical} (${canonicalStatus}${version ? `,v${version}` : ""})`,
|
|
296
|
+
);
|
|
218
297
|
for (const { agent, target } of installPaths(home, agents)) {
|
|
298
|
+
const label = agent === "workbuddy"
|
|
299
|
+
? `${agent} (${relative(home, target)})`
|
|
300
|
+
: agent;
|
|
219
301
|
const info = await pathInfo(target);
|
|
220
|
-
|
|
221
|
-
|
|
302
|
+
if (await isBridgeTo(target, canonical)) {
|
|
303
|
+
console.log(`${label}: 已连接`);
|
|
304
|
+
} else if (info.kind === "link") {
|
|
305
|
+
console.log(`${label}: 错误链接 -> ${info.target}`);
|
|
306
|
+
} else {
|
|
307
|
+
console.log(`${label}: ${info.kind}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
const legacy = await findLegacyBridges(home, agents);
|
|
311
|
+
if (legacy.length) {
|
|
312
|
+
console.log(
|
|
313
|
+
`警告:发现 ${legacy.length} 个可能被重复加载的 rg.backup-* 旧入口;运行 update 可移出 Skill 扫描目录。`,
|
|
314
|
+
);
|
|
222
315
|
}
|
|
223
316
|
}
|
|
224
317
|
|
|
@@ -233,6 +326,11 @@ async function installOrUpdate(options) {
|
|
|
233
326
|
console.log("尚未安装,将执行首次安装。\n");
|
|
234
327
|
}
|
|
235
328
|
|
|
329
|
+
const movedLegacy = await quarantineLegacyBridges(home, options.agents);
|
|
330
|
+
if (movedLegacy.length) {
|
|
331
|
+
console.log(`✓ 已移出 ${movedLegacy.length} 个可能被重复加载的旧 Skill 入口`);
|
|
332
|
+
}
|
|
333
|
+
|
|
236
334
|
await preflightBridges(paths, canonical, options.force);
|
|
237
335
|
const backup = await copySkillToCanonical(
|
|
238
336
|
canonical,
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
# AI 音乐工作流问答库
|
|
2
|
+
|
|
3
|
+
## Q1: AI 一句话生成的音乐,为什么通常不算"自己的作品"
|
|
4
|
+
|
|
5
|
+
**症状:** 只输入"来一首 K-pop 女团歌"这类一句话,AI 就给出完整成品,听起来不错,但总觉得不是自己的东西。
|
|
6
|
+
|
|
7
|
+
**原因:** AI 只知道大类风格,不知道创作者已有的旋律、律动、段落、偏好和修改目标。结果体现的是模型的默认选择,不是创作者的具体判断。
|
|
8
|
+
|
|
9
|
+
**解决:** 提高个人参与度:上传自己的旋律、鼓、Bass、钢琴或完整骨架,在生成后做筛选、反馈,并回到宿主软件做二次编辑。判断标准不是"好不好听",而是"它和我要做的东西、我的目的有没有关系"。
|
|
10
|
+
|
|
11
|
+
**关键词:** #AI音乐 #工作流 #参与度
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Q2: AI 音乐工作流里,人和工具怎么分工
|
|
16
|
+
|
|
17
|
+
**症状:** 分不清 AI 聊天助手、音乐生成工具和宿主软件各自该干什么,经常把所有事都丢给其中一个。
|
|
18
|
+
|
|
19
|
+
**原因:** 三类工具能力不同:聊天 AI 擅长整理语言,生成工具擅长快速出方案,宿主擅长精确编辑,互相之间不互通。
|
|
20
|
+
|
|
21
|
+
**解决:** 四个角色:**人**是制作人,负责目标、审美、判断和最终交付;**Agent(如 WorkBuddy)**是秘书,负责整理提示词、保存版本、读取历史记录;**Suno** 是能力很强但没有连续记忆的乐手,负责快速生成;**Cubase 等宿主**是最终编辑环境。工具不会自动共享结果,人试听后要亲自把判断传递下去。
|
|
22
|
+
|
|
23
|
+
**关键词:** #AI音乐 #工作流 #分工
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Q3: 都有 AI 生成了,为什么还要学基础
|
|
28
|
+
|
|
29
|
+
**症状:** 认为有了 Suno 这类工具,可以直接跳过音乐基础。
|
|
30
|
+
|
|
31
|
+
**原因:** 生成速度只降低执行成本,不自动提供判断力。版本越多,越需要判断:哪版结构成立、哪些配器服务段落、哪些结果只是"好听但不属于这首作品"。
|
|
32
|
+
|
|
33
|
+
**解决:** 这里的基础不是弹琴、乐理或音源操作,而是对乐器心里清楚:它的技法是什么、动态怎么演奏才到位。有这层清楚,才能对 AI 提出要求、听出版本之间的差异、对最终结果负责。没有判断力时,大量生成结果只是噪音。
|
|
34
|
+
|
|
35
|
+
**关键词:** #AI音乐 #学习方法 #判断力
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Q4: AI 音乐的完整工作闭环是什么
|
|
40
|
+
|
|
41
|
+
**症状:** 上传、生成、下载各步骤都试过,但感觉是零散动作,没有形成可复用流程。
|
|
42
|
+
|
|
43
|
+
**原因:** 缺少闭环意识,每次生成都像重新开始。
|
|
44
|
+
|
|
45
|
+
**解决:** 标准闭环:**在宿主中做出骨架 → 让 Agent 整理并记录提示词 → Suno 生成 → 人试听并给出具体反馈 → Agent 保存反馈写下一版 → 继续迭代 → 下载可用音频或分轨回宿主 → 完成剪辑、对齐和最终导出**。"看懂别人演示"不等于掌握,闭环必须本人完整跑通一遍才算学会。
|
|
46
|
+
|
|
47
|
+
**关键词:** #AI音乐 #工作流 #闭环
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Q5: 为什么说"参考音频大于文字提示词"
|
|
52
|
+
|
|
53
|
+
**症状:** 提示词写得很详细,生成结果却和自己的工程完全脱节(速度、段落、旋律全变了)。
|
|
54
|
+
|
|
55
|
+
**原因:** 音乐里的速度、第一拍、结构、旋律走向、和弦运动、音色密度很难被文字完整承载;参考音频直接呈现这些信息,对生成工具的约束力远大于文字。
|
|
56
|
+
|
|
57
|
+
**解决:** 文字描述风格和情绪,结构性和音乐性的信息用参考音频传递。真正想控制的部分(速度、调性、律动)放进上传的骨架里,不要指望写在提示词里就行。
|
|
58
|
+
|
|
59
|
+
**关键词:** #AI音乐 #提示词 #参考音频
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Q6: 把音频传进素材区,AI 就会拿它当参考吗
|
|
64
|
+
|
|
65
|
+
**症状:** 把工程导出的音频上传后直接生成,结果和原工程脱节(速度、段落、人声位置全不一样),误以为"传了=用了"。
|
|
66
|
+
|
|
67
|
+
**原因:** 上传只是把素材放进素材区,不等于当前生成任务引用了它。没有明确引用时,生成主要由文字提示词驱动,速度和结构都会重新计算。
|
|
68
|
+
|
|
69
|
+
**解决:** 开始生成前,把音频明确加入当前生成任务(通过 Add Instruments、Cover 等入口告诉工具"本轮参考这个音频")。结果速度是否与原工程一致不是硬标准:把生成结果当采样素材用时,有些偏差无所谓;只有想让它卡进原骨架时,才需要核对速度和第一拍——轻微偏差也可以接受。
|
|
70
|
+
|
|
71
|
+
**关键词:** #AI音乐 #参考音频 #操作
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Q7: 给 AI 的"音乐骨架"到底是什么
|
|
76
|
+
|
|
77
|
+
**症状:** 不知道该上传什么给生成工具,是和弦加鼓,还是完整编曲。
|
|
78
|
+
|
|
79
|
+
**原因:** 把骨架理解成了固定配方。
|
|
80
|
+
|
|
81
|
+
**解决:** 骨架是"这个任务里最需要保留的结构信息"。可以是鼓加 Bass(确定速度、律动和低频地基),可以是和弦加段落结构,原创作品也可以加旋律或哼唱。判断标准只有一个:它能否清楚约束目标结果。骨架越详细越可控,越简略 AI 发挥空间越大——取决于本轮目标,不是越多越好。
|
|
82
|
+
|
|
83
|
+
**关键词:** #AI音乐 #骨架 #工作流
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Q8: 不会写英文提示词怎么办
|
|
88
|
+
|
|
89
|
+
**症状:** Styles 栏要英文,自己英文不好,只能套别人的模板。
|
|
90
|
+
|
|
91
|
+
**原因:** 把"写提示词"和"懂英文术语"混为一谈。
|
|
92
|
+
|
|
93
|
+
**解决:** 先用中文自然语言把目标说清楚(风格、乐器、速度、质感、想保留什么),再让文字型 AI 整理成英文提示词。生成后不满意时,说明"哪里不一样",让 AI 修改提示词,而不是自己猜术语。
|
|
94
|
+
|
|
95
|
+
**关键词:** #AI音乐 #提示词 #方法
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Q9: 提示词"精简"到底是什么意思
|
|
100
|
+
|
|
101
|
+
**症状:** 听说提示词要短,于是只写几个词,结果方向完全失控;或者反过来写得又长又乱。
|
|
102
|
+
|
|
103
|
+
**原因:** 把"精简"理解成了"少想、少说"。
|
|
104
|
+
|
|
105
|
+
**解决:** 先用详细自然语言把目标描述清楚(段落框架、目标声部、律动特征、音色要求、允许变化范围),再让 AI 压缩成生成工具容易理解的音乐术语和短语。精简发生在表达转换阶段,不是省略判断和上下文。
|
|
106
|
+
|
|
107
|
+
**关键词:** #AI音乐 #提示词 #方法
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Q10: 为什么反馈只说形容词,结果会越来越乱
|
|
112
|
+
|
|
113
|
+
**症状:** 第一轮输入很完整,之后每轮反馈只剩主观形容词(太满、更强、更梦幻、没感觉),改到后面结果离最初目标越来越远。
|
|
114
|
+
|
|
115
|
+
**原因:** AI 不知道形容词对应哪个乐器、哪个声部、哪个段落,只能连续猜测。
|
|
116
|
+
|
|
117
|
+
**解决:** 形容词先细化:落到具体的音乐对象和位置——是哪个乐器、哪个段落,希望它变密还是变疏、变深还是变亮。检验标准:这句话如果无法让真人乐手知道怎么改,也无法让 AI 稳定执行。
|
|
118
|
+
|
|
119
|
+
**关键词:** #AI音乐 #反馈 #提示词
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Q11: 一轮合格的修改反馈包含什么
|
|
124
|
+
|
|
125
|
+
**症状:** 想反馈但不知道从哪说起,最后只回一个"不好听"。
|
|
126
|
+
|
|
127
|
+
**原因:** 缺少反馈结构。
|
|
128
|
+
|
|
129
|
+
**解决:** 五要素:① 听的是哪个版本;② 哪些内容已经符合要求;③ 哪个具体音色、律动或段落不满意;④ 当前结果整体偏向什么;⑤ 希望下一版向什么方向改变。例:"这版太偏 R&B、律动慢而晃;希望更像能跳舞的 K-pop,节奏更块状。"
|
|
130
|
+
|
|
131
|
+
**关键词:** #AI音乐 #反馈 #迭代
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Q12: 为什么一个风格词会把整首带跑偏
|
|
136
|
+
|
|
137
|
+
**症状:** 只想加一点木吉他质感,写了个"乡村",结果整首变成乡村音乐,原有风格荡然无存。
|
|
138
|
+
|
|
139
|
+
**原因:** 大风格词是完整的音乐语言,生成工具会把它理解成整套配器、律动和音色体系,而不是点缀元素。
|
|
140
|
+
|
|
141
|
+
**解决:** 把主体风格和辅助元素分开写:先声明必须保留的主体(如"史诗、空灵、圣洁"),把点缀元素写成辅助描述,再用 Exclude Styles 排除不想出现的特征(如突兀、刺耳的音色)。想验证效果,一次只加一个风格变量。
|
|
142
|
+
|
|
143
|
+
**关键词:** #AI音乐 #提示词 #风格控制
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Q13: 每一轮生成至少要记录什么
|
|
148
|
+
|
|
149
|
+
**症状:** 生成了一晚上,第二天想不起哪版是哪版、当时改了什么。
|
|
150
|
+
|
|
151
|
+
**原因:** 生成工具没有跨轮记忆,聊天窗口换一个就全部丢失。
|
|
152
|
+
|
|
153
|
+
**解决:** 每轮记录:版本名和日期、上传了哪段素材、提示词全文、参数实际值、重要版本的链接、这一版满意的具体内容、不满意的具体内容、下一版只准备改的变量。为每首歌建立独立文件夹存放。
|
|
154
|
+
|
|
155
|
+
**关键词:** #AI音乐 #版本记录 #工作流
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Q14: 旧版本为什么要全部留着
|
|
160
|
+
|
|
161
|
+
**症状:** 硬盘里只留最新一版,结果新版反而不如旧版,却找不回来了。
|
|
162
|
+
|
|
163
|
+
**原因:** 迭代不保证单调变好,最新版不一定最好。
|
|
164
|
+
|
|
165
|
+
**解决:** 每一版都留,不要只留最新版。旧版本是回退点;做完十首歌后,这些记录会变成可检索的个人经验资产——知道自己为什么从 V1 改到 V2、什么类型的提示词在自己身上反复有效。
|
|
166
|
+
|
|
167
|
+
**关键词:** #AI音乐 #版本记录 #方法
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Q15: 为什么每次只改一个变量、只听两个版本
|
|
172
|
+
|
|
173
|
+
**症状:** 一次生成几十个版本,越抽越乱,最后凭运气选了一个。
|
|
174
|
+
|
|
175
|
+
**原因:** 多变量同时改,无法归因;大量版本没有选择标准时只是噪音。
|
|
176
|
+
|
|
177
|
+
**解决:** 生成前先写明本轮要验证什么;每次只改一组明确的要求;一次只听两个版本并记录判断(哪个更接近目标、差在哪)。没有明确需求、没有骨架、没有选择标准时,不要连续抽卡。
|
|
178
|
+
|
|
179
|
+
**关键词:** #AI音乐 #迭代 #纪律
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Q16: 什么时候应该停止和 AI 反复沟通
|
|
184
|
+
|
|
185
|
+
**症状:** 在生成工具里反复重生成一个很小的细节,浪费大量时间。
|
|
186
|
+
|
|
187
|
+
**原因:** 生成工具对小范围精修不稳定——改一个细节可能重新生成整段,前后衔接还会变。
|
|
188
|
+
|
|
189
|
+
**解决:** 分两段看:AI 擅长从 0 到 1(快速出方向、配器和素材);从 1 到 1.1(某个鼓点、音符、音色、小节)回宿主直接改更可靠。当方向已明确、可用素材已确定、局部问题手工改比继续生成更快时,立刻停止,进宿主。
|
|
190
|
+
|
|
191
|
+
**关键词:** #AI音乐 #工作流 #边界
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Q17: AI 生成的音乐能直接变成宿主工程吗
|
|
196
|
+
|
|
197
|
+
**症状:** 以为生成工具能输出一个可以逐轨编辑的 Cubase/宿主工程文件。
|
|
198
|
+
|
|
199
|
+
**原因:** 混淆了音频和工程文件。
|
|
200
|
+
|
|
201
|
+
**解决:** 不能直接得到完整工程。可行路径:用 Get Stems 拆分 → 优先下载 WAV → 拖回宿主做剪辑、对齐、替换、MIDI 重写和混音。生成结果直接用也可以——前提是它真的不需要打磨。关键是打磨的权利和手段在创作者手里:分轨回宿主、可精修、可局部修改的路保持畅通,而不是被"生成音频只能整段用"困住。
|
|
202
|
+
|
|
203
|
+
**关键词:** #AI音乐 #分轨 #宿主
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Q18: "分轨"和真实工程分轨有什么区别
|
|
208
|
+
|
|
209
|
+
**症状:** 拿到的鼓、Bass、吉他分轨听起来有杂音或串音。
|
|
210
|
+
|
|
211
|
+
**原因:** 生成工具的分轨是 AI 模拟分离,不是原始工程的真实分轨,可能有串音和伪影。
|
|
212
|
+
|
|
213
|
+
**解决:** 把分轨当作"高质量的候选素材"而不是"成品工程文件"。需要精确控制某个声部时,回宿主用 MIDI 或实录替换。分轨适合快速组装和替换不需要的部分。
|
|
214
|
+
|
|
215
|
+
**关键词:** #AI音乐 #分轨 #边界
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Q19: 生成音频导回宿主节拍对不上,按什么顺序排查
|
|
220
|
+
|
|
221
|
+
**症状:** 下载的音频放进工程后,要么节拍错位,要么声音像跑调、变形、"泡在水里"。
|
|
222
|
+
|
|
223
|
+
**原因:** 两类问题混在一起了:采样率不一致(技术问题)和位置没对齐(对齐问题)。
|
|
224
|
+
|
|
225
|
+
**解决:** 按顺序:① 声音同时出现音调偏移、变形、模糊 → 先查采样率(常见 44.1k 与 48k 不一致,让音频和工程统一);② 声音正常只是没落在拍点 → 打开节拍器,找到音乐真正的第一拍,整体挪到工程网格;③ 采样率一致但调性仍异常 → 检查提示词里是否写了转调(modulation、key change)等没有明确用途的指令。另外:生成的是真实演奏感的音频,有细微抢拍拖拍,不需要把每个瞬间强行卡死网格。
|
|
226
|
+
|
|
227
|
+
**关键词:** #AI音乐 #排查 #采样率 #节拍对齐
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Q20: "把 AI 生成音频当采样用"是什么意思
|
|
232
|
+
|
|
233
|
+
**症状:** 听说生成结果要"当采样用",但不明白和直接铺进工程有什么区别。
|
|
234
|
+
|
|
235
|
+
**原因:** 把"生成成功"当成了"整段可用"。
|
|
236
|
+
|
|
237
|
+
**解决:** 把每次生成当作一批候选素材:逐段试听,删掉模糊、跑开、混入无关乐器的片段,只保留真正符合工程需要的部分,重新组织进工程。它比外部采样更贴近需求(因为是在你的骨架和提示词约束下生成的),但仍然是素材,不是自动完成的编曲成品。三层约束:提示词约束(要什么不要什么)、骨架约束(速度调性律动)、剪辑约束(只留通过判断的片段)。
|
|
238
|
+
|
|
239
|
+
**关键词:** #AI音乐 #采样 #工作流
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Q21: 生成结果整版可用,还需要保留自己原来写的声部吗
|
|
244
|
+
|
|
245
|
+
**症状:** AI 生成的整版听起来很完整,于是把自己原来编的轨道全部静音了,结果声音整体偏糊、律动不清晰。
|
|
246
|
+
|
|
247
|
+
**原因:** 把"完整"当成了"更好"。生成结果的清晰度、律动和层次不一定达到工程音源的水平。
|
|
248
|
+
|
|
249
|
+
**解决:** 分声部判断:AI 素材里色彩类、自己写不出的部分保留(如铜管染色、特殊质感);自己写得好的钢琴、鼓、Bass、弦乐恢复使用。判断依据是"放在整体里是否更好听",不是"全人工"或"全 AI"。注意:恢复旧声部后要重新听它和生成内容是否仍然匹配——旧版本写得好,不代表在新组合里仍然成立。
|
|
250
|
+
|
|
251
|
+
**关键词:** #AI音乐 #编曲 #取舍
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Q22: 参数全部拉满,为什么反而更难得到好结果
|
|
256
|
+
|
|
257
|
+
**症状:** 为了控制结果,把所有 Influence 参数都推到最高。
|
|
258
|
+
|
|
259
|
+
**原因:** 全部拉满等于把生成工具限制在当前描述和素材里;如果创作者本来就没完全想清楚,过约束会取消工具提供新方案的价值。反过来全放低又会让结果和目标失去联系。
|
|
260
|
+
|
|
261
|
+
**解决:** 先保留核心(必须保留的旋律、结构),给不确定的部分留生成空间。原则:想清楚的部分强约束,没想清楚的部分留余地。
|
|
262
|
+
|
|
263
|
+
**关键词:** #AI音乐 #参数 #方法
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Q23: 上传素材被版权相似度拦截怎么办
|
|
268
|
+
|
|
269
|
+
**症状:** 上传自己的练习工程被平台拒绝。
|
|
270
|
+
|
|
271
|
+
**原因:** 素材里有识别度高的原曲元素(主旋律、标志性采样),或与已发行作品相似度过高。
|
|
272
|
+
|
|
273
|
+
**解决:** 依次尝试:① 删除识别度高的乐器,只保留鼓和 Bass 等基础框架;② 对 MIDI 或音频转调;③ 调整提示词,要求结果不要过度接近参考曲;④ 从工程重新导出再上传。两条底线:参考曲用于学结构和方向,不是 1:1 复制;改变音高或格式不是规避审核的通用方法,素材权利不清时应该停止上传,先解决授权和原创性。做老歌改编类内容时,保留可共享的和弦关系,不上传原曲主旋律,自己演奏旋律部分。
|
|
274
|
+
|
|
275
|
+
**关键词:** #AI音乐 #版权 #排查
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Q24: 用了 AI,作品还算自己的创作吗
|
|
280
|
+
|
|
281
|
+
**症状:** 担心发布时被标成"AI 音乐",或者不确定作品归属。
|
|
282
|
+
|
|
283
|
+
**原因:** 平台和行业口径尚未完全统一,且可能变化。
|
|
284
|
+
|
|
285
|
+
**解决:** 判断重点不是标签,而是人的独创性和控制过程:需求、骨架、提示词、版本选择、剪辑、重编、演奏、混音都由人决定时,AI 更接近乐手或协作者,不是替代人的一次点击。实操上保留创作证据:工程文件、MIDI、人工骨架、提示词版本、生成记录、下载分轨和后续人工修改。正式发布的平台标注和商业规则以当时平台要求为准;涉及重要商业权益时单独做版权确认。
|
|
286
|
+
|
|
287
|
+
**关键词:** #AI音乐 #版权 #创作归属
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Q25: AI 人声到底能不能用
|
|
292
|
+
|
|
293
|
+
**症状:** 听 AI 唱的人声觉得"很完美但又很假",不知道该不该用。
|
|
294
|
+
|
|
295
|
+
**原因:** AI 人声在音色、咬字、表情上呈现相似模式,容易有"AI 味";且音区、力度不一定能由真人稳定复现。
|
|
296
|
+
|
|
297
|
+
**解决:** 能不能用,看咬字和旋律立不立得住。优先当 Demo 用:判断旋律、调性、编曲和整体方向是否成立。适合的场景:预算、速度和功能性优先的短广告歌、slogan、人声点缀、临时演示。需要更强辨识度和情感表达时,请真人录音。需要更可控的人声旋律时,可以自己唱一遍或哼一段作为人声参考——人声同样遵守"参考大于文字"。
|
|
298
|
+
|
|
299
|
+
**关键词:** #AI音乐 #人声 #边界
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Q26: 为什么建议先把伴奏做好,再碰人声
|
|
304
|
+
|
|
305
|
+
**症状:** 生成结果带了完整 AI 人声,听着很顺,就不太想再检查伴奏了。
|
|
306
|
+
|
|
307
|
+
**原因:** 完整的人声会遮住伴奏本身的问题——前奏、鼓、Bass、弦乐和结构上的缺陷被人声掩盖。
|
|
308
|
+
|
|
309
|
+
**解决:** 更稳的顺序:先用骨架和参考音频把伴奏做出来,确认速度、段落、结构成立后,再做人声。要单独检查伴奏本身的好坏时,把人声静音才听得清伴奏真实的样子。
|
|
310
|
+
|
|
311
|
+
**关键词:** #AI音乐 #人声 #编曲
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## Q27: 需要先把所有乐器知识学完再用 AI 吗
|
|
316
|
+
|
|
317
|
+
**症状:** 想加铜管、民乐等新乐器,纠结要不要先系统补完课程。
|
|
318
|
+
|
|
319
|
+
**原因:** 把"学完再用"当成了默认顺序。
|
|
320
|
+
|
|
321
|
+
**解决:** 不需要系统学完所有乐器。但用某件乐器前,要懂它的写作:它在段落里承担什么功能、真实演奏者能否完成、音区和呼吸是否合理。做法是选当前作品确实要用的那件乐器,先听真实演奏,再用音源或 AI 生成方向,在使用中遇到问题再答疑。已有的配器思维可以迁移。
|
|
322
|
+
|
|
323
|
+
**关键词:** #AI音乐 #学习方法 #配器
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Q28: 学习阶段,为什么不要用超出自己能力的生成结果当主体
|
|
328
|
+
|
|
329
|
+
**症状:** 用 AI 生成的内容作为作业或练习主体,改不动也说不出为什么,越改越乱。
|
|
330
|
+
|
|
331
|
+
**原因:** 生成内容出现 5 拍、6 拍、4 拍混杂等超出自己控制范围的情况,修补它训练的是"修生成结果",不是编曲能力。
|
|
332
|
+
|
|
333
|
+
**解决:** 按当前能力写能控制的内容:先用简单可控的和弦进行写清钢琴和 Bass,再加入能力范围内的其他乐器,最后才让 AI 做染色和质感补充。正确顺序是人先写出结构和乐器逻辑,再让 AI 丰富,而不是反过来。判断是否可控的标准:能不能解释它为什么这样、能不能动手改它。
|
|
334
|
+
|
|
335
|
+
**关键词:** #AI音乐 #学习方法 #可控性
|
|
@@ -143,9 +143,9 @@
|
|
|
143
143
|
|
|
144
144
|
**症状:** 用户不知道如何在Suno中写有效的提示词。
|
|
145
145
|
|
|
146
|
-
**原因:**
|
|
146
|
+
**原因:** 艺人名和作品名只是参考线索,不是完整的音乐需求。用户如果没有说清楚真正参考的是律动、人声、配器、质感还是段落推进,提示词即使看起来专业,也可能偏离目标。
|
|
147
147
|
|
|
148
|
-
**解决:**
|
|
148
|
+
**解决:** 先确认这一版最重要的一个音乐维度,再把它翻译进提示词。教学时可以从“速度与律动 + 风格与年代方向 + 关键声部职能 + 整体听感与空间”开始。提示词可以精简,也可以使用更完整的自然语言;不要把“越短越好”写成固定规律。英文表达可以作为选择,但最终仍要以当前模型和实际生成结果验证。
|
|
149
149
|
|
|
150
150
|
**关键词:** #工作流
|
|
151
151
|
|
|
@@ -264,13 +264,14 @@
|
|
|
264
264
|
### Q3:Suno的提示词应该怎么写效果更好?
|
|
265
265
|
**症状**:不确定提示词应该写多详细,是否要写长提示词。
|
|
266
266
|
**原因**:
|
|
267
|
-
1.
|
|
268
|
-
2.
|
|
267
|
+
1. 没有先确定当前核心目标,容易堆很多流派、乐器和形容词
|
|
268
|
+
2. 把历史版本里的长度、词序和语言经验误当成所有模型都适用的机制
|
|
269
269
|
**解决**:
|
|
270
|
-
1.
|
|
271
|
-
2.
|
|
272
|
-
3.
|
|
273
|
-
4.
|
|
270
|
+
1. 先写清本版最不能丢的一个音乐目标,并检查提示词是否直接表达了它
|
|
271
|
+
2. 简短标签和详细自然语言都可以,按当前任务复杂度选择
|
|
272
|
+
3. 可以直接给怪异度、提示词影响力和音频影响力的建议起点,但不能把某个数字写成所有任务的标准
|
|
273
|
+
4. 下一版一次只改一个变量;如果调滑块,就先保持提示词不变
|
|
274
|
+
5. "小任务"模式仍然有效:只实验某一段或某个音乐维度,不把整首歌同时重做
|
|
274
275
|
**关键词**:#Suno #提示词 #Prompt #参数设置
|
|
275
276
|
|
|
276
277
|
---
|
|
@@ -485,7 +486,7 @@
|
|
|
485
486
|
---
|
|
486
487
|
|
|
487
488
|
### Q4:Suno的三个关键参数怎么调?
|
|
488
|
-
|
|
489
|
+
**解决**:1)怪异度控制从相对稳妥到更意外的变化程度;2)提示词影响力控制结果贴近 Style 输入的程度;3)上传音频时,音频影响力控制结果贴近原始音频的程度。有经验的制作人或 Skill 可以根据当前任务直接给一个起始处方,但必须说明它是本轮实验起点。下一轮测试某个滑块时,其他主要变量保持不变,再用真实生成结果判断。
|
|
489
490
|
**关键词**:#Suno #参数 #提示词
|
|
490
491
|
|
|
491
492
|
---
|
|
@@ -503,7 +504,7 @@
|
|
|
503
504
|
---
|
|
504
505
|
|
|
505
506
|
### Q7:Suno做出来的成品可以商用吗?
|
|
506
|
-
|
|
507
|
+
**解决**:先核对生成时使用的套餐和 Suno 当前条款。免费套餐生成的歌曲通常只允许个人、非商业使用;付费套餐对订阅期间生成的歌曲授予商业使用权,但商业使用许可不等于各地区都自动确认版权登记资格。涉及发行、变现或客户交付时,必须查看当前官方条款和所在地规则。把 Suno 用于方向探索、灵感启发和方案验证,仍然是更便于控制制作责任的工作方式。
|
|
507
508
|
**关键词**:#Suno #商用 #授权
|
|
508
509
|
|
|
509
510
|
---
|