以前 ignis ask 一跑完,大家就以为视频做好了 —— 其实没。这轮把这个坑填了:提交后能查、能等、能拿到全部文件,而且用户不用懂那一堆内部 ID。
ignis ask 跑的是一次 agent 对话回合。当 agent 把视频任务派出去那一刻,这个回合就结束了 —— 但真视频还要在后台再渲染 5–25 分钟,做完后是另走一条路回来的(tobatsu_result + 画布),靠一个 gateway_run_id 串起来。CLI 根本没盯着这条路。
最毒的一处:托管给 agent 看的说明书,以前还在教它「等回合到终态就拿到结果」。对 Tobatsu 这是错的 —— 回合到终态时,片子还没出来。这轮把说明书也改对了。
回合(turn)和任务(task)分开看。提交长任务时,后端本来就握着一个 gateway_run_id,把它当成对用户的唯一一个不透明 ID暴露出来就行。
task_id = gateway_run_id。不建新表,不让用户分辨三套 ID。另外两个内部 ID(gateway_task_id / tobatsu_task_id)只在 debug 时露脸。
GET /api/cli/tasks/{task_id},task / wait / debug 全共用它。复用已有的查询,薄薄一层过滤,没动数据层。
tasks / next_commands / cli_notice 都是可选字段。老 CLI 看不懂就当没看见,不会坏。
安全是我最看重的一关:两个新查询都按 tasks.user_email 过滤,接口先校验登录、没登录直接挡;二级查询都在「确认这个任务归你」之后才跑。不存在跨用户偷看别人任务。
上一轮为了赶 combo,往通用代码里塞了些只服务 combo 的东西。这轮先撤干净 —— 否则通用工具会被业务细节带歪。
out_primary→最终成片 这类翻译写死在核心代码里。现在改成把后端原始结果原样给 agent,人话措辞由 agent 自己说。 —— 这条会影响网页聊天端的呈现,已被目标文档授权。canvas_insert 入参。「这张图要不要进画布」不该挂在生图工具上。四处全清,无残留。<think>。测试环境看得到思考过程是刻意设计,不能因为产品打磨被默认藏掉。改回简单判断:dev/test 可见、prod/stage 不露。ignis task 看最新任务、ignis task wait 替你等到做完(最长等 30 分钟,贴合渲染时长)、ignis task debug 才显示内部排查用的 ID。普通输出只给:任务 ID、状态、画布链接、所有文件、下一步。
# 提交后 CLI 直接给提示,不用你记 ID $ ignis ask "做一条数字人口播带字幕的成片" 后台任务已提交。查看进度:ignis task wait gwr_35543a31 # 替你盯到渲染完成 $ ignis task wait gwr_35543a31 任务 gwr_35543a31: succeeded 已生成对齐口播音频、数字人口播视频,并合成带字幕成片。 画布: https://ignis-test.funplus-marketing.ai/canvas/bd33…?sessionId=… 文件: - gjgW7v.png # 原样返回,不假设几个、不按角色改名 - gDaeWP.mp4 - RJ6Qvm.mp4 - fh264x.mp3 - pApBHb.srt
每个请求带 X-Ignis-CLI-Version。版本太旧或没带,后端回一句人话提示(cli_notice)叫你升级 —— 默认只提醒,不硬拦,只有接口真不兼容才强制。
作为复核方,我每一条都自己读了代码、自己重跑了测试,没有照搬实现方的自我汇报。
复核里我提了 6 个发现。两个跟「画布链接能不能真的点开」有关(这是用户真正去点的东西),实现方都已处理:
| # | 发现 | 分级 | 状态 |
|---|---|---|---|
| F1 | 画布链接默认指向生产域名。测试环境得指 ignis-test。 | Medium | ✓ 已设 env |
| F2 | 画布链接缺 ?sessionId=。能打开的链接都带它。 | Medium | ✓ 已修+测试 |
| F3 | 归属安全无回归测试。SQL 我读过没问题,但缺守护。 | Low | ✓ 补 2 测试 |
| F4 | <think> 运行时行为无测试。 | Low | ✓ 补回归 |
| F5 | 未知状态默认显示 running(debug 可见原始)。 | Nit | 留作打磨 |
| F6 | 人类输出把「下一步」和文件都写 stdout(--json 干净)。 | Nit | 留作打磨 |
* F1 那个 Render 控制台的环境变量,我这边看不到面板 —— 已请实现方部署后点一个链接眼验确实指向 test 域名。