MAI TOBATSU GATEWAY · TEST EVIDENCE · 2026-05-28

这条 test session 走的是失败通知,不是成功产物入画布

我按 test 服务器和 backend/.env 的数据库查了这条链接。结果已经写进 session_messages。下一轮用户再说话时,SystemReminder 会把这条结果塞给 agent。因为 Tobatsu 返回失败,outputs=[],所以画布没有新文件。

server · mai-2-tmp-1-n370
env · test
canvas rev · 2
prod · 未触碰
01 · VERDICT

现在能确认什么

同一条 session 里有两次 voiceover_align。两次都是业务失败。失败结果已回到 Mai,并写进消息表。

2
Tobatsu Gateway tasks
both failed
2
session_messages.tobatsu_result
已写入
0
canvas_insertion_jobs
无输出文件
284088
last_injected cursor
第一条已读过

一句话结论

这条不是“自动入画布失败”。它是“任务失败通知成功”。失败没有文件,所以画布不该新增 item。

02 · FLOW

真实流向

Tobatsu 回来的是失败结果。Gateway 收到后写 DB。前端和 agent 看到的,都是同一份 message_data

STEP 1

Agent 发起

voiceover_align 经 tools-backend 到 Gateway。

STEP 2

Tobatsu 执行

TTS 候选音频超出时长策略,业务失败。

STEP 3

回调回来

Gateway 收到 mai.delivery_result,状态是 failed

STEP 4

写入消息表

插入 session_messages,类型是 tobatsu_result

STEP 5

下一轮提醒

agent 下轮输入前,SystemReminder 从消息表拿未读结果。

03 · IDS

这条链接对应的真 ID

这些值都来自 test DB 或 test API。前端 URL 本身需要登录,DB 是更准的证据。

  • Frontend URLignis-test canvas
  • session_idsession_KWo8QQ0nufG0Dv5Vxjxfm
  • canvas_id824002a0-c466-4bb4-ad21-d24ad524d855
  • ownertao.zhou@funplus.com
  • session_name视频配音MANCab音色替换
  • canvas datafile_count=0 · element_count=0 · revision=2
04 · SESSION_MESSAGES

表里实际写了什么

两条都是 message_type=tobatsu_result。WS 推给前端的 data、前端补查拿到的 item、agent 下一轮看到的提醒,内容都来自这份 message_data

sequence gateway_task_id status summary file_ids error
284088 gw_4f0681ed... failed voiceover_align failed: provider_failed [] no ElevenLabs candidate fit segment 1
284110 gw_b5b93586... failed 未能生成对齐口播:no TTS candidate fit segment 1 [] no TTS candidate fit segment 1
{ "type": "tobatsu_result", "status": "failed", "summary": "voiceover_align failed: provider_failed", "file_ids": [], "artifacts": [], "canvas_id": "824002a0...", "gateway_task_id": "gw_4f0681ed...", "gateway_result_id": "0d1622b6..." }
{ "type": "tobatsu_result", "status": "failed", "summary": "未能生成对齐口播:no TTS candidate fit segment 1", "file_ids": [], "artifacts": [], "canvas_id": "824002a0...", "gateway_task_id": "gw_b5b93586...", "gateway_result_id": "979c5c68..." }
05 · SYSTEMREMINDER

SystemReminder 长什么样

它不是 Gateway 再写一条 message。它是下一轮 LLM 开始前,把还没告诉 agent 的 tobatsu_result 变成一段隐藏提示,塞进本轮 checkpoint messages。

已经告诉 agent 到哪

  • cursorlast_injected_tobatsu_result_sequence_num = 284088
  • 已告诉 agentsequence_num 284088
  • 待下一轮sequence_num 284110
  • 过期规则超过 3 小时就不再塞给 agent

为什么这里没 canvas

SystemReminder 只告诉 agent 结果。画布链接不放进去。成功文件会在回调时直接写画布;失败没有文件,所以只给错误原因。

no get_task no retry no canvas text
已经告诉 agent 的第一条
<system-reminder> Tobatsu task result: Task type: voiceover_align Status: failed Summary: voiceover_align failed: provider_failed Error code: provider_failed Error message: no ElevenLabs candidate fit segment 1 Gateway task: gw_4f0681ed-185e-43ad-9a07-20e406be11f2 This is informational. Do not call get_task, retry, continue, or start a new task unless the user asks. </system-reminder>
下一轮会告诉 agent 的第二条
<system-reminder> Tobatsu task result: Task type: voiceover_align Status: failed Summary: 未能生成对齐口播:no TTS candidate fit segment 1 Error code: provider_failed Error message: no TTS candidate fit segment 1 Gateway task: gw_b5b93586-bc75-47da-977a-0dde256a61e4 This is informational. Do not call get_task, retry, continue, or start a new task unless the user asks. </system-reminder>
06 · CANVAS

为什么画布没新增东西

这里没有任何成功文件,所以回调没有东西能交给 Canvas Service。这个结果是对的。

结果输出

outputs=[],没有 mp4、图片、srt 或 sidecar。

Canvas Service

canvas_insertion_jobs=0。没有文件时不入队。

画布状态

files=0elements=0,revision 是 2

07 · CHECKS

我查了哪些入口

前端页面会跳登录,所以我用 test API 和 DB 做核对。DB URL 没贴出来,只确认它来自 backend/.env

检查项 结果 说明
ignis-test canvas URL login required 匿名请求 307 到登录页。
mai-2-tmp-1-n370 /openapi.json uvicorn live 确认它是 test FastAPI 后端。
/api/sessions/{id}/tobatsu-results 2 items 返回两条失败结果。
session_messages 2 rows 两条 message_type=tobatsu_result
canvas_insertion_jobs 0 rows 失败没有输出文件,符合预期。