跳到主要内容

任务管理

Job 状态说明

status含义
queued已入队,等待调度器分配算力
starting启动中
running正在运行
readygrow 完成,wiki 可预览/发布
completed全部阶段完成
failed运行失败
paused已暂停
timeout超时
interrupted被中断

phase 取值eggbootgrowbutler


GET /api/v1/jobs

列出任务列表,可按状态过滤。非 admin 用户仅返回自己的任务。

curl "$HOST/api/v1/jobs?status=running" \
-H "Authorization: Bearer $TOKEN"

响应:{ "ok": true, "jobs": [...], "total": 5 }


GET /api/v1/jobs/{id}

获取单个任务详情。

curl $HOST/api/v1/jobs/42 \
-H "Authorization: Bearer $TOKEN"

关键响应字段:

{
"id": 42,
"wiki_slug": "deep-learning",
"status": "running",
"phase": "grow",
"elapsed_ms": 5403000,
"last_event_age_ms": 17000,
"runner_active": true,
"stale": false,
"token_summary": {
"total_tokens": 1200000,
"total_cost_usd": 12.3
}
}
提示

判断任务是否卡住:runner_active=falsestale=truelast_event_age_ms 异常大)通常意味着进程已不活跃,可考虑重置任务。


GET /api/v1/jobs/{id}/stream(SSE)

订阅任务实时进度流。

curl -N "$HOST/api/v1/jobs/42/stream?access_token=$TOKEN"

事件类型

event数据格式说明
phase{phase, status, duration_s?}阶段开始/结束/失败
token{phase, input, output, cost}阶段 token 用量
review{scope, status}阶段质量复核
log{level, msg}文本日志
done{status}终态,流关闭

浏览器示例:

const es = new EventSource(`/api/v1/jobs/42/stream?access_token=${token}`);
es.addEventListener("phase", e => console.log(JSON.parse(e.data)));
es.addEventListener("done", e => { console.log(JSON.parse(e.data)); es.close(); });

GET /api/v1/jobs/{id}/log

拉取日志尾部(1–5000 行)。

curl "$HOST/api/v1/jobs/42/log?tail=200" \
-H "Authorization: Bearer $TOKEN"

其他控制端点

方法路径说明
POST/jobs/{id}/start手动启动(auto_start=false 时使用)
POST/jobs/{id}/reset重置卡住的任务,重新入队
DELETE/jobs/{id}删除任务记录
GET/queue查看当前调度队列状态