Skip to main content
Youka 的设计理念是由代理来驱动。每条 CLI 命令都会返回机器可读的 JSON 信封(envelope),每次写入都支持幂等键(idempotency keys),并且公共 API 暴露的能力面与语义保持一致。本页面汇总了代理作者在将 Youka 接入工作流之前需要了解的操作规则。

快速开始

如果你是第一次为代理做接入,请先安装 Youka CLI,然后安装 Youka 卡拉 OK 技能:
这样会为代理提供一个由 CLI 驱动的现成 Youka skill。安装完成后,使用下面的工作流模式来创建卡拉 OK 视频、自定义样式,并安全导出 MP4 文件。

给你的代理下指令

安装好 CLI 和 skill 之后,你可以这样给代理一个直接任务:

操作规则

始终使用 --json

在 CLI 中,始终传 --json。在 API 中,始终设置 Accept: application/json。不要解析面向人类的输出。

始终发送幂等键

每次写入都应携带稳定的幂等键,这样在超时后重试会返回原始结果,而不是重复执行工作。

重新读取持久化状态

不要信任过时的变更响应。在终态任务之后,重新读取 project 或 export 以获取最终状态。

使用退避轮询

从 2–3 秒的间隔开始。对于长任务使用指数退避。尊重 429 响应。

输出约定

每个以 --json 模式运行的 CLI 命令都会向 stdout 写入且只写入一个信封(envelope)。 成功:
失败:
退出码:

端到端工作流

规范的代理工作流是:创建 project、等待、导出、下载结果。下面给出 CLI 与 SDK 的完整模式实现。

轮询建议

在 SDK 中,大多数写操作都会返回 operation handles。优先使用 client.projects.wait(...)client.exports.wait(...),只有在你明确需要更底层的 task 访问时才使用 client.tasks.* 在 CLI 中,--wait 会为你处理轮询。在 SDK 中,wait helpers 默认使用 2 s 间隔,并接受 pollIntervalMs
尊重 429 响应。遇到限流时,至少按 Retry-After header(如果没有则按 30 s)进行退避。

幂等键

每个 create 与 update 操作都支持幂等键。规则如下:
  • 为每一次“逻辑变更”使用 稳定、唯一、确定性 的 key。好例子:create-song-${sourceHash}。坏例子:每次重试都生成一个新的 UUID。
  • 在重试时复用 相同 的 key。服务端会识别重放并返回原始结果。
  • Key 的作用域是 per-account,并在 24 小时后过期。
  • 如果服务端返回 IDEMPOTENT_REPLAY_IN_PROGRESS(HTTP 202),说明原始请求仍在运行。等待后使用相同 key 重试。
示例模式:
完整约定请参见 API idempotency

错误恢复

根据 error.codeerror.retryable 分支处理。常见情况如下:

发现可变字段

在修改 presets 之前,先获取 preset schema,让模型知道有效字段与取值类型:
对于 project settings,优先先读取当前 project settings,然后通过 youka project settings <id> --body ... 提交一个最小化的 update body。 每个代理会话获取一次并缓存结果。

并行代理

当多个代理并发对同一账号运行时:
  • 将幂等键同时限定到 代理身份逻辑变更agent-${agentId}-create-${sourceHash}。这可以防止某个代理的重试与另一个代理的新请求发生冲突。
  • 保持读取操作不受限制 — GET 请求很便宜且没有副作用。
  • 如果你需要有序的导出历史,每个 project 对 POST /projects/{projectId}/exports 使用单一队列;否则导出结果可能会乱序到达。

下一步