_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
[ -x "$_ROOT/skill/bin/baiyin-skill-update-check" ] && _UPD=$(bash "$_ROOT/skill/bin/baiyin-skill-update-check" "$_ROOT/skill/baiyin-cover-train-skill" 2>/dev/null || true)
[ -n "${_UPD:-}" ] && echo "$_UPD"
如果输出 UPGRADE_AVAILABLE :
skill/baiyin-skills-upgrade/SKILL.md,执行其中的「内联升级流程」。AskUserQuestion,使用中文四选一:立即更新 / 以后自动更新 / 暂不更新 / 不再提醒。AskUserQuestion(例如 OpenClaw 当前会话),直接询问用户: 检测到百音技能
如果输出 JUST_UPGRADED :
百音技能 已更新到 v,继续处理你的请求。 如果输出 UP_TO_DATE、SNOOZED、CHECK_DISABLED 或 CHECK_FAILED:
当用户希望通过百音开放平台创建 AI 歌手训练任务、查询训练进度,或获取最终训练结果时,使用这个 skill。
BAIYIN_API_KEYBASE_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只要已经能组成合法训练请求,就不要为了可选字段反复追问用户。
namematerialUrldescriptionavatartagstrainTypetrainType = 2namematerialUrldescriptionavatartagstrainType1。2。1、2 之外的值。创建训练任务时使用如下基础结构:
{
"name": "<user name or inferred short name>",
"materialUrl": "<public audio url>",
"trainType": 2,
"description": "<optional description>",
"avatar": "<optional avatar url>",
"tags": "<optional comma-separated tags>"
}
name、description、tags 时,必须确保请求体使用 UTF-8 编码。??、乱码、替代字符当作有效模型名称。对于 cover_model 任务,查询接口会返回标准化状态,以及以下结果字段:
modelIdmodelNameuserTaskIddemoUrlavatartrainType可能状态:
queuedprocessingsucceededfailedprocessing 或 succeeded 后,检查返回的 modelName 是否与原始请求明显一致。modelName 为乱码、??、空值,或明显不是用户提交的名称,视为异常结果。taskId。taskId,但用户要查状态或结果,就直接让用户提供 taskId。description、avatar、tags 这类可选字段。trainType = 1。trainType = 2。只有在以下情况下才追问:
taskId不要为了确认以下内容单独追问:
descriptionavatartagstrainType when fast training is acceptable as the defaulttaskId、requestId 和当前 status。taskId 调用任务查询接口。taskId。queued 或 processing 就继续等待;状态变成 succeeded 或 failed 就停止。modelId、demoUrl 以及其他可用字段。error,不要假装模型已训练完成。taskIdstatusmodelIddemoUrlmodelName、avatar、userTaskId、trainType400 时,说明请求参数不合法或不完整,并让用户修正音频 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_abc123modelId and demoUrl when status is succeededsucceeded 之前,不要声称训练已经完成。queued 或 processing,就如实返回,不要虚构模型结果。demoUrl,也要返回已有的 modelId 和其他字段。modelName 存在乱码或 ??,必须明确标记为异常结果,不能当作正常成功结果交付。共 5 个版本