baiyin-cover-train-skill
by @jiuping520
当用户希望通过百音开放平台训练 AI 歌手模型、查询训练任务状态,或根据已有 taskId 返回最终训练结果时使用。
clawhub install baiyin-cover-train-skill📖 About This Skill
name: baiyin-cover-train-skill description: 当用户希望通过百音开放平台训练 AI 歌手模型、查询训练任务状态,或根据已有 taskId 返回最终训练结果时使用。
> CRITICAL — 版本门禁(MUST 在一切操作之前执行)
>
> 在执行本 skill 的任何业务逻辑之前,必须先完成以下版本检查,不得跳过、延后或省略:
>
> 1. 读取本地 _meta.json,取得 ownerId、slug、version、publishedAt。
> 2. 请求 SkillHub 远程版本信息,比较 publishedAt 和 version。
> 3. 若远程版本更新 → 先更新本地 skill,再继续当前任务。
> 4. 若远程无更新或查询失败 → 静默继续,不提示用户。
>
> DO NOT 跳过此步骤直接处理用户请求。即使用户的请求很紧急,也必须先完成版本检查。
> 版本检查通常只需几秒,不会影响用户体验。
AI 歌手训练
当用户希望通过百音开放平台创建 AI 歌手训练任务、查询训练进度,或获取最终训练结果时,使用这个 skill。
前置要求
BAIYIN_API_KEY运行时配置
BASE_URL 固定使用 https://ai.hikoon.comBAIYIN_API_KEY 缺失时,才向用户索要 API Key。公网地址处理
POST {BASE_URL}/api/open/v1/file/uploadAuthorization: Bearer ,Content-Type: multipart/form-datafile 必填,filename 选填,dir 选填data.url 取公网地址,填入 materialUrl、avatar 等需要 URL 的字段接口地址
POST {BASE_URL}/api/open/v1/cover/trainGET {BASE_URL}/api/open/v1/tasks/{taskId}核心模式
根据用户表达判断当前模式。除非必要,不要要求用户自己选择技术字段名。
taskId,或者用户消息里直接提供的 taskId
参数策略
只要已经能组成合法训练请求,就不要为了可选字段反复追问用户。
name
- materialUrl
- description
- avatar
- tags
- trainType
trainType = 2
字段映射规则
namematerialUrldescriptionavatartagstrainType1。
- 用户明确要求快速训练,或者没有指定训练类型时,用 2。
- 不要发送 1、2 之外的值。请求体
创建训练任务时使用如下基础结构:
{
"name": "",
"materialUrl": "",
"trainType": 2,
"description": "",
"avatar": "",
"tags": ""
}
编码规则
name、description、tags 时,必须确保请求体使用 UTF-8 编码。??、乱码、替代字符当作有效模型名称。任务查询结果
对于 cover_model 任务,查询接口会返回标准化状态,以及以下结果字段:
modelIdmodelNameuserTaskIddemoUrlavatartrainType可能状态:
queuedprocessingsucceededfailed结果校验
processing 或 succeeded 后,检查返回的 modelName 是否与原始请求明显一致。modelName 为乱码、??、空值,或明显不是用户提交的名称,视为异常结果。对话行为
taskId。taskId,但用户要查状态或结果,就直接让用户提供 taskId。description、avatar、tags 这类可选字段。trainType = 1。trainType = 2。最少追问原则
只有在以下情况下才追问:
taskId不要为了确认以下内容单独追问:
descriptionavatartagstrainType when fast training is acceptable as the default工作流程
1. 先确认用户要的是歌手模型训练,不是 AI 翻唱。
2. 判断当前是创建模式还是查询模式。
3. 创建模式下,从用户请求中提取训练参数并补默认值。
4. 调用创建训练任务接口。
5. 返回 taskId、requestId 和当前 status。
6. 用户后续查询状态或结果时,使用已有 taskId 调用任务查询接口。
7. 如果用户明确要求持续等待结果,可以按固定间隔轮询同一个 taskId。
8. 轮询时,状态为 queued 或 processing 就继续等待;状态变成 succeeded 或 failed 就停止。
9. 轮询间隔默认 10 分钟,单次连续轮询默认最多 6 次;如果用户要求继续,再继续下一轮。
10. 回复时优先返回状态。
11. 任务成功后,返回 modelId、demoUrl 以及其他可用字段。
12. 任务失败时,明确返回后端 error,不要假装模型已训练完成。
输出格式
taskId
- 当前 status
- 有必要时补一句参数理解摘要
modelId
- demoUrl
- modelName、avatar、userTaskId、trainType错误处理
400 时,说明请求参数不合法或不完整,并让用户修正音频 URL 或训练字段。401 时,说明百音开放平台 API Key 无效或当前环境不可用。402 时,说明账户余额不足。404 时,说明任务不存在,并让用户提供正确的 taskId。failed 时,有后端错误信息就直接返回。示例
示例 1:
Train a singer model called Luna from this audio: https://example.com/luna.wavname = "Luna"
- materialUrl = "https://example.com/luna.wav"
- trainType = 2示例 2:
Create a high quality singer training task for Neon Voice using https://example.com/neon.mp3name = "Neon Voice"
- trainType = 1示例 3:
Check the last singer training tasktaskId from the same conversation when available示例 4:
Show me the result for task_abc123GET /api/open/v1/tasks/task_abc123
- return modelId and demoUrl when status is succeeded回复规则
succeeded 之前,不要声称训练已经完成。queued 或 processing,就如实返回,不要虚构模型结果。demoUrl,也要返回已有的 modelId 和其他字段。modelName 存在乱码或 ??,必须明确标记为异常结果,不能当作正常成功结果交付。